@lucern/mcp 0.2.0-alpha.1 → 0.2.0-alpha.3
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/gateway.d.ts +771 -0
- package/dist/gateway.js +9545 -0
- package/dist/gateway.js.map +1 -0
- package/dist/index.d.ts +307 -0
- package/dist/index.js +3009 -1303
- package/dist/index.js.map +1 -1
- package/dist/runtime.d.ts +111 -0
- package/dist/runtime.js +6244 -0
- package/dist/runtime.js.map +1 -0
- package/package.json +19 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/execution.ts","../src/agentInstructions.ts","../src/credentials.ts","../src/observation-store.ts","../../sdk/src/coreClient.ts","../../sdk/src/sdkSurface.ts","../../sdk/src/adminClient.ts","../../sdk/src/answersClient.ts","../../sdk/src/audiencesClient.ts","../../sdk/src/auditClient.ts","../../sdk/src/beliefsClient.ts","../../sdk/src/customTools.ts","../../sdk/src/decisionsClient.ts","../../../lucern/packages/client-core/src/context.ts","../../sdk/src/contextClient.ts","../../sdk/src/graphClient.ts","../../sdk/src/harnessClient.ts","../../../lucern/packages/client-core/src/identity.ts","../../sdk/src/identityClient.ts","../../../lucern/packages/client-core/src/contradictions.ts","../../../lucern/packages/sdk-typescript/src/facade/contradictions.ts","../../../lucern/packages/client-core/src/edges.ts","../../../lucern/packages/sdk-typescript/src/facade/edges.ts","../../../lucern/packages/client-core/src/evidence.ts","../../../lucern/packages/sdk-typescript/src/facade/evidence.ts","../../../lucern/packages/client-core/src/events.ts","../../../lucern/packages/sdk-typescript/src/facade/events.ts","../../../lucern/packages/client-core/src/beliefs.ts","../../../lucern/packages/sdk-typescript/src/facade/beliefs.ts","../../../lucern/packages/client-core/src/graph.ts","../../../lucern/packages/sdk-typescript/src/facade/graph.ts","../../../lucern/packages/sdk-typescript/src/facade/identity.ts","../../../lucern/packages/client-core/src/ontologies.ts","../../../lucern/packages/sdk-typescript/src/facade/ontologies.ts","../../../lucern/packages/client-core/src/questions.ts","../../../lucern/packages/sdk-typescript/src/facade/questions.ts","../../../lucern/packages/client-core/src/search.ts","../../../lucern/packages/sdk-typescript/src/facade/search.ts","../../../lucern/packages/client-core/src/tasks.ts","../../../lucern/packages/sdk-typescript/src/facade/tasks.ts","../../../lucern/packages/client-core/src/topics.ts","../../../lucern/packages/sdk-typescript/src/facade/topics.ts","../../../lucern/packages/client-core/src/webhooks.ts","../../../lucern/packages/sdk-typescript/src/facade/webhooks.ts","../../../lucern/packages/client-core/src/worktrees.ts","../../../lucern/packages/sdk-typescript/src/facade/worktrees.ts","../../sdk/src/learningClient.ts","../../sdk/src/mcpParityClient.ts","../../sdk/src/ontologyClient.ts","../../sdk/src/packsClient.ts","../../sdk/src/policyClient.ts","../../sdk/src/reportsClient.ts","../../sdk/src/schemaClient.ts","../../sdk/src/topicsClient.ts","../../sdk/src/version.ts","../../sdk/src/workflowClient.ts","../../sdk/src/client.ts","../../../lucern/contracts/src/lens-workflow.contract.ts","../../../lucern/contracts/src/mcp-tools.contract.ts","../src/types.ts","../src/handler-factory.ts","../src/handlers/beliefs.ts","../src/handlers/context.ts","../src/handlers/contradictions.ts","../src/handlers/edges.ts","../src/handlers/evidence.ts","../src/handlers/graph.ts","../src/handlers/judgments.ts","../src/handlers/observations.ts","../src/handlers/policy.ts","../src/handlers/questions.ts","../src/handlers/research.ts","../src/handlers/search.ts","../src/handlers/tasks.ts","../src/handlers/worktrees.ts","../src/handlers/index.ts","../src/server.ts","../src/standalone.ts","../src/remote.ts","../src/cli.ts"],"names":["resolveAuthHeaders","cleanString","createGraphClient","asRecord","asNodeArray","readMetadata","z"],"mappings":"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","file":"index.js","sourcesContent":["import type { McpToolContract } from \"@lucern/sdk\";\nimport type { McpToolResult } from \"./types\";\n\nexport type ToolExecutionTransportKind =\n | \"stdio\"\n | \"hosted\"\n | \"remote\"\n | \"chat\"\n | (string & {});\n\nexport type ToolExecutionAuthMode =\n | \"interactive_user\"\n | \"service_principal\"\n | \"tenant_api_key\"\n | \"session_token\"\n | \"unknown\";\n\nexport type ToolExecutionEnvelope = {\n toolName: string;\n params: Record<string, unknown>;\n contract: McpToolContract;\n transport: {\n kind: ToolExecutionTransportKind;\n surface: \"mcp\" | \"chat\";\n normalizedAt: \"handler_boundary\";\n };\n auth: {\n mode: ToolExecutionAuthMode;\n };\n policy: {\n requiredScopes: readonly string[];\n enforcement: \"gateway\";\n };\n audit: {\n source: \"gateway_envelope\";\n structuralFields: readonly [\n \"toolName\",\n \"code\",\n \"status\",\n \"correlationId\",\n \"policyTraceId\",\n \"invariant\",\n ];\n };\n};\n\nexport type ToolExecutionAuditEvent = {\n toolName: string;\n contractName: string;\n transportKind: ToolExecutionTransportKind;\n authMode: ToolExecutionAuthMode;\n requiredScopes: readonly string[];\n source: \"gateway_envelope\";\n isError: boolean;\n code?: string;\n status?: number;\n correlationId?: string | null;\n policyTraceId?: string | null;\n invariant?: string | null;\n};\n\nexport type ToolExecutionHookSet = {\n onEnvelope?: (envelope: ToolExecutionEnvelope) => Promise<void> | void;\n onAuditEvent?: (event: ToolExecutionAuditEvent) => Promise<void> | void;\n};\n\nexport type TransportParityDriftKind =\n | \"missing_tool\"\n | \"degraded_behavior\"\n | \"audit_drift\"\n | \"policy_drift\";\n\nconst SCOPE_ALIAS_GROUPS: readonly (readonly string[])[] = [];\n\nexport function classifyTransportParityDrift(\n kind: TransportParityDriftKind\n): \"critical\" | \"high\" | \"medium\" {\n switch (kind) {\n case \"missing_tool\":\n return \"critical\";\n case \"degraded_behavior\":\n return \"high\";\n case \"audit_drift\":\n case \"policy_drift\":\n return \"medium\";\n }\n}\n\nexport function createToolExecutionEnvelope(args: {\n toolName: string;\n params: Record<string, unknown>;\n contract: McpToolContract;\n transportKind: ToolExecutionTransportKind;\n authMode: ToolExecutionAuthMode;\n requiredScopes: readonly string[];\n}): ToolExecutionEnvelope {\n return {\n toolName: args.toolName,\n params: args.params,\n contract: args.contract,\n transport: {\n kind: args.transportKind,\n surface: args.transportKind === \"chat\" ? \"chat\" : \"mcp\",\n normalizedAt: \"handler_boundary\",\n },\n auth: {\n mode: args.authMode,\n },\n policy: {\n requiredScopes: args.requiredScopes,\n enforcement: \"gateway\",\n },\n audit: {\n source: \"gateway_envelope\",\n structuralFields: [\n \"toolName\",\n \"code\",\n \"status\",\n \"correlationId\",\n \"policyTraceId\",\n \"invariant\",\n ],\n },\n };\n}\n\nfunction hasValue(value: unknown): boolean {\n if (value === undefined || value === null) {\n return false;\n }\n if (typeof value === \"string\") {\n return value.trim().length > 0;\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return true;\n}\n\nexport function normalizeToolExecutionParams(\n params: Record<string, unknown>\n): Record<string, unknown> {\n const normalized = { ...params };\n\n for (const aliases of SCOPE_ALIAS_GROUPS) {\n const sourceKey = aliases.find((key) => hasValue(normalized[key]));\n if (!sourceKey) {\n continue;\n }\n\n for (const key of aliases) {\n if (!hasValue(normalized[key])) {\n normalized[key] = normalized[sourceKey];\n }\n }\n }\n\n return normalized;\n}\n\nexport function parseToolExecutionMetadata(result: McpToolResult): {\n isError: boolean;\n code?: string;\n status?: number;\n correlationId?: string | null;\n policyTraceId?: string | null;\n invariant?: string | null;\n} {\n const raw = result.content[0]?.text;\n if (!raw) {\n return { isError: Boolean(result.isError) };\n }\n\n try {\n const payload = JSON.parse(raw) as Record<string, unknown>;\n return {\n isError: Boolean(result.isError),\n code: typeof payload.code === \"string\" ? payload.code : undefined,\n status: typeof payload.status === \"number\" ? payload.status : undefined,\n correlationId:\n typeof payload.correlationId === \"string\" ||\n payload.correlationId === null\n ? (payload.correlationId as string | null)\n : undefined,\n policyTraceId:\n typeof payload.policyTraceId === \"string\" ||\n payload.policyTraceId === null\n ? (payload.policyTraceId as string | null)\n : undefined,\n invariant:\n typeof payload.invariant === \"string\" || payload.invariant === null\n ? (payload.invariant as string | null)\n : undefined,\n };\n } catch {\n return { isError: Boolean(result.isError) };\n }\n}\n\nexport async function executeToolWithEnvelope(args: {\n envelope: ToolExecutionEnvelope;\n execute: () => Promise<McpToolResult>;\n hooks?: ToolExecutionHookSet;\n}): Promise<McpToolResult> {\n await args.hooks?.onEnvelope?.(args.envelope);\n\n const result = await args.execute();\n const metadata = parseToolExecutionMetadata(result);\n\n await args.hooks?.onAuditEvent?.({\n toolName: args.envelope.toolName,\n contractName: args.envelope.contract.name,\n transportKind: args.envelope.transport.kind,\n authMode: args.envelope.auth.mode,\n requiredScopes: args.envelope.policy.requiredScopes,\n source: args.envelope.audit.source,\n ...metadata,\n });\n\n return result;\n}\n","export const LUCERN_OBSERVER_PROMPT_NAME = \"lucern-observer\";\n\nexport const LUCERN_AGENT_MD = `# Lucern — Reasoning Intelligence\n\nYou are connected to a Lucern reasoning graph. Lucern tracks beliefs, evidence,\nquestions, judgments, and contradictions as structured reasoning state.\n\n## Behavioral Mode\n\nOperate in active observation mode:\n\n1. Watch for claims, evidence, questions, and contradictions.\n2. Suggest graph updates when reasoning-relevant events appear.\n3. Always request user confirmation before mutating graph state.\n4. Preserve uncertainty explicitly; unresolved contradictions are valid.\n\nUse this suggestion format:\n\n\\`🔍 Lucern detected: [what changed] -> Want me to log this?\\`\n\n## Tool Use Defaults\n\n1. Read context first for substantive questions.\n2. Prefer atomic writes: create belief/evidence/question separately, then link edges.\n3. Use worktree lifecycle for investigations: add_worktree -> merge -> push.\n4. Never auto-score confidence without explicit rationale.\n\n## Safety Defaults\n\n1. Do not fabricate evidence.\n2. Do not collapse contradictions automatically.\n3. Keep provenance and rationale in every write path.\n`;\n\nexport function buildLucernObserverPrompt(topicId?: string): string {\n const topicScope = topicId\n ? `Topic scope: ${topicId}.`\n : \"Topic scope: current active topic.\";\n return [\n \"You are in Lucern observation mode.\",\n topicScope,\n \"Continuously watch conversation and tool outputs for epistemic events:\",\n \"- new claim -> create_belief\",\n \"- supporting/challenging source -> add_evidence\",\n \"- unresolved unknown -> create_question\",\n \"- conflict between beliefs -> flag_contradiction\",\n \"Always ask for explicit confirmation before any mutation.\",\n ].join(\"\\n\");\n}\n","const TENANT_API_KEY_PREFIXES = [\"luc_\", \"stk_\"] as const;\nconst SERVICE_PRINCIPAL_KEY_PREFIXES = [\"lk_\", \"lsk_\"] as const;\n\nexport function isTenantApiKey(value: string): boolean {\n return TENANT_API_KEY_PREFIXES.some((prefix) => value.startsWith(prefix));\n}\n\nexport function isServicePrincipalKey(value: string): boolean {\n return SERVICE_PRINCIPAL_KEY_PREFIXES.some((prefix) =>\n value.startsWith(prefix)\n );\n}\n","export type ObservationKind =\n | \"claim\"\n | \"evidence\"\n | \"question\"\n | \"contradiction\"\n | \"judgment\"\n | \"note\";\n\nexport type ObservationRecord = {\n observationId: string;\n topicId: string;\n observationType: ObservationKind;\n summary: string;\n source?: string;\n confidence?: number;\n tags?: string[];\n metadata?: Record<string, unknown>;\n createdAt: number;\n};\n\nexport type ObservationContext = {\n topicId: string;\n totalObservations: number;\n latest: ObservationRecord[];\n semanticMatches: ObservationRecord[];\n byType: Record<ObservationKind, number>;\n generatedAt: number;\n};\n\ntype ObservationIngestInput = {\n topicId: string;\n observationType: ObservationKind;\n summary: string;\n source?: string;\n confidence?: number;\n tags?: string[];\n metadata?: Record<string, unknown>;\n};\n\ntype ObservationContextInput = {\n topicId: string;\n query?: string;\n limit?: number;\n};\n\nexport class McpObservationStore {\n private readonly byTopic = new Map<string, ObservationRecord[]>();\n\n ingest(input: ObservationIngestInput): ObservationRecord {\n const record: ObservationRecord = {\n observationId: `obs_${crypto.randomUUID()}`,\n topicId: input.topicId,\n observationType: input.observationType,\n summary: input.summary,\n source: input.source,\n confidence: input.confidence,\n tags: input.tags,\n metadata: input.metadata,\n createdAt: Date.now(),\n };\n\n const existing = this.byTopic.get(input.topicId) ?? [];\n existing.push(record);\n this.byTopic.set(input.topicId, existing);\n\n return record;\n }\n\n list(topicId: string, limit = 20): ObservationRecord[] {\n const records = this.byTopic.get(topicId) ?? [];\n return [...records]\n .sort((left, right) => right.createdAt - left.createdAt)\n .slice(0, Math.max(1, limit));\n }\n\n search(topicId: string, query: string, limit = 10): ObservationRecord[] {\n const records = this.byTopic.get(topicId) ?? [];\n const terms = tokenize(query);\n if (terms.length === 0) {\n return this.list(topicId, limit);\n }\n\n const scored = records\n .map((record) => ({\n record,\n score: scoreObservation(record, terms),\n }))\n .filter((entry) => entry.score > 0)\n .sort(\n (left, right) =>\n right.score - left.score ||\n right.record.createdAt - left.record.createdAt\n )\n .slice(0, Math.max(1, limit));\n\n return scored.map((entry) => entry.record);\n }\n\n getContext(input: ObservationContextInput): ObservationContext {\n const limit = Math.max(1, input.limit ?? 8);\n const records = this.byTopic.get(input.topicId) ?? [];\n\n const byType: Record<ObservationKind, number> = {\n claim: 0,\n evidence: 0,\n question: 0,\n contradiction: 0,\n judgment: 0,\n note: 0,\n };\n\n for (const record of records) {\n byType[record.observationType] += 1;\n }\n\n return {\n topicId: input.topicId,\n totalObservations: records.length,\n latest: this.list(input.topicId, limit),\n semanticMatches: input.query\n ? this.search(input.topicId, input.query, limit)\n : this.list(input.topicId, Math.min(limit, 5)),\n byType,\n generatedAt: Date.now(),\n };\n }\n}\n\nfunction tokenize(query: string): string[] {\n return query\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .map((term) => term.trim())\n .filter((term) => term.length >= 2);\n}\n\nfunction scoreObservation(record: ObservationRecord, terms: string[]): number {\n const source = [\n record.summary,\n record.source ?? \"\",\n ...(record.tags ?? []),\n ...(record.metadata\n ? Object.values(record.metadata).map((value) => String(value))\n : []),\n ]\n .join(\" \")\n .toLowerCase();\n\n let score = 0;\n for (const term of terms) {\n if (!source.includes(term)) {\n continue;\n }\n score += 1;\n if (source.includes(` ${term} `)) {\n score += 0.5;\n }\n }\n\n return score;\n}\n","import type { JsonObject, JsonValue } from \"./types\";\n\nexport type GatewayScope = {\n tenantId?: string;\n workspaceId?: string;\n};\n\nexport type PlatformGatewaySuccess<T> = {\n success: true;\n data: T;\n correlationId: string;\n policyTraceId: string | null;\n idempotentReplay: boolean;\n};\n\nexport type PlatformGatewayFailure = {\n success: false;\n /**\n * Error string is the canonical envelope field.\n * Object form is legacy-only compatibility for older gateway responses.\n */\n error:\n | string\n | {\n code: string;\n message: string;\n details?: JsonValue;\n };\n code?: string;\n invariant?: string | null;\n suggestion?: string | null;\n details?: JsonValue;\n legacyError?: {\n code: string;\n message: string;\n details?: JsonValue;\n };\n correlationId: string;\n policyTraceId: string | null;\n};\n\nexport type PlatformGatewayEnvelope<T> =\n | PlatformGatewaySuccess<T>\n | PlatformGatewayFailure;\n\nexport class LucernApiError extends Error {\n public readonly code: string;\n public readonly status: number;\n public readonly invariant?: string | null;\n public readonly suggestion?: string | null;\n public readonly details?: JsonValue;\n public readonly requestId?: string;\n public readonly correlationId?: string;\n public readonly policyTraceId?: string | null;\n\n constructor(args: {\n code: string;\n message: string;\n status: number;\n invariant?: string | null;\n suggestion?: string | null;\n details?: JsonValue;\n requestId?: string;\n correlationId?: string;\n policyTraceId?: string | null;\n }) {\n super(args.message);\n this.name = \"LucernApiError\";\n this.code = args.code;\n this.status = args.status;\n this.invariant = args.invariant;\n this.suggestion = args.suggestion;\n this.details = args.details;\n this.requestId = args.requestId;\n this.correlationId = args.correlationId;\n this.policyTraceId = args.policyTraceId;\n }\n}\n\nexport type GatewayHttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\ntype FetchLike = (\n input: RequestInfo | URL,\n init?: RequestInit\n) => Promise<Response>;\n\nexport type GatewayRequestHookContext = {\n requestId: string;\n attempt: number;\n maxRetries: number;\n method: GatewayHttpMethod;\n path: string;\n url: string;\n headers: Headers;\n body?: string;\n timeoutMs: number;\n};\n\nexport type GatewayResponseHookContext = GatewayRequestHookContext & {\n durationMs: number;\n status?: number;\n response?: Response;\n error?: unknown;\n correlationId?: string;\n policyTraceId?: string | null;\n idempotentReplay?: boolean;\n retryAfterMs?: number | null;\n willRetry: boolean;\n};\n\nexport type GatewayClientConfig = {\n baseUrl?: string;\n fetchImpl?: FetchLike;\n getAuthHeaders?:\n | (() => Promise<Record<string, string>>)\n | (() => Record<string, string>);\n /** Max retries for transient errors (5xx, network). Defaults to 2. */\n maxRetries?: number;\n /** Request timeout in ms. Defaults to 15000. */\n timeoutMs?: number;\n /** Optional timeout overrides by HTTP method. */\n timeoutMsByMethod?: Partial<Record<GatewayHttpMethod, number>>;\n /** Optional request ID factory used for correlation headers. */\n requestIdFactory?: () => string;\n /** Invoked before each request attempt, including retries. */\n onRequest?:\n | ((context: GatewayRequestHookContext) => void)\n | ((context: GatewayRequestHookContext) => Promise<void>);\n /** Invoked after each request attempt, including retries and failures. */\n onResponse?:\n | ((context: GatewayResponseHookContext) => void)\n | ((context: GatewayResponseHookContext) => Promise<void>);\n};\n\n/**\n * Serialize a gateway query object into a URL query string.\n */\nexport function toQueryString(\n scope: GatewayScope & Record<string, string | number | boolean | undefined>\n): string {\n const params = new URLSearchParams();\n if (scope.tenantId) {\n params.set(\"tenantId\", scope.tenantId);\n }\n if (scope.workspaceId) {\n params.set(\"workspaceId\", scope.workspaceId);\n }\n for (const [key, value] of Object.entries(scope)) {\n if (key === \"tenantId\" || key === \"workspaceId\") {\n continue;\n }\n if (value === undefined) {\n continue;\n }\n params.set(key, String(value));\n }\n const serialized = params.toString();\n return serialized.length > 0 ? `?${serialized}` : \"\";\n}\n\n/**\n * Generate a random idempotency key for retry-safe writes.\n */\nexport function randomIdempotencyKey(): string {\n return crypto.randomUUID();\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status >= 500 || status === 408 || status === 429;\n}\n\nfunction fallbackErrorCode(status: number): string {\n if (status === 401) {\n return \"AUTHENTICATION_REQUIRED\";\n }\n if (status === 403) {\n return \"FORBIDDEN\";\n }\n if (status === 404) {\n return \"NOT_FOUND\";\n }\n if (status === 408) {\n return \"UPSTREAM_ERROR\";\n }\n if (status === 409) {\n return \"CONFLICT\";\n }\n if (status === 429) {\n return \"RATE_LIMIT_EXCEEDED\";\n }\n if (status >= 500) {\n return \"UPSTREAM_ERROR\";\n }\n return \"INTERNAL_ERROR\";\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction parseRetryAfterMs(value: string | null): number | null {\n if (!value) {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const numeric = Number(trimmed);\n if (Number.isFinite(numeric)) {\n return Math.max(0, Math.round(numeric * 1000));\n }\n const parsedDate = Date.parse(trimmed);\n if (Number.isFinite(parsedDate)) {\n return Math.max(0, parsedDate - Date.now());\n }\n return null;\n}\n\nfunction computeRetryDelayMs(args: {\n attempt: number;\n status?: number;\n retryAfterMs?: number | null;\n}): number {\n const baseDelay =\n args.status === 429\n ? Math.max(\n args.retryAfterMs ?? 0,\n Math.min(1000 * 2 ** args.attempt, 10_000)\n )\n : Math.min(1000 * 2 ** args.attempt, 4000);\n\n if (args.status !== 429) {\n return baseDelay;\n }\n\n const jitterWindow = Math.max(250, Math.round(baseDelay * 0.25));\n return baseDelay + Math.round(Math.random() * jitterWindow);\n}\n\nfunction timeoutError(timeoutMs: number): Error {\n const error = new Error(`Request timed out after ${timeoutMs}ms`);\n error.name = \"AbortError\";\n return error;\n}\n\nfunction readPolicySummaryFromDetails(details?: JsonValue): string | null {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) {\n return null;\n }\n\n const directSummary = (details as { summary?: JsonValue }).summary;\n if (typeof directSummary === \"string\" && directSummary.trim().length > 0) {\n return directSummary.trim();\n }\n\n const policy = (details as { policy?: JsonValue }).policy;\n if (!policy || typeof policy !== \"object\" || Array.isArray(policy)) {\n return null;\n }\n\n const explanation = (policy as { explanation?: JsonValue }).explanation;\n if (!explanation || typeof explanation !== \"object\" || Array.isArray(explanation)) {\n return null;\n }\n\n const nestedSummary = (explanation as { summary?: JsonValue }).summary;\n if (typeof nestedSummary === \"string\" && nestedSummary.trim().length > 0) {\n return nestedSummary.trim();\n }\n\n return null;\n}\n\n/**\n * Create the transport client used by all SDK modules.\n */\nexport function createGatewayRequestClient(config: GatewayClientConfig = {}) {\n const fetchImpl = config.fetchImpl ?? fetch;\n const baseUrl = config.baseUrl?.replace(/\\/+$/, \"\") ?? \"\";\n const maxRetries = config.maxRetries ?? 2;\n const requestIdFactory = config.requestIdFactory ?? (() => crypto.randomUUID());\n\n async function resolveAuthHeaders(): Promise<Record<string, string>> {\n if (!config.getAuthHeaders) {\n return {};\n }\n return await config.getAuthHeaders();\n }\n\n async function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs: number\n ): Promise<Response> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetchImpl(url, { ...init, signal: controller.signal });\n } catch (error) {\n if (controller.signal.aborted) {\n throw timeoutError(timeoutMs);\n }\n throw error;\n } finally {\n clearTimeout(timer);\n }\n }\n\n async function parsePayload<T>(\n response: Response\n ): Promise<PlatformGatewayEnvelope<T> | null> {\n const text = await response.text();\n if (!text) {\n return null;\n }\n try {\n return JSON.parse(text) as PlatformGatewayEnvelope<T>;\n } catch {\n return null;\n }\n }\n\n function resolveTimeoutMs(\n method: GatewayHttpMethod,\n requestTimeoutMs?: number\n ): number {\n if (typeof requestTimeoutMs === \"number\") {\n return requestTimeoutMs;\n }\n const methodTimeoutMs = config.timeoutMsByMethod?.[method];\n if (typeof methodTimeoutMs === \"number\") {\n return methodTimeoutMs;\n }\n return config.timeoutMs ?? 15_000;\n }\n\n function buildApiError(args: {\n requestId: string;\n response: Response;\n failure?: PlatformGatewayFailure | null;\n }): LucernApiError {\n const failure = args.failure;\n const legacyError =\n failure && typeof failure.error === \"object\" && failure.error !== null\n ? failure.error\n : failure?.legacyError;\n const correlationId =\n failure?.correlationId ??\n args.response.headers.get(\"x-lucern-correlation-id\")?.trim() ??\n args.requestId;\n const policyTraceId =\n failure?.policyTraceId ??\n args.response.headers.get(\"x-lucern-policy-trace-id\")?.trim() ??\n null;\n const details = failure?.details ?? legacyError?.details;\n const policySummary = readPolicySummaryFromDetails(details);\n\n return new LucernApiError({\n code: failure?.code ?? legacyError?.code ?? fallbackErrorCode(args.response.status),\n message:\n policySummary ??\n (typeof failure?.error === \"string\"\n ? failure.error\n : legacyError?.message ??\n (args.response.ok\n ? \"Platform API returned an invalid success payload.\"\n : \"Platform API request failed.\")),\n status: args.response.status,\n invariant: failure?.invariant,\n suggestion: failure?.suggestion,\n details,\n requestId: args.requestId,\n correlationId,\n policyTraceId,\n });\n }\n\n async function request<T>(args: {\n path: string;\n method?: GatewayHttpMethod;\n body?: JsonObject;\n idempotencyKey?: string;\n requestId?: string;\n timeoutMs?: number;\n }): Promise<PlatformGatewaySuccess<T>> {\n const authHeaders = await resolveAuthHeaders();\n const method = args.method ?? \"GET\";\n const timeoutMs = resolveTimeoutMs(method, args.timeoutMs);\n const headers = new Headers({\n \"content-type\": \"application/json\",\n ...authHeaders,\n });\n if (args.idempotencyKey) {\n headers.set(\"idempotency-key\", args.idempotencyKey);\n }\n const requestId =\n headers.get(\"x-correlation-id\")?.trim() ||\n headers.get(\"x-request-id\")?.trim() ||\n args.requestId ||\n requestIdFactory();\n if (!headers.has(\"x-correlation-id\") && !headers.has(\"x-request-id\")) {\n headers.set(\"x-correlation-id\", requestId);\n }\n\n const url = `${baseUrl}${args.path}`;\n const serializedBody = args.body ? JSON.stringify(args.body) : undefined;\n const init: RequestInit = {\n method,\n headers,\n body: serializedBody,\n };\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const hookRequestContext: GatewayRequestHookContext = {\n requestId,\n attempt,\n maxRetries,\n method,\n path: args.path,\n url,\n headers: new Headers(headers),\n body: serializedBody,\n timeoutMs,\n };\n await config.onRequest?.(hookRequestContext);\n const startedAt = Date.now();\n try {\n const response = await fetchWithTimeout(url, init, timeoutMs);\n const responseClone = response.clone();\n const payload = await parsePayload<T>(response);\n const retryAfterMs = parseRetryAfterMs(\n response.headers.get(\"Retry-After\")\n );\n\n if (!response.ok || !payload?.success) {\n const failure =\n payload && !payload.success ? (payload as PlatformGatewayFailure) : null;\n const apiError = buildApiError({\n requestId,\n response,\n failure,\n });\n const willRetry = attempt < maxRetries && isRetryableStatus(response.status);\n\n await config.onResponse?.({\n ...hookRequestContext,\n durationMs: Date.now() - startedAt,\n status: response.status,\n response: responseClone,\n error: apiError,\n correlationId: apiError.correlationId ?? requestId,\n policyTraceId: apiError.policyTraceId ?? null,\n retryAfterMs,\n willRetry,\n });\n\n if (willRetry) {\n lastError = apiError;\n await delay(\n computeRetryDelayMs({\n attempt,\n status: response.status,\n retryAfterMs,\n })\n );\n continue;\n }\n\n throw apiError;\n }\n\n const successPayload = payload as PlatformGatewaySuccess<T>;\n await config.onResponse?.({\n ...hookRequestContext,\n durationMs: Date.now() - startedAt,\n status: response.status,\n response: responseClone,\n correlationId:\n successPayload.correlationId ??\n response.headers.get(\"x-lucern-correlation-id\")?.trim() ??\n requestId,\n policyTraceId:\n successPayload.policyTraceId ??\n response.headers.get(\"x-lucern-policy-trace-id\")?.trim() ??\n null,\n idempotentReplay: successPayload.idempotentReplay,\n retryAfterMs,\n willRetry: false,\n });\n\n return successPayload;\n } catch (fetchError) {\n if (fetchError instanceof LucernApiError) {\n throw fetchError;\n }\n const willRetry = attempt < maxRetries;\n await config.onResponse?.({\n ...hookRequestContext,\n durationMs: Date.now() - startedAt,\n error: fetchError,\n correlationId: requestId,\n policyTraceId: null,\n willRetry,\n });\n lastError = fetchError;\n if (willRetry) {\n await delay(computeRetryDelayMs({ attempt }));\n }\n }\n }\n\n throw lastError instanceof Error\n ? lastError\n : new Error(\"Platform API request failed after retries.\");\n }\n\n return {\n request,\n };\n}\n","import type { PlatformGatewaySuccess } from \"./coreClient\";\nimport type { JsonObject, ListResult } from \"./types\";\n\ntype TopicScopedValue = {\n topicId?: string;\n};\n\ntype TextScopedValue = {\n text?: string;\n canonicalText?: string;\n};\n\ntype AnyRecord = Record<string, unknown>;\n\nfunction asRecord(value: unknown): AnyRecord {\n return value && typeof value === \"object\" ? (value as AnyRecord) : {};\n}\n\nfunction cleanString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nfunction cloneWith<T extends AnyRecord>(value: T, patch: AnyRecord): T {\n return { ...value, ...patch } as T;\n}\n\n/**\n * Resolve the canonical topic identifier.\n */\nexport function resolveTopicId(value: TopicScopedValue): string | undefined {\n return cleanString(value.topicId);\n}\n\n/**\n * Resolve the canonical text field from text-first or legacy canonicalText-first inputs.\n */\nexport function resolveText(value: TextScopedValue): string | undefined {\n return cleanString(value.text) ?? cleanString(value.canonicalText);\n}\n\n/**\n * Attach the topicId to a record.\n */\nexport function withTopicAlias<T extends AnyRecord>(value: T): T {\n const topicId = cleanString(value.topicId) ?? undefined;\n if (!topicId) {\n return value;\n }\n return cloneWith(value, { topicId });\n}\n\n/**\n * Attach the text/canonicalText alias pair to a record.\n */\nexport function withTextAlias<T extends AnyRecord>(value: T): T {\n const text =\n cleanString(value.text) ?? cleanString(value.canonicalText) ?? undefined;\n if (!text) {\n return value;\n }\n return cloneWith(value, { text, canonicalText: text });\n}\n\n/**\n * Attach topic and text aliases to SDK node-like records.\n */\nexport function withSdkAliases<T extends AnyRecord>(value: T): T {\n return withTopicAlias(withTextAlias(value));\n}\n\n/**\n * Normalize a belief/question/evidence write payload to the canonical gateway shape.\n */\nexport function normalizeNodeWriteInput<T extends JsonObject>(value: T): T {\n const topicId = resolveTopicId(value);\n const text = resolveText(value);\n const next = { ...value } as JsonObject;\n\n if (topicId) {\n next.topicId = topicId;\n }\n if (text) {\n next.text = text;\n next.canonicalText = text;\n }\n\n return next as T;\n}\n\n/**\n * Build a topic-aware query object.\n */\nexport function normalizeTopicQuery<T extends JsonObject>(value: T): T {\n const topicId = cleanString(value.topicId);\n if (!topicId) {\n return value;\n }\n return { ...value, topicId } as T;\n}\n\n/**\n * Extract list items from array or list-envelope payloads.\n */\nexport function asListItems<T>(data: unknown, legacyKey?: string): T[] {\n if (Array.isArray(data)) {\n return data as T[];\n }\n\n const record = asRecord(data);\n if (Array.isArray(record.items)) {\n return record.items as T[];\n }\n if (legacyKey && Array.isArray(record[legacyKey])) {\n return record[legacyKey] as T[];\n }\n\n return [];\n}\n\n/**\n * Standardize list data to { items, total } while retaining an optional legacy array key.\n */\nexport function createListResult<T, LegacyKey extends string>(\n items: T[],\n legacyKey?: LegacyKey\n): ListResult<T, LegacyKey> {\n const result = {\n items,\n total: items.length,\n } as ListResult<T, LegacyKey>;\n\n if (legacyKey) {\n (result as Record<string, unknown>)[legacyKey] = items;\n }\n\n return result;\n}\n\n/**\n * Map a gateway success envelope's data while preserving the transport metadata.\n */\nexport function mapGatewayData<T, U>(\n response: PlatformGatewaySuccess<T>,\n mapper: (data: T) => U\n): PlatformGatewaySuccess<U> {\n return {\n ...response,\n data: mapper(response.data),\n };\n}\n\n/**\n * Apply SDK aliases across all items in a list-like payload.\n */\nexport function mapAliasedList<\n TItem extends AnyRecord,\n LegacyKey extends string,\n>(\n data: unknown,\n legacyKey?: LegacyKey\n): ListResult<TItem, LegacyKey> {\n const items = asListItems<TItem>(data, legacyKey).map((item) =>\n withSdkAliases(item)\n );\n return createListResult(items, legacyKey);\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { ControlObjectOwnershipContract } from \"./controlObjectOwnership\";\nimport type { JsonObject } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\nexport type AdminClientConfig = GatewayClientConfig;\n\n/**\n * Create the admin client for tenant, workspace, and membership administration.\n */\nexport function createAdminClient(config: AdminClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List tenants visible to the current principal.\n */\n async listTenants(\n query: {\n status?: \"active\" | \"disabled\" | \"archived\";\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/tenants${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"tenants\"\n )\n )\n );\n },\n\n /**\n * Create a tenant.\n */\n async createTenant(\n input: {\n key: string;\n slug?: string;\n name: string;\n status?: \"active\" | \"disabled\" | \"archived\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/tenants\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Get the control-object ownership contract.\n */\n async getControlObjectOwnership() {\n return gateway.request<ControlObjectOwnershipContract>({\n path: \"/api/platform/v1/admin/control-ownership\",\n });\n },\n\n /**\n * @deprecated Use getControlObjectOwnership.\n */\n async getControlObjectOwnershipContract() {\n return this.getControlObjectOwnership();\n },\n\n /**\n * List workspaces for the current admin scope.\n */\n async listWorkspaces(\n query: GatewayScope & {\n status?: \"active\" | \"archived\";\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/workspaces${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"workspaces\"\n )\n )\n );\n },\n\n /**\n * Create a workspace.\n */\n async createWorkspace(\n input: GatewayScope & {\n key: string;\n slug?: string;\n name: string;\n status?: \"active\" | \"archived\";\n defaultProjectVisibility?: \"private\" | \"firm\" | \"public\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/workspaces\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List memberships for the current admin scope.\n */\n async listMemberships(\n query: GatewayScope & {\n principalId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/memberships${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"memberships\"\n )\n )\n );\n },\n\n /**\n * Create a membership.\n */\n async createMembership(\n input: GatewayScope & {\n principalId: string;\n role:\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\n status?: \"active\" | \"revoked\" | \"expired\";\n source?: \"bootstrap\" | \"manual\" | \"sync\" | \"invitation\";\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/memberships\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a membership.\n */\n async updateMembership(\n input: GatewayScope & {\n principalId: string;\n role:\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\n status?: \"active\" | \"revoked\" | \"expired\";\n source?: \"bootstrap\" | \"manual\" | \"sync\" | \"invitation\";\n },\n idempotencyKey?: string\n ) {\n return this.createMembership(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createMembership or updateMembership.\n */\n async upsertMembership(\n input: GatewayScope & {\n principalId: string;\n role:\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\n status?: \"active\" | \"revoked\" | \"expired\";\n source?: \"bootstrap\" | \"manual\" | \"sync\" | \"invitation\";\n },\n idempotencyKey?: string\n ) {\n return this.createMembership(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n} from \"./coreClient\";\n\nexport type AnswersClientConfig = GatewayClientConfig;\n\nexport function createAnswersClient(config: AnswersClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async get(questionId: string) {\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/questions/${encodeURIComponent(questionId)}/answer`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\nexport type AudiencesClientConfig = GatewayClientConfig;\n\nexport type AudienceRegistryInput = GatewayScope & {\n audienceKey: string;\n audienceLabel: string;\n audienceClass: \"internal\" | \"restricted_external\" | \"public\";\n status?: \"active\" | \"disabled\" | \"archived\";\n description?: string;\n metadata?: JsonObject;\n};\n\nexport type AudienceGrantInput = GatewayScope & {\n audienceKey: string;\n audienceClass?: \"internal\" | \"restricted_external\" | \"public\";\n principalId?: string;\n groupId?: string;\n expiresAt?: number;\n metadata?: JsonObject;\n};\n\nexport type AudienceGrantRevokeInput = GatewayScope & {\n grantId: string;\n};\n\n/**\n * Create the audiences client for registry entries and grants.\n */\nexport function createAudiencesClient(config: AudiencesClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List audience registry entries.\n */\n async listRegistry(\n query: GatewayScope & {\n effective?: boolean;\n status?: \"active\" | \"disabled\" | \"archived\";\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/audiences/registry${toQueryString({\n ...query,\n effective:\n typeof query.effective === \"boolean\"\n ? query.effective\n ? \"true\"\n : \"false\"\n : undefined,\n status: query.status,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"registryEntries\"\n )\n )\n );\n },\n\n /**\n * @deprecated Use listRegistry.\n */\n async getRegistry(\n query: GatewayScope & {\n effective?: boolean;\n status?: \"active\" | \"disabled\" | \"archived\";\n } = {}\n ) {\n return this.listRegistry(query);\n },\n\n /**\n * Create an audience registry entry.\n */\n async createRegistryEntry(\n input: AudienceRegistryInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/audiences/registry\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update an audience registry entry.\n */\n async updateRegistryEntry(\n input: AudienceRegistryInput,\n idempotencyKey?: string\n ) {\n return this.createRegistryEntry(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createRegistryEntry or updateRegistryEntry.\n */\n async upsertRegistry(\n input: AudienceRegistryInput,\n idempotencyKey?: string\n ) {\n return this.createRegistryEntry(input, idempotencyKey);\n },\n\n /**\n * List audience grants.\n */\n async listGrants(\n query: GatewayScope & {\n audienceKey?: string;\n principalId?: string;\n groupId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/audiences/grants${toQueryString({\n ...query,\n audienceKey: query.audienceKey,\n principalId: query.principalId,\n groupId: query.groupId,\n status: query.status,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"grants\")\n )\n );\n },\n\n /**\n * @deprecated Use listGrants.\n */\n async getGrants(\n query: GatewayScope & {\n audienceKey?: string;\n principalId?: string;\n groupId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n } = {}\n ) {\n return this.listGrants(query);\n },\n\n /**\n * Create an audience grant.\n */\n async createGrant(input: AudienceGrantInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/audiences/grants\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createGrant.\n */\n async grant(input: AudienceGrantInput, idempotencyKey?: string) {\n return this.createGrant(input, idempotencyKey);\n },\n\n /**\n * Delete an audience grant by revoking it.\n */\n async deleteGrant(\n input: AudienceGrantRevokeInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/audiences/grants/revoke\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use deleteGrant.\n */\n async revokeGrant(\n input: AudienceGrantRevokeInput,\n idempotencyKey?: string\n ) {\n return this.deleteGrant(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, normalizeTopicQuery } from \"./sdkSurface\";\nimport type { TopicIdentifierInput } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\nexport type AuditClientConfig = GatewayClientConfig;\n\n/**\n * Create the audit client for transport-level audit event reads.\n */\nexport function createAuditClient(config: AuditClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List audit events for the current scope.\n */\n async listEvents(\n query: GatewayScope & {\n action?: string;\n decision?: string;\n traceId?: string;\n principalId?: string;\n topicId?: string;\n limit?: number;\n } & TopicIdentifierInput = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/audit/events${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"events\")\n )\n );\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n} from \"./coreClient\";\nimport { normalizeNodeWriteInput } from \"./sdkSurface\";\nimport type {\n CreateBeliefResponse,\n ForkBeliefResponse,\n JsonObject,\n ModulateConfidenceResponse,\n TextAliasInput,\n TopicIdentifierInput,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n CreateBeliefResponse,\n ForkBeliefResponse,\n ModulateConfidenceResponse,\n} from \"./types\";\n\nexport type BeliefsClientConfig = GatewayClientConfig;\n\nexport type CreateBeliefInput = {\n topicId?: string;\n /** @deprecated Use text. */\n canonicalText?: string;\n text?: string;\n layer?: \"L1\" | \"L2\" | \"L3\" | \"L4\";\n domain?: string;\n sourceType?: \"human\" | \"ai\" | \"agent\" | \"imported\";\n content?: string;\n contentHash?: string;\n globalId?: string;\n title?: string;\n subtype?: string;\n confidence?: number;\n tags?: string[];\n metadata?: JsonObject;\n verificationStatus?: \"unverified\" | \"verified\" | \"rejected\";\n} & TopicIdentifierInput &\n TextAliasInput;\n\nexport type ModulateConfidenceInput = {\n confidence: number;\n trigger?:\n | \"evidence_added\"\n | \"evidence_removed\"\n | \"contradiction_detected\"\n | \"contradiction_resolved\"\n | \"manual\"\n | \"decay\"\n | \"agent_assessment\"\n | \"merge_outcome\"\n | \"sprint_outcome\"\n | \"sprint_completed\";\n rationale: string;\n certainty?: number;\n};\n\nexport type ForkBeliefInput = {\n newFormulation: string;\n forkReason?:\n | \"refinement\"\n | \"contradiction_response\"\n | \"scope_change\"\n | \"confidence_collapse\"\n | \"manual\";\n rationale?: string;\n};\n\n/**\n * Create the beliefs client for belief lifecycle operations.\n */\nexport function createBeliefsClient(config: BeliefsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * Create a belief within a topic scope.\n */\n async createBelief(input: CreateBeliefInput, idempotencyKey?: string) {\n return gateway.request<CreateBeliefResponse>({\n path: \"/api/platform/v1/graph/beliefs\",\n method: \"POST\",\n body: normalizeNodeWriteInput(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Record a confidence change for an existing belief.\n */\n async modulateConfidence(\n beliefId: string,\n input: ModulateConfidenceInput,\n idempotencyKey?: string\n ) {\n return gateway.request<ModulateConfidenceResponse>({\n path: `/api/platform/v1/graph/beliefs/${encodeURIComponent(beliefId)}/confidence`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Fork a scored belief into a new formulation.\n */\n async forkBelief(\n beliefId: string,\n input: ForkBeliefInput,\n idempotencyKey?: string\n ) {\n return gateway.request<ForkBeliefResponse>({\n path: `/api/platform/v1/graph/beliefs/${encodeURIComponent(beliefId)}/fork`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n };\n}\n","import { z } from \"zod\";\nimport type {\n McpParameterDef,\n McpResponseDef,\n McpToolContract,\n} from \"@lucern/contracts/mcp-tools.contract\";\nimport type { JsonObject } from \"./types\";\n\nconst DEFAULT_CUSTOM_NAMESPACE = \"custom\";\nconst RESERVED_NAMESPACES = new Set([\"lucern\"]);\n\ntype AnyZodObject = z.ZodObject<z.ZodRawShape>;\n\nexport type CustomToolInvocationSource = \"sdk\" | \"mcp\";\n\nexport type CustomToolInvocationContext = {\n source: CustomToolInvocationSource;\n};\n\nexport type CustomToolMetadata = {\n category?: string;\n tags?: string[];\n requiredScopes?: string[];\n};\n\nexport type CustomToolRegistration<\n TInput extends AnyZodObject = AnyZodObject,\n TOutput extends z.ZodTypeAny = z.ZodTypeAny,\n> = {\n namespace?: string;\n name: string;\n description: string;\n inputSchema: TInput;\n outputSchema: TOutput;\n handler: (\n input: z.infer<TInput>,\n context: CustomToolInvocationContext\n ) => Promise<z.infer<TOutput>> | z.infer<TOutput>;\n metadata?: CustomToolMetadata;\n ownerModule?: string;\n ontologyPrimitive?: McpToolContract[\"ontologyPrimitive\"];\n tier?: McpToolContract[\"tier\"];\n};\n\nexport type RegisteredCustomTool = {\n fullName: string;\n namespace: string;\n shortName: string;\n metadata: CustomToolMetadata;\n contract: McpToolContract;\n inputSchema: AnyZodObject;\n outputSchema: z.ZodTypeAny;\n invoke: (\n input: JsonObject,\n context: CustomToolInvocationContext\n ) => Promise<unknown>;\n};\n\nexport class CustomToolRegistryError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CustomToolRegistryError\";\n }\n}\n\nconst customToolRegistry = new Map<string, RegisteredCustomTool>();\n\nfunction normalizeSegment(value: string, field: \"namespace\" | \"name\"): string {\n const normalized = value.trim();\n if (!normalized) {\n throw new CustomToolRegistryError(`Custom tool ${field} is required.`);\n }\n if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(normalized)) {\n throw new CustomToolRegistryError(\n `Invalid custom tool ${field}: \"${value}\". Use letters, numbers, \"_\" or \"-\".`\n );\n }\n return normalized;\n}\n\nfunction normalizeNamespace(namespace?: string): string {\n const resolved = normalizeSegment(\n namespace ?? DEFAULT_CUSTOM_NAMESPACE,\n \"namespace\"\n );\n if (RESERVED_NAMESPACES.has(resolved.toLowerCase())) {\n throw new CustomToolRegistryError(\n `Namespace \"${resolved}\" is reserved for platform tools.`\n );\n }\n return resolved;\n}\n\nfunction normalizeName(name: string): string {\n if (name.includes(\".\")) {\n throw new CustomToolRegistryError(\n `Custom tool name \"${name}\" must not include \".\"; use namespace + name.`\n );\n }\n return normalizeSegment(name, \"name\");\n}\n\nfunction buildFullName(namespace: string, shortName: string): string {\n return `${namespace}.${shortName}`;\n}\n\nfunction unwrapSchema(schema: z.ZodTypeAny): {\n schema: z.ZodTypeAny;\n required: boolean;\n} {\n if (schema instanceof z.ZodOptional) {\n return { schema: schema.unwrap(), required: false };\n }\n if (schema instanceof z.ZodDefault) {\n const removeDefault = (\n schema as unknown as { removeDefault?: () => z.ZodTypeAny }\n ).removeDefault;\n if (typeof removeDefault === \"function\") {\n return { schema: removeDefault.call(schema), required: false };\n }\n const inner = (schema as unknown as { _def?: { innerType?: z.ZodTypeAny } })\n ._def?.innerType;\n return { schema: inner ?? schema, required: false };\n }\n return { schema, required: true };\n}\n\nfunction resolveParameterType(schema: z.ZodTypeAny): {\n type: McpParameterDef[\"type\"];\n enum?: string[];\n} {\n if (schema instanceof z.ZodString) {\n return { type: \"string\" };\n }\n if (schema instanceof z.ZodEnum) {\n return { type: \"string\", enum: schema.options };\n }\n if (schema instanceof z.ZodNativeEnum) {\n const values = Object.values(schema.enum).filter(\n (value): value is string => typeof value === \"string\"\n );\n return values.length > 0\n ? { type: \"string\", enum: values }\n : { type: \"string\" };\n }\n if (schema instanceof z.ZodLiteral) {\n const literalValue = schema.value;\n if (typeof literalValue === \"string\") {\n return { type: \"string\", enum: [literalValue] };\n }\n if (typeof literalValue === \"number\") {\n return { type: \"number\" };\n }\n if (typeof literalValue === \"boolean\") {\n return { type: \"boolean\" };\n }\n return { type: \"object\" };\n }\n if (schema instanceof z.ZodNumber) {\n return { type: \"number\" };\n }\n if (schema instanceof z.ZodBoolean) {\n return { type: \"boolean\" };\n }\n if (schema instanceof z.ZodArray) {\n return { type: \"array\" };\n }\n return { type: \"object\" };\n}\n\nfunction schemaTypeLabel(schema: z.ZodTypeAny): string {\n if (schema instanceof z.ZodString || schema instanceof z.ZodEnum) {\n return \"string\";\n }\n if (schema instanceof z.ZodNumber) {\n return \"number\";\n }\n if (schema instanceof z.ZodBoolean) {\n return \"boolean\";\n }\n if (schema instanceof z.ZodArray) {\n return \"array\";\n }\n if (schema instanceof z.ZodObject) {\n return \"object\";\n }\n return \"unknown\";\n}\n\nfunction parseObjectSchema<TInput extends AnyZodObject>(\n value: TInput,\n fieldName: string\n): TInput {\n if (!(value instanceof z.ZodObject)) {\n throw new CustomToolRegistryError(\n `${fieldName} must be a Zod object schema.`\n );\n }\n return value;\n}\n\nfunction deriveParameters(schema: AnyZodObject): {\n parameters: Record<string, McpParameterDef>;\n required: string[];\n} {\n const shape = schema.shape;\n const parameters: Record<string, McpParameterDef> = {};\n const required: string[] = [];\n\n for (const [key, raw] of Object.entries(shape)) {\n const { schema: unwrapped, required: isRequired } = unwrapSchema(\n raw as z.ZodTypeAny\n );\n const parameterType = resolveParameterType(unwrapped);\n parameters[key] = {\n type: parameterType.type,\n description: (raw as z.ZodTypeAny).description ?? `${key} parameter`,\n ...(parameterType.enum ? { enum: parameterType.enum } : {}),\n };\n if (isRequired) {\n required.push(key);\n }\n }\n\n return { parameters, required };\n}\n\nfunction deriveResponse(schema: z.ZodTypeAny): McpResponseDef {\n if (schema instanceof z.ZodObject) {\n const fields = Object.fromEntries(\n Object.entries(schema.shape).map(([key, value]) => {\n const zodValue = value as z.ZodTypeAny;\n const label = schemaTypeLabel(unwrapSchema(zodValue).schema);\n const description = zodValue.description ?? \"custom output field\";\n return [key, `${label} — ${description}`];\n })\n );\n return {\n description: \"Custom tool result payload\",\n fields,\n };\n }\n\n return {\n description: \"Custom tool result payload\",\n fields: {\n result: `${schemaTypeLabel(schema)} — custom output payload`,\n },\n };\n}\n\nfunction buildContract<\n TInput extends AnyZodObject,\n TOutput extends z.ZodTypeAny,\n>(\n fullName: string,\n namespace: string,\n registration: CustomToolRegistration<TInput, TOutput>,\n inputSchema: TInput\n): McpToolContract {\n const { parameters, required } = deriveParameters(inputSchema);\n return {\n name: fullName,\n description: registration.description,\n parameters,\n required,\n response: deriveResponse(registration.outputSchema),\n ownerModule: registration.ownerModule ?? `${namespace}-extension`,\n ontologyPrimitive: registration.ontologyPrimitive ?? \"task\",\n tier: registration.tier ?? \"workhorse\",\n };\n}\n\n/**\n * Register a custom SDK tool in the in-memory registry.\n */\nexport function registerCustomTool<\n TInput extends AnyZodObject,\n TOutput extends z.ZodTypeAny,\n>(\n registration: CustomToolRegistration<TInput, TOutput>,\n options: { replace?: boolean } = {}\n): RegisteredCustomTool {\n const namespace = normalizeNamespace(registration.namespace);\n const shortName = normalizeName(registration.name);\n const fullName = buildFullName(namespace, shortName);\n\n if (customToolRegistry.has(fullName) && !options.replace) {\n throw new CustomToolRegistryError(\n `Custom tool \"${fullName}\" is already registered.`\n );\n }\n\n const inputSchema = parseObjectSchema(\n registration.inputSchema,\n \"inputSchema\"\n );\n const outputSchema = registration.outputSchema;\n const contract = buildContract(\n fullName,\n namespace,\n registration,\n inputSchema\n );\n const metadata: CustomToolMetadata = {\n category: registration.metadata?.category,\n tags: registration.metadata?.tags ?? [],\n requiredScopes: registration.metadata?.requiredScopes ?? [\"custom:execute\"],\n };\n\n const registered: RegisteredCustomTool = {\n fullName,\n namespace,\n shortName,\n metadata,\n contract,\n inputSchema,\n outputSchema,\n invoke: async (input, context) => {\n const parsedInput = inputSchema.parse(input);\n const rawOutput = await registration.handler(parsedInput, context);\n return outputSchema.parse(rawOutput);\n },\n };\n\n customToolRegistry.set(fullName, registered);\n return registered;\n}\n\n/**\n * Remove a custom SDK tool from the registry.\n */\nexport function unregisterCustomTool(fullName: string): boolean {\n return customToolRegistry.delete(fullName.trim());\n}\n\n/**\n * Get a custom SDK tool by fully qualified name.\n */\nexport function getRegisteredCustomTool(\n fullName: string\n): RegisteredCustomTool | undefined {\n return customToolRegistry.get(fullName.trim());\n}\n\n/**\n * List all registered custom SDK tools.\n */\nexport function listRegisteredCustomTools(): RegisteredCustomTool[] {\n return [...customToolRegistry.values()].sort((left, right) =>\n left.fullName.localeCompare(right.fullName)\n );\n}\n\n/**\n * Clear the registered custom tool registry.\n */\nexport function clearRegisteredCustomTools(): void {\n customToolRegistry.clear();\n}\n\n/**\n * Invoke a registered custom SDK tool.\n */\nexport async function invokeRegisteredCustomTool(\n fullName: string,\n params: JsonObject,\n context: CustomToolInvocationContext\n): Promise<unknown> {\n const registered = getRegisteredCustomTool(fullName);\n if (!registered) {\n throw new CustomToolRegistryError(\n `Custom tool \"${fullName}\" is not registered.`\n );\n }\n return registered.invoke(params, context);\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n createListResult,\n mapGatewayData,\n normalizeTopicQuery,\n withTopicAlias,\n} from \"./sdkSurface\";\nimport type {\n GetJudgmentResponse,\n JudgmentCalibrationResponse,\n JudgmentRecord,\n JudgmentReadinessResponse,\n JudgmentTransitionAuditIntegrityResponse,\n ListJudgmentsResponse,\n PendingJudgmentOutcomeReviewResponse,\n PendingJudgmentOutcomeRecord,\n RecordJudgmentOutcomeResponse,\n RecordJudgmentResponse,\n TopicIdentifierInput,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n GetJudgmentResponse,\n JudgmentCalibrationResponse,\n JudgmentReadinessResponse,\n JudgmentTransitionAuditIntegrityResponse,\n ListJudgmentsResponse,\n PendingJudgmentOutcomeReviewResponse,\n RecordJudgmentOutcomeResponse,\n RecordJudgmentResponse,\n} from \"./types\";\n\nexport type DecisionsClientConfig = GatewayClientConfig;\n\nexport type RecordJudgmentInput = {\n title: string;\n summary?: string;\n rationale: string;\n topicId?: string;\n confidence?: number;\n decisionConfidence?: number;\n judgmentType?: string;\n decisionType?: string;\n beliefIds?: string[];\n keyUncertainties?: string[];\n alternativesConsidered?: string[];\n decisionMakers?: string[];\n companyId?: string;\n amount?: number;\n valuation?: number;\n terms?: string;\n themeIds?: string[];\n} & TopicIdentifierInput;\n\nexport type ListJudgmentsInput = {\n topicId?: string;\n includeArchived?: boolean;\n limit?: number;\n} & TopicIdentifierInput;\n\nexport type RecordJudgmentOutcomeInput = {\n outcome:\n | \"pending\"\n | \"successful\"\n | \"unsuccessful\"\n | \"mixed\"\n | \"unknown\"\n | \"too_early\";\n outcomeNotes?: string;\n notes?: string;\n};\n\nexport type GetJudgmentCalibrationInput = {\n topicId?: string;\n} & TopicIdentifierInput;\n\nexport type ListPendingJudgmentOutcomeReviewInput = {\n topicId?: string;\n} & TopicIdentifierInput;\n\nexport type GetJudgmentTransitionAuditIntegrityInput = {\n topicId?: string;\n judgmentId?: string;\n includePassing?: boolean;\n} & TopicIdentifierInput;\n\n/**\n * Create the judgments client for decision lifecycle operations.\n */\nexport function createDecisionsClient(config: DecisionsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List judgments for a topic scope.\n */\n async listJudgments(query: ListJudgmentsInput) {\n return gateway.request<ListJudgmentsResponse>({\n path: `/api/platform/v1/graph/judgments${toQueryString({\n ...normalizeTopicQuery(query),\n includeArchived:\n typeof query.includeArchived === \"boolean\"\n ? query.includeArchived\n ? \"true\"\n : \"false\"\n : undefined,\n limit: query.limit,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const rows = Array.isArray(data) ? data : [];\n const judgments = rows.map((row) =>\n withTopicAlias(row as Record<string, unknown>) as JudgmentRecord\n );\n return {\n ...createListResult(judgments, \"judgments\"),\n } as ListJudgmentsResponse;\n })\n );\n },\n\n /**\n * Get a single judgment by identifier.\n */\n async getJudgment(judgmentId: string) {\n return gateway.request<GetJudgmentResponse>({\n path: `/api/platform/v1/graph/judgments/${encodeURIComponent(judgmentId)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n data && typeof data === \"object\"\n ? (withTopicAlias(\n data as Record<string, unknown>\n ) as GetJudgmentResponse)\n : data\n )\n );\n },\n\n /**\n * Get readiness signals for creating a judgment.\n */\n async getJudgmentReadiness(query: {\n topicId?: string;\n } & TopicIdentifierInput) {\n return gateway.request<JudgmentReadinessResponse>({\n path: `/api/platform/v1/graph/judgments/readiness${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n });\n },\n\n /**\n * Get calibration analytics for judgment outcomes.\n */\n async getJudgmentCalibration(query: GetJudgmentCalibrationInput) {\n return gateway.request<JudgmentCalibrationResponse>({\n path: `/api/platform/v1/graph/judgments/calibration${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n });\n },\n\n /**\n * List judgments still awaiting outcome review.\n */\n async listPendingOutcomeReviews(\n query: ListPendingJudgmentOutcomeReviewInput\n ) {\n return gateway.request<PendingJudgmentOutcomeReviewResponse>({\n path: `/api/platform/v1/graph/judgments/pending-outcome-review${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const rows = Array.isArray(data) ? data : [];\n const reviews = rows.map((row) =>\n withTopicAlias(\n row as Record<string, unknown>\n ) as PendingJudgmentOutcomeRecord\n );\n return createListResult(reviews, \"reviews\");\n })\n );\n },\n\n /**\n * @deprecated Use listPendingOutcomeReviews.\n */\n async listPendingJudgmentOutcomeReview(\n query: ListPendingJudgmentOutcomeReviewInput\n ) {\n return this.listPendingOutcomeReviews(query);\n },\n\n /**\n * Get audit integrity checks for judgment transitions.\n */\n async getJudgmentTransitionAuditIntegrity(\n query: GetJudgmentTransitionAuditIntegrityInput\n ) {\n return gateway.request<JudgmentTransitionAuditIntegrityResponse>({\n path: `/api/platform/v1/graph/judgments/transition-audit-integrity${toQueryString(\n {\n ...normalizeTopicQuery(query),\n judgmentId: query.judgmentId,\n includePassing:\n typeof query.includePassing === \"boolean\"\n ? query.includePassing\n ? \"true\"\n : \"false\"\n : undefined,\n }\n )}`,\n });\n },\n\n /**\n * Create a judgment.\n */\n async createJudgment(input: RecordJudgmentInput, idempotencyKey?: string) {\n return gateway.request<RecordJudgmentResponse>({\n path: \"/api/platform/v1/graph/judgments\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(\n data as Record<string, unknown>\n ) as RecordJudgmentResponse\n )\n );\n },\n\n /**\n * @deprecated Use createJudgment.\n */\n async recordJudgment(input: RecordJudgmentInput, idempotencyKey?: string) {\n return this.createJudgment(input, idempotencyKey);\n },\n\n /**\n * Update the outcome for an existing judgment.\n */\n async updateJudgmentOutcome(\n judgmentId: string,\n input: RecordJudgmentOutcomeInput,\n idempotencyKey?: string\n ) {\n return gateway.request<RecordJudgmentOutcomeResponse>({\n path: `/api/platform/v1/graph/judgments/${encodeURIComponent(judgmentId)}/outcome`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use updateJudgmentOutcome.\n */\n async recordJudgmentOutcome(\n judgmentId: string,\n input: RecordJudgmentOutcomeInput,\n idempotencyKey?: string\n ) {\n return this.updateJudgmentOutcome(judgmentId, input, idempotencyKey);\n },\n };\n}\n","import type {\n ContextCompilationMode,\n ContextRankingProfile,\n PackWeightOverride,\n} from \"../../../contracts/src/context-pack.contract\";\n\nexport type CompileContextInput = {\n query?: string;\n budget?: number;\n ranking?: ContextRankingProfile;\n limit?: number;\n maxDepth?: number;\n includeEntities?: boolean;\n mode?: ContextCompilationMode;\n includeFailures?: boolean;\n worktreeId?: string;\n sessionId?: string;\n packWeightOverrides?: PackWeightOverride[];\n /** @deprecated Use budget. */\n tokenBudget?: number;\n /** @deprecated Use ranking. */\n rankingProfile?: ContextRankingProfile;\n};\n\nexport type ContextClientRequest = {\n path: \"/api/platform/v1/context/compile\";\n method: \"POST\";\n body: Record<string, unknown>;\n};\n\nfunction cleanString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nfunction cleanNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction cleanBoolean(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nexport function buildCompileContextRequest(\n topicId: string,\n input: CompileContextInput = {}\n): ContextClientRequest {\n const payload: Record<string, unknown> = {\n topicId,\n };\n\n const query = cleanString(input.query);\n if (query) {\n payload.query = query;\n }\n\n const budget =\n cleanNumber(input.budget) ?? cleanNumber(input.tokenBudget);\n if (budget !== undefined) {\n payload.budget = budget;\n }\n\n const ranking = cleanString(input.ranking) ?? cleanString(input.rankingProfile);\n if (ranking) {\n payload.ranking = ranking;\n }\n\n const limit = cleanNumber(input.limit);\n if (limit !== undefined) {\n payload.limit = limit;\n }\n\n const maxDepth = cleanNumber(input.maxDepth);\n if (maxDepth !== undefined) {\n payload.maxDepth = maxDepth;\n }\n\n const includeEntities = cleanBoolean(input.includeEntities);\n if (includeEntities !== undefined) {\n payload.includeEntities = includeEntities;\n }\n\n const mode = cleanString(input.mode);\n if (mode) {\n payload.mode = mode;\n }\n\n const includeFailures = cleanBoolean(input.includeFailures);\n if (includeFailures !== undefined) {\n payload.includeFailures = includeFailures;\n }\n\n const worktreeId = cleanString(input.worktreeId);\n if (worktreeId) {\n payload.worktreeId = worktreeId;\n }\n\n const sessionId = cleanString(input.sessionId);\n if (sessionId) {\n payload.sessionId = sessionId;\n }\n\n if (Array.isArray(input.packWeightOverrides) && input.packWeightOverrides.length > 0) {\n payload.packWeightOverrides = input.packWeightOverrides;\n }\n\n return {\n path: \"/api/platform/v1/context/compile\",\n method: \"POST\",\n body: payload,\n };\n}\n\nexport function createContextClientCore<TResult>(deps: {\n execute(request: ContextClientRequest): Promise<TResult>;\n}) {\n return {\n compile(topicId: string, input: CompileContextInput = {}) {\n return deps.execute(buildCompileContextRequest(topicId, input));\n },\n };\n}\n","import {\n buildCompileContextRequest,\n type CompileContextInput,\n} from \"@/lucern/packages/client-core/src/context\";\nimport type { PublicCompiledContext } from \"@/lucern/packages/domain-context/src\";\nimport {\n createGatewayRequestClient,\n type GatewayClientConfig,\n} from \"./coreClient\";\nimport type { JsonObject } from \"./types\";\n\nexport type ContextClientConfig = GatewayClientConfig;\nexport type CompileContextResponse = PublicCompiledContext;\n\nexport function createContextClient(config: ContextClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async compile(topicId: string, input: CompileContextInput = {}) {\n const request = buildCompileContextRequest(topicId, input);\n return gateway.request<CompileContextResponse>({\n ...request,\n body: request.body as JsonObject,\n });\n },\n };\n}\n\nexport type { CompileContextInput };\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n mapAliasedList,\n mapGatewayData,\n normalizeNodeWriteInput,\n normalizeTopicQuery,\n withSdkAliases,\n} from \"./sdkSurface\";\nimport type {\n CreateEdgeResponse,\n CreateNodeResponse,\n DeleteEdgeResponse,\n GraphAnalyticsMetric,\n GraphAnalyticsResponse,\n GraphNeighborhoodResponse,\n GraphPathResponse,\n JsonObject,\n ListResult,\n PlatformGraphEdge,\n PlatformGraphNode,\n QueryEdgesResponse,\n QueryNodesResponse,\n TextAliasInput,\n TopicIdentifierInput,\n UpdateNodeResponse,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n CreateEdgeResponse,\n CreateNodeResponse,\n DeleteEdgeResponse,\n GraphAnalyticsMetric,\n GraphAnalyticsResponse,\n GraphNeighborhoodResponse,\n GraphPathResponse,\n ListResult,\n QueryEdgesResponse,\n QueryNodesResponse,\n UpdateNodeResponse,\n} from \"./types\";\n\nexport type GraphClientConfig = GatewayClientConfig;\n\nexport type ListNodesInput = {\n nodeId?: string;\n globalId?: string;\n topicId?: string;\n nodeType?: string;\n limit?: number;\n} & TopicIdentifierInput;\n\nexport type ListNodesResponse = ListResult<PlatformGraphNode, \"nodes\">;\n\nexport type QueryNodesInput = ListNodesInput;\n\nexport type CreateNodeInput = {\n text?: string;\n /** @deprecated Use text. */\n canonicalText?: string;\n nodeType: string;\n topicId?: string;\n content?: string;\n contentHash?: string;\n globalId?: string;\n sourceType?: string;\n subtype?: string;\n title?: string;\n confidence?: number;\n status?: string;\n tags?: string[];\n metadata?: JsonObject;\n verificationStatus?: string;\n} & TextAliasInput &\n TopicIdentifierInput;\n\nexport type UpdateNodeInput = {\n nodeId: string;\n text?: string;\n canonicalText?: string;\n content?: string;\n contentHash?: string;\n title?: string;\n subtype?: string;\n confidence?: number;\n status?: string;\n tags?: string[];\n metadata?: JsonObject;\n verificationStatus?: string;\n} & TextAliasInput;\n\nexport type ListEdgesInput = {\n edgeId?: string;\n topicId?: string;\n fromNodeId?: string;\n toNodeId?: string;\n edgeType?: string;\n limit?: number;\n} & TopicIdentifierInput;\n\nexport type ListEdgesResponse = ListResult<PlatformGraphEdge, \"edges\">;\n\nexport type QueryEdgesInput = ListEdgesInput;\n\nexport type CreateEdgeInput = {\n fromNodeId: string;\n toNodeId: string;\n edgeType: string;\n globalId?: string;\n topicId?: string;\n confidence?: number;\n weight?: number;\n context?: string;\n derivationType?: string;\n} & TopicIdentifierInput;\n\nexport type DeleteEdgeInput = {\n edgeId?: string;\n fromNodeId?: string;\n toNodeId?: string;\n edgeType?: string;\n};\n\nexport type NeighborhoodInput = {\n globalId?: string;\n globalIds?: string;\n maxDepth?: number;\n};\n\nexport type PathInput = {\n fromGlobalId: string;\n toGlobalId: string;\n maxDepth?: number;\n};\n\nexport type AnalyticsInput = {\n metric?: GraphAnalyticsMetric;\n limit?: number;\n};\n\nexport type TraverseInput = {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n} & TopicIdentifierInput;\n\nexport type AnalyzeInput = {\n topicId?: string;\n metric?: GraphAnalyticsMetric;\n limit?: number;\n} & TopicIdentifierInput;\n\nexport type BiasInput = {\n topicId?: string;\n threshold?: number;\n limit?: number;\n} & TopicIdentifierInput;\n\nexport type GapsInput = {\n topicId?: string;\n minConfidence?: number;\n} & TopicIdentifierInput;\n\nexport type SearchInput = {\n q?: string;\n query?: string;\n topicId?: string;\n types?: string[];\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n} & TopicIdentifierInput;\n\n/**\n * Create the low-level graph client for nodes, edges, and graph analytics.\n */\nexport function createGraphClient(config: GraphClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List graph nodes matching the provided filters.\n */\n async listNodes(query: ListNodesInput) {\n return gateway.request<ListNodesResponse>({\n path: `/api/platform/v1/graph/nodes${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) => mapAliasedList<PlatformGraphNode, \"nodes\">(data, \"nodes\"))\n );\n },\n\n /**\n * @deprecated Use listNodes.\n */\n async queryNodes(query: QueryNodesInput) {\n return this.listNodes(query);\n },\n\n /**\n * Create a graph node.\n */\n async createNode(input: CreateNodeInput, idempotencyKey?: string) {\n return gateway.request<CreateNodeResponse>({\n path: \"/api/platform/v1/graph/nodes\",\n method: \"POST\",\n body: normalizeNodeWriteInput(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withSdkAliases(data as Record<string, unknown>) as CreateNodeResponse\n )\n );\n },\n\n /**\n * Update a graph node.\n */\n async updateNode(input: UpdateNodeInput, idempotencyKey?: string) {\n return gateway.request<UpdateNodeResponse>({\n path: \"/api/platform/v1/graph/nodes\",\n method: \"PUT\",\n body: normalizeNodeWriteInput(input as UpdateNodeInput & JsonObject),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withSdkAliases(data as Record<string, unknown>) as UpdateNodeResponse\n )\n );\n },\n\n /**\n * List graph edges matching the provided filters.\n */\n async listEdges(query: ListEdgesInput) {\n return gateway.request<ListEdgesResponse>({\n path: `/api/platform/v1/graph/edges${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<PlatformGraphEdge, \"edges\">(data, \"edges\")\n )\n );\n },\n\n /**\n * @deprecated Use listEdges.\n */\n async queryEdges(query: QueryEdgesInput) {\n return this.listEdges(query);\n },\n\n /**\n * Create a graph edge.\n */\n async createEdge(input: CreateEdgeInput, idempotencyKey?: string) {\n return gateway.request<CreateEdgeResponse>({\n path: \"/api/platform/v1/graph/edges\",\n method: \"POST\",\n body: normalizeTopicQuery(input as CreateEdgeInput & JsonObject),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Delete one or more edges matching the provided filter.\n */\n async deleteEdge(query: DeleteEdgeInput, idempotencyKey?: string) {\n return gateway.request<DeleteEdgeResponse>({\n path: `/api/platform/v1/graph/edges${toQueryString(query)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Retrieve a graph neighborhood around a root node.\n */\n async neighborhood(query: NeighborhoodInput) {\n return gateway.request<GraphNeighborhoodResponse>({\n path: `/api/platform/v1/graph/neighborhood${toQueryString(query)}`,\n });\n },\n\n /**\n * Traverse the graph from a starting node.\n */\n async traverse(query: TraverseInput) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/traverse\",\n method: \"POST\",\n body: normalizeTopicQuery(query as TraverseInput & JsonObject),\n });\n },\n\n /**\n * Analyze graph structure for a topic.\n */\n async analyze(query: AnalyzeInput = {}) {\n const normalized = normalizeTopicQuery(query as AnalyzeInput & JsonObject);\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/graph/analyze${toQueryString({\n topicId:\n typeof normalized.topicId === \"string\" ? normalized.topicId : undefined,\n metric:\n typeof normalized.metric === \"string\" ? normalized.metric : undefined,\n limit:\n typeof normalized.limit === \"number\" ? normalized.limit : undefined,\n })}`,\n });\n },\n\n /**\n * Detect confirmation-bias patterns for a topic graph.\n */\n async bias(query: BiasInput = {}) {\n const normalized = normalizeTopicQuery(query as BiasInput & JsonObject);\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/graph/bias${toQueryString({\n topicId:\n typeof normalized.topicId === \"string\" ? normalized.topicId : undefined,\n threshold:\n typeof normalized.threshold === \"number\"\n ? normalized.threshold\n : undefined,\n limit:\n typeof normalized.limit === \"number\" ? normalized.limit : undefined,\n })}`,\n });\n },\n\n /**\n * Find graph gaps for beliefs that still need testing.\n */\n async gaps(query: GapsInput) {\n const normalized = normalizeTopicQuery(query as GapsInput & JsonObject);\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/graph/gaps${toQueryString({\n topicId:\n typeof normalized.topicId === \"string\" ? normalized.topicId : undefined,\n minConfidence:\n typeof normalized.minConfidence === \"number\"\n ? normalized.minConfidence\n : undefined,\n })}`,\n });\n },\n\n /**\n * Search across graph resources within a topic.\n */\n async search(query: SearchInput) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/search\",\n method: \"POST\",\n body: normalizeTopicQuery(query as SearchInput & JsonObject),\n });\n },\n\n /**\n * Retrieve a graph neighborhood around a root node.\n */\n async getNeighborhood(query: NeighborhoodInput) {\n return this.neighborhood(query);\n },\n\n /**\n * Retrieve the shortest known path between two graph nodes.\n */\n async getPath(query: PathInput) {\n return gateway.request<GraphPathResponse>({\n path: `/api/platform/v1/graph/path${toQueryString(query)}`,\n });\n },\n\n /**\n * Retrieve graph analytics for the requested metric.\n */\n async getAnalytics(query: AnalyticsInput = {}) {\n return gateway.request<GraphAnalyticsResponse>({\n path: `/api/platform/v1/graph/analytics${toQueryString(query)}`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, normalizeTopicQuery } from \"./sdkSurface\";\nimport type { JsonObject, JsonValue, TopicIdentifierInput } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\nexport type HarnessClientConfig = GatewayClientConfig;\n\nexport type HarnessAgentWriteInput = GatewayScope & {\n agentDefinitionId?: string;\n agentKey: string;\n displayName: string;\n description: string;\n version: string;\n status?: \"active\" | \"deprecated\" | \"disabled\";\n executionAdapter:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n scopeRequirements?: string[];\n promptReleaseChannel?: \"dev\" | \"staging\" | \"prod\";\n parameterSchema?: JsonObject;\n exampleInvocations?: Array<{\n input: JsonObject;\n expectedOutput?: JsonValue;\n }>;\n metadata?: JsonObject;\n};\n\nexport type HarnessToolWriteInput = GatewayScope & {\n toolId?: string;\n toolName: string;\n description: string;\n version: string;\n status?: \"draft\" | \"active\" | \"deprecated\" | \"disabled\";\n executionAdapter:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n gateClassification?: \"core\" | \"shimmed\";\n scopeRequirements?: string[];\n requiredRole?: string;\n requiredAction?: string;\n surfaces?: string[];\n category?: string;\n parameterSchema?: JsonObject;\n returnSchema?: JsonObject;\n handlerRef?: string;\n callbackUrl?: string;\n safetyMetadata: {\n readOnly?: boolean;\n idempotent?: boolean;\n sideEffectLevel: \"none\" | \"low\" | \"high\";\n };\n exampleInvocations?: Array<{\n input: JsonObject;\n expectedOutput?: JsonValue;\n }>;\n metadata?: JsonObject;\n};\n\nexport type HarnessStartRunInput = GatewayScope & {\n agentDefinitionId: string;\n agentVersion: string;\n executionAdapter:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n promptReleaseChannel?: \"dev\" | \"staging\" | \"prod\";\n chatId?: string;\n sprintId?: string;\n topicId?: string;\n langfuseTraceId?: string;\n metadata?: JsonObject;\n} & TopicIdentifierInput;\n\nexport type HarnessRunReportInput = {\n reportingToken: string;\n type: \"tool_call\" | \"prompt_resolution\" | \"policy_decision\";\n metadata?: JsonObject;\n toolCallId?: string;\n toolName?: string;\n executionAdapter?:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n policyDecisionId?: string;\n requiredScopes?: string[];\n policyResult?: \"allowed\" | \"denied\";\n policyReasonCode?: string;\n inputHash?: string;\n outputHash?: string;\n durationMs?: number;\n success?: boolean;\n startedAt?: number;\n completedAt?: number;\n input?: JsonObject;\n result?: JsonValue;\n promptKey?: string;\n promptVersion?: string;\n decision?: string;\n reasonCode?: string;\n latencyMs?: number;\n error?:\n | string\n | {\n code?: string;\n message: string;\n details?: JsonValue;\n };\n};\n\nexport type HarnessCompleteRunInput = {\n reportingToken: string;\n status: \"completed\" | \"failed\" | \"timeout\";\n error?: {\n category:\n | \"policy_denied\"\n | \"tool_execution\"\n | \"prompt_resolution\"\n | \"model_error\"\n | \"timeout\"\n | \"heartbeat_timeout\"\n | \"input_validation\"\n | \"internal\"\n | \"external_service\";\n message: string;\n code?: string;\n };\n};\n\n/**\n * Create the harness client for agent and tool registry operations.\n */\nexport function createHarnessClient(config: HarnessClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List agent definitions.\n */\n async listAgentDefinitions(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"agents\")\n )\n );\n },\n\n /**\n * Get an agent definition.\n */\n async getAgentDefinition(agentId: string, scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents/${encodeURIComponent(agentId)}${toQueryString(scope)}`,\n });\n },\n\n /**\n * Create an agent definition.\n */\n async createAgentDefinition(\n input: HarnessAgentWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/agents\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createAgentDefinition.\n */\n async registerAgentDefinition(\n input: HarnessAgentWriteInput,\n idempotencyKey?: string\n ) {\n return this.createAgentDefinition(input, idempotencyKey);\n },\n\n /**\n * Update an agent definition.\n */\n async updateAgentDefinition(\n agentId: string,\n input: HarnessAgentWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents/${encodeURIComponent(agentId)}`,\n method: \"PUT\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List runs for an agent definition.\n */\n async listAgentRuns(\n agentId: string,\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents/${encodeURIComponent(agentId)}/runs${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"runs\")\n )\n );\n },\n\n /**\n * @deprecated Use listAgentRuns.\n */\n async listRunsForAgent(\n agentId: string,\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return this.listAgentRuns(agentId, scope);\n },\n\n /**\n * List tool definitions.\n */\n async listToolDefinitions(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n gateClassification?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/tools${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"tools\")\n )\n );\n },\n\n /**\n * Get a tool definition.\n */\n async getToolDefinition(toolId: string, scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/tools/${encodeURIComponent(toolId)}${toQueryString(scope)}`,\n });\n },\n\n /**\n * Create a tool definition.\n */\n async createToolDefinition(\n input: HarnessToolWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/tools\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createToolDefinition.\n */\n async registerToolDefinition(\n input: HarnessToolWriteInput,\n idempotencyKey?: string\n ) {\n return this.createToolDefinition(input, idempotencyKey);\n },\n\n /**\n * Update a tool definition.\n */\n async updateToolDefinition(\n toolId: string,\n input: HarnessToolWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/tools/${encodeURIComponent(toolId)}`,\n method: \"PUT\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List run ledger entries.\n */\n async listRunEntries(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"runs\")\n )\n );\n },\n\n /**\n * @deprecated Use listRunEntries.\n */\n async listRunLedgerEntries(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return this.listRunEntries(scope);\n },\n\n /**\n * Create a harness run.\n */\n async startHarnessRun(\n input: HarnessStartRunInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/runs\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Get a run ledger entry.\n */\n async getRunLedgerEntry(runId: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}`,\n });\n },\n\n /**\n * Update a harness run with a ledger event.\n */\n async reportHarnessRunEvent(\n runId: string,\n input: HarnessRunReportInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}/report`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a harness run heartbeat.\n */\n async heartbeatHarnessRun(\n runId: string,\n input: { reportingToken: string },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}/heartbeat`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Complete a harness run.\n */\n async completeHarnessRun(\n runId: string,\n input: HarnessCompleteRunInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}/complete`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List prompt resolutions.\n */\n async listPromptResolutions(\n query: { runId?: string; promptName?: string; limit?: number } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/prompts${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"prompts\")\n )\n );\n },\n\n /**\n * Get the harness scope taxonomy.\n */\n async getScopeTaxonomy() {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/scopes\",\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { IdentitySummary } from \"@/lucern/packages/domain-identity/src/whoami\";\n\nexport type IdentityClientCoreConfig = GatewayClientConfig;\nexport type IdentityWhoamiResponse = PlatformGatewaySuccess<IdentitySummary>;\n\nexport function createIdentityWhoamiClient(\n config: IdentityClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async whoami(): Promise<IdentityWhoamiResponse> {\n return gateway.request<IdentitySummary>({\n path: \"/v1/identity/whoami\",\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\nimport {\n createIdentityWhoamiClient,\n type IdentityWhoamiResponse,\n} from \"@/lucern/packages/client-core/src/identity\";\nexport type { IdentitySummary } from \"@/lucern/packages/domain-identity/src/whoami\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\nexport type IdentityClientConfig = GatewayClientConfig;\nexport type { IdentityWhoamiResponse };\n\n/**\n * Create the identity client for principals and API keys.\n */\nexport function createIdentityClient(config: IdentityClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n const whoamiClient = createIdentityWhoamiClient(config);\n\n return {\n /**\n * Resolve the current authenticated identity summary.\n */\n async whoami() {\n return whoamiClient.whoami();\n },\n\n /**\n * List principals in the current identity scope.\n */\n async listPrincipals(\n query: GatewayScope & {\n status?: string;\n principalType?: string;\n query?: string;\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/principals${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"principals\"\n )\n )\n );\n },\n\n /**\n * Create a principal.\n */\n async createPrincipal(\n input: GatewayScope & {\n principalId: string;\n principalType: \"user\" | \"group\" | \"service\" | \"external_viewer\";\n clerkId?: string;\n email?: string;\n displayName?: string;\n status?: \"active\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/identity/principals\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a principal.\n */\n async updatePrincipal(\n input: GatewayScope & {\n principalId: string;\n principalType: \"user\" | \"group\" | \"service\" | \"external_viewer\";\n clerkId?: string;\n email?: string;\n displayName?: string;\n status?: \"active\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return this.createPrincipal(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createPrincipal or updatePrincipal.\n */\n async upsertPrincipal(\n input: GatewayScope & {\n principalId: string;\n principalType: \"user\" | \"group\" | \"service\" | \"external_viewer\";\n clerkId?: string;\n email?: string;\n displayName?: string;\n status?: \"active\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return this.createPrincipal(input, idempotencyKey);\n },\n\n /**\n * List keys in the current identity scope.\n */\n async listKeys(\n query: GatewayScope & {\n principalId?: string;\n status?: string;\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/keys${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"keys\")\n )\n );\n },\n\n /**\n * Create an API key.\n */\n async createKey(\n input: GatewayScope & {\n principalId: string;\n keyId?: string;\n token?: string;\n scopes?: string[];\n environment?: \"sandbox\" | \"production\";\n expiresInDays?: number;\n rateLimitTier?: \"free\" | \"developer\" | \"partner\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/identity/keys\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Rotate an API key.\n */\n async rotateKey(\n keyId: string,\n input: {\n replacementKeyId?: string;\n replacementToken?: string;\n replacementExpiresInDays?: number;\n gracePeriodHours?: number;\n } = {},\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/keys/${encodeURIComponent(keyId)}/rotate`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Delete an API key by revoking it.\n */\n async deleteKey(\n keyId: string,\n input: { reason?: string } = {},\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/keys/${encodeURIComponent(keyId)}/revoke`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use deleteKey.\n */\n async revokeKey(\n keyId: string,\n input: { reason?: string } = {},\n idempotencyKey?: string\n ) {\n return this.deleteKey(keyId, input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type {\n ContradictionListResult,\n ContradictionRecord,\n FlagContradictionInput,\n ListContradictionsQuery,\n} from \"@/lucern/packages/domain-edges/src/contradictions\";\n\nexport type ContradictionsClientCoreConfig = GatewayClientConfig;\nexport type ContradictionsFlagResponse = PlatformGatewaySuccess<ContradictionRecord>;\nexport type ContradictionsListResponse = PlatformGatewaySuccess<ContradictionListResult>;\nexport type ContradictionsGetResponse = PlatformGatewaySuccess<ContradictionRecord>;\n\nexport function createContradictionsClient(\n config: ContradictionsClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async flag(\n input: FlagContradictionInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<ContradictionsFlagResponse> {\n return gateway.request<ContradictionRecord>({\n path: \"/v1/contradictions\",\n method: \"POST\",\n body: input,\n idempotencyKey,\n });\n },\n\n async list(query: ListContradictionsQuery): Promise<ContradictionsListResponse> {\n return gateway.request<ContradictionListResult>({\n path: `/v1/contradictions${toQueryString({\n topicId: query.topicId,\n status: query.status,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async get(id: string): Promise<ContradictionsGetResponse> {\n return gateway.request<ContradictionRecord>({\n path: `/v1/contradictions/${encodeURIComponent(id)}`,\n });\n },\n };\n}\n","import {\n createContradictionsClient,\n type ContradictionsClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/contradictions\";\n\nexport type ContradictionsFacadeConfig = ContradictionsClientCoreConfig;\n\nexport function createContradictionsFacade(\n config: ContradictionsFacadeConfig = {}\n) {\n const contradictionsClient = createContradictionsClient(config);\n\n return {\n async flag(\n input: Parameters<typeof contradictionsClient.flag>[0],\n idempotencyKey?: Parameters<typeof contradictionsClient.flag>[1]\n ) {\n return contradictionsClient.flag(input, idempotencyKey);\n },\n\n async list(query: Parameters<typeof contradictionsClient.list>[0]) {\n return contradictionsClient.list(query);\n },\n\n async get(id: string) {\n return contradictionsClient.get(id);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type {\n CreateEdgeInput,\n EdgeListResult,\n EdgeRecord,\n EdgeTraversalResult,\n ListEdgesQuery,\n TraverseEdgesInput,\n} from \"@/lucern/packages/domain-edges/src/edges\";\n\nexport type EdgesClientCoreConfig = GatewayClientConfig;\nexport type EdgesCreateResponse = PlatformGatewaySuccess<EdgeRecord>;\nexport type EdgesListResponse = PlatformGatewaySuccess<EdgeListResult>;\nexport type EdgesTraverseResponse = PlatformGatewaySuccess<EdgeTraversalResult>;\n\nexport function createEdgesClient(config: EdgesClientCoreConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: CreateEdgeInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<EdgesCreateResponse> {\n return gateway.request<EdgeRecord>({\n path: \"/v1/edges\",\n method: \"POST\",\n body: input,\n idempotencyKey,\n });\n },\n\n async list(query: ListEdgesQuery): Promise<EdgesListResponse> {\n return gateway.request<EdgeListResult>({\n path: `/v1/edges${toQueryString({\n sourceId: query.sourceId,\n edgeType: query.edgeType,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async traverse(\n input: TraverseEdgesInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<EdgesTraverseResponse> {\n return gateway.request<EdgeTraversalResult>({\n path: \"/v1/edges/traverse\",\n method: \"POST\",\n body: input,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createEdgesClient,\n type EdgesClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/edges\";\n\nexport type EdgesFacadeConfig = EdgesClientCoreConfig;\n\nexport function createEdgesFacade(config: EdgesFacadeConfig = {}) {\n const edgesClient = createEdgesClient(config);\n\n return {\n async create(\n input: Parameters<typeof edgesClient.create>[0],\n idempotencyKey?: Parameters<typeof edgesClient.create>[1]\n ) {\n return edgesClient.create(input, idempotencyKey);\n },\n\n async list(query: Parameters<typeof edgesClient.list>[0]) {\n return edgesClient.list(query);\n },\n\n async traverse(\n input: Parameters<typeof edgesClient.traverse>[0],\n idempotencyKey?: Parameters<typeof edgesClient.traverse>[1]\n ) {\n return edgesClient.traverse(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n CreateEvidenceInput,\n EvidenceListResult,\n EvidenceRecord,\n EvidenceSearchPage,\n LinkEvidenceResult,\n ListEvidenceQuery,\n SearchEvidenceQuery,\n} from \"@/lucern/packages/domain-evidence/src/evidence\";\n\nexport type EvidenceClientCoreConfig = GatewayClientConfig;\nexport type EvidenceGetResponse = PlatformGatewaySuccess<EvidenceRecord>;\nexport type EvidenceCreateResponse = PlatformGatewaySuccess<EvidenceRecord>;\nexport type EvidenceListResponse = PlatformGatewaySuccess<EvidenceListResult>;\nexport type EvidenceSearchResponse = PlatformGatewaySuccess<EvidenceSearchPage>;\nexport type EvidenceLinkResponse = PlatformGatewaySuccess<LinkEvidenceResult>;\n\nexport function createEvidenceClient(config: EvidenceClientCoreConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: CreateEvidenceInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<EvidenceCreateResponse> {\n return gateway.request<EvidenceRecord>({\n path: \"/v1/evidence\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async get(id: string): Promise<EvidenceGetResponse> {\n return gateway.request<EvidenceRecord>({\n path: `/v1/evidence/${encodeURIComponent(id)}`,\n });\n },\n\n async list(query: ListEvidenceQuery): Promise<EvidenceListResponse> {\n return gateway.request<EvidenceListResult>({\n path: `/v1/evidence${toQueryString({\n topicId: query.topicId,\n targetId: query.targetId,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async link(\n input: {\n evidenceId: string;\n targetId: string;\n targetType?: \"belief\" | \"question\";\n weight?: number;\n rationale?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<EvidenceLinkResponse> {\n return gateway.request<LinkEvidenceResult>({\n path: `/v1/evidence/${encodeURIComponent(input.evidenceId)}/link`,\n method: \"POST\",\n body: {\n targetId: input.targetId,\n targetType: input.targetType,\n weight: input.weight,\n rationale: input.rationale,\n },\n idempotencyKey,\n });\n },\n\n async search(\n query: SearchEvidenceQuery,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<EvidenceSearchResponse> {\n return gateway.request<EvidenceSearchPage>({\n path: \"/v1/evidence/search\",\n method: \"POST\",\n body: query,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createEvidenceClient,\n type EvidenceClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/evidence\";\n\nexport type EvidenceFacadeConfig = EvidenceClientCoreConfig;\n\nexport function createEvidenceFacade(config: EvidenceFacadeConfig = {}) {\n const evidenceClient = createEvidenceClient(config);\n\n return {\n async create(\n input: Parameters<typeof evidenceClient.create>[0],\n idempotencyKey?: Parameters<typeof evidenceClient.create>[1]\n ) {\n return evidenceClient.create(input, idempotencyKey);\n },\n\n async get(id: string) {\n return evidenceClient.get(id);\n },\n\n async list(query: Parameters<typeof evidenceClient.list>[0]) {\n return evidenceClient.list(query);\n },\n\n async link(\n input: Parameters<typeof evidenceClient.link>[0],\n idempotencyKey?: Parameters<typeof evidenceClient.link>[1]\n ) {\n return evidenceClient.link(input, idempotencyKey);\n },\n\n async search(\n query: Parameters<typeof evidenceClient.search>[0],\n idempotencyKey?: Parameters<typeof evidenceClient.search>[1]\n ) {\n return evidenceClient.search(query, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n EventListQuery,\n EventListResult,\n ReplayEventsInput,\n ReplayEventsResult,\n} from \"@/lucern/packages/events/src/types\";\n\nexport type EventsClientCoreConfig = GatewayClientConfig;\nexport type EventsListResponse = PlatformGatewaySuccess<EventListResult>;\nexport type EventsReplayResponse = PlatformGatewaySuccess<ReplayEventsResult>;\n\nfunction serializeTypes(types: string[] | undefined) {\n return Array.isArray(types) && types.length > 0 ? types.join(\",\") : undefined;\n}\n\nexport function createEventsClientCore(config: EventsClientCoreConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async list(query: EventListQuery = {}): Promise<EventsListResponse> {\n return gateway.request<EventListResult>({\n path: `/v1/events${toQueryString({\n topicId: query.topicId,\n after: query.after,\n types: serializeTypes(query.types),\n startTime: query.startTime,\n endTime: query.endTime,\n limit: query.limit,\n })}`,\n });\n },\n\n async replay(\n input: ReplayEventsInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<EventsReplayResponse> {\n return gateway.request<ReplayEventsResult>({\n path: \"/v1/events/replay\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createEventsClientCore,\n type EventsClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/events\";\n\nexport type EventsFacadeConfig = EventsClientCoreConfig;\n\nexport function createEventsFacade(config: EventsFacadeConfig = {}) {\n const eventsClient = createEventsClientCore(config);\n\n return {\n async list(query: Parameters<typeof eventsClient.list>[0]) {\n return eventsClient.list(query);\n },\n\n async replay(\n input: Parameters<typeof eventsClient.replay>[0],\n idempotencyKey?: Parameters<typeof eventsClient.replay>[1]\n ) {\n return eventsClient.replay(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n ArchiveBeliefInput,\n BeliefArchiveResult,\n BeliefBisectResult,\n BeliefConfidenceHistoryResult,\n BeliefConfidenceUpdateResult,\n BeliefContractCreateInput,\n BeliefContractCreateResult,\n BeliefLineageResult,\n BeliefListResult,\n BeliefRefineInput,\n BeliefRecord,\n BisectBeliefConfidenceInput,\n CreateBeliefInput,\n ForkBeliefInput,\n ListBeliefsQuery,\n UpdateBeliefConfidenceInput,\n} from \"@/lucern/packages/domain-beliefs/src/beliefs\";\n\nexport type BeliefsClientCoreConfig = GatewayClientConfig;\nexport type BeliefsGetResponse = PlatformGatewaySuccess<BeliefRecord>;\nexport type BeliefsCreateResponse = PlatformGatewaySuccess<BeliefRecord>;\nexport type BeliefsListResponse = PlatformGatewaySuccess<BeliefListResult>;\nexport type BeliefsRefineResponse = PlatformGatewaySuccess<BeliefRecord>;\nexport type BeliefsForkResponse = PlatformGatewaySuccess<\n BeliefRecord & { parentBeliefId: string; forkReason: string }\n>;\nexport type BeliefsUpdateConfidenceResponse = PlatformGatewaySuccess<BeliefConfidenceUpdateResult>;\nexport type BeliefsArchiveResponse = PlatformGatewaySuccess<BeliefArchiveResult>;\nexport type BeliefsLineageResponse = PlatformGatewaySuccess<BeliefLineageResult>;\nexport type BeliefsConfidenceHistoryResponse = PlatformGatewaySuccess<BeliefConfidenceHistoryResult>;\nexport type BeliefsCreateContractResponse = PlatformGatewaySuccess<BeliefContractCreateResult>;\nexport type BeliefsBisectResponse = PlatformGatewaySuccess<BeliefBisectResult>;\n\nexport function createBeliefsClientCore(\n config: BeliefsClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: CreateBeliefInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<BeliefsCreateResponse> {\n return gateway.request<BeliefRecord>({\n path: \"/v1/beliefs\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async get(id: string): Promise<BeliefsGetResponse> {\n return gateway.request<BeliefRecord>({\n path: `/v1/beliefs/${encodeURIComponent(id)}`,\n });\n },\n\n async list(query: ListBeliefsQuery): Promise<BeliefsListResponse> {\n return gateway.request<BeliefListResult>({\n path: `/v1/beliefs${toQueryString({\n topicId: query.topicId,\n status: query.status,\n worktreeId: query.worktreeId,\n minConfidence: query.minConfidence,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async refine(\n id: string,\n input: Omit<BeliefRefineInput, \"id\">,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<BeliefsRefineResponse> {\n return gateway.request<BeliefRecord>({\n path: `/v1/beliefs/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async fork(\n id: string,\n input: Omit<ForkBeliefInput, \"id\">,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<BeliefsForkResponse> {\n return gateway.request<BeliefRecord & { parentBeliefId: string; forkReason: string }>({\n path: `/v1/beliefs/${encodeURIComponent(id)}/fork`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateConfidence(\n id: string,\n input: Omit<UpdateBeliefConfidenceInput, \"id\">,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<BeliefsUpdateConfidenceResponse> {\n return gateway.request<BeliefConfidenceUpdateResult>({\n path: `/v1/beliefs/${encodeURIComponent(id)}/confidence`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async archive(\n id: string,\n input: Omit<ArchiveBeliefInput, \"id\"> = {},\n idempotencyKey = randomIdempotencyKey()\n ): Promise<BeliefsArchiveResponse> {\n return gateway.request<BeliefArchiveResult>({\n path: `/v1/beliefs/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async lineage(id: string): Promise<BeliefsLineageResponse> {\n return gateway.request<BeliefLineageResult>({\n path: `/v1/beliefs/${encodeURIComponent(id)}/lineage`,\n });\n },\n\n async confidenceHistory(\n id: string\n ): Promise<BeliefsConfidenceHistoryResponse> {\n return gateway.request<BeliefConfidenceHistoryResult>({\n path: `/v1/beliefs/${encodeURIComponent(id)}/confidence-history`,\n });\n },\n\n async createContract(\n id: string,\n input: BeliefContractCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<BeliefsCreateContractResponse> {\n return gateway.request<BeliefContractCreateResult>({\n path: `/v1/beliefs/${encodeURIComponent(id)}/contracts`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async bisect(\n id: string,\n input: Omit<BisectBeliefConfidenceInput, \"id\">,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<BeliefsBisectResponse> {\n return gateway.request<BeliefBisectResult>({\n path: `/v1/beliefs/${encodeURIComponent(id)}/bisect`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createBeliefsClientCore,\n type BeliefsClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/beliefs\";\n\nexport type BeliefsFacadeConfig = BeliefsClientCoreConfig;\n\nexport function createBeliefsFacade(config: BeliefsFacadeConfig = {}) {\n const beliefsClient = createBeliefsClientCore(config);\n\n return {\n async create(\n input: Parameters<typeof beliefsClient.create>[0],\n idempotencyKey?: Parameters<typeof beliefsClient.create>[1]\n ) {\n return beliefsClient.create(input, idempotencyKey);\n },\n\n async get(id: string) {\n return beliefsClient.get(id);\n },\n\n async list(query: Parameters<typeof beliefsClient.list>[0]) {\n return beliefsClient.list(query);\n },\n\n async refine(\n id: string,\n input: Parameters<typeof beliefsClient.refine>[1],\n idempotencyKey?: Parameters<typeof beliefsClient.refine>[2]\n ) {\n return beliefsClient.refine(id, input, idempotencyKey);\n },\n\n async fork(\n id: string,\n input: Parameters<typeof beliefsClient.fork>[1],\n idempotencyKey?: Parameters<typeof beliefsClient.fork>[2]\n ) {\n return beliefsClient.fork(id, input, idempotencyKey);\n },\n\n async updateConfidence(\n id: string,\n input: Parameters<typeof beliefsClient.updateConfidence>[1],\n idempotencyKey?: Parameters<typeof beliefsClient.updateConfidence>[2]\n ) {\n return beliefsClient.updateConfidence(id, input, idempotencyKey);\n },\n\n async archive(\n id: string,\n input?: Parameters<typeof beliefsClient.archive>[1],\n idempotencyKey?: Parameters<typeof beliefsClient.archive>[2]\n ) {\n return beliefsClient.archive(id, input, idempotencyKey);\n },\n\n async lineage(id: string) {\n return beliefsClient.lineage(id);\n },\n\n async confidenceHistory(id: string) {\n return beliefsClient.confidenceHistory(id);\n },\n\n async createContract(\n id: string,\n input: Parameters<typeof beliefsClient.createContract>[1],\n idempotencyKey?: Parameters<typeof beliefsClient.createContract>[2]\n ) {\n return beliefsClient.createContract(id, input, idempotencyKey);\n },\n\n async bisect(\n id: string,\n input: Parameters<typeof beliefsClient.bisect>[1],\n idempotencyKey?: Parameters<typeof beliefsClient.bisect>[2]\n ) {\n return beliefsClient.bisect(id, input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type {\n GraphAnalyzeInput,\n GraphAnalyzeResult,\n GraphBiasInput,\n GraphBiasResult,\n GraphFalsifyInput,\n GraphFalsifyResult,\n GraphGapsInput,\n GraphGapsResult,\n GraphNeighborhoodInput,\n GraphNeighborhoodResult,\n GraphTraverseInput,\n GraphTraverseResult,\n} from \"@/lucern/packages/domain-graph/src/graph\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\n\nexport type GraphClientCoreConfig = GatewayClientConfig;\nexport type GraphNeighborhoodResponse =\n PlatformGatewaySuccess<GraphNeighborhoodResult>;\nexport type GraphTraverseResponse = PlatformGatewaySuccess<GraphTraverseResult>;\nexport type GraphAnalyzeResponse = PlatformGatewaySuccess<GraphAnalyzeResult>;\nexport type GraphBiasResponse = PlatformGatewaySuccess<GraphBiasResult>;\nexport type GraphGapsResponse = PlatformGatewaySuccess<GraphGapsResult>;\nexport type GraphFalsifyResponse = PlatformGatewaySuccess<GraphFalsifyResult>;\n\nfunction toNeighborhoodQuery(input: GraphNeighborhoodInput) {\n return {\n globalId: input.globalId,\n globalIds: Array.isArray(input.globalIds)\n ? input.globalIds.join(\",\")\n : undefined,\n maxDepth: input.maxDepth,\n };\n}\n\nexport function createGraphClient(config: GraphClientCoreConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async neighborhood(\n input: GraphNeighborhoodInput\n ): Promise<GraphNeighborhoodResponse> {\n return gateway.request<GraphNeighborhoodResult>({\n path: `/v1/graph/neighborhood${toQueryString(toNeighborhoodQuery(input))}`,\n });\n },\n\n async traverse(\n input: GraphTraverseInput\n ): Promise<GraphTraverseResponse> {\n return gateway.request<GraphTraverseResult>({\n path: \"/v1/graph/traverse\",\n method: \"POST\",\n body: input as JsonObject,\n });\n },\n\n async analyze(input: GraphAnalyzeInput): Promise<GraphAnalyzeResponse> {\n return gateway.request<GraphAnalyzeResult>({\n path: `/v1/graph/analyze${toQueryString({\n topicId: input.topicId,\n metric: input.metric,\n limit: input.limit,\n })}`,\n });\n },\n\n async bias(input: GraphBiasInput): Promise<GraphBiasResponse> {\n return gateway.request<GraphBiasResult>({\n path: `/v1/graph/bias${toQueryString({\n topicId: input.topicId,\n threshold: input.threshold,\n limit: input.limit,\n })}`,\n });\n },\n\n async gaps(input: GraphGapsInput): Promise<GraphGapsResponse> {\n return gateway.request<GraphGapsResult>({\n path: `/v1/graph/gaps${toQueryString({\n topicId: input.topicId,\n minConfidence: input.minConfidence,\n })}`,\n });\n },\n\n async falsify(input: GraphFalsifyInput): Promise<GraphFalsifyResponse> {\n return gateway.request<GraphFalsifyResult>({\n path: \"/v1/graph/falsify\",\n method: \"POST\",\n body: input as JsonObject,\n });\n },\n };\n}\n","import {\n createGraphClient,\n type GraphClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/graph\";\n\nexport type GraphFacadeConfig = GraphClientCoreConfig;\n\nexport function createGraphFacade(config: GraphFacadeConfig = {}) {\n const graphClient = createGraphClient(config);\n\n return {\n async neighborhood(\n input: Parameters<typeof graphClient.neighborhood>[0]\n ) {\n return graphClient.neighborhood(input);\n },\n\n async traverse(input: Parameters<typeof graphClient.traverse>[0]) {\n return graphClient.traverse(input);\n },\n\n async analyze(input: Parameters<typeof graphClient.analyze>[0]) {\n return graphClient.analyze(input);\n },\n\n async bias(input: Parameters<typeof graphClient.bias>[0]) {\n return graphClient.bias(input);\n },\n\n async gaps(input: Parameters<typeof graphClient.gaps>[0]) {\n return graphClient.gaps(input);\n },\n\n async falsify(input: Parameters<typeof graphClient.falsify>[0]) {\n return graphClient.falsify(input);\n },\n };\n}\n","import {\n createIdentityWhoamiClient,\n type IdentityClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/identity\";\n\nexport type IdentityFacadeConfig = IdentityClientCoreConfig;\n\nexport function createIdentityFacade(config: IdentityFacadeConfig = {}) {\n const identityClient = createIdentityWhoamiClient(config);\n\n return {\n async whoami() {\n return identityClient.whoami();\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n BindOntologyInput,\n OntologyBindingResult,\n OntologyListQuery,\n OntologyListResult,\n OntologyMatchInput,\n OntologyMatchResult,\n OntologyRecord,\n} from \"@/lucern/packages/domain-ontologies/src/ontologies\";\n\nexport type OntologiesClientCoreConfig = GatewayClientConfig;\nexport type OntologiesGetResponse = PlatformGatewaySuccess<OntologyRecord>;\nexport type OntologiesListResponse = PlatformGatewaySuccess<OntologyListResult>;\nexport type OntologiesBindResponse = PlatformGatewaySuccess<OntologyBindingResult>;\nexport type OntologiesMatchResponse = PlatformGatewaySuccess<OntologyMatchResult>;\n\nexport function createOntologiesClientCore(\n config: OntologiesClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async get(id: string): Promise<OntologiesGetResponse> {\n return gateway.request<OntologyRecord>({\n path: `/v1/ontologies/${encodeURIComponent(id)}`,\n });\n },\n\n async list(query: OntologyListQuery = {}): Promise<OntologiesListResponse> {\n return gateway.request<OntologyListResult>({\n path: `/v1/ontologies${toQueryString({\n tenantId: query.tenantId,\n tier: query.tier,\n status: query.status,\n })}`,\n });\n },\n\n async bind(\n input: BindOntologyInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<OntologiesBindResponse> {\n return gateway.request<OntologyBindingResult>({\n path: `/v1/ontologies/${encodeURIComponent(input.ontologyId)}/bind`,\n method: \"POST\",\n body: {\n topicId: input.topicId,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async match(\n input: OntologyMatchInput,\n idempotencyKey?: string\n ): Promise<OntologiesMatchResponse> {\n return gateway.request<OntologyMatchResult>({\n path: \"/v1/ontologies/match\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createOntologiesClientCore,\n type OntologiesClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/ontologies\";\n\nexport type OntologiesFacadeConfig = OntologiesClientCoreConfig;\n\nexport function createOntologiesFacade(config: OntologiesFacadeConfig = {}) {\n const ontologiesClient = createOntologiesClientCore(config);\n\n return {\n async get(id: string) {\n return ontologiesClient.get(id);\n },\n\n async list(query: Parameters<typeof ontologiesClient.list>[0] = {}) {\n return ontologiesClient.list(query);\n },\n\n async bind(\n input: Parameters<typeof ontologiesClient.bind>[0],\n idempotencyKey?: Parameters<typeof ontologiesClient.bind>[1]\n ) {\n return ontologiesClient.bind(input, idempotencyKey);\n },\n\n async match(\n input: Parameters<typeof ontologiesClient.match>[0],\n idempotencyKey?: Parameters<typeof ontologiesClient.match>[1]\n ) {\n return ontologiesClient.match(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n CreateQuestionInput,\n ListQuestionsQuery,\n QuestionArchiveResult,\n QuestionAnswerResult,\n QuestionListResult,\n QuestionRecord,\n} from \"@/lucern/packages/domain-questions/src/questions\";\n\nexport type QuestionsClientCoreConfig = GatewayClientConfig;\nexport type QuestionsCreateResponse = PlatformGatewaySuccess<QuestionRecord>;\nexport type QuestionsGetResponse = PlatformGatewaySuccess<QuestionRecord>;\nexport type QuestionsListResponse = PlatformGatewaySuccess<QuestionListResult>;\nexport type QuestionsRefineResponse = PlatformGatewaySuccess<\n QuestionRecord & {\n previousText: string;\n updatedText: string;\n }\n>;\nexport type QuestionsUpdateStatusResponse = PlatformGatewaySuccess<\n QuestionRecord & {\n previousStatus: string;\n newStatus: string;\n }\n>;\nexport type QuestionsArchiveResponse = PlatformGatewaySuccess<QuestionArchiveResult>;\nexport type QuestionsAnswerResponse = PlatformGatewaySuccess<QuestionAnswerResult>;\n\nexport function createQuestionsClient(\n config: QuestionsClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: CreateQuestionInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<QuestionsCreateResponse> {\n return gateway.request<QuestionRecord>({\n path: \"/v1/questions\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async get(id: string): Promise<QuestionsGetResponse> {\n return gateway.request<QuestionRecord>({\n path: `/v1/questions/${encodeURIComponent(id)}`,\n });\n },\n\n async list(query: ListQuestionsQuery): Promise<QuestionsListResponse> {\n return gateway.request<QuestionListResult>({\n path: `/v1/questions${toQueryString({\n topicId: query.topicId,\n status: query.status,\n priority: query.priority,\n worktreeId: query.worktreeId,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async answer(\n id: string,\n input: {\n text: string;\n confidence?: string;\n evidenceIds?: string[];\n rationale?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<QuestionsAnswerResponse> {\n return gateway.request<QuestionAnswerResult>({\n path: `/v1/questions/${encodeURIComponent(id)}/answer`,\n method: \"POST\",\n body: input,\n idempotencyKey,\n });\n },\n\n async refine(\n id: string,\n input: {\n text: string;\n rationale?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<QuestionsRefineResponse> {\n return gateway.request<\n QuestionRecord & {\n previousText: string;\n updatedText: string;\n }\n >({\n path: `/v1/questions/${encodeURIComponent(id)}/refine`,\n method: \"POST\",\n body: input,\n idempotencyKey,\n });\n },\n\n async archive(\n id: string,\n input: {\n reason?: string;\n rationale?: string;\n } = {},\n idempotencyKey = randomIdempotencyKey()\n ): Promise<QuestionsArchiveResponse> {\n return gateway.request<QuestionArchiveResult>({\n path: `/v1/questions/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n body: input,\n idempotencyKey,\n });\n },\n\n async updateStatus(\n id: string,\n input: {\n status: string;\n rationale?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<QuestionsUpdateStatusResponse> {\n return gateway.request<\n QuestionRecord & {\n previousStatus: string;\n newStatus: string;\n }\n >({\n path: `/v1/questions/${encodeURIComponent(id)}/status`,\n method: \"PATCH\",\n body: input,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createQuestionsClient,\n type QuestionsClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/questions\";\n\nexport type QuestionsFacadeConfig = QuestionsClientCoreConfig;\n\nexport function createQuestionsFacade(config: QuestionsFacadeConfig = {}) {\n const questionsClient = createQuestionsClient(config);\n\n return {\n async create(\n input: Parameters<typeof questionsClient.create>[0],\n idempotencyKey?: Parameters<typeof questionsClient.create>[1]\n ) {\n return questionsClient.create(input, idempotencyKey);\n },\n\n async get(id: string) {\n return questionsClient.get(id);\n },\n\n async list(query: Parameters<typeof questionsClient.list>[0]) {\n return questionsClient.list(query);\n },\n\n async answer(\n id: string,\n input: Parameters<typeof questionsClient.answer>[1],\n idempotencyKey?: Parameters<typeof questionsClient.answer>[2]\n ) {\n return questionsClient.answer(id, input, idempotencyKey);\n },\n\n async refine(\n id: string,\n input: Parameters<typeof questionsClient.refine>[1],\n idempotencyKey?: Parameters<typeof questionsClient.refine>[2]\n ) {\n return questionsClient.refine(id, input, idempotencyKey);\n },\n\n async archive(\n id: string,\n input?: Parameters<typeof questionsClient.archive>[1],\n idempotencyKey?: Parameters<typeof questionsClient.archive>[2]\n ) {\n return questionsClient.archive(id, input, idempotencyKey);\n },\n\n async updateStatus(\n id: string,\n input: Parameters<typeof questionsClient.updateStatus>[1],\n idempotencyKey?: Parameters<typeof questionsClient.updateStatus>[2]\n ) {\n return questionsClient.updateStatus(id, input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type {\n SearchInput,\n SearchResponse,\n} from \"@/lucern/packages/domain-search/src/search\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\n\nexport type SearchClientCoreConfig = GatewayClientConfig;\nexport type SearchResourcesResponse = PlatformGatewaySuccess<SearchResponse>;\n\nexport function createSearchClient(config: SearchClientCoreConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async query(input: SearchInput): Promise<SearchResourcesResponse> {\n return gateway.request<SearchResponse>({\n path: \"/v1/search\",\n method: \"POST\",\n body: input as JsonObject,\n });\n },\n };\n}\n","import {\n createSearchClient,\n type SearchClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/search\";\n\nexport type SearchFacadeConfig = SearchClientCoreConfig;\n\nexport function createSearchFacade(config: SearchFacadeConfig = {}) {\n const searchClient = createSearchClient(config);\n\n return {\n async query(input: Parameters<typeof searchClient.query>[0]) {\n return searchClient.query(input);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n CompleteTaskInput,\n CreateTaskInput,\n ListTasksQuery,\n TaskListResult,\n TaskRecord,\n UpdateTaskInput,\n} from \"@/lucern/packages/domain-tasks/src/tasks\";\n\nexport type TasksClientCoreConfig = GatewayClientConfig;\nexport type TasksCreateResponse = PlatformGatewaySuccess<TaskRecord>;\nexport type TasksUpdateResponse = PlatformGatewaySuccess<TaskRecord>;\nexport type TasksCompleteResponse = PlatformGatewaySuccess<TaskRecord>;\nexport type TasksListResponse = PlatformGatewaySuccess<TaskListResult>;\n\nexport function createTasksClientCore(config: TasksClientCoreConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: CreateTaskInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<TasksCreateResponse> {\n return gateway.request<TaskRecord>({\n path: \"/v1/tasks\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async update(\n input: UpdateTaskInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<TasksUpdateResponse> {\n return gateway.request<TaskRecord>({\n path: `/v1/tasks/${encodeURIComponent(input.id)}`,\n method: \"PATCH\",\n body: {\n title: input.title,\n description: input.description,\n priority: input.priority,\n status: input.status,\n linkedBeliefId: input.linkedBeliefId,\n linkedQuestionId: input.linkedQuestionId,\n linkedWorktreeId: input.linkedWorktreeId,\n metadata: input.metadata,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async complete(\n input: CompleteTaskInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<TasksCompleteResponse> {\n return gateway.request<TaskRecord>({\n path: `/v1/tasks/${encodeURIComponent(input.id)}/complete`,\n method: \"POST\",\n body: {\n outputSummary: input.outputSummary,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(query: ListTasksQuery): Promise<TasksListResponse> {\n return gateway.request<TaskListResult>({\n path: `/v1/tasks${toQueryString({\n topicId: query.topicId,\n worktreeId: query.worktreeId,\n status: query.status,\n limit: query.limit,\n })}`,\n });\n },\n };\n}\n","import {\n createTasksClientCore,\n type TasksClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/tasks\";\n\nexport type TasksFacadeConfig = TasksClientCoreConfig;\n\nexport function createTasksFacade(config: TasksFacadeConfig = {}) {\n const tasksClient = createTasksClientCore(config);\n\n return {\n async create(\n input: Parameters<typeof tasksClient.create>[0],\n idempotencyKey?: Parameters<typeof tasksClient.create>[1]\n ) {\n return tasksClient.create(input, idempotencyKey);\n },\n\n async update(\n input: Parameters<typeof tasksClient.update>[0],\n idempotencyKey?: Parameters<typeof tasksClient.update>[1]\n ) {\n return tasksClient.update(input, idempotencyKey);\n },\n\n async complete(\n input: Parameters<typeof tasksClient.complete>[0],\n idempotencyKey?: Parameters<typeof tasksClient.complete>[1]\n ) {\n return tasksClient.complete(input, idempotencyKey);\n },\n\n async list(query: Parameters<typeof tasksClient.list>[0]) {\n return tasksClient.list(query);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n CreateTopicInput,\n GetTopicCoverageInput,\n GetTopicTreeInput,\n ListTopicsQuery,\n TopicCoverageResult,\n TopicListResult,\n TopicRecord,\n TopicTreeResult,\n UpdateTopicInput,\n} from \"@/lucern/packages/domain-topics/src/topics\";\n\nexport type TopicsClientCoreConfig = GatewayClientConfig;\nexport type TopicsCreateResponse = PlatformGatewaySuccess<TopicRecord>;\nexport type TopicsGetResponse = PlatformGatewaySuccess<TopicRecord>;\nexport type TopicsListResponse = PlatformGatewaySuccess<TopicListResult>;\nexport type TopicsUpdateResponse = PlatformGatewaySuccess<TopicRecord>;\nexport type TopicsTreeResponse = PlatformGatewaySuccess<TopicTreeResult>;\nexport type TopicsCoverageResponse = PlatformGatewaySuccess<TopicCoverageResult>;\n\nexport function createTopicsClientCore(\n config: TopicsClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: CreateTopicInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<TopicsCreateResponse> {\n return gateway.request<TopicRecord>({\n path: \"/v1/topics\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async get(id: string): Promise<TopicsGetResponse> {\n return gateway.request<TopicRecord>({\n path: `/v1/topics/${encodeURIComponent(id)}`,\n });\n },\n\n async list(query: ListTopicsQuery = {}): Promise<TopicsListResponse> {\n return gateway.request<TopicListResult>({\n path: `/v1/topics${toQueryString({\n ontologyId: query.ontologyId,\n parentTopicId: query.parentTopicId,\n status: query.status,\n type: query.type,\n })}`,\n });\n },\n\n async update(\n input: UpdateTopicInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<TopicsUpdateResponse> {\n return gateway.request<TopicRecord>({\n path: `/v1/topics/${encodeURIComponent(input.id)}`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async tree(\n input: GetTopicTreeInput\n ): Promise<TopicsTreeResponse> {\n return gateway.request<TopicTreeResult>({\n path: `/v1/topics/${encodeURIComponent(input.id)}/tree${toQueryString({\n maxDepth: input.maxDepth,\n })}`,\n });\n },\n\n async coverage(\n input: GetTopicCoverageInput\n ): Promise<TopicsCoverageResponse> {\n return gateway.request<TopicCoverageResult>({\n path: `/v1/topics/${encodeURIComponent(input.id)}/coverage${toQueryString({\n includeDescendants: input.includeDescendants,\n maxDepth: input.maxDepth,\n })}`,\n });\n },\n };\n}\n","import {\n createTopicsClientCore,\n type TopicsClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/topics\";\n\nexport type TopicsFacadeConfig = TopicsClientCoreConfig;\n\nexport function createTopicsFacade(config: TopicsFacadeConfig = {}) {\n const topicsClient = createTopicsClientCore(config);\n\n return {\n async create(\n input: Parameters<typeof topicsClient.create>[0],\n idempotencyKey?: Parameters<typeof topicsClient.create>[1]\n ) {\n return topicsClient.create(input, idempotencyKey);\n },\n\n async get(id: string) {\n return topicsClient.get(id);\n },\n\n async list(query: Parameters<typeof topicsClient.list>[0] = {}) {\n return topicsClient.list(query);\n },\n\n async update(\n input: Parameters<typeof topicsClient.update>[0],\n idempotencyKey?: Parameters<typeof topicsClient.update>[1]\n ) {\n return topicsClient.update(input, idempotencyKey);\n },\n\n async tree(input: Parameters<typeof topicsClient.tree>[0]) {\n return topicsClient.tree(input);\n },\n\n async coverage(input: Parameters<typeof topicsClient.coverage>[0]) {\n return topicsClient.coverage(input);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n WebhookCreateInput,\n WebhookDeliveriesResult,\n WebhookHealthResult,\n WebhookRecord,\n WebhookTestResult,\n WebhookUpdateInput,\n} from \"@/lucern/packages/events/src/types\";\n\nexport type WebhooksClientCoreConfig = GatewayClientConfig;\nexport type WebhookListQuery = {\n topicId?: string;\n};\nexport type WebhookDeliveriesQuery = {\n limit?: number;\n};\nexport type WebhookDeleteResult = {\n webhookId: string;\n deleted: boolean;\n};\nexport type WebhooksCreateResponse = PlatformGatewaySuccess<WebhookRecord>;\nexport type WebhooksListResponse = PlatformGatewaySuccess<{ webhooks: WebhookRecord[] }>;\nexport type WebhooksGetResponse = PlatformGatewaySuccess<WebhookRecord>;\nexport type WebhooksUpdateResponse = PlatformGatewaySuccess<WebhookRecord>;\nexport type WebhooksDeleteResponse = PlatformGatewaySuccess<WebhookDeleteResult>;\nexport type WebhooksTestResponse = PlatformGatewaySuccess<WebhookTestResult>;\nexport type WebhooksDeliveriesResponse =\n PlatformGatewaySuccess<WebhookDeliveriesResult>;\nexport type WebhooksHealthResponse = PlatformGatewaySuccess<WebhookHealthResult>;\n\nexport function createWebhooksClientCore(\n config: WebhooksClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: WebhookCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WebhooksCreateResponse> {\n return gateway.request<WebhookRecord>({\n path: \"/v1/webhooks\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(query: WebhookListQuery = {}): Promise<WebhooksListResponse> {\n return gateway.request<{ webhooks: WebhookRecord[] }>({\n path: `/v1/webhooks${toQueryString({\n topicId: query.topicId,\n })}`,\n });\n },\n\n async get(id: string): Promise<WebhooksGetResponse> {\n return gateway.request<WebhookRecord>({\n path: `/v1/webhooks/${encodeURIComponent(id)}`,\n });\n },\n\n async update(\n id: string,\n input: WebhookUpdateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WebhooksUpdateResponse> {\n return gateway.request<WebhookRecord>({\n path: `/v1/webhooks/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async delete(\n id: string,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WebhooksDeleteResponse> {\n return gateway.request<WebhookDeleteResult>({\n path: `/v1/webhooks/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n idempotencyKey,\n });\n },\n\n async test(\n id: string,\n input: { topicId?: string } = {},\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WebhooksTestResponse> {\n return gateway.request<WebhookTestResult>({\n path: `/v1/webhooks/${encodeURIComponent(id)}/test`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async deliveries(\n id: string,\n query: WebhookDeliveriesQuery = {}\n ): Promise<WebhooksDeliveriesResponse> {\n return gateway.request<WebhookDeliveriesResult>({\n path: `/v1/webhooks/${encodeURIComponent(id)}/deliveries${toQueryString({\n limit: query.limit,\n })}`,\n });\n },\n\n async health(id: string): Promise<WebhooksHealthResponse> {\n return gateway.request<WebhookHealthResult>({\n path: `/v1/webhooks/${encodeURIComponent(id)}/health`,\n });\n },\n };\n}\n","import {\n createWebhooksClientCore,\n type WebhooksClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/webhooks\";\n\nexport type WebhooksFacadeConfig = WebhooksClientCoreConfig;\n\nexport function createWebhooksFacade(config: WebhooksFacadeConfig = {}) {\n const webhooksClient = createWebhooksClientCore(config);\n\n return {\n async create(\n input: Parameters<typeof webhooksClient.create>[0],\n idempotencyKey?: Parameters<typeof webhooksClient.create>[1]\n ) {\n return webhooksClient.create(input, idempotencyKey);\n },\n\n async list(query?: Parameters<typeof webhooksClient.list>[0]) {\n return webhooksClient.list(query);\n },\n\n async get(id: string) {\n return webhooksClient.get(id);\n },\n\n async update(\n id: string,\n input: Parameters<typeof webhooksClient.update>[1],\n idempotencyKey?: Parameters<typeof webhooksClient.update>[2]\n ) {\n return webhooksClient.update(id, input, idempotencyKey);\n },\n\n async delete(id: string, idempotencyKey?: Parameters<typeof webhooksClient.delete>[1]) {\n return webhooksClient.delete(id, idempotencyKey);\n },\n\n async test(\n id: string,\n input?: Parameters<typeof webhooksClient.test>[1],\n idempotencyKey?: Parameters<typeof webhooksClient.test>[2]\n ) {\n return webhooksClient.test(id, input, idempotencyKey);\n },\n\n async deliveries(\n id: string,\n query?: Parameters<typeof webhooksClient.deliveries>[1]\n ) {\n return webhooksClient.deliveries(id, query);\n },\n\n async health(id: string) {\n return webhooksClient.health(id);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"@/packages/sdk/src/coreClient\";\nimport type { JsonObject } from \"@/packages/sdk/src/types\";\nimport type {\n ActivateWorktreeInput,\n CreateWorktreeInput,\n ListWorktreesQuery,\n MergeWorktreeInput,\n MergeWorktreeResult,\n UpdateWorktreeInput,\n UpdateWorktreeTargetsInput,\n WorktreeListResult,\n WorktreeRecord,\n} from \"@/lucern/packages/domain-worktrees/src/worktrees\";\n\nexport type WorktreesClientCoreConfig = GatewayClientConfig;\nexport type WorktreesCreateResponse = PlatformGatewaySuccess<WorktreeRecord>;\nexport type WorktreesListResponse = PlatformGatewaySuccess<WorktreeListResult>;\nexport type WorktreesActivateResponse = PlatformGatewaySuccess<WorktreeRecord>;\nexport type WorktreesUpdateResponse = PlatformGatewaySuccess<WorktreeRecord>;\nexport type WorktreesTargetsResponse = PlatformGatewaySuccess<WorktreeRecord>;\nexport type WorktreesMergeResponse = PlatformGatewaySuccess<MergeWorktreeResult>;\n\nexport function createWorktreesClientCore(\n config: WorktreesClientCoreConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: CreateWorktreeInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WorktreesCreateResponse> {\n return gateway.request<WorktreeRecord>({\n path: \"/v1/worktrees\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(query: ListWorktreesQuery): Promise<WorktreesListResponse> {\n return gateway.request<WorktreeListResult>({\n path: `/v1/worktrees${toQueryString({\n topicId: query.topicId,\n status: query.status,\n limit: query.limit,\n })}`,\n });\n },\n\n async activate(\n input: ActivateWorktreeInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WorktreesActivateResponse> {\n return gateway.request<WorktreeRecord>({\n path: `/v1/worktrees/${encodeURIComponent(input.id)}/activate`,\n method: \"POST\",\n body: {} as JsonObject,\n idempotencyKey,\n });\n },\n\n async update(\n input: UpdateWorktreeInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WorktreesUpdateResponse> {\n return gateway.request<WorktreeRecord>({\n path: `/v1/worktrees/${encodeURIComponent(input.id)}`,\n method: \"PATCH\",\n body: {\n objective: input.objective,\n hypothesis: input.hypothesis,\n rationale: input.rationale,\n track: input.track,\n trackPosition: input.trackPosition,\n executionBand: input.executionBand,\n executionOrder: input.executionOrder,\n dependsOn: input.dependsOn,\n blocks: input.blocks,\n gate: input.gate,\n status: input.status,\n topicId: input.topicId,\n additionalTopicIds: input.additionalTopicIds,\n proofArtifacts: input.proofArtifacts,\n staffingHint: input.staffingHint,\n lastReconciledAt: input.lastReconciledAt,\n autoFixPolicy: input.autoFixPolicy,\n lensId: input.lensId,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async merge(\n input: MergeWorktreeInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WorktreesMergeResponse> {\n return gateway.request<MergeWorktreeResult>({\n path: `/v1/worktrees/${encodeURIComponent(input.id)}/merge`,\n method: \"POST\",\n body: {\n summary: input.summary,\n outcomes: input.outcomes,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateTargets(\n input: UpdateWorktreeTargetsInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<WorktreesTargetsResponse> {\n return gateway.request<WorktreeRecord>({\n path: `/v1/worktrees/${encodeURIComponent(input.id)}/targets`,\n method: \"POST\",\n body: {\n addBeliefIds: input.addBeliefIds,\n addQuestionIds: input.addQuestionIds,\n removeBeliefIds: input.removeBeliefIds,\n removeQuestionIds: input.removeQuestionIds,\n } as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createWorktreesClientCore,\n type WorktreesClientCoreConfig,\n} from \"@/lucern/packages/client-core/src/worktrees\";\n\nexport type WorktreesFacadeConfig = WorktreesClientCoreConfig;\n\nexport function createWorktreesFacade(config: WorktreesFacadeConfig = {}) {\n const worktreesClient = createWorktreesClientCore(config);\n\n return {\n async create(\n input: Parameters<typeof worktreesClient.create>[0],\n idempotencyKey?: Parameters<typeof worktreesClient.create>[1]\n ) {\n return worktreesClient.create(input, idempotencyKey);\n },\n\n async list(query: Parameters<typeof worktreesClient.list>[0]) {\n return worktreesClient.list(query);\n },\n\n async activate(\n input: Parameters<typeof worktreesClient.activate>[0],\n idempotencyKey?: Parameters<typeof worktreesClient.activate>[1]\n ) {\n return worktreesClient.activate(input, idempotencyKey);\n },\n\n async update(\n input: Parameters<typeof worktreesClient.update>[0],\n idempotencyKey?: Parameters<typeof worktreesClient.update>[1]\n ) {\n return worktreesClient.update(input, idempotencyKey);\n },\n\n async merge(\n input: Parameters<typeof worktreesClient.merge>[0],\n idempotencyKey?: Parameters<typeof worktreesClient.merge>[1]\n ) {\n return worktreesClient.merge(input, idempotencyKey);\n },\n\n async updateTargets(\n input: Parameters<typeof worktreesClient.updateTargets>[0],\n idempotencyKey?: Parameters<typeof worktreesClient.updateTargets>[1]\n ) {\n return worktreesClient.updateTargets(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, normalizeTopicQuery } from \"./sdkSurface\";\nimport type { TopicIdentifierInput } from \"./types\";\n\nexport type LearningClientConfig = GatewayClientConfig;\n\n/**\n * Create the learning client for execution telemetry reads.\n */\nexport function createLearningClient(config: LearningClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List recent execution records.\n */\n async listRecentExecutions(\n args: {\n namespace?: string;\n topicId?: string;\n audienceMode?: string;\n success?: boolean;\n limit?: number;\n } & TopicIdentifierInput = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/learning/executions/recent${toQueryString({\n ...normalizeTopicQuery(args),\n namespace: args.namespace,\n audienceMode: args.audienceMode,\n success:\n typeof args.success === \"boolean\"\n ? args.success\n ? \"true\"\n : \"false\"\n : undefined,\n limit:\n typeof args.limit === \"number\" && Number.isFinite(args.limit)\n ? String(args.limit)\n : undefined,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"executions\")\n )\n );\n },\n\n /**\n * @deprecated Use listRecentExecutions.\n */\n async getRecentExecutions(\n args: {\n namespace?: string;\n topicId?: string;\n audienceMode?: string;\n success?: boolean;\n limit?: number;\n } & TopicIdentifierInput = {}\n ) {\n return this.listRecentExecutions(args);\n },\n\n /**\n * Get aggregate execution statistics.\n */\n async getExecutionStats(\n args: {\n namespace?: string;\n topicId?: string;\n audienceMode?: string;\n hours?: number;\n } & TopicIdentifierInput = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/learning/executions/stats${toQueryString({\n ...normalizeTopicQuery(args),\n namespace: args.namespace,\n audienceMode: args.audienceMode,\n hours:\n typeof args.hours === \"number\" && Number.isFinite(args.hours)\n ? String(args.hours)\n : undefined,\n })}`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n randomIdempotencyKey,\n type PlatformGatewaySuccess,\n} from \"./coreClient\";\nimport type { JsonObject } from \"./types\";\n\nexport type McpParityClientConfig = GatewayClientConfig;\n\ntype ToolArgs = JsonObject;\n\ntype ToolResult<T = unknown> = Promise<PlatformGatewaySuccess<T>>;\n\nfunction withSdkSessionId(args: ToolArgs | undefined, sessionId: string): ToolArgs {\n return {\n ...(args ?? {}),\n __sdkSessionId: sessionId,\n };\n}\n\n/**\n * Thin typed bridge for MCP-only SDK parity methods.\n *\n * These methods map 1:1 to the Lucern MCP handlers and execute through the\n * platform gateway so the SDK can cover the full control-plane surface.\n */\nexport function createMcpParityClient(config: McpParityClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n const sessionId = crypto.randomUUID();\n\n function executeRead<T = unknown>(\n toolName: string,\n args?: ToolArgs\n ): ToolResult<T> {\n return gateway.request<T>({\n path: `/api/platform/v1/mcp-tools/${encodeURIComponent(toolName)}`,\n method: \"POST\",\n body: withSdkSessionId(args, sessionId),\n });\n }\n\n function executeMutation<T = unknown>(\n toolName: string,\n args?: ToolArgs,\n idempotencyKey?: string\n ): ToolResult<T> {\n return gateway.request<T>({\n path: `/api/platform/v1/mcp-tools/${encodeURIComponent(toolName)}`,\n method: \"POST\",\n body: withSdkSessionId(args, sessionId),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n }\n\n return {\n sessionId,\n\n listTopics(args: ToolArgs = {}) {\n return executeRead(\"list_topics\", args);\n },\n createTopic(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_topic\", args, idempotencyKey);\n },\n getTopic(args: ToolArgs) {\n return executeRead(\"get_topic\", args);\n },\n getTopicTree(args: ToolArgs) {\n return executeRead(\"get_topic_tree\", args);\n },\n\n activateWorktree(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"activate_worktree\", args, idempotencyKey);\n },\n updateWorktreeMetadata(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"update_worktree_metadata\", args, idempotencyKey);\n },\n updateWorktreeTargets(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"update_worktree_targets\", args, idempotencyKey);\n },\n listAllWorktrees(args: ToolArgs = {}) {\n return executeRead(\"list_all_worktrees\", args);\n },\n pipelineSnapshot(args: ToolArgs) {\n return executeRead(\"pipeline_snapshot\", args);\n },\n recordScopeLearning(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"record_scope_learning\", args, idempotencyKey);\n },\n discover(args: ToolArgs) {\n return executeRead(\"discover\", args);\n },\n analyzeTopicDensity(args: ToolArgs) {\n return executeRead(\"analyze_topic_density\", args);\n },\n applyAutoBranching(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"apply_auto_branching\", args, idempotencyKey);\n },\n seedBeliefLattice(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"seed_belief_lattice\", args, idempotencyKey);\n },\n getLatticeCoverage(args: ToolArgs = {}) {\n return executeRead(\"get_lattice_coverage\", args);\n },\n matchEntityType(args: ToolArgs) {\n return executeRead(\"match_entity_type\", args);\n },\n discoverEntityConnections(args: ToolArgs) {\n return executeRead(\"discover_entity_connections\", args);\n },\n triggerBeliefReview(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"trigger_belief_review\", args, idempotencyKey);\n },\n\n listOntologies(args: ToolArgs = {}) {\n return executeRead(\"list_ontologies\", args);\n },\n getOntology(args: ToolArgs) {\n return executeRead(\"get_ontology\", args);\n },\n applyOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"apply_ontology\", args, idempotencyKey);\n },\n createOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_ontology\", args, idempotencyKey);\n },\n updateOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"update_ontology\", args, idempotencyKey);\n },\n archiveOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"archive_ontology\", args, idempotencyKey);\n },\n createOntologyVersion(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_ontology_version\", args, idempotencyKey);\n },\n publishOntologyVersion(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"publish_ontology_version\", args, idempotencyKey);\n },\n deprecateOntologyVersion(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\n \"deprecate_ontology_version\",\n args,\n idempotencyKey\n );\n },\n resolveEffectiveOntology(args: ToolArgs) {\n return executeRead(\"resolve_effective_ontology\", args);\n },\n\n registerSession(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"register_session\", args, idempotencyKey);\n },\n heartbeatSession(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"heartbeat_session\", args, idempotencyKey);\n },\n endSession(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"end_session\", args, idempotencyKey);\n },\n listActiveSessions(args: ToolArgs = {}) {\n return executeRead(\"list_active_sessions\", args);\n },\n sendAgentMessage(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"send_agent_message\", args, idempotencyKey);\n },\n broadcastMessage(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"broadcast_message\", args, idempotencyKey);\n },\n getAgentInbox(args: ToolArgs = {}) {\n return executeRead(\"get_agent_inbox\", args);\n },\n claimFiles(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"claim_files\", args, idempotencyKey);\n },\n\n listTasks(args: ToolArgs) {\n return executeRead(\"list_tasks\", args);\n },\n createAnswer(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_answer\", args, idempotencyKey);\n },\n getAnswer(args: ToolArgs) {\n return executeRead(\"get_answer\", args);\n },\n flagContradiction(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"flag_contradiction\", args, idempotencyKey);\n },\n\n ingestObservation(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"ingest_observation\", args, idempotencyKey);\n },\n getObservationContext(args: ToolArgs) {\n return executeRead(\"get_observation_context\", args);\n },\n\n getCodeContext(args: ToolArgs) {\n return executeRead(\"get_code_context\", args);\n },\n getChangeHistory(args: ToolArgs) {\n return executeRead(\"get_change_history\", args);\n },\n recordAttempt(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"record_attempt\", args, idempotencyKey);\n },\n getFailureLog(args: ToolArgs) {\n return executeRead(\"get_failure_log\", args);\n },\n\n createEpistemicContract(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\n \"create_epistemic_contract\",\n args,\n idempotencyKey\n );\n },\n evaluateContract(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"evaluate_contract\", args, idempotencyKey);\n },\n getContractStatus(args: ToolArgs) {\n return executeRead(\"get_contract_status\", args);\n },\n\n checkPermission(args: ToolArgs) {\n return executeRead(\"check_permission\", args);\n },\n filterByPermission(args: ToolArgs) {\n return executeRead(\"filter_by_permission\", args);\n },\n\n manageWritePolicy(args: ToolArgs, idempotencyKey?: string) {\n return args.action === \"set\"\n ? executeMutation(\"manage_write_policy\", args, idempotencyKey)\n : executeRead(\"manage_write_policy\", args);\n },\n\n generateSessionHandoff(args: ToolArgs) {\n return executeRead(\"generate_session_handoff\", args);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\nexport type OntologyClientConfig = GatewayClientConfig;\n\nexport type OntologyBindingInput = GatewayScope & {\n ontologyId: string;\n topicId: string;\n};\n\nexport type OntologyDefinitionInput = GatewayScope & {\n ontologyKey: string;\n name: string;\n description?: string;\n tenantId?: string;\n tier?: \"platform\" | \"pack\" | \"tenant\";\n};\n\nexport type OntologyDefinitionUpdateInput = GatewayScope & {\n name?: string;\n description?: string;\n status?: \"draft\" | \"active\" | \"deprecated\";\n};\n\nexport type OntologyVersionInput = GatewayScope & {\n version: string;\n entityTypes: Array<{\n value: string;\n label: string;\n description?: string;\n schema?: JsonObject;\n subtypes?: Array<{ value: string; label: string; description?: string }>;\n }>;\n edgeTypes: Array<{\n value: string;\n label: string;\n description?: string;\n sourceTypes?: string[];\n targetTypes?: string[];\n constraintSeverity?: \"warn\" | \"info\";\n }>;\n releaseNotes?: string;\n};\n\n/**\n * Create the ontology client for ontology definitions and versions.\n */\nexport function createOntologyClient(config: OntologyClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async list(\n filters: GatewayScope & {\n tenantId?: string;\n tier?: string;\n status?: string;\n } = {}\n ) {\n return gateway\n .request<unknown>({\n path: `/api/platform/v1/ontologies${toQueryString(filters)}`,\n })\n .then((response) =>\n mapGatewayData(response, (data) => {\n const record =\n data && typeof data === \"object\" && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {};\n const ontologies = Array.isArray(record.ontologies)\n ? record.ontologies\n : Array.isArray(record.definitions)\n ? record.definitions\n : Array.isArray(data)\n ? data\n : [];\n const total =\n typeof record.total === \"number\" && Number.isFinite(record.total)\n ? record.total\n : ontologies.length;\n return {\n ...record,\n ...createListResult(ontologies, \"definitions\"),\n ontologies,\n total,\n };\n })\n );\n },\n\n async get(id: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(id)}`,\n });\n },\n\n async bind(input: OntologyBindingInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(input.ontologyId)}/bind`,\n method: \"POST\",\n body: {\n topicId: input.topicId,\n },\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List ontology definitions.\n */\n async listDefinitions(\n filters: GatewayScope & {\n tenantId?: string;\n tier?: string;\n status?: string;\n } = {}\n ) {\n return this.list(filters);\n },\n\n /**\n * Get an ontology definition.\n */\n async getDefinition(id: string) {\n return this.get(id);\n },\n\n /**\n * Create an ontology definition.\n */\n async createDefinition(\n input: OntologyDefinitionInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/ontologies\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update an ontology definition.\n */\n async updateDefinition(\n id: string,\n input: OntologyDefinitionUpdateInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Archive an ontology definition.\n */\n async archiveDefinition(id: string, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List versions for an ontology definition.\n */\n async listVersions(\n ontologyId: string,\n filters: GatewayScope & { status?: string } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions${toQueryString(filters)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"versions\")\n )\n );\n },\n\n /**\n * Create an ontology version.\n */\n async createVersion(\n ontologyId: string,\n input: OntologyVersionInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Publish an ontology version.\n */\n async publishVersion(\n ontologyId: string,\n versionId: string,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions/${encodeURIComponent(versionId)}/publish`,\n method: \"POST\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Deprecate an ontology version.\n */\n async deprecateVersion(\n ontologyId: string,\n versionId: string,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions/${encodeURIComponent(versionId)}/deprecate`,\n method: \"POST\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List topics directly bound to a specific ontology definition.\n * Uses the topics gateway with ontologyId filter.\n */\n async listTopics(ontologyId: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/topics?ontologyId=${encodeURIComponent(ontologyId)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"topics\")\n )\n );\n },\n\n /**\n * @deprecated Use listTopics.\n */\n async listTopicsByOntology(ontologyId: string) {\n return this.listTopics(ontologyId);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\nexport type PacksClientConfig = GatewayClientConfig;\n\nexport type PackInstallInput = GatewayScope & {\n packKey: string;\n version?: string;\n autoEnable?: boolean;\n metadata?: JsonObject;\n};\n\nexport type PackEnableInput = GatewayScope & {\n packKey: string;\n metadata?: JsonObject;\n};\n\nexport type PackDisableInput = GatewayScope & {\n packKey: string;\n force?: boolean;\n metadata?: JsonObject;\n};\n\nexport type PackUpgradeInput = GatewayScope & {\n packKey: string;\n mode: \"prepare\" | \"canary\" | \"commit\" | \"rollback\";\n targetVersion?: string;\n metadata?: JsonObject;\n};\n\nexport type PackEntitlementInput = GatewayScope & {\n packKey: string;\n status: \"active\" | \"disabled\" | \"revoked\";\n allowedLifecycles?: Array<\"active\" | \"beta\" | \"experimental\">;\n minVersion?: string;\n maxVersion?: string;\n metadata?: JsonObject;\n};\n\n/**\n * Create the packs client for pack catalog, state, and entitlement operations.\n */\nexport function createPacksClient(config: PacksClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List catalog entries for available packs.\n */\n async listCatalog() {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/catalog\",\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"catalog\")\n )\n );\n },\n\n /**\n * @deprecated Use listCatalog.\n */\n async getCatalog() {\n return this.listCatalog();\n },\n\n /**\n * List pack states for the current scope.\n */\n async listStates(query: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/packs/states${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"states\")\n )\n );\n },\n\n /**\n * @deprecated Use listStates.\n */\n async getStates(query: GatewayScope = {}) {\n return this.listStates(query);\n },\n\n /**\n * Get health details for a pack.\n */\n async getHealth(packKey: string, query: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/packs/${encodeURIComponent(packKey)}/health${toQueryString(\n query\n )}`,\n });\n },\n\n /**\n * List pack telemetry entries.\n */\n async listTelemetry(\n query: GatewayScope & { lookbackHours?: number; limit?: number } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/packs/telemetry${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"telemetry\")\n )\n );\n },\n\n /**\n * @deprecated Use listTelemetry.\n */\n async getTelemetry(\n query: GatewayScope & { lookbackHours?: number; limit?: number } = {}\n ) {\n return this.listTelemetry(query);\n },\n\n /**\n * Create a pack entitlement.\n */\n async createEntitlement(\n input: PackEntitlementInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/entitlements\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a pack entitlement.\n */\n async updateEntitlement(\n input: PackEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createEntitlement or updateEntitlement.\n */\n async upsertEntitlement(\n input: PackEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n\n /**\n * Install a pack.\n */\n async install(input: PackInstallInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/install\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Enable a pack.\n */\n async enable(input: PackEnableInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/enable\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Disable a pack.\n */\n async disable(input: PackDisableInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/disable\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Upgrade a pack.\n */\n async upgrade(input: PackUpgradeInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/upgrade\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\nexport type PolicyClientConfig = GatewayClientConfig;\n\nexport type PermissionKind = \"read\" | \"write\";\nexport type WritePolicyPermission = \"allow\" | \"deny\" | \"review_required\";\n\ntype TopicRecord = {\n topicId?: string;\n name?: string;\n type?: string;\n isOwner?: boolean;\n [key: string]: unknown;\n};\n\nexport type PolicyDecisionExplanation = {\n summary?: string;\n matchedReasonCode?: string;\n steps?: Array<{\n stage?: string;\n outcome?: string;\n reasonCode?: string;\n detail?: string;\n }>;\n [key: string]: unknown;\n};\n\nexport type PermissionDecision = {\n allowed?: boolean;\n decision?: string;\n reasonCode?: string;\n principalId?: string;\n topicId?: string;\n permission?: string;\n policyVersion?: string;\n traceId?: string | null;\n explanation?: PolicyDecisionExplanation;\n};\n\nexport type WritePolicyRecord = {\n id?: string;\n topicId?: string;\n role?: string;\n toolCategory?: string;\n permission?: WritePolicyPermission;\n maxWritesPerSession?: number;\n enabled?: boolean;\n rationale?: string;\n createdAt?: number;\n updatedAt?: number;\n createdBy?: string;\n resolution?: string;\n [key: string]: unknown;\n};\n\nexport type WritePolicyCreateInput = GatewayScope & {\n topicId?: string;\n role: string;\n toolCategory: string;\n permission: WritePolicyPermission;\n maxWritesPerSession?: number;\n enabled?: boolean;\n rationale?: string;\n createdBy?: string;\n};\n\nexport type WritePolicyUpdateInput = GatewayScope & {\n topicId?: string;\n clearTopicId?: boolean;\n role?: string;\n toolCategory?: string;\n permission?: WritePolicyPermission;\n maxWritesPerSession?: number;\n clearMaxWritesPerSession?: boolean;\n enabled?: boolean;\n rationale?: string;\n clearRationale?: boolean;\n};\n\ntype AccessibleTopicsResponse = {\n permission: PermissionKind;\n topics: TopicRecord[];\n total: number;\n deniedTopics: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n};\n\ntype FilterByPermissionResponse = {\n permission: PermissionKind;\n allowedTopicIds: string[];\n deniedTopics: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n count: number;\n};\n\nfunction asTopicArray(data: unknown): TopicRecord[] {\n if (Array.isArray(data)) {\n return data.filter(\n (row): row is TopicRecord => Boolean(row) && typeof row === \"object\"\n );\n }\n return [];\n}\n\nfunction asWritePolicyRecord(data: unknown): WritePolicyRecord | null {\n if (!data || typeof data !== \"object\") {\n return null;\n }\n return data as WritePolicyRecord;\n}\n\nfunction asWritePolicyArray(data: unknown): WritePolicyRecord[] {\n if (!Array.isArray(data)) {\n return [];\n }\n return data\n .map(asWritePolicyRecord)\n .filter((row): row is WritePolicyRecord => Boolean(row));\n}\n\n/**\n * Create the policy client for permission checks and grants.\n */\nexport function createPolicyClient(config: PolicyClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List policy decisions in the current scope.\n */\n async listDecisions(\n query: GatewayScope & {\n action?: string;\n decision?: string;\n traceId?: string;\n principalId?: string;\n topicId?: string;\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/policy/decisions${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"decisions\")\n )\n );\n },\n\n /**\n * Create a permission grant.\n */\n async grant(\n input: GatewayScope & {\n topicId: string;\n permission: PermissionKind;\n principal?: string;\n principalId?: string;\n groupId?: string;\n beliefClusterId?: string;\n expiresAt?: number;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/policy/grant\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Delete a permission grant by revoking it.\n */\n async revoke(\n input: GatewayScope & {\n topicId: string;\n principal?: string;\n principalId?: string;\n groupId?: string;\n beliefClusterId?: string;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/policy/revoke\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n async listWritePolicies(\n query: GatewayScope & {\n topicId?: string;\n role?: string;\n toolCategory?: string;\n enabled?: boolean;\n } = {}\n ) {\n const response = await gateway.request<{ policies?: unknown[] }>({\n path: `/api/platform/v1/policy/write-policies${toQueryString(query)}`,\n });\n const rawPolicies =\n response.data && typeof response.data === \"object\"\n ? (response.data as { policies?: unknown[] }).policies\n : response.data;\n\n return {\n ...response,\n data: {\n policies: asWritePolicyArray(rawPolicies),\n },\n };\n },\n\n async createWritePolicy(\n input: WritePolicyCreateInput,\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{\n id?: string;\n created?: boolean;\n policy?: unknown;\n }>({\n path: \"/api/platform/v1/policy/write-policies\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n id:\n typeof response.data?.id === \"string\" ? response.data.id : undefined,\n created: response.data?.created === true,\n policy: asWritePolicyRecord(response.data?.policy),\n },\n };\n },\n\n async updateWritePolicy(\n id: string,\n input: WritePolicyUpdateInput,\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{\n id?: string;\n updated?: boolean;\n policy?: unknown;\n }>({\n path: `/api/platform/v1/policy/write-policies/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n id:\n typeof response.data?.id === \"string\" ? response.data.id : undefined,\n updated: response.data?.updated === true,\n policy: asWritePolicyRecord(response.data?.policy),\n },\n };\n },\n\n async deleteWritePolicy(\n id: string,\n scope: GatewayScope = {},\n idempotencyKey?: string\n ) {\n return gateway.request<{ id?: string; deleted?: boolean }>({\n path: `/api/platform/v1/policy/write-policies/${encodeURIComponent(\n id\n )}${toQueryString(scope)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Check a permission decision for a topic or project scope.\n */\n async checkPermission(\n query: GatewayScope & {\n topicId?: string;\n permission?: PermissionKind;\n principal?: string;\n principalId?: string;\n beliefClusterId?: string;\n }\n ) {\n if (!query.topicId) {\n throw new Error(\"topicId is required\");\n }\n return gateway.request<PermissionDecision>({\n path: `/api/platform/v1/policy/check${toQueryString(query)}`,\n });\n },\n\n /**\n * List accessible topics for a principal.\n */\n async listAccessibleTopics(\n query: GatewayScope & {\n permission?: PermissionKind;\n includeShared?: boolean;\n principal?: string;\n principalId?: string;\n limit?: number;\n } = {}\n ) {\n const permission = query.permission ?? \"read\";\n const principal = query.principal ?? query.principalId;\n const response = await gateway.request<{\n permission?: PermissionKind;\n topics?: unknown[];\n total?: number;\n deniedTopics?: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n }>({\n path: `/api/platform/v1/policy/topics${toQueryString({\n tenantId: query.tenantId,\n workspaceId: query.workspaceId,\n permission,\n includeShared: query.includeShared,\n principal,\n limit: query.limit,\n })}`,\n });\n\n return {\n ...response,\n data: {\n permission,\n topics: asTopicArray(response.data?.topics),\n total:\n typeof response.data?.total === \"number\"\n ? response.data.total\n : asTopicArray(response.data?.topics).length,\n deniedTopics: Array.isArray(response.data?.deniedTopics)\n ? response.data.deniedTopics\n : [],\n } satisfies AccessibleTopicsResponse,\n };\n },\n\n /**\n * Filter topic identifiers by permission.\n */\n async filterByPermission(\n input: GatewayScope & {\n topicIds?: string[];\n permission?: PermissionKind;\n principal?: string;\n principalId?: string;\n }\n ) {\n const permission = input.permission ?? \"read\";\n const principal = input.principal ?? input.principalId;\n const uniqueTopicIds = [...new Set(input.topicIds ?? [])].filter(\n (topicId) => typeof topicId === \"string\" && topicId.trim().length > 0\n );\n const response = await gateway.request<{\n permission?: PermissionKind;\n allowedTopicIds?: string[];\n deniedTopics?: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n count?: number;\n }>({\n path: \"/api/platform/v1/policy/filter\",\n method: \"POST\",\n body: {\n tenantId: input.tenantId,\n workspaceId: input.workspaceId,\n topicIds: uniqueTopicIds,\n permission,\n principal,\n },\n });\n\n const allowedTopicIds = Array.isArray(response.data?.allowedTopicIds)\n ? response.data.allowedTopicIds\n : [];\n const deniedTopics = Array.isArray(response.data?.deniedTopics)\n ? response.data.deniedTopics\n : [];\n\n return {\n success: true,\n data: {\n permission,\n allowedTopicIds,\n deniedTopics,\n count:\n typeof response.data?.count === \"number\"\n ? response.data.count\n : allowedTopicIds.length,\n } satisfies FilterByPermissionResponse,\n };\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, resolveTopicId } from \"./sdkSurface\";\nimport type {\n TopicIdentifierInput,\n ProjectReportsResponse,\n ReportTemplatesResponse,\n ReportWithSectionsResponse,\n} from \"./types\";\n\nexport type ReportsClientConfig = GatewayClientConfig;\nexport type {\n ProjectReportsResponse,\n ReportTemplatesResponse,\n ReportWithSectionsResponse,\n} from \"./types\";\n\n/**\n * Create the reports client for report templates and generated reports.\n */\nexport function createReportsClient(config: ReportsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List report templates.\n */\n async listTemplates(args: { slug?: string } = {}) {\n return gateway.request<ReportTemplatesResponse>({\n path: `/api/platform/v1/reports/templates${toQueryString({\n slug: args.slug,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record =\n data && typeof data === \"object\"\n ? (data as Record<string, unknown>)\n : {};\n const rows = Array.isArray(data)\n ? data\n : Array.isArray(record.templates)\n ? record.templates\n : [];\n return createListResult(rows, \"templates\") as ReportTemplatesResponse;\n })\n );\n },\n\n /**\n * @deprecated Use listTemplates.\n */\n async getTemplates(args: { slug?: string } = {}) {\n return this.listTemplates(args);\n },\n\n /**\n * List reports for a topic scope.\n */\n async listReports(\n input: TopicIdentifierInput,\n args: { summary?: boolean } = {}\n ) {\n const topicId = resolveTopicId(input);\n if (!topicId) {\n throw new Error(\"topicId is required\");\n }\n return gateway.request<ProjectReportsResponse>({\n path: `/api/platform/v1/reports/topics/${encodeURIComponent(topicId)}${toQueryString(\n {\n summary:\n typeof args.summary === \"boolean\"\n ? args.summary\n ? \"true\"\n : \"false\"\n : undefined,\n }\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"reports\")\n )\n );\n },\n /**\n * Get a generated report.\n */\n async getReport(reportId: string) {\n return gateway.request<ReportWithSectionsResponse>({\n path: `/api/platform/v1/reports/${encodeURIComponent(reportId)}`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\nexport type SchemaClientConfig = GatewayClientConfig;\n\nexport type SchemaPackInstallInput = GatewayScope & {\n packKey: string;\n version?: string;\n autoEnable?: boolean;\n metadata?: JsonObject;\n};\n\nexport type SchemaEntitlementInput = GatewayScope & {\n packKey: string;\n status: \"active\" | \"disabled\" | \"revoked\";\n allowedLifecycles?: Array<\"active\" | \"beta\" | \"experimental\">;\n minVersion?: string;\n maxVersion?: string;\n metadata?: JsonObject;\n};\n\n/**\n * Create the schema client for pack catalog and entitlement operations.\n */\nexport function createSchemaClient(config: SchemaClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List schema packs.\n */\n async listPacks(scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/schema/packs${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"packs\")\n )\n );\n },\n\n /**\n * Install a schema pack.\n */\n async installPack(input: SchemaPackInstallInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/schema/packs\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Get a schema pack by identifier.\n */\n async getPack(packId: string, scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/schema/packs/${encodeURIComponent(packId)}${toQueryString(\n scope\n )}`,\n });\n },\n\n /**\n * List schema entitlements.\n */\n async listEntitlements(scope: GatewayScope & { packKey?: string } = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/schema/entitlements${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"entitlements\")\n )\n );\n },\n\n /**\n * Create a schema entitlement.\n */\n async createEntitlement(\n input: SchemaEntitlementInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/schema/entitlements\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a schema entitlement.\n */\n async updateEntitlement(\n input: SchemaEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createEntitlement or updateEntitlement.\n */\n async upsertEntitlement(\n input: SchemaEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n createListResult,\n mapGatewayData,\n resolveTopicId,\n withTopicAlias,\n} from \"./sdkSurface\";\nimport type {\n JsonObject,\n TopicCoverageResponse,\n TopicIdentifierInput,\n TopicListResponse,\n TopicRecord,\n TopicTreeNode,\n TopicTreeResponse,\n} from \"./types\";\n\nexport type TopicsClientConfig = GatewayClientConfig;\n\nexport type TopicListInput = TopicIdentifierInput & {\n ontologyId?: string;\n parentTopicId?: string;\n status?: string;\n type?: string;\n};\n\nexport type TopicCreateInput = TopicIdentifierInput & {\n name: string;\n description?: string;\n type?: string;\n parentTopicId?: string;\n ontologyId?: string;\n tenantId?: string;\n workspaceId?: string;\n visibility?: \"private\" | \"team\" | \"firm\" | \"external\" | \"public\";\n createdBy?: string;\n metadata?: JsonObject;\n};\n\nexport type TopicUpdateInput = TopicIdentifierInput & {\n name?: string;\n description?: string;\n type?: string;\n ontologyId?: string;\n clearOntologyId?: boolean;\n status?: \"active\" | \"archived\" | \"watching\";\n visibility?: \"private\" | \"team\" | \"firm\" | \"external\" | \"public\";\n};\n\nexport type TopicTreeQuery = {\n maxDepth?: number;\n};\n\nexport type TopicCoverageQuery = {\n includeDescendants?: boolean;\n maxDepth?: number;\n};\n\nfunction asRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\"\n ? (value as Record<string, unknown>)\n : {};\n}\n\nfunction cleanString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nfunction normalizeTopicRecord(value: unknown): TopicRecord {\n const record = asRecord(value);\n const topicId =\n cleanString(record.topicId) ??\n cleanString(record.id) ??\n cleanString(record._id);\n\n return withTopicAlias({\n ...record,\n ...(topicId ? { topicId } : {}),\n }) as TopicRecord;\n}\n\nfunction normalizeTopicTreeNode(value: unknown): TopicTreeNode {\n return normalizeTopicRecord(value) as TopicTreeNode;\n}\n\nexport function createTopicsClient(config: TopicsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async list(query: TopicListInput = {}) {\n const topicId = resolveTopicId(query);\n return gateway.request<TopicListResponse>({\n path: `/api/platform/v1/topics${toQueryString({\n ...(topicId ? { topicId } : {}),\n ontologyId: query.ontologyId,\n parentTopicId: query.parentTopicId,\n status: query.status,\n type: query.type,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record = asRecord(data);\n const items = Array.isArray(record.topics)\n ? record.topics.map(normalizeTopicRecord)\n : [];\n\n return {\n ...createListResult(items, \"topics\"),\n ...record,\n topics: items,\n total:\n typeof record.total === \"number\" ? record.total : items.length,\n } as TopicListResponse;\n })\n );\n },\n\n async get(topicId: string) {\n return gateway.request<TopicRecord>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n normalizeTopicRecord(asRecord(data).topic ?? data)\n )\n );\n },\n\n async create(input: TopicCreateInput, idempotencyKey?: string) {\n const topicId = resolveTopicId(input);\n return gateway.request<TopicRecord>({\n path: \"/api/platform/v1/topics\",\n method: \"POST\",\n body: {\n ...input,\n ...(topicId ? { topicId } : {}),\n type: input.type ?? \"theme\",\n } as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) => normalizeTopicRecord(data))\n );\n },\n\n async update(\n topicId: string,\n input: TopicUpdateInput,\n idempotencyKey?: string\n ) {\n return gateway.request<TopicRecord>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) => normalizeTopicRecord(data))\n );\n },\n\n async getTree(topicId: string, query: TopicTreeQuery = {}) {\n return gateway.request<TopicTreeResponse>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}/tree${toQueryString(\n query\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record = asRecord(data);\n return {\n tree: Array.isArray(record.tree)\n ? record.tree.map(normalizeTopicTreeNode)\n : [],\n } as TopicTreeResponse;\n })\n );\n },\n\n async getCoverage(topicId: string, query: TopicCoverageQuery = {}) {\n return gateway.request<TopicCoverageResponse>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}/coverage${toQueryString(\n query\n )}`,\n });\n },\n };\n}\n","/** Current SDK package version. */\nexport const LUCERN_SDK_VERSION = \"0.2.0-alpha.1\";\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n asListItems,\n createListResult,\n mapAliasedList,\n mapGatewayData,\n normalizeTopicQuery,\n resolveTopicId,\n withTopicAlias,\n} from \"./sdkSurface\";\nimport type {\n LensPerspectiveType,\n LensPromptTemplateReference,\n LensStatus,\n LensTaskTemplate,\n LensWorkflowTemplate,\n} from \"@lucern/contracts/lens-workflow.contract\";\nimport type {\n WorkflowAutoFixPolicy,\n WorkflowProofArtifact,\n WorkflowStaffingHint,\n} from \"@lucern/contracts/workflow-runtime.contract\";\nimport type {\n AddWorktreeResponse,\n CompleteTaskResponse,\n CreateBranchResponse,\n CreateLensResponse,\n CreateTaskResponse,\n JsonObject,\n JsonValue,\n LensTopicBindingResponse,\n ListBranchesResponse,\n ListLensesResponse,\n ListTopicsResponse,\n ListWorktreesResponse,\n MergeWorktreeResponse,\n OpenPullRequestResponse,\n PushWorktreeResponse,\n SwitchTopicContextResponse,\n TopicIdentifierInput,\n UpdateTaskResponse,\n WorkflowBranchRecord,\n WorkflowLensRecord,\n WorkflowTopicRecord,\n WorkflowWorktreeRecord,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n AddWorktreeResponse,\n CompleteTaskResponse,\n CreateBranchResponse,\n CreateLensResponse,\n CreateTaskResponse,\n LensTopicBindingResponse,\n ListBranchesResponse,\n ListLensesResponse,\n ListTopicsResponse,\n ListWorktreesResponse,\n MergeWorktreeResponse,\n OpenPullRequestResponse,\n PushWorktreeResponse,\n SwitchTopicContextResponse,\n UpdateTaskResponse,\n} from \"./types\";\n\nexport type WorkflowClientConfig = GatewayClientConfig;\n\nexport type WorkflowBranchStatus = \"dormant\" | \"active\" | \"archived\";\n\nexport type WorkflowLensStatus = LensStatus;\n\nexport type WorkflowLensPerspectiveType = LensPerspectiveType;\n\nexport type WorkflowWorktreeStatus =\n | \"planning\"\n | \"active\"\n | \"paused\"\n | \"completed\"\n | \"merged\"\n | \"failed\"\n | \"archived\";\n\nexport type WorkflowMergeOutcome =\n | \"validated\"\n | \"invalidated\"\n | \"forked\"\n | \"inconclusive\";\n\nexport type AddWorktreeInput = {\n title: string;\n topicId?: string;\n branchId?: string;\n objective?: string;\n hypothesis?: string;\n beliefIds?: string[];\n autoShape?: boolean;\n domainPackId?: string;\n executionOrder?: number;\n dependsOn?: string[];\n blocks?: string[];\n gate?: string;\n proofArtifacts?: WorkflowProofArtifact[];\n staffingHint?: WorkflowStaffingHint | string;\n lastReconciledAt?: number;\n autoFixPolicy?: WorkflowAutoFixPolicy;\n} & TopicIdentifierInput;\n\nexport type MergeInput = {\n outcomes: Array<{\n beliefId: string;\n confidence: number;\n rationale: string;\n }>;\n summary?: string;\n};\n\nexport type UpdateWorktreeTargetsInput = {\n worktreeId: string;\n addBeliefIds?: string[];\n addQuestionIds?: string[];\n removeBeliefIds?: string[];\n removeQuestionIds?: string[];\n};\n\nexport type ListTopicsInput = {\n includeShared?: boolean;\n limit?: number;\n};\n\nexport type SwitchTopicContextInput = {\n targetTopicName: string;\n};\n\nexport type CreateTaskInput = {\n title: string;\n topicId?: string;\n taskType?: \"research\" | \"interview\" | \"analysis\" | \"data_collection\";\n linkedQuestionId?: string;\n linkedWorktreeId?: string;\n linkedBeliefId?: string;\n description?: string;\n priority?: \"low\" | \"medium\" | \"high\" | \"urgent\";\n} & TopicIdentifierInput;\n\nexport type CompleteTaskInput = {\n outputSummary: string;\n evidenceCreated?: boolean;\n};\n\nexport type UpdateTaskInput = {\n title?: string;\n description?: string;\n linkedBeliefId?: string;\n linkedQuestionId?: string;\n linkedWorktreeId?: string;\n priority?: \"critical\" | \"high\" | \"medium\" | \"low\";\n status?: \"todo\" | \"in_progress\" | \"blocked\" | \"done\";\n};\n\nfunction normalizeLensQuery<T extends { topicId?: string }>(\n value: T\n) {\n const topicId = resolveTopicId(value);\n return {\n ...value,\n ...(topicId ? { topicId } : {}),\n };\n}\n\n/**\n * Create the workflow client for lenses, legacy branches, worktrees, context,\n * and tasks.\n */\nexport function createWorkflowClient(config: WorkflowClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n const client = {\n /**\n * List workflow branches for a topic scope.\n */\n async listBranches(query: {\n topicId?: string;\n status?: WorkflowBranchStatus;\n limit?: number;\n } & TopicIdentifierInput) {\n return gateway.request<ListBranchesResponse>({\n path: `/api/platform/v1/workflow/branches${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<WorkflowBranchRecord, \"branches\">(data, \"branches\")\n )\n );\n },\n\n /**\n * Create a workflow branch.\n */\n async createBranch(\n input: {\n name: string;\n topicId?: string;\n description?: string;\n metadata?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n return gateway.request<CreateBranchResponse>({\n path: \"/api/platform/v1/workflow/branches\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as CreateBranchResponse\n )\n );\n },\n\n /**\n * List reusable lenses for a workspace or topic scope.\n */\n async listLenses(query: {\n workspaceId?: string;\n topicId?: string;\n status?: WorkflowLensStatus;\n perspectiveType?: WorkflowLensPerspectiveType;\n } & TopicIdentifierInput) {\n return gateway.request<ListLensesResponse>({\n path: `/api/platform/v1/workflow/lenses${toQueryString(\n normalizeLensQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<WorkflowLensRecord, \"lenses\">(data, \"lenses\")\n )\n );\n },\n\n /**\n * Create a reusable workflow lens.\n */\n async createLens(\n input: {\n name: string;\n workspaceId?: string;\n topicId?: string;\n description?: string;\n perspectiveType: WorkflowLensPerspectiveType;\n promptTemplates?: LensPromptTemplateReference[];\n workflowTemplates?: LensWorkflowTemplate[];\n taskTemplates?: LensTaskTemplate[];\n filterCriteria?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n const payload = normalizeLensQuery(input);\n return gateway.request<CreateLensResponse>({\n path: \"/api/platform/v1/workflow/lenses\",\n method: \"POST\",\n body: payload as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as CreateLensResponse\n )\n );\n },\n\n /**\n * Apply an existing lens to a topic.\n */\n async applyLensToTopic(\n input: {\n lensId: string;\n topicId?: string;\n metadata?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n const payload = normalizeLensQuery(input);\n return gateway.request<LensTopicBindingResponse>({\n path: \"/api/platform/v1/workflow/lens-bindings\",\n method: \"POST\",\n body: payload,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as LensTopicBindingResponse\n )\n );\n },\n\n /**\n * Remove an applied lens from a topic.\n */\n async removeLensFromTopic(\n input: {\n lensId: string;\n topicId?: string;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n const topicId = resolveTopicId(input);\n if (!topicId) {\n throw new LucernApiError({\n code: \"INVALID_REQUEST\",\n message: \"topicId is required\",\n status: 400,\n });\n }\n\n return gateway.request<LensTopicBindingResponse>({\n path: `/api/platform/v1/workflow/lens-bindings${toQueryString({\n lensId: input.lensId,\n topicId,\n })}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as LensTopicBindingResponse\n )\n );\n },\n\n /**\n * List worktrees for a topic scope.\n */\n async listWorktrees(query: {\n topicId?: string;\n branchId?: string;\n status?: WorkflowWorktreeStatus;\n track?: string;\n executionBand?: number;\n limit?: number;\n } & TopicIdentifierInput) {\n const normalized = normalizeTopicQuery(query);\n return gateway.request<ListWorktreesResponse>({\n path: `/api/platform/v1/worktrees${toQueryString({\n ...normalized,\n track: query.track,\n executionBand: query.executionBand,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<WorkflowWorktreeRecord, \"worktrees\">(\n data,\n \"worktrees\"\n )\n )\n );\n },\n\n /**\n * List all worktrees across accessible topics.\n */\n async listAllWorktrees(query: {\n status?: WorkflowWorktreeStatus;\n track?: string;\n executionBand?: number;\n limit?: number;\n } = {}) {\n return gateway.request<ListWorktreesResponse>({\n path: `/api/platform/v1/worktrees${toQueryString({\n status: query.status,\n track: query.track,\n executionBand: query.executionBand,\n limit: query.limit,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record =\n data && typeof data === \"object\" && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {};\n const list = mapAliasedList<WorkflowWorktreeRecord, \"worktrees\">(\n data,\n \"worktrees\"\n );\n return {\n ...list,\n ...(record.tracks &&\n typeof record.tracks === \"object\" &&\n !Array.isArray(record.tracks)\n ? { tracks: record.tracks as Record<string, number> }\n : {}),\n ...(record.bands &&\n typeof record.bands === \"object\" &&\n !Array.isArray(record.bands)\n ? { bands: record.bands as Record<string, number> }\n : {}),\n } as ListWorktreesResponse;\n })\n );\n },\n\n /**\n * Create a workflow worktree.\n */\n async createWorktree(input: AddWorktreeInput, idempotencyKey?: string) {\n return gateway.request<AddWorktreeResponse>({\n path: \"/api/platform/v1/worktrees\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse\n )\n );\n },\n\n /**\n * @deprecated Use createWorktree.\n */\n async addWorktree(input: AddWorktreeInput, idempotencyKey?: string) {\n return client.createWorktree(input, idempotencyKey);\n },\n\n /**\n * Merge a worktree into the main belief line.\n */\n async merge(\n worktreeId: string,\n input: MergeInput,\n idempotencyKey?: string\n ) {\n return gateway.request<MergeWorktreeResponse>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/merge`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Activate a planning worktree.\n */\n async activateWorktree(worktreeId: string, idempotencyKey?: string) {\n return gateway.request<AddWorktreeResponse>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/activate`,\n method: \"POST\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse\n )\n );\n },\n\n /**\n * Update targeted beliefs/questions for a worktree.\n */\n async updateWorktreeTargets(\n input: UpdateWorktreeTargetsInput,\n idempotencyKey?: string\n ) {\n const { worktreeId, ...body } = input;\n return gateway.request<AddWorktreeResponse>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/targets`,\n method: \"POST\",\n body,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse\n )\n );\n },\n\n /**\n * Open a pull request for a worktree.\n */\n async openPullRequest(\n worktreeId: string,\n input: {\n summary: string;\n reviewers?: string[];\n status?:\n | \"pending_review\"\n | \"changes_requested\"\n | \"approved\"\n | \"blocked\";\n },\n idempotencyKey?: string\n ) {\n return gateway.request<OpenPullRequestResponse>({\n path: `/api/platform/v1/workflow/worktrees/${encodeURIComponent(worktreeId)}/pull-request`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Push scored worktree findings into another context.\n */\n async push(\n worktreeId: string,\n input: {\n targetContext: string;\n beliefIds?: string[];\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<PushWorktreeResponse>({\n path: `/api/platform/v1/workflow/worktrees/${encodeURIComponent(worktreeId)}/push`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List accessible topic contexts.\n */\n async listTopics(query: ListTopicsInput = {}) {\n return gateway.request<ListTopicsResponse>({\n path: `/api/platform/v1/workflow/topics${toQueryString({\n includeShared:\n typeof query.includeShared === \"boolean\"\n ? query.includeShared\n ? \"true\"\n : \"false\"\n : undefined,\n limit: query.limit,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const items = asListItems<WorkflowTopicRecord>(data, \"topics\").map(\n (item) =>\n withTopicAlias(\n item as Record<string, unknown>\n ) as WorkflowTopicRecord\n );\n const record =\n data && typeof data === \"object\"\n ? (data as Record<string, unknown>)\n : {};\n return {\n ...record,\n ...createListResult(items, \"topics\"),\n total:\n typeof record.total === \"number\" ? record.total : items.length,\n } as ListTopicsResponse;\n })\n );\n },\n\n /**\n * Switch the active context by topic or project name.\n */\n async switchTopicContext(\n input: SwitchTopicContextInput,\n idempotencyKey?: string\n ) {\n return gateway.request<SwitchTopicContextResponse>({\n path: \"/api/platform/v1/workflow/topics/switch\",\n method: \"POST\",\n body: {\n targetTopicName: input.targetTopicName,\n },\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(\n data as Record<string, unknown>\n ) as SwitchTopicContextResponse\n )\n );\n },\n\n /**\n * Create a workflow task.\n */\n async createTask(input: CreateTaskInput, idempotencyKey?: string) {\n return gateway.request<CreateTaskResponse>({\n path: \"/api/platform/v1/workflow/tasks\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Complete a workflow task.\n */\n async completeTask(\n taskId: string,\n input: CompleteTaskInput,\n idempotencyKey?: string\n ) {\n return gateway.request<CompleteTaskResponse>({\n path: `/api/platform/v1/workflow/tasks/${encodeURIComponent(taskId)}/complete`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a workflow task.\n */\n async updateTask(\n taskId: string,\n input: UpdateTaskInput,\n idempotencyKey?: string\n ) {\n return gateway.request<UpdateTaskResponse>({\n path: `/api/platform/v1/workflow/tasks/${encodeURIComponent(taskId)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createBranch.\n */\n async createPillar(\n input: {\n name: string;\n topicId?: string;\n description?: string;\n metadata?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n return client.createBranch(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use addWorktree.\n */\n async createSprint(\n input: {\n title: string;\n topicId?: string;\n branchId?: string;\n hypothesis?: string;\n beliefIds?: string[];\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n return client.createWorktree(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use merge.\n */\n async completeSprint(\n worktreeId: string,\n input: MergeInput,\n idempotencyKey?: string\n ) {\n return client.merge(worktreeId, input, idempotencyKey);\n },\n\n /**\n * @deprecated Use openPullRequest.\n */\n async requestReview(\n worktreeId: string,\n input: {\n summary: string;\n reviewers?: string[];\n status?:\n | \"pending_review\"\n | \"changes_requested\"\n | \"approved\"\n | \"blocked\";\n },\n idempotencyKey?: string\n ) {\n return client.openPullRequest(worktreeId, input, idempotencyKey);\n },\n\n /**\n * @deprecated Use push.\n */\n async publishFindings(\n worktreeId: string,\n input: {\n targetContext: string;\n beliefIds?: string[];\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return client.push(worktreeId, input, idempotencyKey);\n },\n };\n\n return client;\n}\n","import { type AdminClientConfig, createAdminClient } from \"./adminClient\";\nimport {\n type AnswersClientConfig,\n createAnswersClient,\n} from \"./answersClient\";\nimport {\n type AudiencesClientConfig,\n createAudiencesClient,\n} from \"./audiencesClient\";\nimport { type AuditClientConfig, createAuditClient } from \"./auditClient\";\nimport {\n type BeliefsClientConfig,\n createBeliefsClient,\n} from \"./beliefsClient\";\nimport {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n type PlatformGatewaySuccess,\n randomIdempotencyKey,\n} from \"./coreClient\";\nimport {\n type CustomToolRegistration,\n clearRegisteredCustomTools,\n invokeRegisteredCustomTool,\n listRegisteredCustomTools,\n registerCustomTool,\n unregisterCustomTool,\n} from \"./customTools\";\nimport {\n createDecisionsClient,\n type DecisionsClientConfig,\n type RecordJudgmentInput,\n} from \"./decisionsClient\";\nimport {\n createContextClient,\n type ContextClientConfig,\n} from \"./contextClient\";\nimport { createGraphClient, type GraphClientConfig } from \"./graphClient\";\nimport { createHarnessClient, type HarnessClientConfig } from \"./harnessClient\";\nimport {\n createIdentityClient,\n type IdentityClientConfig,\n} from \"./identityClient\";\nimport { createContradictionsFacade } from \"@/lucern/packages/sdk-typescript/src/facade/contradictions\";\nimport { createEdgesFacade } from \"@/lucern/packages/sdk-typescript/src/facade/edges\";\nimport { createEvidenceFacade } from \"@/lucern/packages/sdk-typescript/src/facade/evidence\";\nimport { createEventsFacade } from \"@/lucern/packages/sdk-typescript/src/facade/events\";\nimport { createBeliefsFacade } from \"@/lucern/packages/sdk-typescript/src/facade/beliefs\";\nimport { createGraphFacade } from \"@/lucern/packages/sdk-typescript/src/facade/graph\";\nimport { createIdentityFacade } from \"@/lucern/packages/sdk-typescript/src/facade/identity\";\nimport { createOntologiesFacade } from \"@/lucern/packages/sdk-typescript/src/facade/ontologies\";\nimport { createQuestionsFacade } from \"@/lucern/packages/sdk-typescript/src/facade/questions\";\nimport { createSearchFacade } from \"@/lucern/packages/sdk-typescript/src/facade/search\";\nimport { createTasksFacade } from \"@/lucern/packages/sdk-typescript/src/facade/tasks\";\nimport { createTopicsFacade } from \"@/lucern/packages/sdk-typescript/src/facade/topics\";\nimport { createWebhooksFacade } from \"@/lucern/packages/sdk-typescript/src/facade/webhooks\";\nimport { createWorktreesFacade } from \"@/lucern/packages/sdk-typescript/src/facade/worktrees\";\nimport {\n createLearningClient,\n type LearningClientConfig,\n} from \"./learningClient\";\nimport {\n createMcpParityClient,\n type McpParityClientConfig,\n} from \"./mcpParityClient\";\nimport {\n createOntologyClient,\n type OntologyClientConfig,\n} from \"./ontologyClient\";\nimport { createPacksClient, type PacksClientConfig } from \"./packsClient\";\nimport { createPolicyClient, type PolicyClientConfig } from \"./policyClient\";\nimport { createReportsClient, type ReportsClientConfig } from \"./reportsClient\";\nimport { createSchemaClient, type SchemaClientConfig } from \"./schemaClient\";\nimport { asListItems, resolveText, resolveTopicId } from \"./sdkSurface\";\nimport { createTopicsClient, type TopicsClientConfig } from \"./topicsClient\";\nimport type {\n JsonObject,\n PlatformGraphEdge,\n PlatformGraphNode,\n} from \"./types\";\nimport { LUCERN_SDK_VERSION } from \"./version\";\nimport {\n type AddWorktreeInput,\n type CompleteTaskInput,\n type CreateTaskInput,\n createWorkflowClient,\n type MergeInput,\n type UpdateTaskInput,\n type WorkflowClientConfig,\n} from \"./workflowClient\";\n\ntype ClientConfig =\n | BeliefsClientConfig\n | GraphClientConfig\n | DecisionsClientConfig\n | AnswersClientConfig\n | ContextClientConfig\n | WorkflowClientConfig\n | AuditClientConfig\n | AdminClientConfig\n | IdentityClientConfig\n | PolicyClientConfig\n | PacksClientConfig\n | ReportsClientConfig\n | LearningClientConfig\n | McpParityClientConfig\n | OntologyClientConfig\n | HarnessClientConfig\n | SchemaClientConfig\n | AudiencesClientConfig\n | TopicsClientConfig;\n\ntype NodeLike = PlatformGraphNode;\ntype EdgeLike = PlatformGraphEdge;\ntype CustomToolInput = JsonObject;\ntype CustomToolInvoker = (input?: CustomToolInput) => Promise<unknown>;\ntype CustomToolNamespace = Record<string, CustomToolInvoker>;\ntype GatewayDataEnvelope<T extends Record<string, unknown>> =\n PlatformGatewaySuccess<T> & T;\n\ntype BeliefsCompatCreateInput = {\n topicId?: string;\n text?: string;\n canonicalText?: string;\n formulation?: string;\n rationale?: string;\n worktreeId?: string;\n pillar?: string;\n sourceBeliefIds?: string[];\n sourceType?: string;\n beliefType?: string;\n reversibility?: string;\n predictionMeta?: JsonObject;\n metadata?: JsonObject;\n};\n\ntype BeliefsCompatForkInput = {\n text?: string;\n newFormulation?: string;\n formulation?: string;\n forkReason?:\n | \"refinement\"\n | \"contradiction_response\"\n | \"scope_change\"\n | \"confidence_collapse\"\n | \"manual\";\n rationale?: string;\n};\n\ntype BeliefsCompatUpdateConfidenceInput = {\n confidence: number;\n trigger?:\n | \"evidence_added\"\n | \"evidence_removed\"\n | \"contradiction_detected\"\n | \"contradiction_resolved\"\n | \"manual\"\n | \"decay\"\n | \"agent_assessment\"\n | \"merge_outcome\"\n | \"sprint_outcome\"\n | \"sprint_completed\"\n | \"worktree_outcome\"\n | \"worktree_completed\";\n rationale: string;\n certainty?: number;\n maxInlinePropagationTargets?: number;\n};\n\nfunction asNodeArray(data: unknown): NodeLike[] {\n const rows = asListItems<NodeLike>(data, \"nodes\");\n if (rows.length > 0) {\n return rows.filter(\n (value): value is NodeLike => Boolean(value) && typeof value === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as NodeLike];\n }\n return [];\n}\n\nfunction asEdgeArray(data: unknown): EdgeLike[] {\n const rows = asListItems<EdgeLike>(data, \"edges\");\n if (rows.length > 0) {\n return rows.filter(\n (value): value is EdgeLike => Boolean(value) && typeof value === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as EdgeLike];\n }\n return [];\n}\n\nfunction normalizeBeliefStatus(status: string | undefined): string {\n if (!status) {\n return \"unscored\";\n }\n if (status === \"unscored\" || status === \"scored\" || status === \"archived\") {\n return status;\n }\n if (status === \"active\" || status === \"in_evaluation\") {\n return \"unscored\";\n }\n if (status === \"challenged\" || status === \"validated\") {\n return \"scored\";\n }\n return \"unscored\";\n}\n\nfunction confidenceFromNode(node: NodeLike): number {\n if (typeof node.confidence === \"number\") {\n return node.confidence;\n }\n if (typeof node.metadata?.confidence === \"number\") {\n return node.metadata.confidence;\n }\n return 0;\n}\n\nfunction toGatewayConfig(config: LucernClientConfig): GatewayClientConfig {\n return {\n baseUrl: config.baseUrl,\n fetchImpl: config.fetchImpl,\n maxRetries: config.maxRetries,\n timeoutMs: config.timeoutMs,\n timeoutMsByMethod: config.timeoutMsByMethod,\n requestIdFactory: config.requestIdFactory,\n onRequest: config.onRequest,\n onResponse: config.onResponse,\n getAuthHeaders: async () => {\n const base = (\n config.getAuthHeaders ? await config.getAuthHeaders() : {}\n ) as Record<string, string>;\n if (config.apiKey && !base[\"x-lucern-key\"] && !base.Authorization) {\n base[\"x-lucern-key\"] = config.apiKey;\n }\n if (config.userToken && !base[\"x-lucern-user-token\"]) {\n base[\"x-lucern-user-token\"] = config.userToken;\n }\n if (config.environment && !base[\"x-lucern-environment\"]) {\n base[\"x-lucern-environment\"] = config.environment;\n }\n return base;\n },\n };\n}\n\nfunction requireTopicId(args: { topicId?: string }): string {\n const topicId = resolveTopicId(args);\n if (!topicId) {\n throw new Error(\"topicId is required\");\n }\n return topicId;\n}\n\nfunction requireText(args: {\n text?: string;\n canonicalText?: string;\n formulation?: string;\n newFormulation?: string;\n}): string {\n const text = resolveText(args);\n if (!text) {\n throw new Error(\"text is required\");\n }\n return text;\n}\n\nfunction exposeGatewayData<T extends Record<string, unknown>>(\n response: PlatformGatewaySuccess<T>\n): GatewayDataEnvelope<T> {\n return Object.assign({}, response, response.data);\n}\n\nexport type LucernClientConfig = ClientConfig & {\n apiKey?: string;\n /**\n * Optional Clerk JWT for per-user identity and RBAC.\n * When present, the SDK operates in user-scoped mode with\n * pack-aware tool filtering. When absent, operates in agent mode.\n */\n userToken?: string;\n /**\n * Optional pack key for auto-install convenience.\n * When set, the SDK will call `packs.install()` on first use\n * to ensure the pack is available in the workspace.\n */\n packKey?: string;\n environment?: \"sandbox\" | \"production\";\n};\n\n/**\n * Create the high-level Lucern SDK facade.\n */\nexport function createLucernClient(config: LucernClientConfig = {}) {\n const gatewayConfig = toGatewayConfig(config);\n const beliefsClient = createBeliefsClient(gatewayConfig);\n const beliefsFacade = createBeliefsFacade(gatewayConfig);\n const graphClient = createGraphClient(gatewayConfig);\n const graphFacade = createGraphFacade(gatewayConfig);\n const decisionsClient = createDecisionsClient(gatewayConfig);\n const contextClient = createContextClient(gatewayConfig);\n const workflowClient = createWorkflowClient(gatewayConfig);\n const auditClient = createAuditClient(gatewayConfig);\n const adminClient = createAdminClient(gatewayConfig);\n const answersClient = createAnswersClient(gatewayConfig);\n const contradictionsFacade = createContradictionsFacade(gatewayConfig);\n const edgesFacade = createEdgesFacade(gatewayConfig);\n const evidenceFacade = createEvidenceFacade(gatewayConfig);\n const eventsFacade = createEventsFacade(gatewayConfig);\n const identityClient = createIdentityClient(gatewayConfig);\n const identityFacade = createIdentityFacade(gatewayConfig);\n const ontologiesFacade = createOntologiesFacade(gatewayConfig);\n const questionsFacade = createQuestionsFacade(gatewayConfig);\n const searchFacade = createSearchFacade(gatewayConfig);\n const tasksFacade = createTasksFacade(gatewayConfig);\n const topicsFacade = createTopicsFacade(gatewayConfig);\n const webhooksFacade = createWebhooksFacade(gatewayConfig);\n const worktreesFacade = createWorktreesFacade(gatewayConfig);\n const policyClient = createPolicyClient(gatewayConfig);\n const ontologyClient = createOntologyClient(gatewayConfig);\n const mcpParityClient = createMcpParityClient(gatewayConfig);\n const packsClient = createPacksClient(gatewayConfig);\n const reportsClient = createReportsClient(gatewayConfig);\n const learningClient = createLearningClient(gatewayConfig);\n const harnessClient = createHarnessClient(gatewayConfig);\n const schemaClient = createSchemaClient(gatewayConfig);\n const audiencesClient = createAudiencesClient(gatewayConfig);\n const topicsClient = createTopicsClient(gatewayConfig);\n const gateway = createGatewayRequestClient(gatewayConfig);\n const customNamespaceCache = new Map<string, CustomToolNamespace>();\n\n // Pack auto-install: tracks whether the configured packKey has been installed.\n // Install is lazy — triggered on first API call or explicit ensurePack().\n let _packInstalled = !config.packKey; // true if no packKey configured\n let _packInstallPromise: Promise<void> | null = null;\n\n async function ensurePack(): Promise<void> {\n if (_packInstalled) {\n return;\n }\n if (_packInstallPromise) {\n return _packInstallPromise;\n }\n\n _packInstallPromise = (async () => {\n try {\n await packsClient.install({\n packKey: config.packKey!,\n autoEnable: true,\n });\n _packInstalled = true;\n } catch (err) {\n // If the pack is already installed, treat as success\n if (err instanceof LucernApiError && err.code === \"ALREADY_EXISTS\") {\n _packInstalled = true;\n return;\n }\n // Re-throw — caller decides whether to proceed without the pack\n throw err;\n } finally {\n _packInstallPromise = null;\n }\n })();\n\n return _packInstallPromise;\n }\n\n const invokeCustomTool = async (\n fullName: string,\n input: CustomToolInput = {}\n ): Promise<unknown> => {\n const payload =\n input && typeof input === \"object\" && !Array.isArray(input) ? input : {};\n return invokeRegisteredCustomTool(fullName, payload, { source: \"sdk\" });\n };\n\n const getCustomNamespace = (namespace: string): CustomToolNamespace => {\n const normalized = namespace.trim() || \"custom\";\n const cached = customNamespaceCache.get(normalized);\n if (cached) {\n return cached;\n }\n\n const proxy = new Proxy(\n {},\n {\n get(_target, property): unknown {\n if (typeof property !== \"string\" || property === \"then\") {\n return;\n }\n return async (input: CustomToolInput = {}) =>\n invokeCustomTool(`${normalized}.${property}`, input);\n },\n }\n ) as CustomToolNamespace;\n\n customNamespaceCache.set(normalized, proxy);\n return proxy;\n };\n\n const extensionNamespaces = new Proxy(\n {},\n {\n get(_target, namespace): unknown {\n if (typeof namespace !== \"string\" || namespace === \"then\") {\n return;\n }\n return getCustomNamespace(namespace);\n },\n }\n ) as Record<string, CustomToolNamespace>;\n\n async function createEvidenceCompat(args: {\n text?: string;\n canonicalText?: string;\n topicId?: string;\n source?: string;\n sourceUrl?: string;\n targetId?: string;\n weight?: number;\n metadata?: JsonObject;\n title?: string;\n content?: string;\n contentType?: string;\n kind?: string;\n supports?: {\n nodeId: string;\n weight: number;\n reasoning?: string;\n };\n }) {\n const topicId = requireTopicId(args);\n const text = resolveText(args);\n if (!text) {\n throw new Error(\"text is required\");\n }\n const metadata = {\n ...(args.metadata ?? {}),\n ...(args.supports?.reasoning\n ? { rationale: args.supports.reasoning }\n : {}),\n } as JsonObject;\n\n return evidenceFacade.create({\n topicId,\n text,\n source: args.source ?? args.sourceUrl,\n targetId: args.targetId ?? args.supports?.nodeId,\n weight: args.weight ?? args.supports?.weight,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n title: args.title,\n content: args.content,\n contentType: args.contentType,\n kind: args.kind,\n });\n }\n\n async function addEvidence(args: {\n text?: string;\n canonicalText?: string;\n topicId?: string;\n source?: string;\n sourceUrl?: string;\n targetId?: string;\n weight?: number;\n metadata?: JsonObject;\n title?: string;\n content?: string;\n contentType?: string;\n kind?: string;\n supports?: {\n nodeId: string;\n weight: number;\n reasoning?: string;\n };\n }) {\n const created = await createEvidenceCompat({\n ...args,\n targetId: args.supports ? undefined : args.targetId,\n weight: args.supports ? undefined : args.weight,\n });\n\n if (!args.supports) {\n return created.data;\n }\n\n const linked = await evidenceFacade.link({\n evidenceId: created.data.id,\n targetId: args.supports.nodeId,\n weight: args.supports.weight,\n rationale: args.supports.reasoning,\n });\n\n return {\n ...created.data,\n edgeId: linked.data.edgeId,\n };\n }\n\n async function listBeliefs(args: {\n topicId?: string;\n worktreeId?: string;\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n }) {\n const response = await beliefsFacade.list({\n topicId: requireTopicId(args),\n status: args.status,\n worktreeId: args.worktreeId,\n minConfidence: args.minConfidence,\n limit: args.limit,\n cursor: args.cursor,\n });\n return Array.isArray(response.data.beliefs) ? response.data.beliefs : [];\n }\n\n async function searchBeliefs(args: {\n query: string;\n topicId?: string;\n status?: string;\n minConfidence?: number;\n limit?: number;\n }) {\n const topicId = resolveTopicId(args);\n if (!topicId) {\n return { results: [] };\n }\n const response = await searchFacade.query({\n q: args.query,\n topicId,\n types: [\"belief\"],\n status: args.status,\n minConfidence: args.minConfidence,\n limit: args.limit,\n });\n const data = exposeGatewayData(response);\n const groupedBeliefs = Array.isArray(data.beliefs)\n ? (data.beliefs as Record<string, unknown>[])\n : [];\n const mergedResults = Array.isArray(data.results)\n ? (data.results as Record<string, unknown>[])\n : [];\n const results =\n groupedBeliefs.length > 0\n ? groupedBeliefs\n : mergedResults.filter((result) => result.type === \"belief\");\n return { results };\n }\n\n async function searchResources(\n query: string,\n options: {\n topicId?: string;\n types?: string[];\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n const topicId = resolveTopicId(options);\n if (!topicId) {\n throw new Error(\"topicId is required\");\n }\n\n return searchFacade\n .query({\n q: query,\n topicId,\n types: options.types as Array<\"belief\" | \"evidence\" | \"question\"> | undefined,\n status: options.status,\n minConfidence: options.minConfidence,\n limit: options.limit,\n cursor: options.cursor,\n })\n .then(exposeGatewayData);\n }\n\n async function findContradictions(args: {\n topicId?: string;\n nodeId?: string;\n status?: string;\n }) {\n const topicId = resolveTopicId(args);\n const response = topicId\n ? await graphClient.listNodes({\n topicId,\n nodeType: \"contradiction\",\n limit: 500,\n })\n : args.nodeId\n ? await graphClient.queryNodes({ nodeId: args.nodeId })\n : { data: [] };\n const contradictions = asNodeArray(response.data)\n .filter((node) => {\n const status =\n typeof node.metadata?.status === \"string\"\n ? node.metadata.status\n : typeof node.status === \"string\"\n ? node.status\n : \"unresolved\";\n if (args.status && status !== args.status) {\n return false;\n }\n return true;\n })\n .map((node) => ({\n beliefA:\n typeof node.metadata?.beliefA === \"string\"\n ? node.metadata.beliefA\n : \"\",\n beliefB:\n typeof node.metadata?.beliefB === \"string\"\n ? node.metadata.beliefB\n : \"\",\n description: node.canonicalText ?? \"\",\n severity:\n typeof node.metadata?.severity === \"string\"\n ? node.metadata.severity\n : \"medium\",\n status:\n typeof node.metadata?.status === \"string\"\n ? node.metadata.status\n : \"unresolved\",\n defeatType:\n typeof node.metadata?.defeatType === \"string\"\n ? node.metadata.defeatType\n : \"rebuts\",\n }));\n return { contradictions };\n }\n\n async function queryLineage(nodeId: string, depth = 5) {\n const response = await beliefsFacade.lineage(nodeId);\n const lineage = Array.isArray(response.data.lineage)\n ? response.data.lineage\n : [];\n const chain =\n lineage.length > 0\n ? lineage\n .slice(0, depth + 1)\n .map((entry, index) => ({\n nodeId: entry.nodeId ?? entry.beliefId ?? \"\",\n relation: index === 0 ? \"self\" : \"ancestor\",\n }))\n : [{ nodeId, relation: \"self\" }];\n return {\n chain,\n forkTree: {\n nodeId,\n parentCount: Math.max(0, lineage.length - 1),\n childCount: 0,\n children: [],\n },\n depth,\n beliefId: response.data.beliefId,\n lineage,\n };\n }\n\n async function getConfidenceHistory(nodeId: string) {\n return beliefsFacade.confidenceHistory(nodeId).then(exposeGatewayData);\n }\n\n async function getAuditTrail(nodeId: string, limit = 50) {\n const events = await auditClient.listEvents({ limit });\n const entries = asListItems<JsonObject>(events.data, \"events\")\n .filter((event) => JSON.stringify(event).includes(nodeId))\n .slice(0, limit)\n .map((event) => {\n const row = event as JsonObject;\n return {\n action: typeof row.action === \"string\" ? row.action : \"unknown\",\n actor: typeof row.actor === \"string\" ? row.actor : \"unknown\",\n timestamp:\n typeof row.timestamp === \"number\" ? row.timestamp : Date.now(),\n rationale:\n typeof row.rationale === \"string\"\n ? row.rationale\n : \"No rationale recorded.\",\n before: row.before ?? null,\n after: row.after ?? null,\n };\n });\n return { entries };\n }\n\n async function bisectConfidence(\n nodeId: string,\n args: { expectedDirection: \"overconfident\" | \"underconfident\" }\n ) {\n return beliefsFacade.bisect(nodeId, args).then(exposeGatewayData);\n }\n\n async function discoverTopics(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/context/discover\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function discoverEntityConnections(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/context/entity-connections\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function triggerBeliefReview(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/context/belief-review\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function createContractCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/contracts\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function evaluateContractCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/contracts/evaluate\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function getContractStatusCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/contracts/status\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function createOntologyCompat(input: JsonObject = {}) {\n const response = await ontologyClient.createDefinition(\n input as Parameters<typeof ontologyClient.createDefinition>[0]\n );\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function updateOntologyCompat(input: JsonObject = {}) {\n const id = typeof input.id === \"string\" ? input.id : \"\";\n const { id: _id, ...rest } = input;\n const response = await ontologyClient.updateDefinition(\n id,\n rest as Parameters<typeof ontologyClient.updateDefinition>[1]\n );\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function archiveOntologyCompat(input: JsonObject = {}) {\n const id = typeof input.id === \"string\" ? input.id : \"\";\n const response = await ontologyClient.archiveDefinition(id);\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function createOntologyVersionCompat(input: JsonObject = {}) {\n const ontologyId =\n typeof input.ontologyId === \"string\" ? input.ontologyId : \"\";\n const { ontologyId: _ontologyId, ...rest } = input;\n const response = await ontologyClient.createVersion(\n ontologyId,\n rest as Parameters<typeof ontologyClient.createVersion>[1]\n );\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function publishOntologyVersionCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/ontologies/versions/publish\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function deprecateOntologyVersionCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/ontologies/versions/deprecate\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function resolveEffectiveOntologyCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/ontologies/effective\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function traceEntityImpactCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/trace-entity-impact\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n return {\n config,\n version: LUCERN_SDK_VERSION,\n search(\n query: string,\n options?: {\n topicId?: string;\n types?: string[];\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n }\n ) {\n return searchResources(query, options);\n },\n events: {\n list(query: Parameters<typeof eventsFacade.list>[0] = {}) {\n return eventsFacade.list(query).then(exposeGatewayData);\n },\n replay(\n input: Parameters<typeof eventsFacade.replay>[0]\n ) {\n return eventsFacade.replay(input).then(exposeGatewayData);\n },\n },\n beliefs: {\n create(input: BeliefsCompatCreateInput) {\n return beliefsFacade\n .create({\n topicId: requireTopicId(input),\n text: requireText(input),\n rationale: input.rationale,\n worktreeId: input.worktreeId,\n pillar: input.pillar,\n sourceBeliefIds: input.sourceBeliefIds,\n sourceType: input.sourceType,\n beliefType: input.beliefType,\n reversibility: input.reversibility,\n predictionMeta: input.predictionMeta,\n metadata: input.metadata,\n })\n .then(exposeGatewayData);\n },\n get(nodeId: string) {\n return beliefsFacade.get(nodeId).then(exposeGatewayData);\n },\n refine(\n nodeId: string,\n textOrInput: string | { text: string; rationale?: string },\n rationale?: string\n ) {\n const payload =\n typeof textOrInput === \"string\"\n ? { text: textOrInput, rationale }\n : {\n text: textOrInput.text,\n rationale: textOrInput.rationale,\n };\n return beliefsFacade.refine(nodeId, payload).then(exposeGatewayData);\n },\n updateConfidence(\n nodeId: string,\n input: BeliefsCompatUpdateConfidenceInput\n ) {\n return beliefsFacade.updateConfidence(nodeId, input).then(exposeGatewayData);\n },\n modulateConfidence(\n nodeId: string,\n input: BeliefsCompatUpdateConfidenceInput\n ) {\n return beliefsFacade.updateConfidence(nodeId, input).then(exposeGatewayData);\n },\n fork(nodeId: string, input: BeliefsCompatForkInput) {\n return beliefsFacade\n .fork(nodeId, {\n text: requireText(input),\n forkReason: input.forkReason,\n rationale: input.rationale,\n })\n .then(exposeGatewayData);\n },\n archive(\n nodeId: string,\n input?: string | { reason?: string; rationale?: string }\n ) {\n const payload =\n typeof input === \"string\"\n ? { reason: input }\n : input\n ? { reason: input.reason ?? input.rationale }\n : undefined;\n return beliefsFacade.archive(nodeId, payload).then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n worktreeId?: string;\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n }) {\n return beliefsFacade\n .list({\n topicId: requireTopicId(args),\n worktreeId: args.worktreeId,\n status: args.status,\n minConfidence: args.minConfidence,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n search: searchBeliefs,\n lineage(nodeId: string) {\n return beliefsFacade.lineage(nodeId).then(exposeGatewayData);\n },\n confidenceHistory(nodeId: string) {\n return beliefsFacade.confidenceHistory(nodeId).then(exposeGatewayData);\n },\n createContract(\n nodeId: string,\n input: Parameters<typeof beliefsFacade.createContract>[1]\n ) {\n return beliefsFacade\n .createContract(nodeId, input)\n .then(exposeGatewayData);\n },\n bisect(\n nodeId: string,\n input: Parameters<typeof beliefsFacade.bisect>[1]\n ) {\n return beliefsFacade.bisect(nodeId, input).then(exposeGatewayData);\n },\n },\n webhooks: {\n create(input: Parameters<typeof webhooksFacade.create>[0]) {\n return webhooksFacade.create(input).then(exposeGatewayData);\n },\n list(query?: Parameters<typeof webhooksFacade.list>[0]) {\n return webhooksFacade.list(query).then(exposeGatewayData);\n },\n get(id: string) {\n return webhooksFacade.get(id).then(exposeGatewayData);\n },\n update(\n id: string,\n input: Parameters<typeof webhooksFacade.update>[1]\n ) {\n return webhooksFacade.update(id, input).then(exposeGatewayData);\n },\n delete(id: string) {\n return webhooksFacade.delete(id).then(exposeGatewayData);\n },\n test(id: string, input?: Parameters<typeof webhooksFacade.test>[1]) {\n return webhooksFacade.test(id, input).then(exposeGatewayData);\n },\n deliveries(\n id: string,\n query?: Parameters<typeof webhooksFacade.deliveries>[1]\n ) {\n return webhooksFacade.deliveries(id, query).then(exposeGatewayData);\n },\n health(id: string) {\n return webhooksFacade.health(id).then(exposeGatewayData);\n },\n },\n edges: {\n create(args: {\n sourceId: string;\n targetId: string;\n edgeType: string;\n topicId?: string;\n confidence?: number;\n weight?: number;\n context?: string;\n reasoning?: string;\n }) {\n return edgesFacade\n .create({\n sourceId: args.sourceId,\n targetId: args.targetId,\n edgeType: args.edgeType,\n topicId: args.topicId,\n confidence: args.confidence,\n weight: args.weight,\n context: args.context ?? args.reasoning,\n })\n .then(exposeGatewayData);\n },\n list(args: {\n sourceId: string;\n edgeType?: string;\n limit?: number;\n cursor?: string;\n }) {\n return edgesFacade\n .list({\n sourceId: args.sourceId,\n edgeType: args.edgeType,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n traverse(args: {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n }) {\n return edgesFacade\n .traverse({\n startNode: args.startNode,\n direction: args.direction,\n maxDepth: args.maxDepth,\n topicId: args.topicId,\n })\n .then(exposeGatewayData);\n },\n },\n evidence: {\n create(args: {\n text?: string;\n canonicalText?: string;\n topicId?: string;\n source?: string;\n sourceUrl?: string;\n targetId?: string;\n weight?: number;\n metadata?: JsonObject;\n title?: string;\n content?: string;\n contentType?: string;\n kind?: string;\n supports?: {\n nodeId: string;\n weight: number;\n reasoning?: string;\n };\n }) {\n return createEvidenceCompat(args).then(exposeGatewayData);\n },\n add: addEvidence,\n get(evidenceId: string) {\n return evidenceFacade.get(evidenceId).then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n targetId?: string;\n limit?: number;\n cursor?: string;\n }) {\n return evidenceFacade\n .list({\n topicId: args.topicId,\n targetId: args.targetId,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n search(args: {\n q?: string;\n query?: string;\n topicId?: string;\n targetId?: string;\n methodology?: string;\n limit?: number;\n cursor?: string;\n }) {\n const q = args.q ?? args.query;\n if (!q) {\n throw new Error(\"q is required\");\n }\n return evidenceFacade\n .search({\n q,\n topicId: args.topicId,\n targetId: args.targetId,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n link(args: {\n evidenceId: string;\n targetId?: string;\n beliefId?: string;\n questionId?: string;\n targetType?: \"belief\" | \"question\" | string;\n weight?: number;\n rationale?: string;\n }) {\n const targetId = args.targetId ?? args.questionId ?? args.beliefId;\n if (!targetId) {\n throw new Error(\"targetId is required\");\n }\n const targetType =\n typeof args.targetType === \"string\"\n ? args.targetType\n : args.questionId\n ? \"question\"\n : args.beliefId\n ? \"belief\"\n : undefined;\n return evidenceFacade\n .link({\n evidenceId: args.evidenceId,\n targetId,\n targetType: targetType as \"belief\" | \"question\" | undefined,\n weight: args.weight,\n rationale: args.rationale,\n })\n .then(exposeGatewayData);\n },\n linkToBelief(args: {\n evidenceId: string;\n beliefId: string;\n weight: number;\n rationale?: string;\n }) {\n return evidenceFacade\n .link({\n evidenceId: args.evidenceId,\n targetId: args.beliefId,\n weight: args.weight,\n rationale: args.rationale,\n })\n .then((response) => ({\n ...response.data,\n beliefId: args.beliefId,\n }));\n },\n },\n questions: {\n create(args: {\n text: string;\n topicId?: string;\n priority?: string;\n linkedBeliefId?: string;\n metadata?: JsonObject;\n }) {\n return questionsFacade\n .create({\n topicId: requireTopicId(args),\n text: args.text,\n priority: args.priority,\n linkedBeliefId: args.linkedBeliefId,\n metadata: args.metadata,\n })\n .then(exposeGatewayData);\n },\n get(questionId: string) {\n return questionsFacade.get(questionId).then(exposeGatewayData);\n },\n refine(\n questionId: string,\n text: string,\n refinementReason?: string\n ) {\n return questionsFacade\n .refine(questionId, {\n text,\n rationale: refinementReason,\n })\n .then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n status?: string;\n priority?: string;\n worktreeId?: string;\n limit?: number;\n cursor?: string;\n }) {\n return questionsFacade\n .list({\n topicId: requireTopicId(args),\n status: args.status,\n priority: args.priority,\n worktreeId: args.worktreeId,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n updateStatus(questionId: string, status: string, rationale?: string) {\n return questionsFacade\n .updateStatus(questionId, {\n status,\n rationale,\n })\n .then(exposeGatewayData);\n },\n answer(\n questionId: string,\n input: {\n text: string;\n confidence?: string;\n evidenceIds?: string[];\n rationale?: string;\n }\n ) {\n return questionsFacade\n .answer(questionId, input)\n .then(exposeGatewayData);\n },\n archive(questionId: string, reason?: string) {\n return questionsFacade\n .archive(questionId, { reason })\n .then(exposeGatewayData);\n },\n linkEvidence(args: {\n evidenceId: string;\n questionId: string;\n relevance?: number;\n weight?: number;\n rationale?: string;\n }) {\n const weight = args.weight ?? args.relevance;\n return evidenceFacade\n .link({\n evidenceId: args.evidenceId,\n targetId: args.questionId,\n targetType: \"question\",\n weight,\n rationale: args.rationale,\n })\n .then((response) => ({\n ...response.data,\n questionId: args.questionId,\n relevance: weight,\n }));\n },\n getHighPriority(args: {\n topicId?: string;\n limit?: number;\n includeAnswered?: boolean;\n }) {\n return this.list({\n topicId: requireTopicId(args),\n status: args.includeAnswered ? undefined : \"open\",\n }).then((data) => {\n const questions = Array.isArray(data.questions) ? data.questions : [];\n const rank = (priority: string | undefined): number => {\n switch (priority) {\n case \"urgent\":\n return 4;\n case \"high\":\n return 3;\n case \"medium\":\n return 2;\n case \"low\":\n return 1;\n default:\n return 0;\n }\n };\n\n return {\n questions: [...questions]\n .sort((a, b) => rank(b.priority) - rank(a.priority))\n .slice(0, args.limit ?? 20),\n };\n });\n },\n async findMissing(args: {\n topicId?: string;\n minConfidence?: number;\n }) {\n return graphFacade\n .gaps({\n topicId: requireTopicId(args),\n minConfidence: args.minConfidence,\n })\n .then(exposeGatewayData);\n },\n },\n graph: {\n createEdge(input: Parameters<typeof graphClient.createEdge>[0]) {\n return graphClient.createEdge(input);\n },\n neighborhood(args: Parameters<typeof graphClient.neighborhood>[0]) {\n return graphFacade\n .neighborhood({\n globalId: args.globalId,\n globalIds:\n typeof args.globalIds === \"string\"\n ? args.globalIds\n .split(\",\")\n .map((value) => value.trim())\n .filter((value) => value.length > 0)\n : undefined,\n maxDepth: args.maxDepth,\n })\n .then(exposeGatewayData);\n },\n queryLineage,\n getConfidenceHistory,\n getAuditTrail,\n traverse(args: {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n }) {\n return graphFacade\n .traverse({\n startNode: args.startNode,\n direction: args.direction,\n maxDepth: args.maxDepth ?? 3,\n topicId: args.topicId,\n })\n .then(exposeGatewayData);\n },\n analyze(args: {\n topicId?: string;\n limit?: number;\n metric?: string;\n }) {\n return graphFacade\n .analyze({\n topicId: requireTopicId(args),\n limit: args.limit,\n metric: args.metric as never,\n })\n .then(exposeGatewayData);\n },\n bias(args: {\n topicId?: string;\n threshold?: number;\n limit?: number;\n }) {\n return graphFacade\n .bias({\n topicId: requireTopicId(args),\n threshold: args.threshold,\n limit: args.limit,\n })\n .then(exposeGatewayData);\n },\n gaps(args: {\n topicId?: string;\n minConfidence?: number;\n }) {\n return graphFacade\n .gaps({\n topicId: requireTopicId(args),\n minConfidence: args.minConfidence,\n })\n .then(exposeGatewayData);\n },\n falsify(args: {\n topicId?: string;\n beliefId?: string;\n beliefIds?: string[];\n minConfidence?: number;\n }) {\n return graphFacade\n .falsify({\n topicId: args.topicId,\n beliefId: args.beliefId,\n beliefIds: args.beliefIds,\n minConfidence: args.minConfidence,\n })\n .then(exposeGatewayData);\n },\n traceEntityImpact(args: { nodeId: string; topicId?: string }) {\n return traceEntityImpactCompat({\n nodeId: args.nodeId,\n topicId: args.topicId,\n });\n },\n searchBeliefs,\n findContradictions,\n bisectConfidence,\n listBeliefs,\n detectConfirmationBias(\n topicId: string,\n threshold?: number\n ) {\n return this.bias({\n topicId,\n threshold,\n limit: 200,\n }).then((response) => ({\n ...response,\n topicId,\n threshold: threshold ?? 0.7,\n }));\n },\n getStructureAnalysis(topicId: string) {\n return this.analyze({\n topicId,\n limit: 200,\n }).then((response) => ({\n ...response,\n topicId,\n }));\n },\n getFalsificationQuestions(\n topicId: string,\n beliefIds?: string[]\n ) {\n return graphFacade\n .falsify({\n topicId,\n beliefIds,\n })\n .then(exposeGatewayData)\n .then((response) => ({\n topicId,\n questions: response.questions,\n }));\n },\n },\n judgments: {\n create(input: RecordJudgmentInput) {\n return decisionsClient.createJudgment(input);\n },\n record(input: RecordJudgmentInput) {\n return decisionsClient.recordJudgment(input);\n },\n list(query: Parameters<typeof decisionsClient.listJudgments>[0]) {\n return decisionsClient.listJudgments(query);\n },\n get(judgmentId: string) {\n return decisionsClient.getJudgment(judgmentId);\n },\n recordOutcome(\n judgmentId: string,\n input: Parameters<typeof decisionsClient.recordJudgmentOutcome>[1]\n ) {\n return decisionsClient.recordJudgmentOutcome(judgmentId, input);\n },\n updateOutcome(\n judgmentId: string,\n input: Parameters<typeof decisionsClient.updateJudgmentOutcome>[1]\n ) {\n return decisionsClient.updateJudgmentOutcome(judgmentId, input);\n },\n readiness(topicId: string) {\n return decisionsClient.getJudgmentReadiness({\n topicId,\n });\n },\n calibration(topicId: string) {\n return decisionsClient.getJudgmentCalibration({\n topicId,\n });\n },\n pendingOutcomeReview(topicId: string) {\n return decisionsClient.listPendingJudgmentOutcomeReview({\n topicId,\n });\n },\n transitionAuditIntegrity(args: {\n topicId?: string;\n judgmentId?: string;\n includePassing?: boolean;\n }) {\n return decisionsClient.getJudgmentTransitionAuditIntegrity({\n ...args,\n topicId: requireTopicId(args),\n });\n },\n },\n worktrees: {\n createBranch(input: Parameters<typeof workflowClient.createBranch>[0]) {\n return workflowClient.createBranch(input);\n },\n createLens(input: Parameters<typeof workflowClient.createLens>[0]) {\n return workflowClient.createLens(input);\n },\n listLenses(query: Parameters<typeof workflowClient.listLenses>[0]) {\n return workflowClient.listLenses(query);\n },\n applyLensToTopic(\n input: Parameters<typeof workflowClient.applyLensToTopic>[0]\n ) {\n return workflowClient.applyLensToTopic(input);\n },\n removeLensFromTopic(\n input: Parameters<typeof workflowClient.removeLensFromTopic>[0]\n ) {\n return workflowClient.removeLensFromTopic(input);\n },\n create(input: AddWorktreeInput) {\n return worktreesFacade.create({\n title: input.title,\n topicId: requireTopicId(input),\n objective: input.objective,\n hypothesis: input.hypothesis,\n beliefIds: input.beliefIds,\n autoShape: input.autoShape,\n domainPackId: input.domainPackId,\n executionOrder: input.executionOrder,\n dependsOn: input.dependsOn,\n blocks: input.blocks,\n gate: input.gate,\n proofArtifacts: input.proofArtifacts,\n staffingHint:\n typeof input.staffingHint === \"string\"\n ? input.staffingHint\n : undefined,\n lastReconciledAt: input.lastReconciledAt,\n autoFixPolicy: input.autoFixPolicy,\n });\n },\n add(input: AddWorktreeInput) {\n return worktreesFacade.create({\n title: input.title,\n topicId: requireTopicId(input),\n objective: input.objective,\n hypothesis: input.hypothesis,\n beliefIds: input.beliefIds,\n autoShape: input.autoShape,\n domainPackId: input.domainPackId,\n executionOrder: input.executionOrder,\n dependsOn: input.dependsOn,\n blocks: input.blocks,\n gate: input.gate,\n proofArtifacts: input.proofArtifacts,\n staffingHint:\n typeof input.staffingHint === \"string\"\n ? input.staffingHint\n : undefined,\n lastReconciledAt: input.lastReconciledAt,\n autoFixPolicy: input.autoFixPolicy,\n });\n },\n list(query: Parameters<typeof workflowClient.listWorktrees>[0]) {\n return worktreesFacade.list({\n topicId: requireTopicId(query),\n status: query.status,\n limit: query.limit,\n });\n },\n activate(worktreeId: string) {\n return worktreesFacade.activate({ id: worktreeId });\n },\n updateMetadata(\n input: Parameters<typeof mcpParityClient.updateWorktreeMetadata>[0]\n ) {\n const dependsOn = Array.isArray(input.dependsOn)\n ? input.dependsOn.filter(\n (value): value is string => typeof value === \"string\"\n )\n : undefined;\n const blocks = Array.isArray(input.blocks)\n ? input.blocks.filter((value): value is string => typeof value === \"string\")\n : undefined;\n return worktreesFacade.update({\n id: typeof input.worktreeId === \"string\" ? input.worktreeId : \"\",\n hypothesis: typeof input.hypothesis === \"string\" ? input.hypothesis : undefined,\n track: typeof input.track === \"string\" ? input.track : undefined,\n trackPosition:\n typeof input.trackPosition === \"number\" ? input.trackPosition : undefined,\n executionBand:\n typeof input.executionBand === \"number\" ? input.executionBand : undefined,\n executionOrder:\n typeof input.executionOrder === \"number\" ? input.executionOrder : undefined,\n dependsOn,\n blocks,\n gate: typeof input.gate === \"string\" ? input.gate : undefined,\n });\n },\n update(\n input: Parameters<typeof mcpParityClient.updateWorktreeMetadata>[0]\n ) {\n return this.updateMetadata(input);\n },\n updateTargets(\n input: Parameters<typeof workflowClient.updateWorktreeTargets>[0]\n ) {\n return worktreesFacade.updateTargets({\n id: input.worktreeId,\n addBeliefIds: input.addBeliefIds,\n addQuestionIds: input.addQuestionIds,\n removeBeliefIds: input.removeBeliefIds,\n removeQuestionIds: input.removeQuestionIds,\n });\n },\n listAll(\n query: Parameters<typeof workflowClient.listAllWorktrees>[0] = {}\n ) {\n return workflowClient.listAllWorktrees(query);\n },\n merge(worktreeId: string, input: MergeInput) {\n return worktreesFacade.merge({\n id: worktreeId,\n outcomes: input.outcomes,\n summary: input.summary,\n });\n },\n push(\n worktreeId: string,\n input: Parameters<typeof workflowClient.push>[1]\n ) {\n return workflowClient.push(worktreeId, input);\n },\n openPullRequest(\n worktreeId: string,\n input: Parameters<typeof workflowClient.openPullRequest>[1]\n ) {\n return workflowClient.openPullRequest(worktreeId, input);\n },\n pipelineSnapshot(topicId: string) {\n return mcpParityClient.pipelineSnapshot({ topicId });\n },\n },\n context: {\n listTopics(query: Parameters<typeof topicsClient.list>[0] = {}) {\n return topicsFacade.list({\n ontologyId: query.ontologyId,\n parentTopicId: query.parentTopicId,\n status: query.status as\n | \"active\"\n | \"archived\"\n | \"watching\"\n | undefined,\n type: query.type,\n });\n },\n compile(\n topicId: string,\n input: Parameters<typeof contextClient.compile>[1] = {}\n ) {\n return contextClient.compile(topicId, input);\n },\n recordScopeLearning(\n input: Parameters<typeof mcpParityClient.recordScopeLearning>[0]\n ) {\n return mcpParityClient.recordScopeLearning(input);\n },\n discover(input: Parameters<typeof mcpParityClient.discover>[0]) {\n return discoverTopics(input as JsonObject);\n },\n analyzeTopicDensity(\n input: Parameters<typeof mcpParityClient.analyzeTopicDensity>[0]\n ) {\n return mcpParityClient.analyzeTopicDensity(input);\n },\n applyAutoBranching(\n input: Parameters<typeof mcpParityClient.applyAutoBranching>[0]\n ) {\n return mcpParityClient.applyAutoBranching(input);\n },\n seedBeliefLattice(\n input: Parameters<typeof mcpParityClient.seedBeliefLattice>[0] = {}\n ) {\n return mcpParityClient.seedBeliefLattice(input);\n },\n getLatticeCoverage(\n input: Parameters<typeof mcpParityClient.getLatticeCoverage>[0] = {}\n ) {\n return mcpParityClient.getLatticeCoverage(input);\n },\n matchEntityType(\n input: Parameters<typeof mcpParityClient.matchEntityType>[0]\n ) {\n return ontologiesFacade\n .match(input as Parameters<typeof ontologiesFacade.match>[0])\n .then(exposeGatewayData);\n },\n discoverEntityConnections(\n input: Parameters<typeof mcpParityClient.discoverEntityConnections>[0]\n ) {\n return discoverEntityConnections(input as JsonObject);\n },\n triggerBeliefReview(\n input: Parameters<typeof mcpParityClient.triggerBeliefReview>[0]\n ) {\n return triggerBeliefReview(input as JsonObject);\n },\n },\n tasks: {\n create(input: CreateTaskInput) {\n return tasksFacade.create({\n topicId: requireTopicId(input),\n title: input.title,\n description: input.description,\n taskType: input.taskType,\n priority: input.priority,\n linkedBeliefId: input.linkedBeliefId,\n linkedQuestionId: input.linkedQuestionId,\n linkedWorktreeId: input.linkedWorktreeId,\n });\n },\n complete(taskId: string, input: CompleteTaskInput) {\n return tasksFacade.complete({\n id: taskId,\n outputSummary: input.outputSummary,\n });\n },\n update(taskId: string, input: UpdateTaskInput) {\n return tasksFacade.update({\n id: taskId,\n title: input.title,\n description: input.description,\n priority: input.priority,\n status: input.status,\n linkedBeliefId: input.linkedBeliefId,\n linkedQuestionId: input.linkedQuestionId,\n linkedWorktreeId: input.linkedWorktreeId,\n });\n },\n list(input: Parameters<typeof mcpParityClient.listTasks>[0]) {\n return tasksFacade.list({\n topicId: resolveTopicId(input),\n worktreeId:\n typeof input.worktreeId === \"string\"\n ? input.worktreeId\n : typeof input.linkedWorktreeId === \"string\"\n ? input.linkedWorktreeId\n : undefined,\n status: typeof input.status === \"string\" ? input.status : undefined,\n limit: typeof input.limit === \"number\" ? input.limit : undefined,\n });\n },\n },\n topics: {\n list(input: Parameters<typeof topicsClient.list>[0] = {}) {\n return topicsFacade.list({\n ontologyId: input.ontologyId,\n parentTopicId: input.parentTopicId,\n status: input.status as \"active\" | \"archived\" | \"watching\" | undefined,\n type: input.type,\n });\n },\n get(topicId: string) {\n return topicsFacade.get(topicId);\n },\n create(input: Parameters<typeof topicsClient.create>[0]) {\n return topicsFacade.create({\n name: input.name,\n description: input.description,\n type: input.type,\n parentTopicId: input.parentTopicId,\n ontologyId: input.ontologyId,\n tenantId: input.tenantId,\n workspaceId: input.workspaceId,\n visibility: input.visibility,\n createdBy: input.createdBy,\n });\n },\n update(\n topicId: string,\n input: Parameters<typeof topicsClient.update>[1]\n ) {\n return topicsFacade.update({\n id: topicId,\n name: input.name,\n description: input.description,\n type: input.type,\n ontologyId: input.ontologyId,\n clearOntologyId: input.clearOntologyId,\n status: input.status,\n visibility: input.visibility,\n });\n },\n tree(\n topicId: string,\n query: Parameters<typeof topicsClient.getTree>[1] = {}\n ) {\n return topicsFacade.tree({\n id: topicId,\n maxDepth: query.maxDepth,\n });\n },\n getTree(input: { rootId: string; maxDepth?: number }) {\n return topicsFacade.tree({\n id: input.rootId,\n maxDepth: input.maxDepth,\n });\n },\n coverage(\n topicId: string,\n query: Parameters<typeof topicsClient.getCoverage>[1] = {}\n ) {\n return topicsFacade.coverage({\n id: topicId,\n includeDescendants: query.includeDescendants,\n maxDepth: query.maxDepth,\n });\n },\n },\n answers: {\n create(input: Parameters<typeof mcpParityClient.createAnswer>[0]) {\n const questionId =\n typeof input.questionNodeId === \"string\" ? input.questionNodeId : \"\";\n if (!questionId) {\n throw new Error(\"questionNodeId is required\");\n }\n const text =\n typeof input.answerText === \"string\" ? input.answerText : \"\";\n if (!text) {\n throw new Error(\"answerText is required\");\n }\n const confidence =\n input.confidence === \"moderate\" ? \"medium\" : input.confidence;\n\n return questionsFacade.answer(questionId, {\n text,\n confidence:\n typeof confidence === \"string\" ? confidence : undefined,\n evidenceIds: Array.isArray(input.evidenceNodeIds)\n ? input.evidenceNodeIds.filter(\n (value): value is string => typeof value === \"string\"\n )\n : undefined,\n });\n },\n get(input: Parameters<typeof mcpParityClient.getAnswer>[0]) {\n const questionId =\n typeof input.questionNodeId === \"string\" ? input.questionNodeId : \"\";\n if (!questionId) {\n throw new Error(\"questionNodeId is required\");\n }\n return answersClient.get(questionId);\n },\n },\n contradictions: {\n flag(args: {\n beliefA: string;\n beliefB: string;\n description: string;\n topicId?: string;\n severity?: string;\n defeatType?: string;\n }) {\n return contradictionsFacade\n .flag({\n beliefA: args.beliefA,\n beliefB: args.beliefB,\n description: args.description,\n topicId: requireTopicId(args),\n severity: args.severity,\n defeatType: args.defeatType,\n })\n .then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n status?: string;\n limit?: number;\n cursor?: string;\n }) {\n return contradictionsFacade\n .list({\n topicId: requireTopicId(args),\n status: args.status,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n get(contradictionId: string) {\n return contradictionsFacade.get(contradictionId).then(exposeGatewayData);\n },\n find: findContradictions,\n },\n ontologies: {\n list(\n input: {\n tenantId?: string;\n tier?: string;\n status?: string;\n } = {}\n ) {\n return ontologiesFacade.list(input).then(exposeGatewayData);\n },\n get(ontologyId: string) {\n return ontologiesFacade.get(ontologyId).then(exposeGatewayData);\n },\n bind(\n input: Parameters<typeof ontologiesFacade.bind>[0],\n idempotencyKey?: Parameters<typeof ontologiesFacade.bind>[1]\n ) {\n return ontologiesFacade.bind(input, idempotencyKey).then(exposeGatewayData);\n },\n match(\n input: Parameters<typeof ontologiesFacade.match>[0],\n idempotencyKey?: Parameters<typeof ontologiesFacade.match>[1]\n ) {\n return ontologiesFacade.match(input, idempotencyKey).then(exposeGatewayData);\n },\n create(input: Parameters<typeof mcpParityClient.createOntology>[0]) {\n return createOntologyCompat(input as JsonObject);\n },\n update(input: Parameters<typeof mcpParityClient.updateOntology>[0]) {\n return updateOntologyCompat(input as JsonObject);\n },\n archive(input: Parameters<typeof mcpParityClient.archiveOntology>[0]) {\n return archiveOntologyCompat(input as JsonObject);\n },\n createVersion(\n input: Parameters<typeof mcpParityClient.createOntologyVersion>[0]\n ) {\n return createOntologyVersionCompat(input as JsonObject);\n },\n publishVersion(\n input: Parameters<typeof mcpParityClient.publishOntologyVersion>[0]\n ) {\n return publishOntologyVersionCompat(input as JsonObject);\n },\n deprecateVersion(\n input: Parameters<typeof mcpParityClient.deprecateOntologyVersion>[0]\n ) {\n return deprecateOntologyVersionCompat(input as JsonObject);\n },\n resolveEffective(\n input: Parameters<typeof mcpParityClient.resolveEffectiveOntology>[0]\n ) {\n return resolveEffectiveOntologyCompat(input as JsonObject);\n },\n raw: ontologyClient,\n },\n coordination: {\n registerSession(\n input: Parameters<typeof mcpParityClient.registerSession>[0] = {}\n ) {\n return mcpParityClient.registerSession(input);\n },\n heartbeatSession(\n input: Parameters<typeof mcpParityClient.heartbeatSession>[0] = {}\n ) {\n return mcpParityClient.heartbeatSession(input);\n },\n endSession(\n input: Parameters<typeof mcpParityClient.endSession>[0] = {}\n ) {\n return mcpParityClient.endSession(input);\n },\n listActiveSessions(\n input: Parameters<typeof mcpParityClient.listActiveSessions>[0] = {}\n ) {\n return mcpParityClient.listActiveSessions(input);\n },\n sendAgentMessage(\n input: Parameters<typeof mcpParityClient.sendAgentMessage>[0]\n ) {\n return mcpParityClient.sendAgentMessage(input);\n },\n broadcastMessage(\n input: Parameters<typeof mcpParityClient.broadcastMessage>[0]\n ) {\n return mcpParityClient.broadcastMessage(input);\n },\n getInbox(\n input: Parameters<typeof mcpParityClient.getAgentInbox>[0] = {}\n ) {\n return mcpParityClient.getAgentInbox(input);\n },\n claimFiles(input: Parameters<typeof mcpParityClient.claimFiles>[0]) {\n return mcpParityClient.claimFiles(input);\n },\n },\n policy: {\n checkPermission(\n input: Parameters<typeof mcpParityClient.checkPermission>[0]\n ) {\n return policyClient.checkPermission({\n topicId: typeof input.topicId === \"string\" ? input.topicId : undefined,\n permission:\n typeof input.permission === \"string\"\n ? (input.permission as \"read\" | \"write\")\n : undefined,\n principal:\n typeof input.principal === \"string\" ? input.principal : undefined,\n principalId:\n typeof input.principalId === \"string\" ? input.principalId : undefined,\n beliefClusterId:\n typeof input.beliefClusterId === \"string\"\n ? input.beliefClusterId\n : undefined,\n });\n },\n listAccessibleTopics(\n input: Parameters<typeof policyClient.listAccessibleTopics>[0] = {}\n ) {\n return policyClient.listAccessibleTopics({\n permission:\n typeof input.permission === \"string\"\n ? (input.permission as \"read\" | \"write\")\n : undefined,\n includeShared:\n typeof input.includeShared === \"boolean\"\n ? input.includeShared\n : undefined,\n principal:\n typeof input.principal === \"string\" ? input.principal : undefined,\n principalId:\n typeof input.principalId === \"string\" ? input.principalId : undefined,\n limit: typeof input.limit === \"number\" ? input.limit : undefined,\n });\n },\n filterByPermission(\n input: Parameters<typeof mcpParityClient.filterByPermission>[0]\n ) {\n return policyClient.filterByPermission({\n topicIds: Array.isArray(input.topicIds)\n ? input.topicIds.filter(\n (value): value is string => typeof value === \"string\"\n )\n : undefined,\n permission:\n typeof input.permission === \"string\"\n ? (input.permission as \"read\" | \"write\")\n : undefined,\n principal:\n typeof input.principal === \"string\" ? input.principal : undefined,\n principalId:\n typeof input.principalId === \"string\" ? input.principalId : undefined,\n });\n },\n manageWritePolicy(\n input: Parameters<typeof mcpParityClient.manageWritePolicy>[0]\n ) {\n return mcpParityClient.manageWritePolicy(input);\n },\n raw: policyClient,\n },\n observations: {\n ingest(input: Parameters<typeof mcpParityClient.ingestObservation>[0]) {\n return mcpParityClient.ingestObservation(input);\n },\n getContext(\n input: Parameters<typeof mcpParityClient.getObservationContext>[0]\n ) {\n return mcpParityClient.getObservationContext(input);\n },\n },\n coding: {\n getCodeContext(input: Parameters<typeof mcpParityClient.getCodeContext>[0]) {\n return mcpParityClient.getCodeContext(input);\n },\n getChangeHistory(\n input: Parameters<typeof mcpParityClient.getChangeHistory>[0]\n ) {\n return mcpParityClient.getChangeHistory(input);\n },\n recordAttempt(input: Parameters<typeof mcpParityClient.recordAttempt>[0]) {\n return mcpParityClient.recordAttempt(input);\n },\n getFailureLog(input: Parameters<typeof mcpParityClient.getFailureLog>[0]) {\n return mcpParityClient.getFailureLog(input);\n },\n },\n contracts: {\n create(\n input: Parameters<typeof mcpParityClient.createEpistemicContract>[0]\n ) {\n return createContractCompat(input as JsonObject);\n },\n evaluate(input: Parameters<typeof mcpParityClient.evaluateContract>[0]) {\n return evaluateContractCompat(input as JsonObject);\n },\n getStatus(input: Parameters<typeof mcpParityClient.getContractStatus>[0]) {\n return getContractStatusCompat(input as JsonObject);\n },\n },\n bootstrap: {\n generateSessionHandoff(\n input: Parameters<typeof mcpParityClient.generateSessionHandoff>[0]\n ) {\n return mcpParityClient.generateSessionHandoff(input);\n },\n },\n research: {\n searchSources(args: {\n query: string;\n topicId?: string;\n sources?: string[];\n }) {\n const topicId = requireTopicId(args);\n return graphClient\n .listNodes({\n topicId,\n nodeType: \"source\",\n limit: 100,\n })\n .then((response) => {\n const query = args.query.toLowerCase();\n const results = asNodeArray(response.data)\n .filter((node) => {\n const text = `${node.canonicalText ?? \"\"} ${\n typeof node.metadata?.title === \"string\"\n ? node.metadata.title\n : \"\"\n }`.toLowerCase();\n if (!text.includes(query)) {\n return false;\n }\n if (!args.sources || args.sources.length === 0) {\n return true;\n }\n const sourceType =\n typeof node.metadata?.sourceType === \"string\"\n ? node.metadata.sourceType.toLowerCase()\n : \"\";\n return args.sources.some((source) =>\n sourceType.includes(source.toLowerCase())\n );\n })\n .map((node) => ({\n title:\n typeof node.metadata?.title === \"string\"\n ? node.metadata.title\n : (node.canonicalText ?? \"Untitled source\"),\n url:\n typeof node.metadata?.sourceUrl === \"string\"\n ? node.metadata.sourceUrl\n : \"\",\n snippet: node.canonicalText ?? \"\",\n relevanceScore: 1,\n suggestedEvidence: node.canonicalText ?? \"\",\n }));\n return { results };\n });\n },\n async executeDeepResearch(args: {\n query: string;\n topicId?: string;\n depth?: \"quick\" | \"standard\" | \"deep\";\n }) {\n const sources = await this.searchSources({\n query: args.query,\n topicId: requireTopicId(args),\n sources: [\"web\"],\n });\n const sampleSize =\n args.depth === \"deep\" ? 10 : args.depth === \"quick\" ? 3 : 5;\n const selected = sources.results.slice(0, sampleSize);\n return {\n report: {\n summary:\n selected.length > 0\n ? `Research completed for \"${args.query}\" with ${selected.length} relevant sources.`\n : `No relevant sources found for \"${args.query}\".`,\n findings: selected.map((source) => ({\n title: source.title,\n summary: source.snippet,\n sourceUrl: source.url,\n })),\n sources: selected.map((source) => ({\n title: source.title,\n url: source.url,\n })),\n linkedEvidence: [],\n linkedQuestions: [],\n },\n };\n },\n },\n tools: {\n register(registration: CustomToolRegistration) {\n return registerCustomTool(registration);\n },\n unregister(fullName: string) {\n return unregisterCustomTool(fullName);\n },\n list() {\n return listRegisteredCustomTools();\n },\n clear() {\n clearRegisteredCustomTools();\n },\n invoke(name: string, input: CustomToolInput = {}) {\n const fullName = name.includes(\".\") ? name : `custom.${name}`;\n return invokeCustomTool(fullName, input);\n },\n namespace(namespace: string) {\n return getCustomNamespace(namespace);\n },\n },\n packs: {\n /**\n * Ensure the configured packKey is installed.\n * No-op if no packKey was provided or if the pack is already installed.\n * Called automatically on first API use when packKey is set.\n */\n ensurePack,\n /**\n * Check if the configured pack has been installed in this session.\n */\n get isInstalled() {\n return _packInstalled;\n },\n listCatalog() {\n return packsClient.listCatalog();\n },\n catalog() {\n return packsClient.getCatalog();\n },\n listStates(scope?: Parameters<typeof packsClient.listStates>[0]) {\n return packsClient.listStates(scope);\n },\n states(scope?: Parameters<typeof packsClient.getStates>[0]) {\n return packsClient.getStates(scope);\n },\n install(input: Parameters<typeof packsClient.install>[0]) {\n return packsClient.install(input);\n },\n enable(input: Parameters<typeof packsClient.enable>[0]) {\n return packsClient.enable(input);\n },\n disable(input: Parameters<typeof packsClient.disable>[0]) {\n return packsClient.disable(input);\n },\n },\n identity: identityFacade,\n custom: getCustomNamespace(\"custom\"),\n extensions: extensionNamespaces,\n raw: {\n beliefs: beliefsClient,\n graph: graphClient,\n decisions: decisionsClient,\n workflow: workflowClient,\n audit: auditClient,\n admin: adminClient,\n identity: identityClient,\n policy: policyClient,\n answers: answersClient,\n ontology: ontologyClient,\n mcpParity: mcpParityClient,\n packs: packsClient,\n reports: reportsClient,\n learning: learningClient,\n harness: harnessClient,\n schema: schemaClient,\n audiences: audiencesClient,\n topics: topicsClient,\n },\n };\n}\n","/**\n * Canonical lens workflow contract shared across schema, SDK, and MCP surfaces.\n */\n\n// Re-export filter criteria types for consumers who import from lens-workflow\nexport type {\n LensFilterCriteria,\n TaxonomyFilterCriteriaV1,\n EntityTypeFilterV1,\n OntologyScope,\n FilterValidationResult,\n} from \"./lens-filter.contract\";\nexport {\n validateFilterCriteria,\n isLensFilterCriteria,\n isTaxonomyFilterCriteriaV1,\n} from \"./lens-filter.contract\";\n\nexport const LENS_PERSPECTIVE_TYPES = [\n \"investigation\",\n \"monitoring\",\n \"analysis\",\n \"comparison\",\n \"taxonomy\",\n] as const;\n\nexport type LensPerspectiveType = (typeof LENS_PERSPECTIVE_TYPES)[number];\n\nexport const LENS_STATUSES = [\"draft\", \"active\", \"archived\"] as const;\n\nexport type LensStatus = (typeof LENS_STATUSES)[number];\n\nexport const LENS_TASK_TEMPLATE_PRIORITIES = [\n \"critical\",\n \"high\",\n \"medium\",\n \"low\",\n] as const;\n\nexport type LensTaskTemplatePriority =\n (typeof LENS_TASK_TEMPLATE_PRIORITIES)[number];\n\nexport type LensLooseMetadata = Record<string, unknown>;\n\nexport type LensPromptTemplateReference = {\n key: string;\n promptRef: string;\n phase?: string;\n role?: string;\n version?: string;\n required?: boolean;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowStepTemplate = {\n key: string;\n title: string;\n description?: string;\n promptTemplateKey?: string;\n taskTemplateKeys?: string[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowTemplate = {\n key: string;\n name: string;\n description?: string;\n steps: LensWorkflowStepTemplate[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensTaskTemplate = {\n key: string;\n title: string;\n description?: string;\n priority?: LensTaskTemplatePriority;\n phase?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensQuestionTemplate = {\n key: string;\n text: string;\n priority?: LensTaskTemplatePriority;\n linkedBeliefKey?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensBranchMigrationSuggestion = {\n recommendedTool: \"create_lens\";\n perspectiveType: LensPerspectiveType;\n message: string;\n suggestedPayload: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n perspectiveType: LensPerspectiveType;\n };\n};\n\nexport const BRANCH_DEPRECATION_MESSAGE =\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens instead.\";\n\nexport type DeprecatedBranchMetadata = {\n deprecated: true;\n deprecationMessage: string;\n lensSuggestion: LensBranchMigrationSuggestion;\n};\n\nexport function inferLensPerspectiveTypeFromBranchSchema(\n schema?: string | null\n): LensPerspectiveType {\n const normalized = schema?.trim().toLowerCase();\n if (normalized === \"phase\") {\n return \"monitoring\";\n }\n if (normalized === \"axis\" || normalized === \"dimension\") {\n return \"comparison\";\n }\n if (normalized === \"track\") {\n return \"investigation\";\n }\n return \"analysis\";\n}\n\nexport function migrateBranchToLens(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): LensBranchMigrationSuggestion {\n const perspectiveType = inferLensPerspectiveTypeFromBranchSchema(args.schema);\n return {\n recommendedTool: \"create_lens\",\n perspectiveType,\n message:\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens with the suggested payload instead.\",\n suggestedPayload: {\n name: args.name,\n description: args.description,\n topicId: args.topicId,\n workspaceId: args.workspaceId,\n perspectiveType,\n },\n };\n}\n\nexport function buildDeprecatedBranchMetadata(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): DeprecatedBranchMetadata {\n return {\n deprecated: true,\n deprecationMessage: BRANCH_DEPRECATION_MESSAGE,\n lensSuggestion: migrateBranchToLens(args),\n };\n}\n","/**\n * MCP Tool Contract Definitions\n *\n * Machine-readable source of truth for all Lucern MCP tool names,\n * descriptions, parameters, and response schemas.\n *\n * CONTRACT SURFACE: These definitions are the external API for AI agents.\n * Renaming a tool or changing its description is a BREAKING CHANGE.\n *\n * Git-native naming rules (enforced by lint):\n * 1. Workflow tools use git verbs directly (add_worktree, merge, push, open_pull_request)\n * 2. Knowledge tools use epistemic verbs (create_belief, fork_belief, modulate_confidence)\n * 3. First sentence of description includes the git analog verb\n * 4. Description includes \"Like `git X`\" parenthetical\n * 5. Parameter names use domain terms (canonicalText, nodeId, confidence)\n */\n\nimport { LENS_PERSPECTIVE_TYPES } from \"./lens-workflow.contract\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type McpToolContract = {\n /** Stable tool name — breaking change to rename */\n name: string;\n /** Git-semantic description — breaking change to remove git references */\n description: string;\n /** Parameter schema (JSON Schema subset) */\n parameters: Record<string, McpParameterDef>;\n /** Required parameter names */\n required: string[];\n /** Response shape description */\n response: McpResponseDef;\n /** Which Lucern module owns the implementation */\n ownerModule: string;\n /** Ontology primitive this tool operates on */\n ontologyPrimitive:\n | \"belief\"\n | \"evidence\"\n | \"source\"\n | \"question\"\n | \"judgment\"\n | \"worktree\"\n | \"branch\"\n | \"lens\"\n | \"edge\"\n | \"graph\"\n | \"task\"\n | \"policy\"\n | \"ontology\"\n | \"identity\";\n /** MCP surface tier — showcase (front page, every demo) or workhorse (complete CRUD, discovered when building) */\n tier: \"showcase\" | \"workhorse\";\n /** Hide this tool from public discovery surfaces. */\n internal?: boolean;\n /** Deprecation notice shown in contract-driven docs and discovery. */\n deprecated?: string;\n};\n\nexport type McpParameterDef = {\n type: \"string\" | \"number\" | \"boolean\" | \"array\" | \"object\";\n description: string;\n required?: boolean;\n enum?: string[];\n};\n\nexport type McpResponseDef = {\n description: string;\n fields: Record<string, string>;\n};\n\n// =============================================================================\n// BELIEF LIFECYCLE TOOLS\n// =============================================================================\n\nexport const CREATE_BELIEF: McpToolContract = {\n name: \"create_belief\",\n description:\n \"Commit a new belief (knowledge unit) to the reasoning graph. \" +\n \"Like `git commit` — creates an atomic, traceable knowledge object. \" +\n \"The belief starts as unscored (draft). Score it with modulate_confidence to freeze the formulation.\",\n parameters: {\n canonicalText: {\n type: \"string\",\n description: \"The belief statement — what the agent holds to be true\",\n },\n topicId: { type: \"string\", description: \"Topic scope for the belief\" },\n beliefType: {\n type: \"string\",\n description:\n \"Belief type (e.g., hypothesis, belief, principle, invariant, tenet, forecast). Validated against schemaEnumConfig.\",\n },\n metadata: {\n type: \"object\",\n description:\n \"Optional extra metadata merged into the node (e.g., { codeAnchors: ['path/to/file.ts'] } for coding intelligence)\",\n },\n },\n required: [\"canonicalText\", \"topicId\"],\n response: {\n description: \"The created canonical belief record\",\n fields: {\n id: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n beliefId: \"string — canonical belief ID\",\n text: \"string — canonical belief formulation\",\n topicId: \"string\",\n status: \"string — active | superseded | archived\",\n scoringState: \"string — unscored | scored\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const GET_BELIEF: McpToolContract = {\n name: \"get_belief\",\n description:\n \"Read one belief by ID. \" +\n \"Like `git show` — resolves the canonical belief payload for a single identifier.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical belief ID\" },\n },\n required: [\"id\"],\n response: {\n description: \"The canonical belief record\",\n fields: {\n id: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n beliefId: \"string — canonical belief ID\",\n text: \"string — canonical belief formulation\",\n topicId: \"string\",\n status: \"string — active | superseded | archived\",\n scoringState: \"string — unscored | scored\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const REFINE_BELIEF: McpToolContract = {\n name: \"refine_belief\",\n description:\n \"Amend a draft belief in-place within an active worktree. \" +\n \"Like `git commit --amend` — rewrites the last commit on a feature branch. \" +\n \"Only valid before merge to main. Fails if the belief is already scored.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to refine\" },\n canonicalText: { type: \"string\", description: \"Updated belief statement\" },\n rationale: { type: \"string\", description: \"Why the refinement was made\" },\n },\n required: [\"nodeId\", \"canonicalText\"],\n response: {\n description: \"The updated belief node\",\n fields: {\n nodeId: \"string\",\n canonicalText: \"string — updated text\",\n updatedAt: \"number — timestamp\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const MODULATE_CONFIDENCE: McpToolContract = {\n name: \"modulate_confidence\",\n description:\n \"Record a confidence change for a belief. \" +\n \"Like `git commit` to the credence log — an atomic, append-only write. \" +\n \"Each modulation is a new entry in the history, not an overwrite. \" +\n \"Scoring happens via merge; this tool records the individual data points. \" +\n \"Triggers: evidence_added, contradiction_detected, merge_outcome, manual, decay.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to score\" },\n confidence: { type: \"number\", description: \"Confidence level in [0, 1]\" },\n trigger: {\n type: \"string\",\n description: \"What caused this confidence change\",\n enum: [\n \"evidence_added\",\n \"contradiction_detected\",\n \"merge_outcome\",\n \"manual\",\n \"decay\",\n ],\n },\n rationale: {\n type: \"string\",\n description: \"Human-readable explanation of why confidence changed\",\n },\n },\n required: [\"nodeId\", \"confidence\", \"trigger\", \"rationale\"],\n response: {\n description: \"Confidence modulation result\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n newConfidence: \"number\",\n previousConfidence: \"number\",\n trigger: \"string\",\n requestId: \"string — request identifier for the scheduled cascade\",\n propagationSummary:\n \"object — bounded inline cascade summary with totalCandidateTargets, inlineTargets, and remainingTargetCount\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const FORK_BELIEF: McpToolContract = {\n name: \"fork_belief\",\n description:\n \"Branch off a scored belief to create a new version with a different formulation. \" +\n \"Like `git fork` — the parent remains immutable with full history. \" +\n \"The new belief gets a `supersedes` edge to the parent. \" +\n \"Fork reasons: refinement, contradiction_response, scope_change, confidence_collapse, manual.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The scored belief to fork from\" },\n newFormulation: {\n type: \"string\",\n description: \"The evolved belief statement\",\n },\n forkReason: {\n type: \"string\",\n description: \"Why this fork was created\",\n enum: [\n \"refinement\",\n \"contradiction_response\",\n \"scope_change\",\n \"confidence_collapse\",\n \"manual\",\n ],\n },\n },\n required: [\"nodeId\", \"newFormulation\", \"forkReason\"],\n response: {\n description: \"The forked canonical belief record\",\n fields: {\n id: \"string — canonical child belief ID\",\n nodeId: \"string — canonical child belief ID\",\n beliefId: \"string — canonical child belief ID\",\n parentBeliefId: \"string — canonical parent belief ID\",\n forkReason: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const ARCHIVE_BELIEF: McpToolContract = {\n name: \"archive_belief\",\n description:\n \"Soft-delete a belief by setting its status to archived. \" +\n \"Like `git rm` — removed from the working tree but preserved in history. \" +\n \"Beliefs are never truly deleted. Archived beliefs retain full lineage and confidence history.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to archive\" },\n rationale: {\n type: \"string\",\n description: \"Why this belief is being archived\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Archived canonical belief record\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n previousStatus: \"string | undefined\",\n newStatus: \"string — 'archived'\",\n status: \"string — 'archived'\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const CREATE_EPISTEMIC_CONTRACT: McpToolContract = {\n name: \"create_epistemic_contract\",\n description:\n \"Bind a machine-evaluable epistemic contract to a belief. \" +\n \"Like `git add` for falsification rules — records the verification condition, modulation policy, \" +\n \"and evaluation schedule that keep a belief accountable to reality.\",\n parameters: {\n beliefNodeId: {\n type: \"string\",\n description: \"The belief node to bind this contract to\",\n },\n title: {\n type: \"string\",\n description: \"Contract title\",\n },\n description: {\n type: \"string\",\n description: \"Optional contract description\",\n },\n conditionType: {\n type: \"string\",\n description: \"What kind of contract condition to evaluate\",\n enum: [\"assertion\", \"temporal\", \"evidential\", \"threshold\", \"composite\"],\n },\n direction: {\n type: \"string\",\n description: \"Whether satisfying the condition confirms or falsifies\",\n enum: [\"confirms\", \"falsifies\"],\n },\n condition: {\n type: \"object\",\n description:\n \"Condition payload: { expression, evaluator, evaluatorConfig? }\",\n },\n deadline: {\n type: \"number\",\n description: \"Optional Unix timestamp deadline for temporal contracts\",\n },\n compositeOf: {\n type: \"array\",\n description: \"Optional array of sub-contract IDs for composite contracts\",\n },\n compositeOperator: {\n type: \"string\",\n description: \"How composite sub-contracts should be combined\",\n enum: [\"all\", \"any\", \"majority\"],\n },\n modulation: {\n type: \"object\",\n description:\n \"Asymmetric modulation rules for confirmed, disconfirmed, expired, and partial outcomes\",\n },\n evaluationSchedule: {\n type: \"string\",\n description: \"When this contract should be evaluated\",\n enum: [\"on_demand\", \"on_evidence\", \"periodic\", \"event_driven\"],\n },\n periodicIntervalMs: {\n type: \"number\",\n description: \"Optional interval in milliseconds for periodic contracts\",\n },\n },\n required: [\n \"beliefNodeId\",\n \"title\",\n \"conditionType\",\n \"direction\",\n \"condition\",\n \"modulation\",\n \"evaluationSchedule\",\n ],\n response: {\n description: \"The created epistemic contract binding\",\n fields: {\n id: \"string — storage record ID\",\n contractId: \"string — contract identifier\",\n beliefId: \"string — canonical belief ID\",\n status: \"string — initial contract status\",\n title: \"string — contract title\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// EVIDENCE TOOLS\n// =============================================================================\n\nexport const ADD_EVIDENCE: McpToolContract = {\n name: \"add_evidence\",\n description:\n \"Commit evidence to the reasoning graph and attach it to a belief. \" +\n \"Like `git add && git commit` — an atomic write that creates a traceable evidence object. \" +\n \"Weight ranges from -1.0 (contradicts) to +1.0 (strongly supports). \" +\n \"Evidence is always context-bound: tied to its source, the time it was captured, and the belief it informs.\",\n parameters: {\n canonicalText: { type: \"string\", description: \"The evidence statement\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n sourceUrl: { type: \"string\", description: \"URL of the source material\" },\n targetNodeId: {\n type: \"string\",\n description: \"The belief this evidence bears on\",\n },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n reasoning: {\n type: \"string\",\n description: \"Why this evidence is relevant to the target belief\",\n },\n title: {\n type: \"string\",\n description: \"Optional short title for the evidence node\",\n },\n content: {\n type: \"string\",\n description:\n \"Optional long-form content (separate from canonicalText summary)\",\n },\n contentType: {\n type: \"string\",\n description:\n \"Content MIME type or format hint (e.g., 'text/markdown', 'code')\",\n },\n metadata: {\n type: \"object\",\n description:\n \"Optional extra metadata merged into the node (e.g., { codeAnchors: ['path/to/file.ts'], failedApproach: true } for coding intelligence)\",\n },\n },\n required: [\"canonicalText\", \"topicId\", \"targetNodeId\"],\n response: {\n description: \"The created evidence node and its edge\",\n fields: {\n nodeId: \"string — evidence node ID\",\n edgeId: \"string — edge to target belief\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// CONTRADICTION TOOLS\n// =============================================================================\n\nexport const FLAG_CONTRADICTION: McpToolContract = {\n name: \"flag_contradiction\",\n description:\n \"Flag a contradiction between two beliefs. Contradictions are first-class objects \" +\n \"with their own lifecycle — they may remain permanently unresolved. \" +\n \"Like a merge conflict that is allowed to persist. \" +\n \"Contradictions can trigger structural changes: forking, confidence collapse, or decision blocking. \" +\n \"Resolution is NEVER automatic — always surfaces for human review.\",\n parameters: {\n beliefA: {\n type: \"string\",\n description: \"First belief in the contradiction\",\n },\n beliefB: {\n type: \"string\",\n description: \"Second belief in the contradiction\",\n },\n description: { type: \"string\", description: \"What the tension is about\" },\n severity: {\n type: \"string\",\n description: \"How serious the contradiction is\",\n enum: [\"low\", \"medium\", \"high\", \"critical\"],\n },\n topicId: { type: \"string\", description: \"Topic scope\" },\n defeatType: {\n type: \"string\",\n description:\n \"Pollock defeat classification: rebuts (direct contradiction), undercuts (attacks the inferential link), undermines (attacks a premise)\",\n enum: [\"rebuts\", \"undercuts\", \"undermines\"],\n },\n },\n required: [\"beliefA\", \"beliefB\", \"description\", \"topicId\"],\n response: {\n description: \"The created contradiction object\",\n fields: {\n contradictionId: \"string\",\n status: \"string — 'unresolved'\",\n beliefA: \"string\",\n beliefB: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// WORKTREE TOOLS (git worktree add, git merge)\n// =============================================================================\n\nexport const ADD_WORKTREE: McpToolContract = {\n name: \"add_worktree\",\n description:\n \"Check out a branch into an active worktree for investigation. \" +\n \"Like `git worktree add <branch>` — creates independent working state on a thematic branch. \" +\n \"Beliefs committed within the worktree can be freely amended (draft code on a feature branch). \" +\n \"When investigation is complete, `merge` integrates findings into main.\",\n parameters: {\n title: { type: \"string\", description: \"Worktree name/objective\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n branchId: {\n type: \"string\",\n description: \"The branch this worktree investigates\",\n },\n objective: {\n type: \"string\",\n description:\n \"Plain-text reasoning objective to auto-shape into a hypothesis, questions, tasks, and dependencies\",\n },\n hypothesis: {\n type: \"string\",\n description: \"The testable claim this worktree investigates\",\n },\n beliefIds: {\n type: \"array\",\n description: \"Beliefs to test in this worktree\",\n },\n autoShape: {\n type: \"boolean\",\n description:\n \"Whether to invoke inquiry auto-shaping during worktree creation\",\n },\n domainPackId: {\n type: \"string\",\n description:\n \"Optional domain pack whose shaping hooks should influence generated questions and tasks\",\n },\n executionOrder: {\n type: \"number\",\n description: \"Global execution order for this worktree\",\n },\n dependsOn: {\n type: \"array\",\n description: \"Worktree IDs that must complete before this one can activate\",\n },\n blocks: {\n type: \"array\",\n description: \"Worktree IDs blocked by this worktree\",\n },\n gate: {\n type: \"string\",\n description: \"Exit gate name for this worktree\",\n },\n },\n required: [\"title\", \"topicId\"],\n response: {\n description: \"The created worktree\",\n fields: {\n worktreeId: \"string\",\n branchId: \"string | null\",\n status: \"string — usually 'planning' or 'active'\",\n title: \"string\",\n hypothesis: \"string | null\",\n questionCount: \"number\",\n taskCount: \"number\",\n autoShapeApplied: \"boolean\",\n frameworkSuggestions: \"array\",\n dependencySuggestions: \"array\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\nexport const MERGE: McpToolContract = {\n name: \"merge\",\n description:\n \"Merge a worktree's findings into the stable knowledge base (main). \" +\n \"Like `git merge` to main — formulations freeze, confidence is recorded, findings are integrated. \" +\n \"Each belief gets a confidence score and rationale. After merge, beliefs can only evolve via fork. \" +\n \"Low-confidence beliefs may need forking.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to merge\" },\n outcomes: {\n type: \"array\",\n description:\n \"Scoring outcomes for each belief: { beliefId, confidence, rationale }\",\n },\n summary: { type: \"string\", description: \"Overall findings summary\" },\n },\n required: [\"worktreeId\", \"outcomes\"],\n response: {\n description: \"Merge result\",\n fields: {\n worktreeId: \"string\",\n status: \"string — 'merged'\",\n beliefsScored: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// LINEAGE AND AUDIT TOOLS\n// =============================================================================\n\nexport const QUERY_LINEAGE: McpToolContract = {\n name: \"query_lineage\",\n description:\n \"Trace a belief's full ancestry — every fork, score, and confidence modulation. \" +\n \"Like `git log --graph`. \" +\n \"Returns the complete evolution chain showing how understanding developed over time. \" +\n \"Lineage is permanent and can never be erased (Invariant #3).\",\n parameters: {\n nodeId: { type: \"string\", description: \"Starting node to trace from\" },\n depth: {\n type: \"number\",\n description: \"How many generations to traverse (default: 5)\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Canonical lineage result\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n lineage: \"array — ancestry entries with beliefId, nodeId, formulation, forkReason, and createdAt\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const GET_CONFIDENCE_HISTORY: McpToolContract = {\n name: \"get_confidence_history\",\n description:\n \"Get the full confidence history for a belief. \" +\n \"Each entry records the confidence level, trigger, rationale, and actor. \" +\n \"Like `git log` for a single metric — append-only, never overwritten.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to get history for\" },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Confidence history entries\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n entries: \"array — { confidence, trigger, rationale, timestamp, userId }\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const GET_AUDIT_TRAIL: McpToolContract = {\n name: \"get_audit_trail\",\n description:\n \"Get the full audit trail for a node — every mutation, who made it, when, and why. \" +\n \"Like `git blame` for knowledge. \" +\n \"All state transitions are explicit, attributable, and permanently queryable. \" +\n \"No silent changes are possible (Invariant #14).\",\n parameters: {\n nodeId: { type: \"string\", description: \"The node to audit\" },\n limit: {\n type: \"number\",\n description: \"Maximum entries to return (default: 50)\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Audit trail entries\",\n fields: {\n entries: \"array — { action, actor, timestamp, before, after, rationale }\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// GRAPH QUERY TOOLS\n// =============================================================================\n\nexport const TRAVERSE_GRAPH: McpToolContract = {\n name: \"traverse_graph\",\n description:\n \"Walk the reasoning graph from a starting node. \" +\n \"Like `git log --graph` — traverses connected lineage across nodes and edges. \" +\n \"Traversal follows epistemic layers: L4 (judgments) → L3 (beliefs, questions) → L2 (evidence) → L1 (sources). \" +\n \"Never skips layers. \" +\n \"Use direction 'up' to trace what a piece of evidence supports, 'down' to trace what supports a judgment.\",\n parameters: {\n startNode: { type: \"string\", description: \"Node to start traversal from\" },\n direction: {\n type: \"string\",\n description: \"Traversal direction\",\n enum: [\"up\", \"down\", \"both\"],\n },\n maxDepth: {\n type: \"number\",\n description: \"Maximum traversal depth (default: 3)\",\n },\n },\n required: [\"startNode\"],\n response: {\n description: \"Subgraph of traversed nodes and edges\",\n fields: {\n nodes: \"array — traversed nodes\",\n edges: \"array — traversed edges\",\n depth: \"number\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_GRAPH_NEIGHBORHOOD: McpToolContract = {\n name: \"get_graph_neighborhood\",\n description:\n \"Retrieve the local neighborhood around one or more graph nodes. \" +\n \"Like `git log --graph --boundary` for a focused reasoning window. \" +\n \"Returns the canonical neighborhood payload shared by HTTP and SDK graph surfaces.\",\n parameters: {\n globalId: {\n type: \"string\",\n description: \"Single root node global identifier.\",\n },\n globalIds: {\n type: \"array\",\n description: \"Optional list of root node global identifiers.\",\n },\n maxDepth: {\n type: \"number\",\n description: \"Maximum traversal depth (default: 2).\",\n },\n },\n required: [],\n response: {\n description: \"Canonical graph neighborhood payload\",\n fields: {\n nodes: \"array — graph nodes in the returned neighborhood\",\n edges: \"array — graph edges in the returned neighborhood\",\n depth: \"number — deepest traversed node depth\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const TRACE_ENTITY_IMPACT: McpToolContract = {\n name: \"trace_entity_impact\",\n description:\n \"Returns code-grounded beliefs, contracts, migration states, and failed attempts \" +\n \"anchored to a specific file or function path. \" +\n \"Like `git log -- <path>` — filters the knowledge graph to nodes anchored to a file path \" +\n \"via metadata.codeAnchors. Results are separated by coding belief type: decisions, contracts, \" +\n \"migrations, patterns, deprecations, and failures.\",\n parameters: {\n nodeId: {\n type: \"string\",\n description: \"Entity node ID to trace impact from\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description:\n \"Entity impact trace: direct beliefs, evidence, and indirect belief reach\",\n fields: {\n entityNodeId: \"string — the traced entity\",\n entityType: \"string — nodeType of the entity\",\n directBeliefConnections:\n \"array — beliefs directly connected via bridge edges\",\n evidenceConnections: \"array — evidence referencing this entity\",\n indirectBeliefConnections: \"array — beliefs reached through evidence\",\n totalBeliefReach: \"number — total unique beliefs impacted\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const SEARCH_BELIEFS: McpToolContract = {\n name: \"search_beliefs\",\n description:\n \"Search for beliefs in the reasoning graph. \" +\n \"Like `git grep` — finds relevant beliefs across the full history and active state. \" +\n \"Supports semantic search, filtering by status (unscored, scored, archived), \" +\n \"confidence thresholds, and topic scope. \" +\n \"Returns beliefs with their current confidence, lineage depth, and contradiction count.\",\n parameters: {\n query: { type: \"string\", description: \"Semantic search query\" },\n status: {\n type: \"string\",\n description: \"Filter by belief status\",\n enum: [\"unscored\", \"scored\", \"archived\"],\n },\n minConfidence: {\n type: \"number\",\n description: \"Minimum confidence threshold (0-1)\",\n },\n topicId: { type: \"string\", description: \"Filter by topic\" },\n limit: { type: \"number\", description: \"Maximum results (default: 10)\" },\n },\n required: [\"query\"],\n response: {\n description: \"Matching beliefs with metadata\",\n fields: {\n results:\n \"array — { nodeId, canonicalText, confidence, status, contradictionCount }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const SEARCH_RESOURCES: McpToolContract = {\n name: \"search_resources\",\n description:\n \"Search beliefs, evidence, and questions in one cross-resource call. \" +\n \"Like `git grep` across the reasoning stack — returns one ranked payload with grouped hits by resource type.\",\n parameters: {\n q: { type: \"string\", description: \"Search query\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n types: {\n type: \"array\",\n description: \"Optional resource filters: belief, evidence, question\",\n },\n status: {\n type: \"string\",\n description: \"Optional belief/question status filter\",\n },\n minConfidence: {\n type: \"number\",\n description: \"Optional minimum belief confidence threshold\",\n },\n limit: { type: \"number\", description: \"Maximum results (default: 25)\" },\n cursor: { type: \"string\", description: \"Optional pagination cursor\" },\n },\n required: [\"q\", \"topicId\"],\n response: {\n description: \"Canonical cross-resource search payload\",\n fields: {\n q: \"string — echoed query text\",\n topicId: \"string — canonical topic scope\",\n types: \"array — the resource types included in the search\",\n results: \"array — ranked mixed resource hits\",\n beliefs: \"array — grouped belief hits\",\n evidence: \"array — grouped evidence hits\",\n questions: \"array — grouped question hits\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const FIND_CONTRADICTIONS: McpToolContract = {\n name: \"find_contradictions\",\n description:\n \"Find contradictions in the reasoning graph — beliefs that are in tension with each other. \" +\n \"Like a merge conflict in `git` — surfaces incompatible states that require explicit resolution. \" +\n \"Contradictions are first-class objects that may remain permanently unresolved. \" +\n \"They can block judgments, trigger forks, or collapse confidence. \" +\n \"Filter by project, status (unresolved, resolved, accepted), and severity.\",\n parameters: {\n topicId: { type: \"string\", description: \"Filter by topic\" },\n nodeId: {\n type: \"string\",\n description: \"Find contradictions involving a specific belief\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status\",\n enum: [\"unresolved\", \"resolved\", \"accepted\"],\n },\n },\n required: [],\n response: {\n description: \"Contradiction objects\",\n fields: {\n contradictions:\n \"array — { beliefA, beliefB, description, severity, status, defeatType }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// EDGE TOOLS\n// =============================================================================\n\nexport const CREATE_EDGE: McpToolContract = {\n name: \"create_edge\",\n description:\n \"Commit a typed relationship between two nodes in the reasoning graph. \" +\n \"Like `git commit` — an atomic write that declares a dependency between nodes. \" +\n \"The engine enforces layer transition rules — for example, L1 → L3 direct edges are forbidden (must go through L2).\",\n parameters: {\n sourceId: {\n type: \"string\",\n description: \"Source node of the relationship\",\n },\n targetId: {\n type: \"string\",\n description: \"Target node of the relationship\",\n },\n edgeType: {\n type: \"string\",\n description:\n \"Relationship type (informs, tests, depends_on, supersedes, etc.)\",\n },\n weight: {\n type: \"number\",\n description:\n \"Edge weight: -1.0 to +1.0 for informs edges, 0-1 for structural\",\n },\n reasoning: { type: \"string\", description: \"Why this relationship exists\" },\n reasoningMethod: {\n type: \"string\",\n description: \"How this was determined\",\n enum: [\"deductive\", \"inductive\", \"abductive\", \"analogical\", \"empirical\"],\n },\n },\n required: [\"sourceId\", \"targetId\", \"edgeType\"],\n response: {\n description: \"The created edge\",\n fields: {\n globalId: \"string — edge identifier\",\n edgeType: \"string\",\n fromLayer: \"string\",\n toLayer: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// JUDGMENT TOOLS (Phase 1: new vocabulary, aliased to decision implementation)\n// =============================================================================\n\nexport const RECORD_JUDGMENT: McpToolContract = {\n name: \"record_judgment\",\n description:\n \"Record a judgment — an irreversible commitment based on the current epistemic state. \" +\n \"Like a `git tag` marking a release. \" +\n \"A judgment synthesizes beliefs, evidence, and uncertainties into a determination. \" +\n \"Once issued, a judgment is evaluated against the epistemic state that existed when it was made \" +\n \"(knowledge horizon evaluation, Invariant #10).\",\n parameters: {\n title: { type: \"string\", description: \"Short judgment statement\" },\n rationale: {\n type: \"string\",\n description: \"Full reasoning behind the judgment\",\n },\n topicId: { type: \"string\", description: \"Topic scope\" },\n beliefIds: {\n type: \"array\",\n description: \"Beliefs that warrant this judgment\",\n },\n confidence: {\n type: \"number\",\n description: \"Confidence in the judgment (0-1)\",\n },\n },\n required: [\"title\", \"rationale\", \"topicId\"],\n response: {\n description: \"The recorded judgment\",\n fields: {\n judgmentId: \"string\",\n title: \"string\",\n status: \"string — 'issued'\",\n },\n },\n ownerModule: \"decision-state\",\n ontologyPrimitive: \"judgment\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// LENS TOOLS (workspace-scoped operational frames)\n// =============================================================================\n\nexport const CREATE_LENS: McpToolContract = {\n name: \"create_lens\",\n description:\n \"Create a reusable lens that overlays a workspace topic with a specific analytical perspective. \" +\n \"Like `git branch <name>` for operational scaffolding — a lens persists across worktrees and carries prompts, workflows, and task templates. \" +\n \"Multiple topics in the same workspace can reuse the same lens.\",\n parameters: {\n name: {\n type: \"string\",\n description: \"Lens name (e.g., 'market dynamics', 'team quality')\",\n },\n workspaceId: {\n type: \"string\",\n description:\n \"Workspace scope for the lens. Required unless topicId resolves to a workspace-scoped topic.\",\n },\n topicId: {\n type: \"string\",\n description:\n \"Optional originating topic scope. Lenses remain reusable across topics even when this is set.\",\n },\n description: {\n type: \"string\",\n description: \"What this lens is designed to investigate or monitor\",\n },\n perspectiveType: {\n type: \"string\",\n description:\n \"Perspective type for the lens. Validated against schemaEnumConfig category 'lens_perspective_type'.\",\n enum: [...LENS_PERSPECTIVE_TYPES],\n },\n promptTemplates: {\n type: \"array\",\n description: \"Langfuse prompt references used when operating through this lens\",\n },\n workflowTemplates: {\n type: \"array\",\n description: \"Guided workflow templates for lens-driven investigations\",\n },\n taskTemplates: {\n type: \"array\",\n description: \"Default task templates instantiated when the lens is applied\",\n },\n filterCriteria: {\n type: \"object\",\n description: \"Belief/evidence filtering rules applied by the lens\",\n },\n },\n required: [\"name\", \"perspectiveType\"],\n response: {\n description: \"The created lens\",\n fields: {\n lensId: \"string\",\n name: \"string\",\n workspaceId: \"string\",\n status: \"string — 'active'\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"showcase\",\n};\n\nexport const LIST_LENSES: McpToolContract = {\n name: \"list_lenses\",\n description:\n \"List reusable lenses for a workspace, optionally scored by whether they are active on a topic. \" +\n \"Like `git branch --list` — shows the available named frames you can activate. \" +\n \"When topicId is provided, the response can indicate which lenses are already applied there.\",\n parameters: {\n workspaceId: {\n type: \"string\",\n description: \"Workspace scope to list lenses from\",\n },\n topicId: {\n type: \"string\",\n description:\n \"Optional topic scope used to derive workspace and annotate applied lenses\",\n },\n status: {\n type: \"string\",\n description: \"Filter by lens lifecycle status\",\n enum: [\"draft\", \"active\", \"archived\"],\n },\n perspectiveType: {\n type: \"string\",\n description: \"Filter by perspective type\",\n enum: [...LENS_PERSPECTIVE_TYPES],\n },\n },\n required: [],\n response: {\n description: \"Available lenses\",\n fields: {\n lenses:\n \"array — each item includes lensId, name, workspaceId, perspectiveType, status, and optional isAppliedToTopic\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"workhorse\",\n};\n\nexport const APPLY_LENS_TO_TOPIC: McpToolContract = {\n name: \"apply_lens_to_topic\",\n description:\n \"Apply a lens to a topic so it becomes an active perspective overlay. \" +\n \"Like `git checkout <branch>` for a reusable frame — the topic keeps its knowledge, but the active lens shapes guidance and retrieval. \" +\n \"Multiple active lenses can coexist on the same topic.\",\n parameters: {\n lensId: { type: \"string\", description: \"Lens to activate on the topic\" },\n topicId: { type: \"string\", description: \"Topic that should receive the lens\" },\n },\n required: [\"lensId\", \"topicId\"],\n response: {\n description: \"Lens activation result\",\n fields: {\n bindingId: \"string\",\n lensId: \"string\",\n topicId: \"string\",\n status: \"string — 'active'\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"workhorse\",\n};\n\nexport const REMOVE_LENS_FROM_TOPIC: McpToolContract = {\n name: \"remove_lens_from_topic\",\n description:\n \"Remove an active lens overlay from a topic. \" +\n \"Like `git switch` away from a frame — the topic remains, but the lens stops shaping the investigation context. \" +\n \"Historical binding state is preserved for auditability.\",\n parameters: {\n lensId: { type: \"string\", description: \"Lens to remove from the topic\" },\n topicId: { type: \"string\", description: \"Topic that currently has the lens applied\" },\n },\n required: [\"lensId\", \"topicId\"],\n response: {\n description: \"Lens removal result\",\n fields: {\n bindingId: \"string\",\n lensId: \"string\",\n topicId: \"string\",\n status: \"string — 'removed'\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// PUSH TOOLS (git push)\n// =============================================================================\n\nexport const PUSH: McpToolContract = {\n name: \"push\",\n description:\n \"Push scored beliefs from a merged worktree to other contexts. \" +\n \"Like `git push` — makes local findings available on the remote. \" +\n \"Only merged beliefs can be pushed. \" +\n \"Publication makes findings visible to other projects, teams, or external consumers.\",\n parameters: {\n worktreeId: {\n type: \"string\",\n description: \"The merged worktree whose findings to push\",\n },\n targetContext: {\n type: \"string\",\n description: \"Where to push (e.g., 'portfolio', 'ic_review', 'external')\",\n },\n beliefIds: {\n type: \"array\",\n description: \"Optional subset of beliefs to push (default: all scored)\",\n },\n },\n required: [\"worktreeId\", \"targetContext\"],\n response: {\n description: \"Push result\",\n fields: {\n pushedCount: \"number\",\n targetContext: \"string\",\n pushedAt: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// PULL REQUEST TOOLS (git pull request)\n// =============================================================================\n\nexport const OPEN_PULL_REQUEST: McpToolContract = {\n name: \"open_pull_request\",\n description:\n \"Open a pull request for peer review before merging a worktree. \" +\n \"Like opening a `git pull request` — the worktree's findings are ready but await approval before merge. \" +\n \"Reviewers can approve, request changes, or block the merge. \" +\n \"This is the gate between draft work and scored knowledge.\",\n parameters: {\n worktreeId: {\n type: \"string\",\n description: \"The worktree to submit for review\",\n },\n reviewers: {\n type: \"array\",\n description: \"User IDs of requested reviewers\",\n },\n summary: {\n type: \"string\",\n description: \"Summary of findings and why they're ready for merge\",\n },\n },\n required: [\"worktreeId\", \"summary\"],\n response: {\n description: \"The pull request\",\n fields: {\n pullRequestId: \"string\",\n worktreeId: \"string\",\n status: \"string — 'pending_review'\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// FORENSIC TOOLS (git bisect)\n// =============================================================================\n\nexport const BISECT_CONFIDENCE: McpToolContract = {\n name: \"bisect_confidence\",\n description:\n \"Find when a belief's confidence diverged from reality. \" +\n \"Like `git bisect` — binary search through the credence history to find the inflection point. \" +\n \"Given a belief that is now known to be wrong (or right), traces back through \" +\n \"confidence modulations to identify which evidence or event caused the divergence.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to bisect\" },\n expectedDirection: {\n type: \"string\",\n description: \"Was confidence too high or too low?\",\n enum: [\"overconfident\", \"underconfident\"],\n },\n timeRange: {\n type: \"object\",\n description:\n \"Optional time range to search within: { start: number, end: number }\",\n },\n },\n required: [\"nodeId\", \"expectedDirection\"],\n response: {\n description: \"The inflection point in confidence history\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n expectedDirection: \"string — overconfident | underconfident\",\n inflectionEntry:\n \"object — the confidence modulation where divergence began\",\n triggerEvent: \"string | null — what caused the divergence\",\n confidenceBefore: \"number | null\",\n confidenceAfter: \"number | null\",\n totalEntries: \"number\",\n inflectionIndex: \"number | null\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// GRAPH INTELLIGENCE TOOLS\n// =============================================================================\n\nexport const DETECT_CONFIRMATION_BIAS: McpToolContract = {\n name: \"detect_confirmation_bias\",\n description:\n \"Detect confirmation bias in the evidence graph. \" +\n \"Like `git diff --stat` for reasoning — analyzes the ratio of supporting vs challenging evidence \" +\n \"per belief and flags beliefs where the evidence is suspiciously one-sided. \" +\n \"Returns risk classification (critical/high/moderate/healthy).\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic to analyze\" },\n threshold: {\n type: \"number\",\n description: \"Bias threshold (0-1, default 0.7)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Beliefs with bias scores, risk levels, and evidence counts\",\n fields: {\n beliefs:\n \"array — { nodeId, biasScore, riskLevel, supportingCount, challengingCount }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const GET_GRAPH_STRUCTURE_ANALYSIS: McpToolContract = {\n name: \"get_graph_structure_analysis\",\n description:\n \"Run comprehensive structural analysis on the knowledge graph. \" +\n \"Like `git fsck` combined with PageRank — runs 14 algorithmic detectors including \" +\n \"PageRank centrality, Louvain community detection, Tarjan SCC, Fiedler vector spectral analysis, \" +\n \"Bayesian surprise, and overconfidence detection.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic to analyze\" },\n },\n required: [\"topicId\"],\n response: {\n description:\n \"Structural analysis with detector results and recommendations\",\n fields: {\n topicId: \"string — canonical topic scope\",\n metric: \"string — analysis metric identifier\",\n payload: \"object — detector results, recommendations, graph metrics\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const GET_FALSIFICATION_QUESTIONS: McpToolContract = {\n name: \"get_falsification_questions\",\n description:\n \"Generate Popperian falsification questions for beliefs. \" +\n \"Like `git test` — identifies the questions most likely to disprove current beliefs. \" +\n \"Karl Popper as a tool: surfaces what would need to be true to invalidate each belief.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic to analyze\" },\n beliefIds: { type: \"array\", description: \"Specific beliefs to target\" },\n },\n required: [\"topicId\"],\n response: {\n description:\n \"Questions with falsification potential scores and target beliefs\",\n fields: {\n questions:\n \"array — { questionText, falsificationPotential, targetBeliefId, targetBeliefText }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"question\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// SOURCES & RESEARCH TOOLS\n// =============================================================================\n\nexport const SEARCH_SOURCES: McpToolContract = {\n name: \"search_sources\",\n description:\n \"Search and ingest external sources into the knowledge graph. \" +\n \"Like `git fetch` — pulls information from external sources (web, documents, APIs) \" +\n \"and stages it for evidence creation. Does not commit — you decide what becomes evidence.\",\n parameters: {\n query: { type: \"string\", description: \"Search query\" },\n sources: {\n type: \"array\",\n description: \"Source types to search: web, news, academic\",\n },\n },\n required: [\"query\"],\n response: {\n description:\n \"Results with source metadata, relevance scores, and suggested evidence\",\n fields: {\n results:\n \"array — { title, url, snippet, relevanceScore, suggestedEvidence }\",\n },\n },\n ownerModule: \"research-engine\",\n ontologyPrimitive: \"source\",\n tier: \"showcase\",\n};\n\nexport const EXECUTE_DEEP_RESEARCH: McpToolContract = {\n name: \"execute_deep_research\",\n description:\n \"Execute multi-source deep research on a topic. \" +\n \"Like `git submodule update --recursive` — launches a comprehensive research agent that searches \" +\n \"multiple sources, synthesizes findings, and produces a structured report. \" +\n \"Auto-links results to relevant questions and beliefs.\",\n parameters: {\n query: { type: \"string\", description: \"Research question or topic\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n depth: {\n type: \"string\",\n description: \"Research depth: quick, standard, deep\",\n enum: [\"quick\", \"standard\", \"deep\"],\n },\n },\n required: [\"query\", \"topicId\"],\n response: {\n description:\n \"Report with findings, sources, auto-linked evidence and questions\",\n fields: {\n report:\n \"object — { summary, findings, sources, linkedEvidence, linkedQuestions }\",\n },\n },\n ownerModule: \"research-engine\",\n ontologyPrimitive: \"source\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// EVIDENCE OPERATION TOOLS\n// =============================================================================\n\nexport const SEARCH_EVIDENCE: McpToolContract = {\n name: \"search_evidence\",\n description:\n \"Search for evidence across the reasoning graph. \" +\n \"Like `git grep` — returns the evidence records that best match a textual query. \" +\n \"Results share the same canonical semantics as the HTTP and SDK evidence search surface.\",\n parameters: {\n q: { type: \"string\", description: \"Search text\" },\n topicId: { type: \"string\", description: \"Topic scope filter\" },\n targetId: {\n type: \"string\",\n description: \"Optional belief or question identifier to scope the search\",\n },\n limit: { type: \"number\", description: \"Max results\" },\n cursor: { type: \"string\", description: \"Pagination cursor\" },\n },\n required: [\"q\"],\n response: {\n description: \"Canonical evidence search results page\",\n fields: {\n results:\n \"array — { evidenceId, nodeId, globalId?, text, source?, kind?, relevanceScore }\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const CREATE_EVIDENCE: McpToolContract = {\n name: \"create_evidence\",\n description:\n \"Commit evidence to the reasoning graph. \" +\n \"Like `git commit` — creates a traceable evidence record with canonical public IDs. \" +\n \"Optionally links the evidence to a belief or question in the same operation.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n text: { type: \"string\", description: \"Canonical evidence text\" },\n source: { type: \"string\", description: \"Source URL or source label\" },\n targetId: {\n type: \"string\",\n description: \"Optional belief or question identifier to link immediately\",\n },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n metadata: {\n type: \"object\",\n description: \"Optional metadata merged into the canonical evidence node\",\n },\n title: { type: \"string\", description: \"Optional short title\" },\n content: { type: \"string\", description: \"Optional long-form content\" },\n contentType: {\n type: \"string\",\n description: \"Optional content format or MIME hint\",\n },\n kind: { type: \"string\", description: \"Optional evidence kind\" },\n },\n required: [\"topicId\", \"text\"],\n response: {\n description: \"The created canonical evidence record\",\n fields: {\n id: \"string — canonical evidence ID\",\n nodeId: \"string — canonical evidence ID\",\n evidenceId: \"string — canonical evidence ID\",\n text: \"string\",\n topicId: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const GET_EVIDENCE: McpToolContract = {\n name: \"get_evidence\",\n description:\n \"Read one evidence record by ID. \" +\n \"Like `git show` — resolves the canonical evidence payload for a single identifier.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical evidence ID\" },\n },\n required: [\"id\"],\n response: {\n description: \"The canonical evidence record\",\n fields: {\n id: \"string — canonical evidence ID\",\n nodeId: \"string — canonical evidence ID\",\n evidenceId: \"string — canonical evidence ID\",\n text: \"string\",\n topicId: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const LIST_EVIDENCE: McpToolContract = {\n name: \"list_evidence\",\n description:\n \"List evidence records within a topic or linked to a target. \" +\n \"Like `git log -- path` — returns the canonical evidence page for a topic, belief, or question scope.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope filter\" },\n targetId: {\n type: \"string\",\n description: \"Optional belief or question identifier to scope by linkage\",\n },\n limit: { type: \"number\", description: \"Max results\" },\n cursor: { type: \"string\", description: \"Pagination cursor\" },\n },\n required: [],\n response: {\n description: \"Canonical evidence page\",\n fields: {\n evidence: \"array — canonical evidence records\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const LINK_EVIDENCE: McpToolContract = {\n name: \"link_evidence\",\n description:\n \"Link evidence to a belief or question. \" +\n \"Like `git notes add` — attaches a supporting or contradicting edge without rewriting the evidence itself.\",\n parameters: {\n evidenceId: { type: \"string\", description: \"Canonical evidence ID\" },\n targetId: {\n type: \"string\",\n description: \"Canonical belief or question ID\",\n },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n rationale: { type: \"string\", description: \"Why this link exists\" },\n },\n required: [\"evidenceId\", \"targetId\"],\n response: {\n description: \"The created canonical evidence edge summary\",\n fields: {\n edgeId: \"string\",\n evidenceId: \"string\",\n targetId: \"string\",\n targetType: \"string — belief | question\",\n weight: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"workhorse\",\n};\n\nexport const LINK_EVIDENCE_TO_BELIEF: McpToolContract = {\n name: \"link_evidence_to_belief\",\n description:\n \"Link evidence to a belief with a support weight. \" +\n \"Like `git add` — stages evidence in support of (or against) a belief. \" +\n \"The weight ranges from -1.0 (strongly contradicts) to +1.0 (strongly supports).\",\n parameters: {\n evidenceId: { type: \"string\", description: \"The evidence node ID\" },\n beliefId: { type: \"string\", description: \"The belief node ID\" },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n rationale: { type: \"string\", description: \"Why this evidence is relevant\" },\n },\n required: [\"evidenceId\", \"beliefId\", \"weight\"],\n response: {\n description: \"The created edge linking evidence to belief\",\n fields: {\n edgeId: \"string\",\n evidenceId: \"string\",\n beliefId: \"string\",\n weight: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// QUESTION OPERATION TOOLS\n// =============================================================================\n\nexport const CREATE_QUESTION: McpToolContract = {\n name: \"create_question\",\n description:\n \"Commit an investigation question to the reasoning graph. \" +\n \"Like `git issue` — creates a traceable question that drives research and evidence collection. \" +\n \"Questions test beliefs and guide worktree investigation.\",\n parameters: {\n text: { type: \"string\", description: \"The question text\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n priority: {\n type: \"string\",\n description: \"Priority: urgent, high, medium, low\",\n enum: [\"urgent\", \"high\", \"medium\", \"low\"],\n },\n linkedBeliefId: {\n type: \"string\",\n description: \"Belief this question tests\",\n },\n metadata: {\n type: \"object\",\n description: \"Optional metadata merged into the question record\",\n },\n },\n required: [\"text\", \"topicId\"],\n response: {\n description: \"The created canonical question record\",\n fields: {\n id: \"string — canonical question ID\",\n nodeId: \"string — canonical question ID\",\n questionId: \"string — canonical question ID\",\n text: \"string\",\n status: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const GET_QUESTION: McpToolContract = {\n name: \"get_question\",\n description:\n \"Read one question by ID. \" +\n \"Like `git show` — resolves the canonical question payload for a single identifier.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical question ID\" },\n },\n required: [\"id\"],\n response: {\n description: \"The canonical question record\",\n fields: {\n id: \"string — canonical question ID\",\n nodeId: \"string — canonical question ID\",\n questionId: \"string — canonical question ID\",\n text: \"string\",\n status: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const REFINE_QUESTION: McpToolContract = {\n name: \"refine_question\",\n description:\n \"Refine a question's framing or scope. \" +\n \"Like `git commit --amend` for questions — updates the question text \" +\n \"while preserving its identity and linked evidence.\",\n parameters: {\n id: { type: \"string\", description: \"The question to refine\" },\n text: { type: \"string\", description: \"Updated question text\" },\n rationale: {\n type: \"string\",\n description: \"Why the question is being refined\",\n },\n },\n required: [\"id\", \"text\"],\n response: {\n description: \"The refined question\",\n fields: {\n id: \"string\",\n questionId: \"string\",\n updatedText: \"string\",\n previousText: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const LIST_QUESTIONS: McpToolContract = {\n name: \"list_questions\",\n description:\n \"List questions scoped to a topic or worktree. \" +\n \"Like `git issue list` — returns questions with their status, priority, and linked belief context. \" +\n \"Supports filtering by status and priority.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n worktreeId: { type: \"string\", description: \"Filter to worktree scope\" },\n status: {\n type: \"string\",\n description: \"Filter by canonical question status\",\n enum: [\"open\", \"researching\", \"answered\", \"parked\", \"closed\"],\n },\n priority: {\n type: \"string\",\n description: \"Filter by canonical question priority\",\n enum: [\"urgent\", \"high\", \"medium\", \"low\"],\n },\n limit: { type: \"number\", description: \"Max results\" },\n cursor: { type: \"string\", description: \"Pagination cursor\" },\n },\n required: [\"topicId\"],\n response: {\n description: \"Canonical question page\",\n fields: {\n questions: \"array — canonical question records\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const ANSWER_QUESTION: McpToolContract = {\n name: \"answer_question\",\n description:\n \"Answer a question with optional evidence links. \" +\n \"Like `git commit` on the question thread — records the answer and closes the loop with a canonical answered state.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical question ID\" },\n text: { type: \"string\", description: \"Answer text\" },\n confidence: {\n type: \"string\",\n description: \"Optional answer confidence\",\n enum: [\"weak\", \"medium\", \"strong\"],\n },\n evidenceIds: {\n type: \"array\",\n description: \"Optional canonical evidence IDs supporting the answer\",\n },\n rationale: { type: \"string\", description: \"Why this answer is credible\" },\n },\n required: [\"id\", \"text\"],\n response: {\n description: \"Answer result\",\n fields: {\n questionId: \"string\",\n answerId: \"string\",\n status: \"string — answered\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_QUESTION_STATUS: McpToolContract = {\n name: \"update_question_status\",\n description:\n \"Transition a question's status through its lifecycle. \" +\n \"Like `git issue update` — moves a question through the canonical reasoning lifecycle. \" +\n \"Status transitions preserve history and keep linked evidence intact.\",\n parameters: {\n id: { type: \"string\", description: \"The question to update\" },\n status: {\n type: \"string\",\n description: \"New status\",\n enum: [\"open\", \"researching\", \"answered\", \"parked\", \"closed\"],\n },\n rationale: { type: \"string\", description: \"Why the status is changing\" },\n },\n required: [\"id\", \"status\"],\n response: {\n description: \"Updated question status\",\n fields: {\n id: \"string\",\n questionId: \"string\",\n previousStatus: \"string\",\n newStatus: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const ARCHIVE_QUESTION: McpToolContract = {\n name: \"archive_question\",\n description:\n \"Archive a question no longer relevant to current investigation scope. \" +\n \"Like `git issue close` — removes it from active work while preserving audit history. \" +\n \"Archived questions keep their existing links to beliefs and evidence.\",\n parameters: {\n questionId: { type: \"string\", description: \"The question to archive\" },\n reason: {\n type: \"string\",\n description: \"Why the question is being archived\",\n },\n },\n required: [\"questionId\"],\n response: {\n description: \"Archive confirmation\",\n fields: {\n questionId: \"string\",\n status: \"string — 'archived'\",\n archivedAt: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const LINK_EVIDENCE_TO_QUESTION: McpToolContract = {\n name: \"link_evidence_to_question\",\n description:\n \"Link evidence to the question it helps answer. \" +\n \"Like `git notes add` — attaches supporting detail to an active question. \" +\n \"Question-level links improve answer quality and traceability to beliefs.\",\n parameters: {\n evidenceId: { type: \"string\", description: \"The evidence to link\" },\n questionId: {\n type: \"string\",\n description: \"The question this evidence addresses\",\n },\n relevance: { type: \"number\", description: \"Relevance score in [0,1]\" },\n rationale: {\n type: \"string\",\n description: \"How this evidence bears on the question\",\n },\n },\n required: [\"evidenceId\", \"questionId\"],\n response: {\n description: \"The created edge\",\n fields: {\n edgeId: \"string\",\n evidenceId: \"string\",\n questionId: \"string\",\n relevance: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// ANSWER LIFECYCLE TOOLS\n// =============================================================================\n\nexport const CREATE_ANSWER: McpToolContract = {\n name: \"create_answer\",\n description:\n \"Create an answer node responding to a question. \" +\n \"Like `git commit` for resolved questions — creates an immutable answer snapshot at L2. \" +\n \"New answers supersede old ones, preserving full version history. \" +\n \"Answers link to supporting evidence via based_on edges.\",\n parameters: {\n questionNodeId: {\n type: \"string\",\n description: \"The question node ID this answers\",\n },\n answerText: {\n type: \"string\",\n description: \"The answer content — the actual response to the question\",\n },\n topicId: {\n type: \"string\",\n description: \"Topic scope (optional if question already has topicId)\",\n },\n confidence: {\n type: \"string\",\n description:\n \"Answer confidence: definitive, strong, moderate, weak, speculative\",\n },\n evidenceNodeIds: {\n type: \"array\",\n description: \"Supporting evidence node IDs to link via based_on edges\",\n },\n answerSource: {\n type: \"string\",\n description:\n \"How the answer was produced: human, ai_generated, deep_research, synthesis\",\n },\n },\n required: [\"questionNodeId\", \"answerText\"],\n response: {\n description: \"The created answer node with version metadata\",\n fields: {\n nodeId: \"string — unique node identifier\",\n globalId: \"string — globally unique ID\",\n versionNumber: \"number — version of this answer (auto-incremented)\",\n questionNodeId: \"string — the question this answers\",\n confidence: \"string — answer confidence level\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\nexport const GET_ANSWER: McpToolContract = {\n name: \"get_answer\",\n description:\n \"Get the latest answer for a question. \" +\n \"Like `git show HEAD` for a question's resolution — returns the active answer snapshot. \" +\n \"Returns null if the question is unanswered.\",\n parameters: {\n questionNodeId: {\n type: \"string\",\n description: \"The question node ID to get the answer for\",\n },\n },\n required: [\"questionNodeId\"],\n response: {\n description: \"The active answer node or null\",\n fields: {\n nodeId: \"string | null\",\n globalId: \"string | null\",\n answerText: \"string | null\",\n versionNumber: \"number\",\n isLatest: \"boolean\",\n evidenceCount: \"number\",\n confidence: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const GET_HIGH_PRIORITY_QUESTIONS: McpToolContract = {\n name: \"get_high_priority_questions\",\n description:\n \"Rank open questions by urgency and expected decision impact. \" +\n \"Like `git issue list --sort=priority` — brings the highest-leverage open questions to the top. \" +\n \"Ranking accounts for linked belief criticality and evidence gaps.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n limit: { type: \"number\", description: \"Maximum results (default: 20)\" },\n includeAnswered: {\n type: \"boolean\",\n description: \"Include answered questions (default: false)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Priority-ranked questions\",\n fields: {\n questions:\n \"array — { questionId, text, priority, urgencyScore, linkedBeliefCount, evidenceGapCount }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const FIND_MISSING_QUESTIONS: McpToolContract = {\n name: \"find_missing_questions\",\n description:\n \"Identify beliefs missing testing questions. \" +\n \"Like `git diff --check` — surfaces reasoning coverage gaps before merge. \" +\n \"Returns candidate beliefs that need explicit question coverage.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n minConfidence: {\n type: \"number\",\n description: \"Only check beliefs above this confidence (default: 0)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Beliefs missing testing questions\",\n fields: {\n gaps: \"array — { beliefId, canonicalText, confidence, suggestedQuestions }\",\n totalGaps: \"number\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// LISTING & QUERY TOOLS\n// =============================================================================\n\nexport const LIST_BELIEFS: McpToolContract = {\n name: \"list_beliefs\",\n description:\n \"List beliefs scoped to a topic or worktree. \" +\n \"Like `git log --oneline` — returns beliefs with their confidence, status, and scoring state. \" +\n \"Supports filtering by status and confidence threshold.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n worktreeId: { type: \"string\", description: \"Filter to worktree scope\" },\n status: {\n type: \"string\",\n description: \"Filter: unscored, scored, archived\",\n enum: [\"unscored\", \"scored\", \"archived\"],\n },\n minConfidence: {\n type: \"number\",\n description: \"Minimum confidence threshold\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Canonical belief page\",\n fields: {\n beliefs: \"array — canonical belief records\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const LIST_WORKTREES: McpToolContract = {\n name: \"list_worktrees\",\n description:\n \"List all worktrees for a topic. \" +\n \"Like `git worktree list` — shows active and completed investigation branches \" +\n \"with their phase, status, and belief counts.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n status: {\n type: \"string\",\n description: \"Filter: active, merged, abandoned\",\n enum: [\"active\", \"merged\", \"abandoned\"],\n },\n },\n required: [\"topicId\"],\n response: {\n description:\n \"Worktrees with phase, status, belief count, and creation time\",\n fields: {\n worktrees:\n \"array — { worktreeId, title, phase, status, beliefCount, createdAt }\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const LIST_ALL_WORKTREES: McpToolContract = {\n name: \"list_all_worktrees\",\n description:\n \"List ALL worktrees across ALL topics in one query. No topic scope required. \" +\n \"Like `git worktree list --all` — returns the complete pipeline inventory with \" +\n \"track, trackPosition, executionBand, dependencies, and status. \" +\n \"Supports filtering by status, track, and executionBand. \" +\n \"This is the PM's primary pipeline query — one call, full picture.\",\n parameters: {\n status: {\n type: \"string\",\n description:\n \"Filter by status: planning, active, completed, abandoned, superseded, long_term, idea, paused, suggested, dismissed\",\n enum: [\n \"planning\",\n \"active\",\n \"completed\",\n \"abandoned\",\n \"superseded\",\n \"long_term\",\n \"idea\",\n \"paused\",\n \"suggested\",\n \"dismissed\",\n ],\n },\n track: {\n type: \"string\",\n description:\n \"Filter by track name (e.g., 'ontology', 'tc-scope', 'control-plane', 'dev-portal', 'mcp-sdk-parity')\",\n },\n executionBand: {\n type: \"number\",\n description:\n \"Filter by execution band number (e.g., 1, 2, 3). Returns only worktrees in that parallel execution group.\",\n },\n limit: {\n type: \"number\",\n description: \"Maximum results to return (default: 500, max: 1000)\",\n },\n },\n required: [],\n response: {\n description: \"All worktrees across all topics with full pipeline metadata\",\n fields: {\n worktrees:\n \"array — { worktreeId, title, topicId, topicName, phase, status, hypothesis, track, trackPosition, executionBand, executionOrder, dependsOn, blocks, gate, createdAt }\",\n total: \"number — total count after filtering\",\n tracks: \"object — { trackName: count } summary of worktrees per track\",\n bands:\n \"object — { bandNumber: count } summary of worktrees per execution band\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\nexport const ACTIVATE_WORKTREE: McpToolContract = {\n name: \"activate_worktree\",\n description:\n \"Activate a worktree to begin investigation. \" +\n \"Like `git checkout <branch>` — transitions a worktree from planning to active status. \" +\n \"Sets the initial phase and enables belief/question editing within the worktree scope.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to activate\" },\n },\n required: [\"worktreeId\"],\n response: {\n description: \"Activation result with initial phase\",\n fields: {\n worktreeId: \"string\",\n status: \"string — 'active'\",\n phase: \"string\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_WORKTREE_TARGETS: McpToolContract = {\n name: \"update_worktree_targets\",\n description:\n \"Update the target beliefs and questions tracked by a worktree. \" +\n \"Like `git add/rm <files>` — stages or unstages beliefs/questions for investigation \" +\n \"within the worktree scope. Supports adding and removing targets atomically.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to update\" },\n addBeliefIds: {\n type: \"array\",\n description: \"Belief node IDs to add to the worktree\",\n },\n addQuestionIds: {\n type: \"array\",\n description: \"Question node IDs to add to the worktree\",\n },\n removeBeliefIds: {\n type: \"array\",\n description: \"Belief node IDs to remove from the worktree\",\n },\n removeQuestionIds: {\n type: \"array\",\n description: \"Question node IDs to remove from the worktree\",\n },\n },\n required: [\"worktreeId\"],\n response: {\n description: \"Updated target counts\",\n fields: {\n worktreeId: \"string\",\n beliefCount: \"number\",\n questionCount: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_WORKTREE_METADATA: McpToolContract = {\n name: \"update_worktree_metadata\",\n description:\n \"Update worktree sequencing metadata — execution order, dependencies, blocking relations, and gates. \" +\n \"Like `git config` for a worktree — sets the scheduling and dependency metadata that determines \" +\n \"when this worktree can activate relative to others. Use to backfill or correct sequencing data.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to update\" },\n hypothesis: {\n type: \"string\",\n description: \"Testable claim this worktree investigates\",\n },\n executionOrder: {\n type: \"number\",\n description: \"Global execution order (1 = first, higher = later)\",\n },\n dependsOn: {\n type: \"array\",\n description:\n \"Worktree IDs that must complete before this one can activate\",\n },\n blocks: {\n type: \"array\",\n description: \"Worktree IDs that are blocked until this one completes\",\n },\n gate: {\n type: \"string\",\n description: \"Exit gate name (e.g., 'gate:ontology-schema-hardened')\",\n },\n rationale: {\n type: \"string\",\n description: \"Why this worktree is sequenced here\",\n },\n objective: {\n type: \"string\",\n description: \"What we're trying to learn/prove\",\n },\n proofArtifacts: {\n type: \"array\",\n description:\n \"Typed proof artifacts that define what evidence or deliverables this worktree must emit before it can claim success.\",\n },\n staffingHint: {\n type: \"string\",\n description:\n \"Advisory staffing shape for the worktree (for example `backend+tests` or `fullstack`).\",\n },\n lastReconciledAt: {\n type: \"number\",\n description:\n \"Timestamp of the last deterministic workflow reconciliation pass against this worktree.\",\n },\n autoFixPolicy: {\n type: \"object\",\n description:\n \"Calibrated auto-fix policy controlling dry-run vs safe execution, per-run action caps, and permitted mutation tiers.\",\n },\n track: {\n type: \"string\",\n description:\n \"Parallel workstream name (e.g., 'ontology', 'tc-scope', 'control-plane', 'dev-portal', 'mcp-sdk-parity', 'execution-program'). Groups worktrees into named lanes for pipeline visualization and PM analysis.\",\n },\n trackPosition: {\n type: \"number\",\n description:\n \"Position within the track (1-indexed). E.g., TC-A=1, TC-B=2, TC-C=3 within the 'tc-scope' track.\",\n },\n executionBand: {\n type: \"number\",\n description:\n \"Parallel execution band number. All worktrees in the same band can run simultaneously. Band 2 = OE-B + TC-A, Band 3 = TC-B + 11D-R + S2-13A, etc.\",\n },\n status: {\n type: \"string\",\n description:\n \"Override the worktree status. Use for lifecycle transitions like marking a worktree superseded, long-term, or as a raw idea.\",\n enum: [\n \"suggested\",\n \"planning\",\n \"active\",\n \"paused\",\n \"completed\",\n \"dismissed\",\n \"abandoned\",\n \"superseded\",\n \"long_term\",\n \"idea\",\n ],\n },\n topicId: {\n type: \"string\",\n description:\n \"Reassign this worktree's primary topic. Validates the target topic exists before updating.\",\n },\n additionalTopicIds: {\n type: \"array\",\n description:\n \"Set additional topic associations for cross-topic worktrees. Each topic ID is validated before updating. \" +\n \"Use when a worktree spans multiple knowledge domains.\",\n },\n },\n required: [\"worktreeId\"],\n response: {\n description: \"Update confirmation\",\n fields: { worktreeId: \"string\", success: \"boolean\" },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const IDENTITY_WHOAMI: McpToolContract = {\n name: \"identity_whoami\",\n description:\n \"Read the authenticated identity summary for the current session. \" +\n \"Like `git config --get user.name` — shows who the current MCP session is acting as.\",\n parameters: {},\n required: [],\n response: {\n description: \"Canonical identity summary for the current session\",\n fields: {\n principalId: \"string — canonical federated principal identifier\",\n principalType: \"string — human, service, or agent\",\n tenantId: \"string | undefined — resolved tenant scope\",\n workspaceId: \"string | undefined — resolved workspace scope\",\n scopes: \"string[] | undefined — granted scopes for this session\",\n roles: \"string[] | undefined — canonical roles for this session\",\n },\n },\n ownerModule: \"identity-core\",\n ontologyPrimitive: \"identity\",\n tier: \"workhorse\",\n};\n\nexport const COMPILE_CONTEXT: McpToolContract = {\n name: \"compile_context\",\n description:\n \"Compile a focused reasoning context for a topic. \" +\n \"Like `git log --graph --decorate` for the reasoning substrate — returns the canonical Pillar 3 context pack through the public API shape.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope ID to compile\",\n },\n query: {\n type: \"string\",\n description: \"Optional focus query used to rank context items\",\n },\n budget: {\n type: \"number\",\n description: \"Token budget for prompt injection planning\",\n },\n ranking: {\n type: \"string\",\n description: \"Ranking profile for context ordering\",\n enum: [\"baseline_v1\", \"weighted_v1\"],\n },\n limit: {\n type: \"number\",\n description: \"Optional per-section item limit\",\n },\n maxDepth: {\n type: \"number\",\n description: \"Optional descendant topic depth for neighborhood expansion\",\n },\n includeEntities: {\n type: \"boolean\",\n description: \"Include related ontological entities in the compiled result\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Compiled context pack for the requested topic\",\n fields: {\n schemaVersion: \"string\",\n topicId: \"string\",\n topicName: \"string\",\n scopedTopicIds: \"array — topic IDs included in the compilation neighborhood\",\n generatedAt:\n \"number — deterministic graph-backed reference timestamp for this compilation\",\n ranking: \"string — baseline_v1 | weighted_v1\",\n summary: \"object — counts and scoped health signals\",\n invariants: \"array — high-confidence invariant beliefs\",\n activeBeliefs: \"array — current high-signal beliefs\",\n openQuestions: \"array — unresolved questions ranked for this query\",\n recentEvidence: \"array — recent evidence ranked for this query\",\n contradictions: \"array — unresolved contradiction records\",\n relatedEntities: \"array | undefined — ranked ontological entities in scope\",\n contextNarrative: \"array — guidance for prompt assembly\",\n injectionPolicy: \"object — token-budgeted section selections\",\n diagnostics: \"object — scoring and utilization telemetry\",\n },\n },\n ownerModule: \"reasoning-kernel\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// POLICY / ACL TOOLS\n// =============================================================================\n\nexport const CHECK_PERMISSION: McpToolContract = {\n name: \"check_permission\",\n description:\n \"Check whether a principal can read or mutate a topic scope. \" +\n \"Like `git check-ref-format` for ACLs — validates whether the requested operation is allowed before execution.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope to evaluate\" },\n permission: {\n type: \"string\",\n description: \"Permission to evaluate\",\n enum: [\"read\", \"write\"],\n },\n principal: {\n type: \"string\",\n description:\n \"Optional principal override (defaults to current principal)\",\n },\n beliefClusterId: {\n type: \"string\",\n description: \"Optional neighborhood scope within a topic\",\n },\n },\n required: [\"topicId\", \"permission\"],\n response: {\n description: \"Permission evaluation result\",\n fields: {\n allowed: \"boolean\",\n decision: \"string — allow | deny\",\n reasonCode: \"string\",\n principalId: \"string\",\n topicId: \"string\",\n permission: \"string — read | write\",\n },\n },\n ownerModule: \"access-control\",\n ontologyPrimitive: \"policy\",\n tier: \"workhorse\",\n};\n\nexport const FILTER_BY_PERMISSION: McpToolContract = {\n name: \"filter_by_permission\",\n description:\n \"Filter a topic set down to ACL-authorized topics. \" +\n \"Like `git rev-list --ancestry-path` for policy boundaries — keeps only topics permitted for the requested action.\",\n parameters: {\n topicIds: { type: \"array\", description: \"Topic IDs to evaluate\" },\n permission: {\n type: \"string\",\n description: \"Permission filter\",\n enum: [\"read\", \"write\"],\n },\n principal: {\n type: \"string\",\n description: \"Optional principal override (tenant admin only)\",\n },\n },\n required: [\"topicIds\", \"permission\"],\n response: {\n description: \"Allowed/denied split for the requested topic set\",\n fields: {\n permission: \"string — read | write\",\n allowedTopicIds: \"array — topic IDs allowed by policy\",\n deniedTopics: \"array — { topicId, reasonCode }\",\n count: \"number\",\n },\n },\n ownerModule: \"access-control\",\n ontologyPrimitive: \"policy\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// OBSERVATION TOOLS\n// =============================================================================\n\nexport const INGEST_OBSERVATION: McpToolContract = {\n name: \"ingest_observation\",\n description:\n \"Record an observational delta for a topic context stream. \" +\n \"Like `git notes add` — attaches structured observation metadata without mutating graph state directly. \" +\n \"Used by watcher/cowork agents to stage candidate updates before explicit write confirmation.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope for the observation\",\n },\n observationType: {\n type: \"string\",\n description: \"Observation class\",\n enum: [\n \"claim\",\n \"evidence\",\n \"question\",\n \"contradiction\",\n \"judgment\",\n \"note\",\n ],\n },\n summary: {\n type: \"string\",\n description: \"Human-readable observation summary\",\n },\n source: {\n type: \"string\",\n description: \"Optional source (message ID, tool name, URL, etc.)\",\n },\n confidence: { type: \"number\", description: \"Optional confidence in [0,1]\" },\n tags: { type: \"array\", description: \"Optional observation tags\" },\n metadata: {\n type: \"object\",\n description: \"Optional structured metadata payload\",\n },\n },\n required: [\"topicId\", \"observationType\", \"summary\"],\n response: {\n description: \"Recorded observation entry\",\n fields: {\n observationId: \"string\",\n topicId: \"string\",\n observationType: \"string\",\n createdAt: \"number\",\n contextResourceUri: \"string\",\n },\n },\n ownerModule: \"agent-harness\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_OBSERVATION_CONTEXT: McpToolContract = {\n name: \"get_observation_context\",\n description:\n \"Retrieve observer-ready context for a topic, including recent deltas and semantic matches. \" +\n \"Like `git log --grep` — shows recent context and filtered matches across observation history. \" +\n \"This powers prompt context injection without mutating graph state.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n query: {\n type: \"string\",\n description: \"Optional semantic query over observation history\",\n },\n limit: {\n type: \"number\",\n description: \"Maximum entries in each returned collection\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Observation context payload\",\n fields: {\n topicId: \"string\",\n totalObservations: \"number\",\n latest: \"array\",\n semanticMatches: \"array\",\n byType: \"object\",\n generatedAt: \"number\",\n },\n },\n ownerModule: \"agent-harness\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// TASK LIFECYCLE TOOLS\n// =============================================================================\n\nexport const CREATE_TASK: McpToolContract = {\n name: \"create_task\",\n description:\n \"Create an execution task tied to the reasoning state. \" +\n \"Like `git task` — tracks concrete work items (calls to make, data to gather, analyses to run) \" +\n \"linked to questions, beliefs, or worktrees.\",\n parameters: {\n title: { type: \"string\", description: \"Task description\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n taskType: {\n type: \"string\",\n description: \"Type: research, interview, analysis, data_collection\",\n enum: [\"research\", \"interview\", \"analysis\", \"data_collection\"],\n },\n linkedQuestionId: {\n type: \"string\",\n description: \"Question this task addresses\",\n },\n linkedWorktreeId: { type: \"string\", description: \"Worktree scope\" },\n },\n required: [\"title\", \"topicId\"],\n response: {\n description: \"The created task\",\n fields: {\n taskId: \"string\",\n status: \"string — 'pending'\",\n createdAt: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\nexport const COMPLETE_TASK: McpToolContract = {\n name: \"complete_task\",\n description:\n \"Mark a task as complete with an output summary. \" +\n \"Like `git tag` for work items — records the discrete completion event and captures what was learned. \" +\n \"Completed tasks feed back into the evidence graph.\",\n parameters: {\n taskId: { type: \"string\", description: \"The task to complete\" },\n outputSummary: {\n type: \"string\",\n description: \"What was accomplished or learned\",\n },\n evidenceCreated: {\n type: \"boolean\",\n description: \"Whether new evidence was created from this task\",\n },\n },\n required: [\"taskId\", \"outputSummary\"],\n response: {\n description: \"The completed task\",\n fields: {\n taskId: \"string\",\n completedAt: \"number\",\n outputSummary: \"string\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_TASK: McpToolContract = {\n name: \"update_task\",\n description:\n \"Update a task's fields — relink to a different worktree, belief, or question, change title/priority/status. \" +\n \"Like `git task edit` — mutates an existing task in place instead of requiring recreate-plus-supersede.\",\n parameters: {\n taskId: { type: \"string\", description: \"The task to update\" },\n linkedWorktreeId: {\n type: \"string\",\n description: \"Reassign this task to a different worktree\",\n },\n linkedBeliefId: {\n type: \"string\",\n description: \"Link or relink this task to a belief node\",\n },\n linkedQuestionId: {\n type: \"string\",\n description: \"Link or relink this task to a question node\",\n },\n title: { type: \"string\", description: \"Updated task title\" },\n description: {\n type: \"string\",\n description: \"Updated task description\",\n },\n priority: {\n type: \"string\",\n description: \"Updated priority\",\n enum: [\"critical\", \"high\", \"medium\", \"low\"],\n },\n status: {\n type: \"string\",\n description: \"Updated status\",\n enum: [\"todo\", \"in_progress\", \"blocked\", \"done\"],\n },\n },\n required: [\"taskId\"],\n response: {\n description: \"The updated task\",\n fields: {\n taskId: \"string\",\n updatedAt: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\nexport const LIST_TASKS: McpToolContract = {\n name: \"list_tasks\",\n description:\n \"List tasks for a topic or worktree. \" +\n \"Like `git task list` — returns tasks with status, priority, and linked nodes. \" +\n \"Filter by worktree to see tasks for a specific investigation, or by status to find incomplete work.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n linkedWorktreeId: {\n type: \"string\",\n description: \"Filter to tasks linked to this worktree\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status: todo, in_progress, blocked, done\",\n enum: [\"todo\", \"in_progress\", \"blocked\", \"done\"],\n },\n limit: { type: \"number\", description: \"Maximum results (default: 100)\" },\n },\n required: [\"topicId\"],\n response: {\n description: \"List of tasks with metadata\",\n fields: { tasks: \"array of task objects\", count: \"number\" },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// TOPIC TOOLS (git init, git remote)\n// =============================================================================\n\nexport const CREATE_TOPIC: McpToolContract = {\n name: \"create_topic\",\n description:\n \"Create a new topic container for scoping knowledge. \" +\n \"Like `git init` — initializes a new repository for a knowledge domain. \" +\n \"Topics are hierarchical: a deal topic can nest under a theme topic. \" +\n \"Types: domain, theme, deal, strategy, constitution, project, portfolio.\",\n parameters: {\n name: { type: \"string\", description: \"Topic name\" },\n type: {\n type: \"string\",\n description:\n \"Topic type. Validated against schemaEnumConfig category 'topic_type'.\",\n },\n description: { type: \"string\", description: \"What this topic covers\" },\n parentTopicId: {\n type: \"string\",\n description: \"Optional parent topic for nesting\",\n },\n createdBy: { type: \"string\", description: \"Who created this topic\" },\n },\n required: [\"name\", \"type\"],\n response: {\n description: \"The created topic\",\n fields: {\n id: \"string — topic ID\",\n globalId: \"string — globally unique ID\",\n depth: \"number — nesting depth\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const LIST_TOPICS: McpToolContract = {\n name: \"list_topics\",\n description:\n \"List topics, optionally filtered by type or parent. \" +\n \"Like `git remote -v` — shows all knowledge containers with their types and hierarchy.\",\n parameters: {\n type: {\n type: \"string\",\n description: \"Filter by topic type (e.g., 'theme', 'deal')\",\n },\n parentTopicId: {\n type: \"string\",\n description: \"Filter to children of this parent\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status\",\n enum: [\"active\", \"archived\", \"watching\"],\n },\n },\n required: [],\n response: {\n description: \"List of topics with metadata\",\n fields: {\n topics: \"array — { id, name, type, depth, status, parentTopicId }\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_TOPIC: McpToolContract = {\n name: \"get_topic\",\n description:\n \"Get one topic by ID. \" +\n \"Like `git remote show origin` — inspects a single knowledge container in detail.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Canonical topic ID to retrieve\",\n },\n id: {\n type: \"string\",\n description: \"Legacy alias for topicId\",\n },\n },\n required: [],\n response: {\n description: \"Single topic record\",\n fields: {\n topic:\n \"object — { id, globalId, name, type, depth, status, parentTopicId, description }\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_TOPIC: McpToolContract = {\n name: \"update_topic\",\n description:\n \"Update an existing topic's metadata. \" +\n \"Like `git remote set-url` — changes the canonical configuration for a knowledge container without recreating it.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Canonical topic ID to update\",\n },\n id: {\n type: \"string\",\n description: \"Legacy alias for topicId\",\n },\n name: { type: \"string\", description: \"Updated topic name\" },\n description: { type: \"string\", description: \"Updated topic description\" },\n type: {\n type: \"string\",\n description:\n \"Updated topic type. Validated against schemaEnumConfig category 'topic_type'.\",\n },\n ontologyId: {\n type: \"string\",\n description: \"Updated ontology binding\",\n },\n clearOntologyId: {\n type: \"boolean\",\n description: \"Clear the current ontology binding\",\n },\n status: {\n type: \"string\",\n description: \"Updated topic status\",\n enum: [\"active\", \"archived\", \"watching\"],\n },\n visibility: {\n type: \"string\",\n description: \"Updated topic visibility\",\n enum: [\"private\", \"team\", \"firm\", \"external\", \"public\"],\n },\n },\n required: [],\n response: {\n description: \"The updated topic\",\n fields: {\n id: \"string — topic ID\",\n globalId: \"string — globally unique ID\",\n status: \"string — topic lifecycle status\",\n visibility: \"string — topic visibility\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_TOPIC_TREE: McpToolContract = {\n name: \"get_topic_tree\",\n description:\n \"Get the full topic hierarchy from a root. \" +\n \"Like `git log --graph --all` — shows the complete tree of nested topics.\",\n parameters: {\n rootId: { type: \"string\", description: \"Root topic to start from\" },\n maxDepth: {\n type: \"number\",\n description: \"Maximum depth to traverse (default: 5)\",\n },\n },\n required: [\"rootId\"],\n response: {\n description: \"Tree of topics with nesting\",\n fields: { tree: \"array — topics in BFS order with depth and path\" },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// CODING INTELLIGENCE TOOLS (code-grounded knowledge)\n// =============================================================================\n\nexport const GET_CODE_CONTEXT: McpToolContract = {\n name: \"get_code_context\",\n description:\n \"Returns code-grounded beliefs, contracts, migration states, and failed attempts anchored to a specific file or function path. \" +\n \"Like `git log -- <path>` — filters the knowledge graph to nodes anchored to a file path via metadata.codeAnchors. \" +\n \"Results are separated by coding belief type: decisions, contracts, migrations, patterns, deprecations, and failures.\",\n parameters: {\n filePath: {\n type: \"string\",\n description:\n \"File path to search for (partial matches supported, e.g. 'epistemicBeliefs.ts' or 'convex/epistemicBeliefs.ts')\",\n },\n topicId: {\n type: \"string\",\n description: \"Topic scope (optional, uses default if not provided)\",\n },\n includeFailures: {\n type: \"boolean\",\n description: \"Whether to include failed attempt evidence (default: true)\",\n },\n },\n required: [\"filePath\"],\n response: {\n description: \"Code-anchored beliefs and evidence grouped by type\",\n fields: {\n filePath: \"string — queried path\",\n decisions: \"array — implementation_decision beliefs\",\n contracts: \"array — interface_contract beliefs\",\n migrations: \"array — migration_state beliefs\",\n patterns: \"array — code_pattern beliefs\",\n deprecations: \"array — deprecation_notice beliefs\",\n failures: \"array — failed attempt evidence\",\n totalMatched: \"number\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const GET_CHANGE_HISTORY: McpToolContract = {\n name: \"get_change_history\",\n description:\n \"Returns recent changes and decisions for a file path — the 'why' behind recent code changes. \" +\n \"Like `git log --follow <path>` — shows the evolution of understanding anchored to a specific file. \" +\n \"Searches beliefs and evidence updated recently, sorted by most recent first.\",\n parameters: {\n filePath: { type: \"string\", description: \"File path to get history for\" },\n topicId: { type: \"string\", description: \"Topic scope (optional)\" },\n limit: { type: \"number\", description: \"Max results (default: 10)\" },\n },\n required: [\"filePath\"],\n response: {\n description: \"Recent code-anchored changes sorted by recency\",\n fields: {\n filePath: \"string — queried path\",\n changes:\n \"array — nodes with coding view (nodeId, beliefType, canonicalText, codeAnchors, timestamps)\",\n totalFound: \"number\",\n showing: \"number\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const RECORD_ATTEMPT: McpToolContract = {\n name: \"record_attempt\",\n description:\n \"Log a failed approach as evidence linked to a belief. \" +\n \"Like `git stash` for failed experiments — preserves what was tried so the same mistake isn't repeated. \" +\n \"Creates evidence with metadata.failedApproach=true and metadata.codeAnchors. \" +\n \"The key anti-repetition mechanism: future agents check the failure log before trying new approaches.\",\n parameters: {\n description: {\n type: \"string\",\n description: \"What was attempted and why it failed\",\n },\n filePaths: {\n type: \"array\",\n description: \"File paths involved in the attempt\",\n },\n errorMessage: {\n type: \"string\",\n description: \"Error message or failure reason\",\n },\n linkedBeliefId: {\n type: \"string\",\n description:\n \"Belief this attempt was targeting (creates -0.5 weight edge)\",\n },\n topicId: { type: \"string\", description: \"Topic scope (optional)\" },\n },\n required: [\"description\"],\n response: {\n description: \"The recorded failed attempt evidence node\",\n fields: {\n nodeId: \"string — evidence node ID\",\n edgeId: \"string | null — edge to linked belief\",\n recorded: \"boolean — true\",\n filePaths: \"array — anchored file paths\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\nexport const GET_FAILURE_LOG: McpToolContract = {\n name: \"get_failure_log\",\n description:\n \"Search past failed attempts matching a task description. \" +\n \"Like `git log --grep='FAILED'` — finds evidence of what was tried before and didn't work. \" +\n \"Before trying a new approach, check this log to avoid repeating the same mistake. \" +\n \"Filters to evidence with metadata.failedApproach=true, sorted by recency.\",\n parameters: {\n query: {\n type: \"string\",\n description: \"Description of the task or approach to search for\",\n },\n filePath: {\n type: \"string\",\n description: \"Optional file path to narrow results\",\n },\n topicId: { type: \"string\", description: \"Topic scope (optional)\" },\n limit: { type: \"number\", description: \"Max results (default: 5)\" },\n },\n required: [\"query\"],\n response: {\n description: \"Failed attempts matching the query\",\n fields: {\n query: \"string — search query\",\n failures: \"array — failed attempt evidence with coding view\",\n totalFound: \"number\",\n showing: \"number\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// GRAPH SELF-INTELLIGENCE TOOLS\n// =============================================================================\n\nexport const GET_TOPIC_COVERAGE: McpToolContract = {\n name: \"get_topic_coverage\",\n description:\n \"Returns per-topic belief/question/evidence counts across the topic tree. \" +\n \"Like `git diff --stat` for the knowledge graph — shows coverage density \" +\n \"and empty spots across the topic hierarchy. Use to identify which topics \" +\n \"need more beliefs, which lack questions, and overall graph health.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope ID (optional, uses default if not provided)\",\n },\n includeDescendants: {\n type: \"boolean\",\n description:\n \"Whether to include descendant topics in the coverage report (default: true)\",\n },\n maxDepth: {\n type: \"number\",\n description:\n \"Maximum descendant topic depth for neighborhood expansion. \" +\n \"Defaults to 4 for root/theme scopes, 2 for deeper scopes.\",\n },\n },\n required: [],\n response: {\n description: \"Per-topic coverage metrics and aggregate summary\",\n fields: {\n topics:\n \"array — per-topic { topicId, name, type, depth, beliefs, questions, evidence, coverage }\",\n summary:\n \"object — { totalTopics, coveredTopics, emptyTopics, coveragePercent, totalBeliefs, totalQuestions, totalEvidence }\",\n scopeTopicId: \"string — the root topic used for scoping\",\n },\n },\n ownerModule: \"coverage-intelligence\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const GET_GRAPH_GAPS: McpToolContract = {\n name: \"get_graph_gaps\",\n description:\n \"Identify structural gaps in the knowledge graph — empty topics, beliefs \" +\n \"without questions, beliefs without evidence, and orphan edges. \" +\n \"Like `git fsck` for reasoning coverage — surfaces holes that weaken \" +\n \"the epistemic foundation. Returns prioritized gap list.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope ID (optional, uses default if not provided)\",\n },\n maxDepth: {\n type: \"number\",\n description:\n \"Maximum descendant topic depth for neighborhood expansion (default: 4)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Prioritized list of graph gaps by category\",\n fields: {\n emptyTopics:\n \"array — topics with zero beliefs { topicId, name, type, depth }\",\n beliefsWithoutQuestions:\n \"array — beliefs that have no testing questions { nodeId, canonicalText, topicId }\",\n beliefsWithoutEvidence:\n \"array — beliefs that have no supporting evidence { nodeId, canonicalText, topicId }\",\n summary:\n \"object — { totalGaps, emptyTopicCount, untestedBeliefCount, unsupportedBeliefCount }\",\n scopeTopicId: \"string — the root topic used for scoping\",\n },\n },\n ownerModule: \"coverage-intelligence\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// SESSION INITIALIZATION\n// =============================================================================\n\n// =============================================================================\n// WRITE POLICY (S2-13K Graph Compounding)\n// =============================================================================\n\nexport const MANAGE_WRITE_POLICY: McpToolContract = {\n name: \"manage_write_policy\",\n description:\n \"Manage write policies for MCP mutation tools. \" +\n \"Like `git config` for write permissions — sets per-topic or global \" +\n \"policies that control which roles can mutate the graph.\",\n parameters: {\n action: {\n type: \"string\",\n description:\n \"Action to perform: 'get' (read policies) or 'set' (upsert a policy)\",\n enum: [\"get\", \"set\"],\n },\n topicId: {\n type: \"string\",\n description: \"Topic scope for the policy. Omit for global policies.\",\n },\n role: {\n type: \"string\",\n description:\n \"Role to set policy for (required for 'set'). E.g. 'agent:internal', 'user:analyst'.\",\n },\n permission: {\n type: \"string\",\n description: \"Permission level (required for 'set').\",\n enum: [\"allow\", \"deny\", \"read_only\"],\n },\n maxWritesPerSession: {\n type: \"number\",\n description: \"Optional per-session write limit for this role+scope.\",\n },\n rationale: {\n type: \"string\",\n description: \"Why this policy is being set (audit trail).\",\n },\n },\n required: [\"action\"],\n response: {\n description: \"Policy operation result\",\n fields: {\n action: \"string — get | set\",\n topicId: \"string|null — topic scope or null for global\",\n policies: \"array — (for get) list of matching policies\",\n role: \"string — (for set) role that was updated\",\n permission: \"string — (for set) new permission level\",\n maxWritesPerSession: \"number|null — (for set) session write cap\",\n },\n },\n ownerModule: \"access-control\",\n ontologyPrimitive: \"policy\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// ONTOLOGY TOOLS (ontology lifecycle, version management)\n// =============================================================================\n\nexport const LIST_ONTOLOGIES: McpToolContract = {\n name: \"list_ontologies\",\n description:\n \"List ontology definitions with optional filters. \" +\n \"Like `git remote -v` for ontologies — shows all registered ontology definitions \" +\n \"with their tier, status, and tenant scope.\",\n parameters: {\n tenantId: {\n type: \"string\",\n description: \"Filter by tenant ID. Omit for platform-level ontologies.\",\n },\n tier: {\n type: \"string\",\n description: \"Filter by tier\",\n enum: [\"platform\", \"pack\", \"tenant\"],\n },\n status: {\n type: \"string\",\n description: \"Filter by status\",\n enum: [\"draft\", \"active\", \"deprecated\", \"archived\"],\n },\n },\n required: [],\n response: {\n description: \"Array of ontology definitions\",\n fields: {\n ontologies:\n \"array — ontology definitions with id, ontologyKey, name, tier, status\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const GET_ONTOLOGY: McpToolContract = {\n name: \"get_ontology\",\n description:\n \"Get a single ontology definition by ID or ontologyKey. \" +\n \"Like `git show` for an ontology — returns the definition metadata plus the latest \" +\n \"published version with entity types and edge types.\",\n parameters: {\n id: {\n type: \"string\",\n description: \"Ontology definition ID (Convex document ID)\",\n },\n ontologyKey: {\n type: \"string\",\n description:\n \"Ontology key (e.g., 'investment-ontology'). Alternative to id.\",\n },\n tenantId: {\n type: \"string\",\n description: \"Tenant scope for key lookup. Omit for platform-level.\",\n },\n },\n required: [],\n response: {\n description: \"Ontology definition with latest published version\",\n fields: {\n id: \"string — definition ID\",\n ontologyKey: \"string — unique key\",\n name: \"string — display name\",\n publishedVersion:\n \"object|null — latest published version with entityTypes and edgeTypes\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const APPLY_ONTOLOGY: McpToolContract = {\n name: \"apply_ontology\",\n description:\n \"Bind an ontology definition directly to a topic. \" +\n \"Like `git checkout` for a domain vocabulary — applies an ontology to a topic so the topic \" +\n \"and its descendants inherit the configured entity and edge schema.\",\n parameters: {\n ontologyId: {\n type: \"string\",\n description: \"Canonical ontology identifier to bind\",\n },\n topicId: {\n type: \"string\",\n description: \"Canonical topic identifier to receive the binding\",\n },\n },\n required: [\"ontologyId\", \"topicId\"],\n response: {\n description: \"Ontology binding summary\",\n fields: {\n applied: \"boolean — true when the binding was written\",\n source: \"string — always 'direct' for an explicit bind\",\n ontologyId: \"string — canonical ontology ID\",\n ontologyKey: \"string — ontology key\",\n topicId: \"string — canonical topic ID\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const MATCH_ENTITY_TYPE: McpToolContract = {\n name: \"match_entity_type\",\n description:\n \"Classify free text against the effective ontology vocabulary. \" +\n \"Like `git grep` for ontology types — ranks the most likely entity types for the supplied text \" +\n \"using the topic-bound or explicitly selected ontology.\",\n parameters: {\n text: {\n type: \"string\",\n description: \"Free text to classify against ontology entity types\",\n },\n topicId: {\n type: \"string\",\n description:\n \"Canonical topic ID used to resolve the effective ontology when ontologyId is omitted\",\n },\n ontologyId: {\n type: \"string\",\n description:\n \"Optional ontology definition ID to match against instead of the topic-bound ontology\",\n },\n minScore: {\n type: \"number\",\n description: \"Optional lower similarity bound for returned matches\",\n },\n limit: {\n type: \"number\",\n description: \"Optional maximum number of ranked matches to return\",\n },\n },\n required: [\"text\"],\n response: {\n description: \"Ranked ontology entity type matches\",\n fields: {\n matches:\n \"array — ranked entity type matches with score, entityType, label, and optional description\",\n ontologyId: \"string|null — ontology used for matching\",\n topicId: \"string|null — topic scope used for ontology resolution\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const CREATE_ONTOLOGY: McpToolContract = {\n name: \"create_ontology\",\n description:\n \"Create a new ontology definition. \" +\n \"Like `git init` for a domain vocabulary — creates a named, versioned container for \" +\n \"entity types and edge types. Starts in 'draft' status.\",\n parameters: {\n ontologyKey: {\n type: \"string\",\n description:\n \"Unique key (lowercase, hyphens, e.g., 'investment-ontology')\",\n },\n name: { type: \"string\", description: \"Human-readable name\" },\n description: { type: \"string\", description: \"What this ontology covers\" },\n tenantId: {\n type: \"string\",\n description: \"Tenant scope. Omit for platform-level.\",\n },\n tier: {\n type: \"string\",\n description: \"Ontology tier\",\n enum: [\"platform\", \"pack\", \"tenant\"],\n },\n parentOntologyId: {\n type: \"string\",\n description: \"Parent ontology ID for layered composition\",\n },\n },\n required: [\"ontologyKey\", \"name\", \"tier\"],\n response: {\n description: \"Created ontology definition\",\n fields: {\n id: \"string — new definition ID\",\n ontologyKey: \"string — normalized key\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const UPDATE_ONTOLOGY: McpToolContract = {\n name: \"update_ontology\",\n description:\n \"Update an ontology definition's metadata (name, description, status). \" +\n \"Like `git config` for an ontology — updates mutable fields on the definition. \" +\n \"Only allowed while the ontology is in draft or active status.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology definition ID\" },\n name: { type: \"string\", description: \"New display name\" },\n description: { type: \"string\", description: \"New description\" },\n status: {\n type: \"string\",\n description: \"New status\",\n enum: [\"draft\", \"active\", \"deprecated\"],\n },\n },\n required: [\"id\"],\n response: {\n description: \"Update confirmation\",\n fields: { success: \"boolean\" },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\nexport const ARCHIVE_ONTOLOGY: McpToolContract = {\n name: \"archive_ontology\",\n description:\n \"Archive an ontology definition. \" +\n \"Like `git rm` for an ontology — soft-deletes the definition. \" +\n \"Archived ontologies are preserved in history but no longer active.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology definition ID to archive\" },\n },\n required: [\"id\"],\n response: {\n description: \"Archive confirmation\",\n fields: { success: \"boolean\" },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\nexport const CREATE_ONTOLOGY_VERSION: McpToolContract = {\n name: \"create_ontology_version\",\n description:\n \"Create a new version snapshot for an ontology definition. \" +\n \"Like `git commit` for ontology content — captures entity types and edge types \" +\n \"in a versioned snapshot. Starts in 'draft' status. Publish to freeze.\",\n parameters: {\n ontologyId: {\n type: \"string\",\n description: \"Parent ontology definition ID\",\n },\n version: {\n type: \"string\",\n description: \"Semantic version string (X.Y.Z format)\",\n },\n entityTypes: {\n type: \"array\",\n description:\n \"Array of entity type definitions: [{ value, label, description?, schema?, subtypes? }]\",\n },\n edgeTypes: {\n type: \"array\",\n description:\n \"Array of edge type definitions: [{ value, label, description?, sourceTypes?, targetTypes?, constraintSeverity? }]\",\n },\n releaseNotes: {\n type: \"string\",\n description: \"Optional release notes for this version\",\n },\n },\n required: [\"ontologyId\", \"version\", \"entityTypes\", \"edgeTypes\"],\n response: {\n description: \"Created version\",\n fields: {\n id: \"string — new version ID\",\n version: \"string — version string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const PUBLISH_ONTOLOGY_VERSION: McpToolContract = {\n name: \"publish_ontology_version\",\n description:\n \"Publish a draft ontology version — freezes it permanently. \" +\n \"Like `git tag` for an ontology release — the version becomes immutable after publish. \" +\n \"If the parent definition is still in 'draft', promotes it to 'active'.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology version ID to publish\" },\n },\n required: [\"id\"],\n response: {\n description: \"Publish confirmation\",\n fields: {\n success: \"boolean\",\n publishedAt: \"number — timestamp\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const DEPRECATE_ONTOLOGY_VERSION: McpToolContract = {\n name: \"deprecate_ontology_version\",\n description:\n \"Deprecate a published ontology version. \" +\n \"Like `git tag -d` for an ontology release — marks the version as deprecated. \" +\n \"Only published versions can be deprecated.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology version ID to deprecate\" },\n },\n required: [\"id\"],\n response: {\n description: \"Deprecation confirmation\",\n fields: { success: \"boolean\" },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\nexport const RESOLVE_EFFECTIVE_ONTOLOGY: McpToolContract = {\n name: \"resolve_effective_ontology\",\n description:\n \"Resolve the effective ontology by composing the parent chain. \" +\n \"Like `git merge --squash` for ontology layers — walks parentOntologyId chain \" +\n \"(max depth 3) and merges entity/edge types additively from root (platform) to leaf (tenant).\",\n parameters: {\n ontologyId: {\n type: \"string\",\n description: \"Ontology definition ID to resolve from\",\n },\n },\n required: [\"ontologyId\"],\n response: {\n description: \"Merged ontology with composed entity and edge types\",\n fields: {\n entityTypes: \"array — merged entity types from all layers\",\n edgeTypes: \"array — merged edge types from all layers\",\n layers: \"array — ontology keys in composition order\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// TOOL REGISTRY\n// =============================================================================\n\n/** All MCP tool contracts, indexed by name */\nexport const MCP_TOOL_CONTRACTS: Record<string, McpToolContract> = {\n // Belief lifecycle (commit, amend, fork, archive)\n create_belief: CREATE_BELIEF,\n get_belief: GET_BELIEF,\n refine_belief: REFINE_BELIEF,\n modulate_confidence: MODULATE_CONFIDENCE,\n fork_belief: FORK_BELIEF,\n archive_belief: ARCHIVE_BELIEF,\n create_epistemic_contract: CREATE_EPISTEMIC_CONTRACT,\n // Evidence (commit)\n create_evidence: CREATE_EVIDENCE,\n get_evidence: GET_EVIDENCE,\n list_evidence: LIST_EVIDENCE,\n link_evidence: LINK_EVIDENCE,\n add_evidence: ADD_EVIDENCE,\n // Contradictions (merge conflict)\n flag_contradiction: FLAG_CONTRADICTION,\n // Lens lifecycle (workspace-scoped operational frames)\n create_lens: CREATE_LENS,\n list_lenses: LIST_LENSES,\n apply_lens_to_topic: APPLY_LENS_TO_TOPIC,\n remove_lens_from_topic: REMOVE_LENS_FROM_TOPIC,\n // Worktree lifecycle (git worktree add → merge → push → pull request)\n add_worktree: ADD_WORKTREE,\n merge: MERGE,\n push: PUSH,\n open_pull_request: OPEN_PULL_REQUEST,\n // Lineage and audit (log, blame)\n query_lineage: QUERY_LINEAGE,\n get_confidence_history: GET_CONFIDENCE_HISTORY,\n get_audit_trail: GET_AUDIT_TRAIL,\n // Graph queries (traverse, search, bisect, entity impact)\n traverse_graph: TRAVERSE_GRAPH,\n get_graph_neighborhood: GET_GRAPH_NEIGHBORHOOD,\n trace_entity_impact: TRACE_ENTITY_IMPACT,\n search_beliefs: SEARCH_BELIEFS,\n search_resources: SEARCH_RESOURCES,\n find_contradictions: FIND_CONTRADICTIONS,\n bisect_confidence: BISECT_CONFIDENCE,\n // Edges (commit)\n create_edge: CREATE_EDGE,\n // Judgments (tag)\n record_judgment: RECORD_JUDGMENT,\n // Graph intelligence (showcase)\n detect_confirmation_bias: DETECT_CONFIRMATION_BIAS,\n get_graph_structure_analysis: GET_GRAPH_STRUCTURE_ANALYSIS,\n get_falsification_questions: GET_FALSIFICATION_QUESTIONS,\n // Sources & research (showcase)\n search_sources: SEARCH_SOURCES,\n execute_deep_research: EXECUTE_DEEP_RESEARCH,\n // Evidence operations (workhorse)\n search_evidence: SEARCH_EVIDENCE,\n link_evidence_to_belief: LINK_EVIDENCE_TO_BELIEF,\n // Answer lifecycle (L2 question responses)\n create_answer: CREATE_ANSWER,\n get_answer: GET_ANSWER,\n // Question operations (workhorse)\n create_question: CREATE_QUESTION,\n get_question: GET_QUESTION,\n refine_question: REFINE_QUESTION,\n list_questions: LIST_QUESTIONS,\n answer_question: ANSWER_QUESTION,\n update_question_status: UPDATE_QUESTION_STATUS,\n archive_question: ARCHIVE_QUESTION,\n link_evidence_to_question: LINK_EVIDENCE_TO_QUESTION,\n get_high_priority_questions: GET_HIGH_PRIORITY_QUESTIONS,\n find_missing_questions: FIND_MISSING_QUESTIONS,\n // Listing & query (workhorse)\n list_beliefs: LIST_BELIEFS,\n list_worktrees: LIST_WORKTREES,\n list_all_worktrees: LIST_ALL_WORKTREES,\n activate_worktree: ACTIVATE_WORKTREE,\n update_worktree_targets: UPDATE_WORKTREE_TARGETS,\n update_worktree_metadata: UPDATE_WORKTREE_METADATA,\n identity_whoami: IDENTITY_WHOAMI,\n compile_context: COMPILE_CONTEXT,\n // Policy / ACL (workhorse)\n check_permission: CHECK_PERMISSION,\n filter_by_permission: FILTER_BY_PERMISSION,\n // Write policy (S2-13K Graph Compounding)\n manage_write_policy: MANAGE_WRITE_POLICY,\n // Observation context (workhorse)\n ingest_observation: INGEST_OBSERVATION,\n get_observation_context: GET_OBSERVATION_CONTEXT,\n // Task lifecycle (workhorse)\n create_task: CREATE_TASK,\n complete_task: COMPLETE_TASK,\n update_task: UPDATE_TASK,\n list_tasks: LIST_TASKS,\n // Topic lifecycle (init, remote)\n create_topic: CREATE_TOPIC,\n list_topics: LIST_TOPICS,\n get_topic: GET_TOPIC,\n update_topic: UPDATE_TOPIC,\n get_topic_tree: GET_TOPIC_TREE,\n // Coding intelligence (code-grounded knowledge)\n get_code_context: GET_CODE_CONTEXT,\n get_change_history: GET_CHANGE_HISTORY,\n record_attempt: RECORD_ATTEMPT,\n get_failure_log: GET_FAILURE_LOG,\n // Graph self-intelligence (coverage, gaps)\n get_topic_coverage: GET_TOPIC_COVERAGE,\n get_graph_gaps: GET_GRAPH_GAPS,\n // Ontology lifecycle (definition CRUD, version management)\n list_ontologies: LIST_ONTOLOGIES,\n get_ontology: GET_ONTOLOGY,\n apply_ontology: APPLY_ONTOLOGY,\n match_entity_type: MATCH_ENTITY_TYPE,\n create_ontology: CREATE_ONTOLOGY,\n update_ontology: UPDATE_ONTOLOGY,\n archive_ontology: ARCHIVE_ONTOLOGY,\n create_ontology_version: CREATE_ONTOLOGY_VERSION,\n publish_ontology_version: PUBLISH_ONTOLOGY_VERSION,\n deprecate_ontology_version: DEPRECATE_ONTOLOGY_VERSION,\n resolve_effective_ontology: RESOLVE_EFFECTIVE_ONTOLOGY,\n};\n\n/** Tool names that MUST include git-semantic language in descriptions */\nexport const GIT_SEMANTIC_REQUIRED_TOOLS = Object.keys(MCP_TOOL_CONTRACTS);\n\n/**\n * Lint validation: every tool description must contain \"Like `git\" or \"Like a `git\"\n * or reference a git operation in the first sentence.\n */\nexport function validateGitSemantics(tool: McpToolContract): {\n valid: boolean;\n reason?: string;\n} {\n const desc = tool.description;\n const hasGitReference =\n /Like (`git |a `git |a merge conflict|opening a `git)/.test(desc);\n if (!hasGitReference) {\n return {\n valid: false,\n reason: `Tool \"${tool.name}\" description missing git-semantic reference`,\n };\n }\n return { valid: true };\n}\n","import type { GatewayClientConfig, McpToolContract } from \"@lucern/sdk\";\nimport type { McpObservationStore } from \"./observation-store\";\n\nexport type McpToolName = keyof typeof import(\"@lucern/sdk\").MCP_TOOL_CONTRACTS;\n\nexport type McpTextContent = {\n type: \"text\";\n text: string;\n};\n\nexport type McpToolResult = {\n content: McpTextContent[];\n isError?: boolean;\n};\n\nexport type McpToolHandler = (\n params: Record<string, unknown>,\n contract: McpToolContract\n) => Promise<McpToolResult>;\n\nexport type McpHandlerContext = {\n sdkConfig: GatewayClientConfig;\n observationStore?: McpObservationStore;\n onObservationIngested?: (topicId: string) => Promise<void> | void;\n};\n\nexport class McpHandlerError extends Error {\n readonly code: string;\n readonly status: number;\n\n constructor(message: string, code = \"INVALID_REQUEST\", status = 400) {\n super(message);\n this.name = \"McpHandlerError\";\n this.code = code;\n this.status = status;\n }\n}\n","import type { McpToolContract } from \"@lucern/sdk\";\nimport { LucernApiError } from \"@lucern/sdk\";\nimport {\n McpHandlerError,\n type McpToolHandler,\n type McpToolResult,\n} from \"./types\";\n\nfunction isMissing(value: unknown): boolean {\n if (value === undefined || value === null) {\n return true;\n }\n if (typeof value === \"string\") {\n return value.trim().length === 0;\n }\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return false;\n}\n\nexport function readString(\n params: Record<string, unknown>,\n key: string,\n options: { required: true }\n): string;\nexport function readString(\n params: Record<string, unknown>,\n key: string,\n options?: { required?: boolean }\n): string | undefined;\nexport function readString(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean } = {}\n): string | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return;\n }\n if (typeof value !== \"string\") {\n throw new McpHandlerError(`Expected string parameter: ${key}`);\n }\n const trimmed = value.trim();\n if (!trimmed && options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return trimmed || undefined;\n}\n\nexport function readNumber(\n params: Record<string, unknown>,\n key: string,\n options: { required: true }\n): number;\nexport function readNumber(\n params: Record<string, unknown>,\n key: string,\n options?: { required?: boolean }\n): number | undefined;\nexport function readNumber(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean } = {}\n): number | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new McpHandlerError(`Expected numeric parameter: ${key}`);\n }\n return value;\n}\n\nexport function readBoolean(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean } = {}\n): boolean | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return;\n }\n if (typeof value !== \"boolean\") {\n throw new McpHandlerError(`Expected boolean parameter: ${key}`);\n }\n return value;\n}\n\nexport function readStringArray(\n params: Record<string, unknown>,\n key: string\n): string[] | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new McpHandlerError(`Expected array parameter: ${key}`);\n }\n const values = value\n .map((entry) => (typeof entry === \"string\" ? entry.trim() : \"\"))\n .filter((entry) => entry.length > 0);\n return values.length > 0 ? values : undefined;\n}\n\nexport function readTopicId(\n params: Record<string, unknown>,\n options: { required: true }\n): string;\nexport function readTopicId(\n params: Record<string, unknown>,\n options?: { required?: boolean }\n): string | undefined;\nexport function readTopicId(\n params: Record<string, unknown>,\n options: { required?: boolean } = {}\n): string | undefined {\n const value = params.topicId;\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(\"Missing required parameter: topicId\");\n }\n return;\n }\n if (typeof value !== \"string\") {\n throw new McpHandlerError(\"Expected string parameter: topicId\");\n }\n const trimmed = value.trim();\n if (!trimmed && options.required) {\n throw new McpHandlerError(\"Missing required parameter: topicId\");\n }\n return trimmed || undefined;\n}\n\nexport function toMcpResult(payload: unknown): McpToolResult {\n return {\n content: [{ type: \"text\", text: JSON.stringify(payload) }],\n };\n}\n\nexport function toMcpError(error: unknown): McpToolResult {\n if (error instanceof McpHandlerError) {\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n code: error.code,\n status: error.status,\n message: error.message,\n }),\n },\n ],\n };\n }\n\n if (error instanceof LucernApiError) {\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n code: error.code,\n status: error.status,\n message: error.message,\n invariant: error.invariant ?? null,\n suggestion: error.suggestion ?? null,\n correlationId: error.correlationId,\n policyTraceId: error.policyTraceId,\n }),\n },\n ],\n };\n }\n\n const message =\n error instanceof Error ? error.message : \"Tool execution failed.\";\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n code: \"INTERNAL_ERROR\",\n status: 500,\n message,\n }),\n },\n ],\n };\n}\n\nexport function createNotImplementedHandler(name: string): McpToolHandler {\n return async () =>\n toMcpError(\n new McpHandlerError(\n `Tool not implemented yet: ${name}`,\n \"NOT_IMPLEMENTED\",\n 501\n )\n );\n}\n\nfunction validateRequired(\n params: Record<string, unknown>,\n contract: McpToolContract\n): void {\n for (const key of contract.required) {\n if (isMissing(params[key])) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n }\n}\n\nexport function contractToHandler(\n contract: McpToolContract,\n executor: (params: Record<string, unknown>) => Promise<unknown>\n): McpToolHandler {\n return async (params) => {\n try {\n validateRequired(params, contract);\n const payload = await executor(params);\n return toMcpResult(payload);\n } catch (error) {\n return toMcpError(error);\n }\n };\n}\n","import {\n createBeliefsClient,\n createGraphClient,\n MCP_TOOL_CONTRACTS,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createBeliefHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const beliefs = createBeliefsClient(context.sdkConfig);\n const graph = createGraphClient(context.sdkConfig);\n\n return {\n create_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.create_belief,\n async (params) => {\n const result = await beliefs.createBelief({\n canonicalText: readString(params, \"canonicalText\", {\n required: true,\n })!,\n topicId: readTopicId(params, { required: true })!,\n layer: readString(params, \"layer\") as\n | \"L1\"\n | \"L2\"\n | \"L3\"\n | \"L4\"\n | undefined,\n domain: readString(params, \"domain\"),\n subtype: readString(params, \"nodeType\"),\n });\n return {\n nodeId: result.data.nodeId,\n globalId: result.data.globalId,\n status: result.data.status ?? \"unscored\",\n };\n }\n ),\n\n refine_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.refine_belief,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const canonicalText = readString(params, \"canonicalText\", {\n required: true,\n })!;\n const rationale = readString(params, \"rationale\");\n const result = await graph.updateNode({\n nodeId,\n canonicalText,\n metadata: rationale\n ? {\n lastRefinementRationale: rationale,\n }\n : undefined,\n });\n return {\n nodeId: (result.data as { nodeId?: string }).nodeId ?? nodeId,\n canonicalText:\n (result.data as { canonicalText?: string }).canonicalText ??\n canonicalText,\n updatedAt: Date.now(),\n };\n }\n ),\n\n modulate_confidence: contractToHandler(\n MCP_TOOL_CONTRACTS.modulate_confidence,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const result = await beliefs.modulateConfidence(nodeId, {\n confidence: readNumber(params, \"confidence\", { required: true })!,\n trigger: readString(params, \"trigger\", { required: true }) as\n | \"evidence_added\"\n | \"contradiction_detected\"\n | \"merge_outcome\"\n | \"manual\"\n | \"decay\",\n rationale: readString(params, \"rationale\", { required: true })!,\n });\n return {\n nodeId,\n newConfidence:\n (result.data as { newConfidence?: number; confidence?: number })\n .newConfidence ??\n (result.data as { confidence?: number }).confidence ??\n readNumber(params, \"confidence\", { required: true }),\n previousConfidence:\n (result.data as { previousConfidence?: number | null })\n .previousConfidence ?? null,\n trigger: readString(params, \"trigger\", { required: true }),\n };\n }\n ),\n\n fork_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.fork_belief,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const forkReason = readString(params, \"forkReason\", {\n required: true,\n }) as\n | \"refinement\"\n | \"contradiction_response\"\n | \"scope_change\"\n | \"confidence_collapse\"\n | \"manual\";\n const result = await beliefs.forkBelief(nodeId, {\n newFormulation: readString(params, \"newFormulation\", {\n required: true,\n })!,\n forkReason,\n });\n return {\n nodeId: result.data.nodeId,\n parentNodeId: result.data.parentNodeId ?? nodeId,\n forkReason: result.data.forkReason ?? forkReason,\n };\n }\n ),\n\n archive_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.archive_belief,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const rationale = readString(params, \"rationale\");\n const result = await graph.updateNode({\n nodeId,\n status: \"archived\",\n metadata: rationale\n ? {\n archiveRationale: rationale,\n }\n : undefined,\n });\n return {\n nodeId: (result.data as { nodeId?: string }).nodeId ?? nodeId,\n status: \"archived\",\n };\n }\n ),\n };\n}\n","import { createContextClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readNumber,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createContextHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const compiler = createContextClient(context.sdkConfig);\n\n return {\n compile_context: contractToHandler(\n MCP_TOOL_CONTRACTS.compile_context,\n async (params) => {\n const response = await compiler.compile(\n readTopicId(params, { required: true })!,\n {\n ...(readString(params, \"query\")\n ? { query: readString(params, \"query\") }\n : {}),\n ...(readNumber(params, \"budget\") !== undefined\n ? { budget: readNumber(params, \"budget\") }\n : {}),\n ...(readString(params, \"ranking\")\n ? {\n ranking: readString(params, \"ranking\") as\n | \"hybrid_v1\"\n | \"weighted_v1\"\n | undefined,\n }\n : {}),\n ...(readNumber(params, \"limit\") !== undefined\n ? { limit: readNumber(params, \"limit\") }\n : {}),\n ...(readNumber(params, \"maxDepth\") !== undefined\n ? { maxDepth: readNumber(params, \"maxDepth\") }\n : {}),\n ...(readBoolean(params, \"includeEntities\") !== undefined\n ? { includeEntities: readBoolean(params, \"includeEntities\") }\n : {}),\n }\n );\n\n return response.data;\n }\n ),\n };\n}\n","import { createLucernClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport { contractToHandler, readString, readTopicId } from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createContradictionHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n flag_contradiction: contractToHandler(\n MCP_TOOL_CONTRACTS.flag_contradiction,\n async (params) => {\n const beliefA = readString(params, \"beliefA\", { required: true })!;\n const beliefB = readString(params, \"beliefB\", { required: true })!;\n const description = readString(params, \"description\", {\n required: true,\n })!;\n const topicId = readTopicId(params, { required: true })!;\n const severity = readString(params, \"severity\") ?? \"medium\";\n const defeatType = readString(params, \"defeatType\") ?? \"rebuts\";\n\n const contradiction = await lucern.contradictions.flag({\n beliefA,\n beliefB,\n description,\n topicId,\n severity,\n defeatType,\n });\n\n return {\n contradictionId: contradiction.contradictionId,\n status: contradiction.status,\n beliefA: contradiction.beliefA,\n beliefB: contradiction.beliefB,\n };\n }\n ),\n };\n}\n","import { createLucernClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport { contractToHandler, readNumber, readString } from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createEdgeHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n create_edge: contractToHandler(\n MCP_TOOL_CONTRACTS.create_edge,\n async (params) => {\n const sourceId = readString(params, \"sourceId\", { required: true })!;\n const targetId = readString(params, \"targetId\", { required: true })!;\n const edgeType = readString(params, \"edgeType\", { required: true })!;\n const confidence = readNumber(params, \"confidence\");\n const weight = readNumber(params, \"weight\");\n const contextText =\n readString(params, \"context\") ?? readString(params, \"reasoning\");\n\n const edge = await lucern.edges.create({\n sourceId,\n targetId,\n edgeType,\n confidence,\n weight,\n context: contextText,\n });\n\n return {\n globalId: edge.globalId ?? edge.edgeId ?? \"\",\n edgeType: edge.edgeType ?? edgeType,\n fromLayer: edge.fromLayer ?? \"unknown\",\n toLayer: edge.toLayer ?? \"unknown\",\n };\n }\n ),\n };\n}\n","import {\n createLucernClient,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nfunction readMetadata(\n params: Record<string, unknown>\n): JsonObject | undefined {\n const metadata = params.metadata;\n return metadata && typeof metadata === \"object\" && !Array.isArray(metadata)\n ? (metadata as JsonObject)\n : undefined;\n}\n\nexport function createEvidenceHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n create_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.create_evidence,\n async (params) => {\n const response = await lucern.evidence.create({\n topicId: readTopicId(params, { required: true }),\n text: readString(params, \"text\", { required: true }),\n source: readString(params, \"source\"),\n targetId: readString(params, \"targetId\"),\n weight: readNumber(params, \"weight\"),\n metadata: readMetadata(params),\n title: readString(params, \"title\"),\n content: readString(params, \"content\"),\n contentType: readString(params, \"contentType\"),\n kind: readString(params, \"kind\"),\n });\n return response.data;\n }\n ),\n\n get_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.get_evidence,\n async (params) => {\n const response = await lucern.evidence.get(\n readString(params, \"id\", { required: true })\n );\n return response.data;\n }\n ),\n\n list_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.list_evidence,\n async (params) => {\n const response = await lucern.evidence.list({\n topicId: readTopicId(params),\n targetId: readString(params, \"targetId\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n return response.data;\n }\n ),\n\n link_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.link_evidence,\n async (params) => {\n const response = await lucern.evidence.link({\n evidenceId: readString(params, \"evidenceId\", { required: true }),\n targetId: readString(params, \"targetId\", { required: true }),\n weight: readNumber(params, \"weight\"),\n rationale: readString(params, \"rationale\"),\n });\n return response.data;\n }\n ),\n\n search_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.search_evidence,\n async (params) => {\n const response = await lucern.evidence.search({\n q:\n readString(params, \"q\") ??\n readString(params, \"query\", { required: true }),\n topicId: readTopicId(params),\n targetId: readString(params, \"targetId\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n return response.data;\n }\n ),\n\n add_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.add_evidence,\n async (params) => {\n return lucern.evidence.add({\n canonicalText: readString(params, \"canonicalText\", { required: true }),\n topicId: readTopicId(params, { required: true }),\n sourceUrl: readString(params, \"sourceUrl\"),\n supports: {\n nodeId: readString(params, \"targetNodeId\", { required: true }),\n weight: readNumber(params, \"weight\") ?? 1,\n reasoning: readString(params, \"reasoning\"),\n },\n title: readString(params, \"title\"),\n content: readString(params, \"content\"),\n contentType: readString(params, \"contentType\"),\n metadata: readMetadata(params),\n });\n }\n ),\n\n link_evidence_to_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.link_evidence_to_belief,\n async (params) => {\n return lucern.evidence.linkToBelief({\n evidenceId: readString(params, \"evidenceId\", { required: true }),\n beliefId: readString(params, \"beliefId\", { required: true }),\n weight: readNumber(params, \"weight\", { required: true }),\n rationale: readString(params, \"rationale\"),\n });\n }\n ),\n };\n}\n","import {\n createAuditClient,\n createGraphClient,\n createLucernClient,\n createPolicyClient,\n MCP_TOOL_CONTRACTS,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\ntype NodeLike = {\n nodeId?: string;\n canonicalText?: string;\n status?: string;\n confidence?: number | null;\n contradictionCount?: number;\n metadata?: Record<string, unknown> | null;\n [key: string]: unknown;\n};\n\ntype EdgeLike = {\n edgeId?: string;\n fromNodeId?: string;\n toNodeId?: string;\n edgeType?: string;\n [key: string]: unknown;\n};\n\ntype AuditEntry = {\n action?: string;\n actor?: string;\n timestamp?: number;\n before?: unknown;\n after?: unknown;\n rationale?: string;\n details?: unknown;\n [key: string]: unknown;\n};\n\nfunction asNodeArray(data: unknown): NodeLike[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is NodeLike => Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as NodeLike];\n }\n return [];\n}\n\nfunction asEdgeArray(data: unknown): EdgeLike[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is EdgeLike => Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as EdgeLike];\n }\n return [];\n}\n\nfunction asAuditArray(data: unknown): AuditEntry[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is AuditEntry =>\n Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as AuditEntry];\n }\n return [];\n}\n\nfunction normalizeBeliefStatus(status: string | undefined): string {\n if (!status) {\n return \"unscored\";\n }\n if (status === \"unscored\" || status === \"scored\" || status === \"archived\") {\n return status;\n }\n if (status === \"active\" || status === \"in_evaluation\") {\n return \"unscored\";\n }\n if (status === \"challenged\" || status === \"validated\") {\n return \"scored\";\n }\n return \"unscored\";\n}\n\nfunction confidenceFromNode(node: NodeLike): number {\n if (typeof node.confidence === \"number\") {\n return node.confidence;\n }\n if (typeof node.metadata?.confidence === \"number\") {\n return node.metadata.confidence;\n }\n return 0;\n}\n\nexport function createGraphHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const graph = createGraphClient(context.sdkConfig);\n const lucern = createLucernClient(context.sdkConfig);\n const audit = createAuditClient(context.sdkConfig);\n const policy = createPolicyClient(context.sdkConfig);\n\n const isTopicReadable = async (topicId: string): Promise<boolean> => {\n const check = await policy.checkPermission({\n topicId,\n permission: \"read\",\n });\n return check.data?.allowed === true;\n };\n\n const getConfidenceEntries = async (nodeId: string) => {\n const events = await audit.listEvents({\n action: \"modulate_confidence\",\n limit: 500,\n });\n const entries = asAuditArray(events.data).filter((entry) => {\n const serialized = JSON.stringify(entry);\n return serialized.includes(nodeId);\n });\n return entries.map((entry) => ({\n confidence:\n typeof (entry.after as { confidence?: unknown })?.confidence ===\n \"number\"\n ? ((entry.after as { confidence: number }).confidence as number)\n : null,\n trigger:\n typeof (entry.details as { trigger?: unknown })?.trigger === \"string\"\n ? ((entry.details as { trigger: string }).trigger as string)\n : \"manual\",\n rationale:\n typeof entry.rationale === \"string\"\n ? entry.rationale\n : \"No rationale recorded.\",\n timestamp:\n typeof entry.timestamp === \"number\" ? entry.timestamp : Date.now(),\n userId: typeof entry.actor === \"string\" ? entry.actor : \"unknown\",\n }));\n };\n\n return {\n query_lineage: contractToHandler(\n MCP_TOOL_CONTRACTS.query_lineage,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const depth = readNumber(params, \"depth\") ?? 5;\n const [parentEdgesResponse, childEdgesResponse] = await Promise.all([\n graph.queryEdges({\n toNodeId: nodeId,\n edgeType: \"supersedes\",\n limit: depth * 4,\n }),\n graph.queryEdges({\n fromNodeId: nodeId,\n edgeType: \"supersedes\",\n limit: depth * 4,\n }),\n ]);\n const parentEdges = asEdgeArray(parentEdgesResponse.data);\n const childEdges = asEdgeArray(childEdgesResponse.data);\n const chain = [\n { nodeId, relation: \"self\" },\n ...parentEdges.map((edge) => ({\n nodeId: edge.fromNodeId ?? \"\",\n relation: \"ancestor\",\n })),\n ];\n return {\n chain: chain.slice(0, depth + 1),\n forkTree: {\n nodeId,\n parentCount: parentEdges.length,\n childCount: childEdges.length,\n children: childEdges.map((edge) => edge.toNodeId ?? \"\"),\n },\n depth,\n };\n }\n ),\n\n get_confidence_history: contractToHandler(\n MCP_TOOL_CONTRACTS.get_confidence_history,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const entries = await getConfidenceEntries(nodeId);\n return { entries };\n }\n ),\n\n get_audit_trail: contractToHandler(\n MCP_TOOL_CONTRACTS.get_audit_trail,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const limit = readNumber(params, \"limit\") ?? 50;\n const events = await audit.listEvents({ limit: Math.max(1, limit) });\n const entries = asAuditArray(events.data)\n .filter((entry) => JSON.stringify(entry).includes(nodeId))\n .slice(0, limit)\n .map((entry) => ({\n action: entry.action ?? \"unknown\",\n actor: entry.actor ?? \"unknown\",\n timestamp:\n typeof entry.timestamp === \"number\"\n ? entry.timestamp\n : Date.now(),\n before: entry.before ?? null,\n after: entry.after ?? null,\n rationale:\n typeof entry.rationale === \"string\"\n ? entry.rationale\n : \"No rationale recorded.\",\n }));\n return { entries };\n }\n ),\n\n traverse_graph: contractToHandler(\n MCP_TOOL_CONTRACTS.traverse_graph,\n async (params) => {\n const response = await graph.traverse({\n startNode: readString(params, \"startNode\", { required: true })!,\n direction: readString(params, \"direction\"),\n maxDepth: readNumber(params, \"maxDepth\"),\n topicId: readTopicId(params),\n });\n return response.data;\n }\n ),\n\n get_graph_neighborhood: contractToHandler(\n MCP_TOOL_CONTRACTS.get_graph_neighborhood,\n async (params) => {\n const globalIds = readStringArray(params, \"globalIds\");\n const response = await graph.neighborhood({\n globalId: readString(params, \"globalId\"),\n globalIds: globalIds ? globalIds.join(\",\") : undefined,\n maxDepth: readNumber(params, \"maxDepth\"),\n });\n return response.data;\n }\n ),\n\n search_beliefs: contractToHandler(\n MCP_TOOL_CONTRACTS.search_beliefs,\n async (params) => {\n const query = readString(params, \"query\", { required: true })!;\n const topicId = readTopicId(params);\n const status = readString(params, \"status\");\n const minConfidence = readNumber(params, \"minConfidence\");\n const limit = readNumber(params, \"limit\") ?? 10;\n if (!topicId) {\n return { results: [] };\n }\n if (!(await isTopicReadable(topicId))) {\n return { results: [] };\n }\n\n const response = await graph.search({\n q: query,\n topicId,\n types: [\"belief\"],\n status,\n minConfidence,\n limit,\n });\n const data = response.data;\n const groupedBeliefs = Array.isArray(data.beliefs)\n ? (data.beliefs as Record<string, unknown>[])\n : [];\n const mergedResults = Array.isArray(data.results)\n ? (data.results as Record<string, unknown>[])\n : [];\n const results =\n groupedBeliefs.length > 0\n ? groupedBeliefs\n : mergedResults.filter((result) => result.type === \"belief\");\n return { results };\n }\n ),\n\n find_contradictions: contractToHandler(\n MCP_TOOL_CONTRACTS.find_contradictions,\n async (params) => {\n const topicId = readTopicId(params);\n const nodeId = readString(params, \"nodeId\");\n const status = readString(params, \"status\");\n if (!topicId && !nodeId) {\n return { contradictions: [] };\n }\n if (topicId && !(await isTopicReadable(topicId))) {\n return { contradictions: [] };\n }\n\n if (!topicId) {\n return { contradictions: [] };\n }\n\n const payload = await lucern.contradictions.list({\n topicId,\n status: status ?? undefined,\n });\n\n if (!nodeId) {\n return payload;\n }\n\n return {\n ...payload,\n contradictions: payload.contradictions.filter(\n (entry) => entry.beliefA === nodeId || entry.beliefB === nodeId\n ),\n };\n }\n ),\n\n bisect_confidence: contractToHandler(\n MCP_TOOL_CONTRACTS.bisect_confidence,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const expectedDirection = readString(params, \"expectedDirection\", {\n required: true,\n })!;\n const entries = await getConfidenceEntries(nodeId);\n const sorted = [...entries].sort((a, b) => a.timestamp - b.timestamp);\n const index =\n sorted.length === 0\n ? -1\n : Math.max(0, Math.floor(sorted.length / 2) - 1);\n const inflection = index >= 0 ? sorted[index] : null;\n return {\n inflectionEntry: inflection,\n triggerEvent: inflection?.trigger ?? \"unknown\",\n confidenceBefore:\n index > 0 &&\n sorted[index - 1] &&\n sorted[index - 1].confidence != null\n ? sorted[index - 1].confidence\n : null,\n confidenceAfter: inflection?.confidence ?? null,\n expectedDirection,\n };\n }\n ),\n\n detect_confirmation_bias: contractToHandler(\n MCP_TOOL_CONTRACTS.detect_confirmation_bias,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { topicId, beliefs: [] };\n }\n const threshold = readNumber(params, \"threshold\") ?? 0.7;\n const analytics = await graph.bias({\n topicId,\n threshold,\n limit: 200,\n });\n const payload = analytics.data.payload;\n const candidates =\n Array.isArray(analytics.data.beliefs)\n ? (analytics.data.beliefs as Record<string, unknown>[])\n : payload &&\n typeof payload === \"object\" &&\n Array.isArray((payload as { beliefs?: unknown[] }).beliefs)\n ? ((payload as { beliefs: unknown[] }).beliefs as Record<\n string,\n unknown\n >[])\n : [];\n const beliefs = candidates.map((belief) => ({\n nodeId: typeof belief.nodeId === \"string\" ? belief.nodeId : \"\",\n biasScore:\n typeof belief.biasScore === \"number\" ? belief.biasScore : threshold,\n riskLevel:\n typeof belief.riskLevel === \"string\"\n ? belief.riskLevel\n : \"moderate\",\n supportingCount:\n typeof belief.supportingCount === \"number\"\n ? belief.supportingCount\n : 0,\n challengingCount:\n typeof belief.challengingCount === \"number\"\n ? belief.challengingCount\n : 0,\n }));\n return { topicId, beliefs };\n }\n ),\n\n get_graph_structure_analysis: contractToHandler(\n MCP_TOOL_CONTRACTS.get_graph_structure_analysis,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return {\n topicId,\n metric: \"structure_analysis\",\n payload: {},\n };\n }\n const analytics = await graph.analyze({\n topicId,\n limit: 200,\n });\n return analytics.data;\n }\n ),\n\n get_falsification_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.get_falsification_questions,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { questions: [] };\n }\n const beliefIds = new Set(\n Array.isArray(params.beliefIds)\n ? params.beliefIds\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n : []\n );\n const gaps = await lucern.graph.gaps({\n topicId,\n });\n const questions = (Array.isArray(gaps.gaps)\n ? (gaps.gaps as Record<string, unknown>[])\n : [])\n .filter((gap) => {\n if (beliefIds.size === 0) {\n return true;\n }\n return beliefIds.has(String(gap.beliefId ?? \"\"));\n })\n .flatMap((gap) =>\n (Array.isArray(gap.suggestedQuestions)\n ? gap.suggestedQuestions\n : []\n ).map((questionText) => ({\n questionText: String(questionText),\n falsificationPotential: 0.5,\n targetBeliefId: String(gap.beliefId ?? \"\"),\n targetBeliefText: String(gap.canonicalText ?? \"\"),\n }))\n )\n .slice(0, 20);\n return { questions };\n }\n ),\n\n get_graph_gaps: contractToHandler(\n MCP_TOOL_CONTRACTS.get_graph_gaps,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { topicId, gaps: [], totalGaps: 0 };\n }\n return lucern.graph.gaps({\n topicId,\n minConfidence: readNumber(params, \"minConfidence\"),\n });\n }\n ),\n\n list_beliefs: contractToHandler(\n MCP_TOOL_CONTRACTS.list_beliefs,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { beliefs: [] };\n }\n const status = readString(params, \"status\");\n const minConfidence = readNumber(params, \"minConfidence\");\n const worktreeId = readString(params, \"worktreeId\");\n const response = await graph.queryNodes({\n topicId,\n nodeType: \"belief\",\n limit: 500,\n });\n const beliefs = asNodeArray(response.data)\n .filter((belief) => {\n const normalizedStatus = normalizeBeliefStatus(\n typeof belief.status === \"string\" ? belief.status : undefined\n );\n if (status && normalizedStatus !== status) {\n return false;\n }\n if (\n typeof minConfidence === \"number\" &&\n Number.isFinite(minConfidence) &&\n confidenceFromNode(belief) < minConfidence\n ) {\n return false;\n }\n if (worktreeId) {\n const linkedWorktreeId =\n typeof belief.metadata?.worktreeId === \"string\"\n ? belief.metadata.worktreeId\n : undefined;\n if (linkedWorktreeId !== worktreeId) {\n return false;\n }\n }\n return true;\n })\n .map((belief) => ({\n nodeId: belief.nodeId ?? \"\",\n canonicalText: belief.canonicalText ?? \"\",\n confidence: confidenceFromNode(belief),\n status: normalizeBeliefStatus(\n typeof belief.status === \"string\" ? belief.status : undefined\n ),\n scoringState:\n normalizeBeliefStatus(\n typeof belief.status === \"string\" ? belief.status : undefined\n ) === \"scored\"\n ? \"scored\"\n : \"unscored\",\n }));\n return { beliefs };\n }\n ),\n };\n}\n","import { createDecisionsClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createJudgmentHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const decisions = createDecisionsClient(context.sdkConfig);\n\n return {\n record_judgment: contractToHandler(\n MCP_TOOL_CONTRACTS.record_judgment,\n async (params) => {\n const title = readString(params, \"title\", { required: true })!;\n const rationale = readString(params, \"rationale\", { required: true })!;\n const topicId = readTopicId(params, { required: true })!;\n const confidence = readNumber(params, \"confidence\");\n const beliefIds = readStringArray(params, \"beliefIds\");\n\n const result = await decisions.recordJudgment({\n title,\n summary: title,\n rationale,\n topicId,\n confidence: confidence ?? 0.5,\n beliefIds,\n });\n\n return {\n judgmentId:\n result.data.judgmentId ??\n result.data.nodeId ??\n result.data.globalId ??\n \"\",\n title,\n status: \"issued\",\n };\n }\n ),\n };\n}\n","import { GET_OBSERVATION_CONTEXT, INGEST_OBSERVATION } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport {\n type McpHandlerContext,\n McpHandlerError,\n type McpToolHandler,\n} from \"../types\";\n\nfunction readObject(\n params: Record<string, unknown>,\n key: string\n): Record<string, unknown> | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n return;\n }\n if (typeof value !== \"object\" || Array.isArray(value)) {\n throw new McpHandlerError(`Expected object parameter: ${key}`);\n }\n return value as Record<string, unknown>;\n}\n\nexport function createObservationHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const observationStore = context.observationStore;\n\n return {\n ingest_observation: contractToHandler(\n INGEST_OBSERVATION,\n async (params) => {\n if (!observationStore) {\n throw new McpHandlerError(\n \"Observation store not configured.\",\n \"INTERNAL_ERROR\",\n 500\n );\n }\n\n const topicId = readTopicId(params, {\n required: true,\n }) as string;\n const observationType = readString(params, \"observationType\", {\n required: true,\n }) as string;\n const summary = readString(params, \"summary\", {\n required: true,\n }) as string;\n const source = readString(params, \"source\");\n const confidence = readNumber(params, \"confidence\");\n const tags = readStringArray(params, \"tags\");\n const metadata = readObject(params, \"metadata\");\n\n const allowedTypes = [\n \"claim\",\n \"evidence\",\n \"question\",\n \"contradiction\",\n \"judgment\",\n \"note\",\n ] as const;\n if (\n !allowedTypes.includes(\n observationType as (typeof allowedTypes)[number]\n )\n ) {\n throw new McpHandlerError(\n `Invalid observationType: ${observationType}`,\n \"INVALID_REQUEST\",\n 400\n );\n }\n\n if (confidence !== undefined && (confidence < 0 || confidence > 1)) {\n throw new McpHandlerError(\n \"confidence must be in [0,1]\",\n \"INVALID_REQUEST\",\n 400\n );\n }\n\n const record = observationStore.ingest({\n topicId,\n observationType: observationType as (typeof allowedTypes)[number],\n summary,\n source,\n confidence,\n tags,\n metadata,\n });\n\n await context.onObservationIngested?.(topicId);\n\n return {\n observationId: record.observationId,\n topicId: record.topicId,\n observationType: record.observationType,\n createdAt: record.createdAt,\n contextResourceUri: `lucern://context/topic/${encodeURIComponent(topicId)}`,\n };\n }\n ),\n\n get_observation_context: contractToHandler(\n GET_OBSERVATION_CONTEXT,\n async (params) => {\n if (!observationStore) {\n throw new McpHandlerError(\n \"Observation store not configured.\",\n \"INTERNAL_ERROR\",\n 500\n );\n }\n\n const topicId = readTopicId(params, {\n required: true,\n }) as string;\n const query = readString(params, \"query\");\n const limit = readNumber(params, \"limit\");\n\n return observationStore.getContext({\n topicId,\n query,\n limit,\n });\n }\n ),\n };\n}\n","import { createPolicyClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\ntype TopicLike = {\n topicId?: string;\n name?: string;\n type?: string;\n isOwner?: boolean;\n [key: string]: unknown;\n};\n\nfunction asTopicArray(data: unknown): TopicLike[] {\n if (!Array.isArray(data)) {\n return [];\n }\n return data.filter(\n (row): row is TopicLike => Boolean(row) && typeof row === \"object\"\n );\n}\n\nexport function createPolicyHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const policy = createPolicyClient(context.sdkConfig);\n\n return {\n check_permission: contractToHandler(\n MCP_TOOL_CONTRACTS.check_permission,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const permission =\n (readString(params, \"permission\", { required: true }) as\n | \"read\"\n | \"write\"\n | undefined) ?? \"read\";\n const principal = readString(params, \"principal\");\n const beliefClusterId = readString(params, \"beliefClusterId\");\n\n const result = await policy.checkPermission({\n topicId,\n permission,\n principal,\n beliefClusterId,\n });\n\n return {\n allowed: result.data?.allowed === true,\n decision:\n typeof result.data?.decision === \"string\"\n ? result.data.decision\n : result.data?.allowed\n ? \"allow\"\n : \"deny\",\n reasonCode:\n typeof result.data?.reasonCode === \"string\"\n ? result.data.reasonCode\n : \"ACCESS_NOT_GRANTED\",\n principalId:\n typeof result.data?.principalId === \"string\"\n ? result.data.principalId\n : (principal ?? \"\"),\n topicId:\n typeof result.data?.topicId === \"string\"\n ? result.data.topicId\n : topicId,\n permission:\n typeof result.data?.permission === \"string\"\n ? result.data.permission\n : permission,\n explanation:\n result.data?.explanation && typeof result.data.explanation === \"object\"\n ? result.data.explanation\n : undefined,\n };\n }\n ),\n filter_by_permission: contractToHandler(\n MCP_TOOL_CONTRACTS.filter_by_permission,\n async (params) => {\n const topicIds = readStringArray(params, \"topicIds\") ?? [];\n const permission =\n (readString(params, \"permission\", {\n required: true,\n }) as \"read\" | \"write\" | undefined) ?? \"read\";\n const principal = readString(params, \"principal\");\n\n const result = await policy.filterByPermission({\n topicIds,\n permission,\n principal,\n });\n\n const allowedTopicIds = Array.isArray(result.data?.allowedTopicIds)\n ? (result.data.allowedTopicIds as string[])\n : [];\n const deniedTopics = Array.isArray(result.data?.deniedTopics)\n ? result.data.deniedTopics\n : [];\n\n return {\n permission,\n allowedTopicIds,\n deniedTopics,\n count:\n typeof result.data?.count === \"number\"\n ? result.data.count\n : allowedTopicIds.length,\n };\n }\n ),\n };\n}\n","import {\n createLucernClient,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nfunction readMetadata(\n params: Record<string, unknown>\n): JsonObject | undefined {\n const metadata = params.metadata;\n return metadata && typeof metadata === \"object\" && !Array.isArray(metadata)\n ? (metadata as JsonObject)\n : undefined;\n}\n\nexport function createQuestionHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n create_question: contractToHandler(\n MCP_TOOL_CONTRACTS.create_question,\n async (params) => {\n const response = await lucern.questions.create({\n text: readString(params, \"text\", { required: true }),\n topicId: readTopicId(params, { required: true }),\n priority: readString(params, \"priority\"),\n linkedBeliefId: readString(params, \"linkedBeliefId\"),\n metadata: readMetadata(params),\n });\n return response.data;\n }\n ),\n\n get_question: contractToHandler(\n MCP_TOOL_CONTRACTS.get_question,\n async (params) => {\n const response = await lucern.questions.get(\n readString(params, \"id\", { required: true })\n );\n return response.data;\n }\n ),\n\n list_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.list_questions,\n async (params) => {\n const response = await lucern.questions.list({\n topicId: readTopicId(params, { required: true }),\n status: readString(params, \"status\"),\n priority: readString(params, \"priority\"),\n worktreeId: readString(params, \"worktreeId\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n return response.data;\n }\n ),\n\n answer_question: contractToHandler(\n MCP_TOOL_CONTRACTS.answer_question,\n async (params) => {\n const response = await lucern.questions.answer(\n readString(params, \"id\", { required: true }),\n {\n text: readString(params, \"text\", { required: true }),\n confidence: readString(params, \"confidence\"),\n evidenceIds: readStringArray(params, \"evidenceIds\"),\n rationale: readString(params, \"rationale\"),\n }\n );\n return response.data;\n }\n ),\n\n refine_question: contractToHandler(\n MCP_TOOL_CONTRACTS.refine_question,\n async (params) => {\n const response = await lucern.questions.refine(\n readString(params, \"id\") ??\n readString(params, \"questionId\", { required: true }),\n readString(params, \"text\", { required: true }),\n readString(params, \"rationale\") ?? readString(params, \"refinementReason\")\n );\n return response.data;\n }\n ),\n\n update_question_status: contractToHandler(\n MCP_TOOL_CONTRACTS.update_question_status,\n async (params) => {\n const response = await lucern.questions.updateStatus(\n readString(params, \"id\") ??\n readString(params, \"questionId\", { required: true }),\n readString(params, \"status\", { required: true }),\n readString(params, \"rationale\")\n );\n return response.data;\n }\n ),\n\n archive_question: contractToHandler(\n MCP_TOOL_CONTRACTS.archive_question,\n async (params) => {\n return lucern.questions.archive(\n readString(params, \"questionId\", { required: true }),\n readString(params, \"reason\")\n );\n }\n ),\n\n link_evidence_to_question: contractToHandler(\n MCP_TOOL_CONTRACTS.link_evidence_to_question,\n async (params) => {\n return lucern.questions.linkEvidence({\n evidenceId: readString(params, \"evidenceId\", { required: true }),\n questionId: readString(params, \"questionId\", { required: true }),\n relevance: readNumber(params, \"relevance\") ?? 1,\n rationale: readString(params, \"rationale\"),\n });\n }\n ),\n\n get_high_priority_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.get_high_priority_questions,\n async (params) => {\n return lucern.questions.getHighPriority({\n topicId: readTopicId(params, { required: true }),\n limit: readNumber(params, \"limit\"),\n includeAnswered: readBoolean(params, \"includeAnswered\"),\n });\n }\n ),\n\n find_missing_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.find_missing_questions,\n async (params) => {\n return lucern.questions.findMissing({\n topicId: readTopicId(params, { required: true }),\n minConfidence: readNumber(params, \"minConfidence\"),\n });\n }\n ),\n };\n}\n","import { createGraphClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\ntype SourceLike = {\n nodeId?: string;\n canonicalText?: string;\n title?: string;\n url?: string;\n sourceUrl?: string;\n snippet?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nfunction asSourceArray(data: unknown): SourceLike[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is SourceLike =>\n Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as SourceLike];\n }\n return [];\n}\n\nexport function createResearchHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const graph = createGraphClient(context.sdkConfig);\n\n const searchSources = async (params: Record<string, unknown>) => {\n const query = readString(params, \"query\", { required: true })!;\n const topicId = readTopicId(params);\n const sourceTypes = readStringArray(params, \"sources\") ?? [];\n if (!topicId) {\n return { results: [] as Record<string, unknown>[] };\n }\n\n const response = await graph.queryNodes({\n topicId,\n nodeType: \"source\",\n limit: 100,\n });\n\n const loweredQuery = query.toLowerCase();\n const results = asSourceArray(response.data)\n .filter((source) => {\n const text = `${source.title ?? \"\"} ${source.canonicalText ?? \"\"} ${\n source.snippet ?? \"\"\n }`.toLowerCase();\n if (!text.includes(loweredQuery)) {\n return false;\n }\n if (sourceTypes.length === 0) {\n return true;\n }\n const kind =\n typeof source.metadata?.sourceType === \"string\"\n ? source.metadata.sourceType.toLowerCase()\n : \"\";\n return sourceTypes.some((type) => kind.includes(type.toLowerCase()));\n })\n .slice(0, 20)\n .map((source) => ({\n title:\n (typeof source.title === \"string\" && source.title) ||\n (typeof source.canonicalText === \"string\"\n ? source.canonicalText\n : \"Untitled source\"),\n url:\n (typeof source.sourceUrl === \"string\" && source.sourceUrl) ||\n (typeof source.url === \"string\" ? source.url : \"\"),\n snippet:\n (typeof source.snippet === \"string\" && source.snippet) ||\n (typeof source.canonicalText === \"string\"\n ? source.canonicalText\n : \"\"),\n relevanceScore: 1,\n suggestedEvidence:\n typeof source.canonicalText === \"string\" ? source.canonicalText : \"\",\n }));\n\n return { results };\n };\n\n return {\n search_sources: contractToHandler(\n MCP_TOOL_CONTRACTS.search_sources,\n async (params) => searchSources(params)\n ),\n\n execute_deep_research: contractToHandler(\n MCP_TOOL_CONTRACTS.execute_deep_research,\n async (params) => {\n const query = readString(params, \"query\", { required: true })!;\n const topicId = readTopicId(params, { required: true })!;\n const depth = readString(params, \"depth\") ?? \"standard\";\n const sources = await searchSources({\n query,\n topicId,\n sources: [\"web\"],\n });\n\n const topSources = sources.results.slice(0, depth === \"deep\" ? 10 : 5);\n const findings = topSources.map((source) => ({\n title: source.title,\n summary: source.snippet,\n sourceUrl: source.url,\n }));\n\n return {\n report: {\n summary:\n findings.length > 0\n ? `Deep research completed for \"${query}\" with ${findings.length} source findings.`\n : `No matching sources found for \"${query}\".`,\n findings,\n sources: topSources.map((source) => ({\n title: source.title,\n url: source.url,\n })),\n linkedEvidence: [],\n linkedQuestions: [],\n },\n };\n }\n ),\n };\n}\n","import { createLucernClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createSearchHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n search_resources: contractToHandler(\n MCP_TOOL_CONTRACTS.search_resources,\n async (params) => {\n return lucern.search(readString(params, \"q\", { required: true }), {\n topicId: readTopicId(params, { required: true }),\n types: readStringArray(params, \"types\"),\n status: readString(params, \"status\"),\n minConfidence: readNumber(params, \"minConfidence\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n }\n ),\n };\n}\n","import { createWorkflowClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createTaskHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const workflow = createWorkflowClient(context.sdkConfig);\n\n return {\n create_task: contractToHandler(\n MCP_TOOL_CONTRACTS.create_task,\n async (params) => {\n const title = readString(params, \"title\", { required: true })!;\n const topicId = readTopicId(params, { required: true })!;\n const taskType = readString(params, \"taskType\");\n const linkedQuestionId = readString(params, \"linkedQuestionId\");\n const linkedWorktreeId = readString(params, \"linkedWorktreeId\");\n\n const result = await workflow.createTask({\n title,\n topicId,\n taskType:\n taskType === \"research\" ||\n taskType === \"interview\" ||\n taskType === \"analysis\" ||\n taskType === \"data_collection\"\n ? taskType\n : undefined,\n linkedQuestionId,\n linkedWorktreeId,\n });\n\n return {\n taskId: result.data.taskId,\n status: result.data.status ?? \"pending\",\n createdAt: result.data.createdAt ?? Date.now(),\n };\n }\n ),\n\n complete_task: contractToHandler(\n MCP_TOOL_CONTRACTS.complete_task,\n async (params) => {\n const taskId = readString(params, \"taskId\", { required: true })!;\n const outputSummary = readString(params, \"outputSummary\", {\n required: true,\n })!;\n const evidenceCreated = readBoolean(params, \"evidenceCreated\");\n\n const result = await workflow.completeTask(taskId, {\n outputSummary,\n evidenceCreated,\n });\n\n return {\n taskId: result.data.taskId ?? taskId,\n completedAt: result.data.completedAt ?? Date.now(),\n outputSummary: result.data.outputSummary ?? outputSummary,\n };\n }\n ),\n\n update_task: contractToHandler(\n MCP_TOOL_CONTRACTS.update_task,\n async (params) => {\n const taskId = readString(params, \"taskId\", { required: true })!;\n const title = readString(params, \"title\");\n const description = readString(params, \"description\");\n const linkedBeliefId = readString(params, \"linkedBeliefId\");\n const linkedQuestionId = readString(params, \"linkedQuestionId\");\n const linkedWorktreeId = readString(params, \"linkedWorktreeId\");\n const rawPriority = readString(params, \"priority\");\n const priority =\n rawPriority === \"critical\" ||\n rawPriority === \"high\" ||\n rawPriority === \"medium\" ||\n rawPriority === \"low\"\n ? rawPriority\n : undefined;\n const rawStatus = readString(params, \"status\");\n const status =\n rawStatus === \"todo\" ||\n rawStatus === \"in_progress\" ||\n rawStatus === \"blocked\" ||\n rawStatus === \"done\"\n ? rawStatus\n : undefined;\n\n const result = await workflow.updateTask(taskId, {\n title,\n description,\n linkedBeliefId,\n linkedQuestionId,\n linkedWorktreeId,\n priority,\n status,\n });\n\n return {\n taskId: result.data.taskId ?? taskId,\n updatedAt: result.data.updatedAt ?? Date.now(),\n };\n }\n ),\n };\n}\n","import {\n createWorkflowClient,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n} from \"@lucern/sdk\";\nimport type {\n LensPerspectiveType,\n LensPromptTemplateReference,\n LensTaskTemplate,\n LensWorkflowTemplate,\n} from \"@lucern/contracts/lens-workflow.contract\";\nimport {\n contractToHandler,\n readBoolean,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nfunction mapWorktreeStatus(\n status?: string\n):\n | \"planning\"\n | \"active\"\n | \"paused\"\n | \"completed\"\n | \"merged\"\n | \"failed\"\n | \"archived\"\n | undefined {\n if (!status) {\n return;\n }\n if (status === \"abandoned\") {\n return \"archived\";\n }\n if (\n status === \"planning\" ||\n status === \"active\" ||\n status === \"paused\" ||\n status === \"completed\" ||\n status === \"merged\" ||\n status === \"failed\" ||\n status === \"archived\"\n ) {\n return status;\n }\n return;\n}\n\nexport function createWorktreeHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const workflow = createWorkflowClient(context.sdkConfig);\n\n return {\n create_lens: contractToHandler(MCP_TOOL_CONTRACTS.create_lens, async (params) => {\n const result = await workflow.createLens({\n name: readString(params, \"name\", { required: true })!,\n workspaceId: readString(params, \"workspaceId\"),\n topicId: readTopicId(params),\n description: readString(params, \"description\"),\n perspectiveType: readString(params, \"perspectiveType\", {\n required: true,\n }) as LensPerspectiveType,\n promptTemplates: Array.isArray(params.promptTemplates)\n ? (params.promptTemplates as LensPromptTemplateReference[])\n : undefined,\n workflowTemplates: Array.isArray(params.workflowTemplates)\n ? (params.workflowTemplates as LensWorkflowTemplate[])\n : undefined,\n taskTemplates: Array.isArray(params.taskTemplates)\n ? (params.taskTemplates as LensTaskTemplate[])\n : undefined,\n filterCriteria:\n params.filterCriteria && typeof params.filterCriteria === \"object\"\n ? (params.filterCriteria as JsonObject)\n : undefined,\n });\n return {\n lensId: result.data.lensId ?? \"\",\n name:\n result.data.name ?? readString(params, \"name\", { required: true }),\n workspaceId:\n result.data.workspaceId ??\n readString(params, \"workspaceId\") ??\n null,\n status: result.data.status ?? \"active\",\n };\n }),\n\n list_lenses: contractToHandler(MCP_TOOL_CONTRACTS.list_lenses, async (params) => {\n const result = await workflow.listLenses({\n workspaceId: readString(params, \"workspaceId\"),\n topicId: readTopicId(params),\n status: readString(params, \"status\") as\n | \"draft\"\n | \"active\"\n | \"archived\"\n | undefined,\n perspectiveType: readString(params, \"perspectiveType\") as\n | LensPerspectiveType\n | undefined,\n });\n return {\n lenses:\n result.data.items ??\n (\"lenses\" in result.data && Array.isArray(result.data.lenses)\n ? result.data.lenses\n : []),\n };\n }),\n\n apply_lens_to_topic: contractToHandler(\n MCP_TOOL_CONTRACTS.apply_lens_to_topic,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const lensId = readString(params, \"lensId\", { required: true })!;\n const result = await workflow.applyLensToTopic({\n lensId,\n topicId,\n metadata:\n params.metadata && typeof params.metadata === \"object\"\n ? (params.metadata as JsonObject)\n : undefined,\n });\n return {\n bindingId: result.data.bindingId ?? \"\",\n lensId: result.data.lensId ?? lensId,\n topicId: result.data.topicId ?? topicId,\n status: result.data.status ?? \"active\",\n };\n }\n ),\n\n remove_lens_from_topic: contractToHandler(\n MCP_TOOL_CONTRACTS.remove_lens_from_topic,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const lensId = readString(params, \"lensId\", { required: true })!;\n const result = await workflow.removeLensFromTopic({\n lensId,\n topicId,\n });\n return {\n bindingId: result.data.bindingId ?? \"\",\n lensId: result.data.lensId ?? lensId,\n topicId: result.data.topicId ?? topicId,\n status: result.data.status ?? \"removed\",\n };\n }\n ),\n\n add_worktree: contractToHandler(\n MCP_TOOL_CONTRACTS.add_worktree,\n async (params) => {\n const topicId = readTopicId(params);\n if (!topicId) {\n throw new Error(\"add_worktree requires topicId\");\n }\n\n const result = await workflow.addWorktree({\n title: readString(params, \"title\", { required: true })!,\n topicId,\n branchId: readString(params, \"branchId\"),\n objective: readString(params, \"objective\"),\n hypothesis: readString(params, \"hypothesis\"),\n beliefIds: readStringArray(params, \"beliefIds\"),\n autoShape: readBoolean(params, \"autoShape\"),\n domainPackId: readString(params, \"domainPackId\"),\n executionOrder:\n typeof params.executionOrder === \"number\"\n ? params.executionOrder\n : undefined,\n dependsOn: readStringArray(params, \"dependsOn\"),\n blocks: readStringArray(params, \"blocks\"),\n gate: readString(params, \"gate\"),\n });\n return {\n worktreeId: result.data.worktreeId,\n branchId: result.data.branchId ?? null,\n status: result.data.status ?? \"planning\",\n title: result.data.title,\n hypothesis: result.data.hypothesis ?? null,\n questionCount: result.data.questionCount ?? 0,\n taskCount: result.data.taskCount ?? 0,\n autoShapeApplied: result.data.autoShapeApplied ?? false,\n frameworkSuggestions: result.data.frameworkSuggestions ?? [],\n dependencySuggestions: result.data.dependencySuggestions ?? [],\n };\n }\n ),\n\n merge: contractToHandler(MCP_TOOL_CONTRACTS.merge, async (params) => {\n const worktreeId = readString(params, \"worktreeId\", { required: true })!;\n const outcomes = Array.isArray(params.outcomes)\n ? (params.outcomes as Array<{\n beliefId: string;\n confidence: number;\n rationale: string;\n }>)\n : [];\n const result = await workflow.merge(worktreeId, {\n outcomes,\n summary: readString(params, \"summary\"),\n });\n return {\n worktreeId: result.data.worktreeId ?? worktreeId,\n status: result.data.status ?? \"merged\",\n beliefsScored: result.data.beliefsScored ?? outcomes.length,\n };\n }),\n\n push: contractToHandler(MCP_TOOL_CONTRACTS.push, async (params) => {\n const worktreeId = readString(params, \"worktreeId\", { required: true })!;\n const targetContext = readString(params, \"targetContext\", {\n required: true,\n })!;\n const result = await workflow.push(worktreeId, {\n targetContext,\n beliefIds: readStringArray(params, \"beliefIds\"),\n });\n return {\n pushedCount: result.data.pushedCount ?? 0,\n targetContext: result.data.targetContext ?? targetContext,\n pushedAt: Date.now(),\n };\n }),\n\n open_pull_request: contractToHandler(\n MCP_TOOL_CONTRACTS.open_pull_request,\n async (params) => {\n const worktreeId = readString(params, \"worktreeId\", {\n required: true,\n })!;\n const summary = readString(params, \"summary\", { required: true })!;\n const reviewers = readStringArray(params, \"reviewers\");\n const result = await workflow.openPullRequest(worktreeId, {\n summary,\n reviewers,\n });\n return {\n pullRequestId: result.data.pullRequestId,\n worktreeId: result.data.worktreeId ?? worktreeId,\n status: result.data.status ?? \"pending_review\",\n };\n }\n ),\n\n list_worktrees: contractToHandler(\n MCP_TOOL_CONTRACTS.list_worktrees,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const status = mapWorktreeStatus(readString(params, \"status\"));\n const result = await workflow.listWorktrees({\n topicId,\n status,\n });\n const worktrees = Array.isArray(result.data)\n ? result.data\n : result.data == null\n ? []\n : [result.data];\n\n return {\n worktrees: worktrees.map((worktree) => ({\n worktreeId: worktree.worktreeId,\n title: worktree.title,\n phase: (worktree as { phase?: string }).phase ?? null,\n status: worktree.status,\n beliefCount:\n (worktree as { beliefCount?: number }).beliefCount ?? 0,\n createdAt: (worktree as { createdAt?: number }).createdAt ?? null,\n })),\n };\n }\n ),\n };\n}\n","import type { McpHandlerContext, McpToolHandler } from \"../types\";\nimport { createBeliefHandlers } from \"./beliefs\";\nimport { createContextHandlers } from \"./context\";\nimport { createContradictionHandlers } from \"./contradictions\";\nimport { createEdgeHandlers } from \"./edges\";\nimport { createEvidenceHandlers } from \"./evidence\";\nimport { createGraphHandlers } from \"./graph\";\nimport { createJudgmentHandlers } from \"./judgments\";\nimport { createObservationHandlers } from \"./observations\";\nimport { createPolicyHandlers } from \"./policy\";\nimport { createQuestionHandlers } from \"./questions\";\nimport { createResearchHandlers } from \"./research\";\nimport { createSearchHandlers } from \"./search\";\nimport { createTaskHandlers } from \"./tasks\";\nimport { createWorktreeHandlers } from \"./worktrees\";\n\nexport function createMcpHandlerRegistry(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n return {\n ...createBeliefHandlers(context),\n ...createEvidenceHandlers(context),\n ...createContradictionHandlers(context),\n ...createEdgeHandlers(context),\n ...createContextHandlers(context),\n ...createWorktreeHandlers(context),\n\n // Placeholder families wired in Block 6.\n ...createQuestionHandlers(context),\n ...createSearchHandlers(context),\n ...createJudgmentHandlers(context),\n ...createGraphHandlers(context),\n ...createResearchHandlers(context),\n ...createObservationHandlers(context),\n ...createTaskHandlers(context),\n ...createPolicyHandlers(context),\n };\n}\n","import {\n invokeRegisteredCustomTool,\n listRegisteredCustomTools,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n type McpToolContract,\n type RegisteredCustomTool,\n} from \"@lucern/sdk\";\nimport {\n createToolExecutionEnvelope,\n executeToolWithEnvelope,\n normalizeToolExecutionParams,\n type ToolExecutionAuditEvent,\n type ToolExecutionAuthMode,\n type ToolExecutionEnvelope,\n type ToolExecutionTransportKind,\n} from \"./execution\";\nimport {\n contractToHandler,\n createNotImplementedHandler,\n toMcpResult,\n toMcpError,\n} from \"./handler-factory\";\nimport { isServicePrincipalKey, isTenantApiKey } from \"./credentials\";\nimport { createMcpHandlerRegistry } from \"./handlers/index\";\nimport { McpObservationStore } from \"./observation-store\";\nimport type { McpHandlerContext, McpToolHandler, McpToolResult } from \"./types\";\n\ntype ResourceUri = (typeof LUCERN_MCP_RESOURCE_URIS)[number];\ntype BuiltinToolName = keyof typeof MCP_TOOL_CONTRACTS;\ntype ToolName = string;\n\ntype McpToolExecutor = (\n toolName: ToolName,\n params: Record<string, unknown>,\n contract: McpToolContract\n) => Promise<unknown>;\n\ntype McpServerRuntime = {\n registerResource?: (\n uri: string,\n handler: (params: Record<string, unknown>) => Promise<unknown>\n ) => void;\n registerTool?: (\n name: string,\n handler: (params: Record<string, unknown>) => Promise<unknown>\n ) => void;\n};\n\ntype McpResourceDescriptor = {\n uri: ResourceUri;\n requiredScopes: readonly string[];\n};\n\ntype McpToolDescriptor = {\n name: ToolName;\n requiredScopes: readonly string[];\n contract: McpToolContract;\n implemented: boolean;\n source: \"platform\" | \"custom\";\n};\n\nexport type AdditionalMcpTool = {\n name: ToolName;\n requiredScopes: readonly string[];\n contract: McpToolContract;\n handler: McpToolHandler;\n implemented?: boolean;\n source?: \"platform\" | \"custom\";\n};\n\nfunction loadMcpSdk(): Record<string, unknown> {\n try {\n const dynamicRequire = eval(\"require\") as (moduleName: string) => unknown;\n return (dynamicRequire(\"@modelcontextprotocol/sdk\") ?? {}) as Record<\n string,\n unknown\n >;\n } catch {\n return {};\n }\n}\n\nexport const LUCERN_MCP_RESOURCE_URIS = [\n \"lucern://schema/kernel\",\n \"lucern://schema/packs/{packId}\",\n \"lucern://schema/extensions\",\n \"lucern://graph/sample\",\n \"lucern://api/openapi\",\n \"lucern://sdk/examples\",\n \"lucern://docs/invariants\",\n] as const;\n\nexport const MCP_AUTH_ERROR_CODES = [\n \"AUTHENTICATION_REQUIRED\",\n \"SCOPE_INSUFFICIENT\",\n \"ENVIRONMENT_MISMATCH\",\n] as const;\n\nexport const MCP_RATE_LIMIT_SIGNALS = [\n \"RATE_LIMIT_EXCEEDED\",\n \"Retry-After\",\n] as const;\n\nexport const LUCERN_MCP_TOOL_NAMES = Object.keys(\n MCP_TOOL_CONTRACTS\n) as BuiltinToolName[];\n\nconst MCP_RESOURCE_SCOPES: readonly McpResourceDescriptor[] = [\n { uri: \"lucern://schema/kernel\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://schema/packs/{packId}\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://schema/extensions\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://graph/sample\", requiredScopes: [\"graph:read\"] },\n { uri: \"lucern://api/openapi\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://sdk/examples\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://docs/invariants\", requiredScopes: [\"schema:read\"] },\n];\n\nconst SCOPE_BY_PRIMITIVE: Record<\n McpToolContract[\"ontologyPrimitive\"],\n readonly string[]\n> = {\n belief: [\"graph:read\", \"graph:write\"],\n evidence: [\"graph:read\", \"graph:write\"],\n source: [\"graph:read\", \"graph:write\", \"source:read\"],\n question: [\"graph:read\", \"graph:write\"],\n judgment: [\"decision:write\", \"graph:read\"],\n worktree: [\"workflow:write\", \"graph:read\"],\n branch: [\"workflow:write\"],\n lens: [\"workflow:write\"],\n edge: [\"graph:write\"],\n graph: [\"graph:read\"],\n task: [\"task:write\", \"task:read\"],\n policy: [\"policy:read\"],\n ontology: [\"graph:read\", \"graph:write\"],\n identity: [\"identity:read\"],\n};\n\nconst TOOL_SCOPE_OVERRIDES: Partial<\n Record<BuiltinToolName, readonly string[]>\n> = {\n merge: [\"workflow:write\", \"graph:write\", \"decision:write\"],\n open_pull_request: [\"workflow:write\", \"review:write\"],\n push: [\"workflow:write\", \"publish:write\"],\n compile_context: [\"graph:read\"],\n check_permission: [\"policy:read\"],\n filter_by_permission: [\"policy:read\"],\n execute_deep_research: [\"source:read\", \"research:execute\", \"graph:write\"],\n search_sources: [\"source:read\"],\n ingest_observation: [\"graph:write\", \"graph:read\"],\n get_observation_context: [\"graph:read\"],\n detect_confirmation_bias: [\"intelligence:read\", \"graph:read\"],\n get_graph_structure_analysis: [\"intelligence:read\", \"graph:read\"],\n get_falsification_questions: [\"intelligence:read\", \"graph:read\"],\n get_high_priority_questions: [\"graph:read\"],\n find_missing_questions: [\"graph:read\"],\n};\n\nfunction uniqueScopes(scopes: readonly string[]): readonly string[] {\n return [...new Set(scopes)];\n}\n\nfunction deriveToolScopes(contract: McpToolContract): readonly string[] {\n const override = TOOL_SCOPE_OVERRIDES[contract.name as BuiltinToolName];\n if (override) {\n return uniqueScopes(override);\n }\n return uniqueScopes(SCOPE_BY_PRIMITIVE[contract.ontologyPrimitive]);\n}\n\nfunction deriveCustomToolScopes(\n customTool: RegisteredCustomTool\n): readonly string[] {\n return uniqueScopes(customTool.metadata.requiredScopes ?? [\"custom:execute\"]);\n}\n\nfunction createFallbackRuntime(): McpServerRuntime {\n return {\n registerResource: () => {},\n registerTool: () => {},\n };\n}\n\nfunction createMcpRuntime(): McpServerRuntime {\n const sdk = loadMcpSdk();\n const Server = (sdk as Record<string, unknown>).Server as\n | (new (\n ...args: unknown[]\n ) => McpServerRuntime)\n | undefined;\n if (!Server) {\n return createFallbackRuntime();\n }\n try {\n return new Server(\n { name: \"lucern-platform-mcp\", version: \"1.2.0\" },\n { capabilities: { resources: {}, tools: {} } }\n );\n } catch {\n return createFallbackRuntime();\n }\n}\n\nfunction createSdkConfig(options?: {\n apiKey?: string;\n sessionToken?: string;\n baseUrl?: string;\n fetchImpl?: typeof fetch;\n}) {\n const sessionHeaders = (\n token: string\n ): Record<string, string> => ({\n Authorization: `Bearer ${token}`,\n });\n const apiKeyHeaders = (\n apiKey: string\n ): Record<string, string> =>\n apiKey.startsWith(\"luc_\") || apiKey.startsWith(\"stk_\")\n ? { \"x-lucern-key\": apiKey }\n : { Authorization: `Bearer ${apiKey}` };\n const getAuthHeaders = options?.sessionToken\n ? async () => sessionHeaders(options.sessionToken as string)\n : options?.apiKey\n ? async () => apiKeyHeaders(options.apiKey as string)\n : undefined;\n return {\n baseUrl: options?.baseUrl,\n fetchImpl: options?.fetchImpl,\n getAuthHeaders,\n };\n}\n\nfunction executeWithHandler(\n _name: ToolName,\n handler: McpToolHandler,\n contract: McpToolContract,\n params: Record<string, unknown>\n): Promise<McpToolResult> {\n try {\n return handler(params, contract);\n } catch (error) {\n return Promise.resolve(toMcpError(error));\n }\n}\n\nfunction isMcpToolResult(value: unknown): value is McpToolResult {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n const candidate = value as Record<string, unknown>;\n if (!Array.isArray(candidate.content)) {\n return false;\n }\n return candidate.content.every((entry) => {\n if (!entry || typeof entry !== \"object\") {\n return false;\n }\n return typeof (entry as Record<string, unknown>).text === \"string\";\n });\n}\n\nfunction normalizeExecutorResult(value: unknown): McpToolResult {\n return isMcpToolResult(value) ? value : toMcpResult(value);\n}\n\nfunction detectAuthMode(options?: {\n apiKey?: string;\n sessionToken?: string;\n authMode?: ToolExecutionAuthMode;\n}): ToolExecutionAuthMode {\n if (options?.authMode) {\n return options.authMode;\n }\n if (options?.sessionToken) {\n return \"session_token\";\n }\n if (!options?.apiKey) {\n return \"unknown\";\n }\n if (isTenantApiKey(options.apiKey)) {\n return \"tenant_api_key\";\n }\n if (isServicePrincipalKey(options.apiKey)) {\n return \"service_principal\";\n }\n return \"unknown\";\n}\n\nfunction createCustomMcpHandlerRegistry(\n customTools: readonly RegisteredCustomTool[]\n): Record<string, McpToolHandler> {\n const handlers: Record<string, McpToolHandler> = {};\n for (const customTool of customTools) {\n handlers[customTool.fullName] = contractToHandler(\n customTool.contract,\n async (params) =>\n invokeRegisteredCustomTool(customTool.fullName, params as JsonObject, {\n source: \"mcp\",\n })\n );\n }\n return handlers;\n}\n\nexport function createLucernMcpServer(options?: {\n apiKey?: string;\n sessionToken?: string;\n baseUrl?: string;\n fetchImpl?: typeof fetch;\n toolExecutor?: McpToolExecutor;\n observationStore?: McpObservationStore;\n onObservationIngested?: (topicId: string) => Promise<void> | void;\n transportKind?: ToolExecutionTransportKind;\n authMode?: ToolExecutionAuthMode;\n onEnvelope?: (envelope: ToolExecutionEnvelope) => Promise<void> | void;\n onAuditEvent?: (\n event: ToolExecutionAuditEvent\n ) => Promise<void> | void;\n additionalTools?: readonly AdditionalMcpTool[];\n}): {\n server: McpServerRuntime;\n resources: readonly McpResourceDescriptor[];\n tools: readonly McpToolDescriptor[];\n authErrorCodes: readonly string[];\n rateLimitSignals: readonly string[];\n handlers: Record<string, McpToolHandler>;\n implementedToolNames: ToolName[];\n unimplementedToolNames: ToolName[];\n} {\n const server = createMcpRuntime();\n const handlerContext: McpHandlerContext = {\n sdkConfig: createSdkConfig(options),\n observationStore: options?.observationStore ?? new McpObservationStore(),\n onObservationIngested: options?.onObservationIngested,\n };\n\n const platformHandlers = createMcpHandlerRegistry(handlerContext);\n const registeredCustomTools = listRegisteredCustomTools();\n const customHandlers = createCustomMcpHandlerRegistry(registeredCustomTools);\n const additionalTools = options?.additionalTools ?? [];\n const additionalHandlers = Object.fromEntries(\n additionalTools.map((tool) => [tool.name, tool.handler])\n );\n const baseHandlers = {\n ...platformHandlers,\n ...customHandlers,\n ...additionalHandlers,\n };\n\n const platformTools: McpToolDescriptor[] = LUCERN_MCP_TOOL_NAMES.map(\n (toolName) => {\n const contract = MCP_TOOL_CONTRACTS[toolName];\n return {\n name: toolName,\n requiredScopes: deriveToolScopes(contract),\n contract,\n implemented: Boolean(platformHandlers[toolName]),\n source: \"platform\",\n };\n }\n );\n\n const customTools: McpToolDescriptor[] = registeredCustomTools.map(\n (customTool) => ({\n name: customTool.fullName,\n requiredScopes: deriveCustomToolScopes(customTool),\n contract: customTool.contract,\n implemented: true,\n source: \"custom\",\n })\n );\n\n const injectedTools: McpToolDescriptor[] = additionalTools.map((tool) => ({\n name: tool.name,\n requiredScopes: tool.requiredScopes,\n contract: tool.contract,\n implemented: tool.implemented ?? true,\n source: tool.source ?? \"custom\",\n }));\n\n const toolMap = new Map<ToolName, McpToolDescriptor>();\n for (const tool of [...platformTools, ...customTools, ...injectedTools]) {\n toolMap.set(tool.name, tool);\n }\n const tools = [...toolMap.values()];\n const transportKind = options?.transportKind ?? \"stdio\";\n const authMode = detectAuthMode(options);\n const handlers = Object.fromEntries(\n tools.map((tool) => {\n const baseHandler =\n baseHandlers[tool.name] ?? createNotImplementedHandler(tool.name);\n\n const wrappedHandler: McpToolHandler = async (params, contract) => {\n const normalizedParams = normalizeToolExecutionParams(params);\n const envelope = createToolExecutionEnvelope({\n toolName: tool.name,\n params: normalizedParams,\n contract,\n transportKind,\n authMode,\n requiredScopes: tool.requiredScopes,\n });\n\n return executeToolWithEnvelope({\n envelope,\n execute: async () => {\n if (options?.toolExecutor) {\n try {\n const execution = await options.toolExecutor(\n tool.name,\n normalizedParams,\n contract\n );\n return normalizeExecutorResult(execution);\n } catch (error) {\n return toMcpError(error);\n }\n }\n\n return executeWithHandler(\n tool.name,\n baseHandler,\n contract,\n normalizedParams\n );\n },\n hooks: {\n onEnvelope: options?.onEnvelope,\n onAuditEvent: options?.onAuditEvent,\n },\n });\n };\n\n return [tool.name, wrappedHandler];\n })\n ) as Record<string, McpToolHandler>;\n\n const implementedToolNames = tools\n .filter((tool) => tool.implemented)\n .map((tool) => tool.name);\n const unimplementedToolNames = tools\n .filter((tool) => !tool.implemented)\n .map((tool) => tool.name);\n\n for (const resource of MCP_RESOURCE_SCOPES) {\n server.registerResource?.(resource.uri, async () => ({\n uri: resource.uri,\n requiredScopes: resource.requiredScopes,\n errors: MCP_AUTH_ERROR_CODES,\n }));\n }\n\n for (const tool of tools) {\n const handler = handlers[tool.name] ?? createNotImplementedHandler(tool.name);\n server.registerTool?.(tool.name, async (params) => {\n return handler(params, tool.contract);\n });\n }\n\n return {\n server,\n resources: MCP_RESOURCE_SCOPES,\n tools,\n authErrorCodes: MCP_AUTH_ERROR_CODES,\n rateLimitSignals: MCP_RATE_LIMIT_SIGNALS,\n handlers,\n implementedToolNames,\n unimplementedToolNames,\n };\n}\n","import type { McpParameterDef, McpToolContract } from \"@lucern/sdk\";\nimport {\n McpServer,\n ResourceTemplate,\n} from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod\";\nimport {\n buildLucernObserverPrompt,\n LUCERN_AGENT_MD,\n LUCERN_OBSERVER_PROMPT_NAME,\n} from \"./agentInstructions\";\nimport type {\n ToolExecutionAuditEvent,\n ToolExecutionAuthMode,\n ToolExecutionEnvelope,\n ToolExecutionTransportKind,\n} from \"./execution\";\nimport { McpObservationStore } from \"./observation-store\";\nimport {\n type AdditionalMcpTool,\n createLucernMcpServer,\n type LUCERN_MCP_RESOURCE_URIS,\n} from \"./server\";\n\ntype ResourceUri = (typeof LUCERN_MCP_RESOURCE_URIS)[number];\ntype StandaloneRuntime = ReturnType<typeof createLucernMcpServer>;\n\nconst OBSERVATION_RESOURCE_TEMPLATE =\n \"lucern://observations/topic/{topicId}\";\nconst OBSERVATION_SEARCH_RESOURCE_TEMPLATE =\n \"lucern://observations/search/{topicId}/{query}\";\nconst OBSERVATION_CONTEXT_RESOURCE_TEMPLATE =\n \"lucern://context/topic/{topicId}\";\nconst OBSERVATION_CONTEXT_SEARCH_RESOURCE_TEMPLATE =\n \"lucern://context/search/{topicId}/{query}\";\n\nexport type StandaloneMcpServerOptions = {\n apiKey?: string;\n sessionToken?: string;\n baseUrl?: string;\n fetchImpl?: typeof fetch;\n transportKind?: ToolExecutionTransportKind;\n authMode?: ToolExecutionAuthMode;\n onEnvelope?: (envelope: ToolExecutionEnvelope) => Promise<void> | void;\n onAuditEvent?: (\n event: ToolExecutionAuditEvent\n ) => Promise<void> | void;\n additionalTools?: readonly AdditionalMcpTool[];\n};\n\nfunction buildToolInputShape(\n contract: McpToolContract\n): Record<string, z.ZodTypeAny> {\n const required = new Set(contract.required);\n const shape: Record<string, z.ZodTypeAny> = {};\n\n for (const [key, definition] of Object.entries(contract.parameters)) {\n const isRequired = required.has(key);\n let schema: z.ZodTypeAny = toZodSchema(definition);\n if (!isRequired) {\n schema = schema.optional();\n }\n shape[key] = schema;\n }\n\n return shape;\n}\n\nfunction toZodSchema(parameter: McpParameterDef): z.ZodTypeAny {\n if (parameter.type === \"string\") {\n if (parameter.enum && parameter.enum.length > 0) {\n return z.enum(parameter.enum as [string, ...string[]]);\n }\n return z.string();\n }\n if (parameter.type === \"number\") {\n return z.number();\n }\n if (parameter.type === \"boolean\") {\n return z.boolean();\n }\n if (parameter.type === \"array\") {\n return z.array(z.unknown());\n }\n return z.record(z.string(), z.unknown());\n}\n\nfunction resourceName(uri: string): string {\n return uri\n .replace(\"lucern://\", \"lucern-\")\n .replace(/[{}]/g, \"\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n}\n\nfunction readTemplateVar(\n variables: Record<string, unknown>,\n key: string\n): string | undefined {\n const value = variables[key];\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value) && typeof value[0] === \"string\") {\n return value[0];\n }\n return;\n}\n\nasync function notifyResourceUpdated(\n server: McpServer,\n uri: string\n): Promise<void> {\n try {\n await server.server.sendResourceUpdated({ uri });\n } catch {\n // Notification is best-effort for disconnected clients.\n }\n}\n\nfunction registerResources(\n server: McpServer,\n runtime: StandaloneRuntime,\n observationStore: McpObservationStore\n): {\n resourceUris: string[];\n notifyObservationChanged: (topicId: string) => Promise<void>;\n} {\n const resourceUris: string[] = [];\n\n for (const resource of runtime.resources) {\n resourceUris.push(resource.uri);\n server.registerResource(\n resourceName(resource.uri),\n resource.uri as ResourceUri,\n {\n description: `Lucern resource: ${resource.uri}`,\n mimeType: \"application/json\",\n },\n async () => ({\n contents: [\n {\n uri: resource.uri,\n mimeType: \"application/json\",\n text: JSON.stringify(\n {\n uri: resource.uri,\n requiredScopes: resource.requiredScopes,\n authErrorCodes: runtime.authErrorCodes,\n rateLimitSignals: runtime.rateLimitSignals,\n },\n null,\n 2\n ),\n },\n ],\n })\n );\n }\n\n resourceUris.push(\"lucern://instructions\");\n server.registerResource(\n \"lucern-instructions\",\n \"lucern://instructions\",\n {\n description: \"Lucern MCP behavioral instructions\",\n mimeType: \"text/markdown\",\n },\n async () => ({\n contents: [\n {\n uri: \"lucern://instructions\",\n mimeType: \"text/markdown\",\n text: LUCERN_AGENT_MD,\n },\n ],\n })\n );\n\n resourceUris.push(OBSERVATION_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-observations-topic\",\n new ResourceTemplate(OBSERVATION_RESOURCE_TEMPLATE, { list: undefined }),\n {\n description: \"Observation stream for a topic, sorted by recency.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const topicId = readTemplateVar(\n variables as Record<string, unknown>,\n \"topicId\"\n );\n const records = topicId ? observationStore.list(topicId, 25) : [];\n return {\n contents: [\n {\n uri: `lucern://observations/topic/${topicId ?? \"unknown\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(\n {\n topicId: topicId ?? null,\n observations: records,\n total: records.length,\n requiredScopes: [\"graph:read\"],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n\n resourceUris.push(OBSERVATION_SEARCH_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-observations-search\",\n new ResourceTemplate(OBSERVATION_SEARCH_RESOURCE_TEMPLATE, {\n list: undefined,\n }),\n {\n description:\n \"Semantic-style search over observation stream for topic context recovery.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const values = variables as Record<string, unknown>;\n const topicId = readTemplateVar(values, \"topicId\");\n const query = readTemplateVar(values, \"query\");\n const matches =\n topicId && query ? observationStore.search(topicId, query, 25) : [];\n return {\n contents: [\n {\n uri: `lucern://observations/search/${topicId ?? \"unknown\"}/${query ?? \"none\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(\n {\n topicId: topicId ?? null,\n query: query ?? null,\n matches,\n requiredScopes: [\"graph:read\"],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n\n resourceUris.push(OBSERVATION_CONTEXT_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-context-topic\",\n new ResourceTemplate(OBSERVATION_CONTEXT_RESOURCE_TEMPLATE, {\n list: undefined,\n }),\n {\n description:\n \"Context injection payload for a topic using recent observations.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const topicId = readTemplateVar(\n variables as Record<string, unknown>,\n \"topicId\"\n );\n const context = topicId\n ? observationStore.getContext({ topicId, limit: 12 })\n : observationStore.getContext({ topicId: \"unknown\", limit: 12 });\n return {\n contents: [\n {\n uri: `lucern://context/topic/${topicId ?? \"unknown\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(context, null, 2),\n },\n ],\n };\n }\n );\n\n resourceUris.push(OBSERVATION_CONTEXT_SEARCH_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-context-search\",\n new ResourceTemplate(OBSERVATION_CONTEXT_SEARCH_RESOURCE_TEMPLATE, {\n list: undefined,\n }),\n {\n description:\n \"Context injection payload with semantic matches for a query.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const values = variables as Record<string, unknown>;\n const topicId = readTemplateVar(values, \"topicId\");\n const query = readTemplateVar(values, \"query\");\n const context = observationStore.getContext({\n topicId: topicId ?? \"unknown\",\n query,\n limit: 12,\n });\n return {\n contents: [\n {\n uri: `lucern://context/search/${topicId ?? \"unknown\"}/${query ?? \"none\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(context, null, 2),\n },\n ],\n };\n }\n );\n\n const notifyObservationChanged = async (topicId: string): Promise<void> => {\n const encoded = encodeURIComponent(topicId);\n await notifyResourceUpdated(\n server,\n `lucern://observations/topic/${encoded}`\n );\n await notifyResourceUpdated(server, `lucern://context/topic/${encoded}`);\n try {\n await server.server.sendResourceListChanged();\n } catch {\n // Best-effort only.\n }\n };\n\n return { resourceUris, notifyObservationChanged };\n}\n\nfunction registerPrompts(server: McpServer): string[] {\n server.registerPrompt(\n LUCERN_OBSERVER_PROMPT_NAME,\n {\n description:\n \"Observer instructions for identifying and proposing epistemic graph updates.\",\n argsSchema: {\n topicId: z.string().optional(),\n },\n },\n async (args) => ({\n description:\n \"Guidance prompt for reasoning-trace observation and confirmation-first mutations.\",\n messages: [\n {\n role: \"assistant\",\n content: {\n type: \"text\",\n text: buildLucernObserverPrompt(args.topicId),\n },\n },\n ],\n })\n );\n\n return [LUCERN_OBSERVER_PROMPT_NAME];\n}\n\nfunction registerTools(server: McpServer, runtime: StandaloneRuntime): void {\n for (const tool of runtime.tools) {\n const shape = buildToolInputShape(tool.contract);\n const handler = runtime.handlers[tool.name];\n\n server.registerTool(\n tool.name,\n {\n description: tool.contract.description,\n inputSchema: shape,\n },\n async (args) => {\n return handler(args as Record<string, unknown>, tool.contract);\n }\n );\n }\n}\n\nexport function createLucernStandaloneMcpServer(\n options?: StandaloneMcpServerOptions\n): {\n server: McpServer;\n runtime: StandaloneRuntime;\n resourceUris: string[];\n promptNames: string[];\n} {\n const observationStore = new McpObservationStore();\n let notifyObservationChanged: (topicId: string) => Promise<void> =\n async () => {};\n const runtime = createLucernMcpServer({\n ...options,\n observationStore,\n onObservationIngested: async (topicId) => {\n await notifyObservationChanged(topicId);\n },\n });\n const server = new McpServer({\n name: \"lucern-mcp\",\n version: \"0.2.0-alpha.1\",\n });\n\n registerTools(server, runtime);\n const resources = registerResources(server, runtime, observationStore);\n notifyObservationChanged = resources.notifyObservationChanged;\n const resourceUris = resources.resourceUris;\n const promptNames = registerPrompts(server);\n\n return {\n server,\n runtime,\n resourceUris,\n promptNames,\n };\n}\n\nexport async function startLucernMcpStdioServer(\n options?: StandaloneMcpServerOptions\n): Promise<{\n server: McpServer;\n runtime: StandaloneRuntime;\n resourceUris: string[];\n promptNames: string[];\n}> {\n const packageServer = createLucernStandaloneMcpServer({\n ...options,\n transportKind: options?.transportKind ?? \"stdio\",\n });\n const transport = new StdioServerTransport();\n await packageServer.server.connect(transport);\n return packageServer;\n}\n","import {\n createServer,\n type IncomingMessage,\n type ServerResponse,\n} from \"node:http\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { isServicePrincipalKey, isTenantApiKey } from \"./credentials\";\nimport {\n createLucernStandaloneMcpServer,\n type StandaloneMcpServerOptions,\n} from \"./standalone\";\n\nexport type RemoteMcpAuthHeaders = {\n apiKey?: string;\n serverToken?: string;\n};\n\nexport type RemoteMcpServerOptions = StandaloneMcpServerOptions & {\n host?: string;\n port?: number;\n path?: string;\n healthPath?: string;\n serverAuthToken?: string;\n allowApiKeyPassthrough?: boolean;\n};\n\nfunction resolveAuthMode(auth: RemoteMcpAuthHeaders):\n | \"tenant_api_key\"\n | \"service_principal\"\n | \"unknown\" {\n if (!auth.apiKey) {\n return \"unknown\";\n }\n if (isTenantApiKey(auth.apiKey)) {\n return \"tenant_api_key\";\n }\n if (isServicePrincipalKey(auth.apiKey)) {\n return \"service_principal\";\n }\n return \"unknown\";\n}\n\nfunction readHeaderValue(\n req: IncomingMessage,\n key: string\n): string | undefined {\n const value = req.headers[key.toLowerCase()];\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value) && value.length > 0) {\n return value[0];\n }\n return;\n}\n\nfunction readBearerToken(req: IncomingMessage): string | undefined {\n const authorization = readHeaderValue(req, \"authorization\");\n if (!authorization) {\n return;\n }\n const [scheme, token] = authorization.split(/\\s+/, 2);\n if (!scheme || !token) {\n return;\n }\n return scheme.toLowerCase() === \"bearer\" ? token : undefined;\n}\n\nfunction normalizePath(input: string): string {\n if (input === \"/\") {\n return input;\n }\n return input.endsWith(\"/\") ? input.slice(0, -1) : input;\n}\n\nfunction requestPath(req: IncomingMessage): string {\n const value = req.url ?? \"/\";\n try {\n return new URL(value, \"http://localhost\").pathname;\n } catch {\n return \"/\";\n }\n}\n\nfunction jsonResponse(\n res: ServerResponse,\n statusCode: number,\n payload: unknown\n): void {\n res.statusCode = statusCode;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify(payload));\n}\n\nasync function readJsonBody(req: IncomingMessage): Promise<unknown> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n if (chunks.length === 0) {\n return;\n }\n const raw = Buffer.concat(chunks).toString(\"utf8\").trim();\n if (!raw) {\n return;\n }\n return JSON.parse(raw) as unknown;\n}\n\nfunction resolveAuthHeaders(\n req: IncomingMessage,\n options: RemoteMcpServerOptions\n): RemoteMcpAuthHeaders {\n const serverTokenHeader = readHeaderValue(req, \"x-lucern-mcp-token\");\n const bearer = readBearerToken(req);\n\n const authHeaders: RemoteMcpAuthHeaders = {};\n authHeaders.serverToken = serverTokenHeader ?? bearer;\n\n if (options.apiKey) {\n authHeaders.apiKey = options.apiKey;\n return authHeaders;\n }\n\n if (options.allowApiKeyPassthrough === false) {\n return authHeaders;\n }\n\n const directKey = readHeaderValue(req, \"x-lucern-key\");\n if (directKey?.trim()) {\n authHeaders.apiKey = directKey.trim();\n return authHeaders;\n }\n\n if (bearer?.startsWith(\"luc_\")) {\n authHeaders.apiKey = bearer;\n }\n\n return authHeaders;\n}\n\nexport function createLucernMcpHttpRequestHandler(\n options?: RemoteMcpServerOptions\n): (req: IncomingMessage, res: ServerResponse) => Promise<void> {\n const path = normalizePath(options?.path ?? \"/mcp\");\n const healthPath = normalizePath(options?.healthPath ?? \"/health\");\n\n return async (req, res) => {\n const currentPath = normalizePath(requestPath(req));\n const method = (req.method ?? \"GET\").toUpperCase();\n\n if (currentPath === healthPath) {\n jsonResponse(res, 200, { status: \"ok\", service: \"lucern-mcp-http\" });\n return;\n }\n\n if (currentPath !== path) {\n jsonResponse(res, 404, {\n jsonrpc: \"2.0\",\n error: { code: -32_004, message: \"Not found.\" },\n id: null,\n });\n return;\n }\n\n const auth = resolveAuthHeaders(req, options ?? {});\n if (\n options?.serverAuthToken &&\n auth.serverToken !== options.serverAuthToken\n ) {\n jsonResponse(res, 401, {\n jsonrpc: \"2.0\",\n error: { code: -32_001, message: \"Unauthorized.\" },\n id: null,\n });\n return;\n }\n\n if (!auth.apiKey) {\n jsonResponse(res, 401, {\n jsonrpc: \"2.0\",\n error: {\n code: -32_001,\n message:\n \"Missing Lucern API key. Provide x-lucern-key or Bearer luc_ token.\",\n },\n id: null,\n });\n return;\n }\n\n let parsedBody: unknown;\n if (method === \"POST\" || method === \"DELETE\") {\n try {\n parsedBody = await readJsonBody(req);\n } catch {\n jsonResponse(res, 400, {\n jsonrpc: \"2.0\",\n error: { code: -32_700, message: \"Invalid JSON body.\" },\n id: null,\n });\n return;\n }\n }\n\n const packageServer = createLucernStandaloneMcpServer({\n apiKey: auth.apiKey,\n baseUrl: options?.baseUrl,\n fetchImpl: options?.fetchImpl,\n transportKind: \"remote\",\n authMode: resolveAuthMode(auth),\n });\n\n try {\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n enableJsonResponse: true,\n });\n await packageServer.server.connect(transport);\n await transport.handleRequest(req, res, parsedBody);\n await transport.close();\n await packageServer.server.close();\n } catch (error) {\n if (!res.headersSent) {\n jsonResponse(res, 500, {\n jsonrpc: \"2.0\",\n error: {\n code: -32_603,\n message:\n error instanceof Error ? error.message : \"Internal server error.\",\n },\n id: null,\n });\n }\n }\n };\n}\n\nexport async function startLucernMcpHttpServer(\n options?: RemoteMcpServerOptions\n): Promise<{\n host: string;\n port: number;\n path: string;\n healthPath: string;\n close: () => Promise<void>;\n}> {\n const host = options?.host ?? \"127.0.0.1\";\n const port = options?.port ?? 8080;\n const path = normalizePath(options?.path ?? \"/mcp\");\n const healthPath = normalizePath(options?.healthPath ?? \"/health\");\n const handler = createLucernMcpHttpRequestHandler(options);\n const server = createServer((req, res) => {\n handler(req, res).catch((error) => {\n if (!res.headersSent) {\n jsonResponse(res, 500, {\n jsonrpc: \"2.0\",\n error: {\n code: -32_603,\n message:\n error instanceof Error ? error.message : \"Internal server error.\",\n },\n id: null,\n });\n }\n });\n });\n\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, host, () => {\n server.off(\"error\", reject);\n resolve();\n });\n });\n\n const address = server.address();\n const listeningPort =\n typeof address === \"object\" && address && typeof address.port === \"number\"\n ? address.port\n : port;\n\n return {\n host,\n port: listeningPort,\n path,\n healthPath,\n close: async () => {\n await new Promise<void>((resolve, reject) => {\n server.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n });\n },\n };\n}\n","import { startLucernMcpHttpServer } from \"./remote\";\nimport { startLucernMcpStdioServer } from \"./standalone\";\n\ntype CliConfig = {\n transport?: \"stdio\" | \"http\";\n apiKey?: string;\n baseUrl?: string;\n topicId?: string;\n host?: string;\n port?: number;\n path?: string;\n healthPath?: string;\n serverAuthToken?: string;\n allowApiKeyPassthrough?: boolean;\n};\n\nfunction parseArgs(args: readonly string[]): CliConfig {\n const config: CliConfig = {};\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n const next = args[index + 1];\n if (arg === \"--api-key\" && next) {\n config.apiKey = next;\n index += 1;\n continue;\n }\n if (arg === \"--transport\" && next) {\n if (next === \"stdio\" || next === \"http\") {\n config.transport = next;\n }\n index += 1;\n continue;\n }\n if (arg === \"--base-url\" && next) {\n config.baseUrl = next;\n index += 1;\n continue;\n }\n if (arg === \"--topic-id\" && next) {\n config.topicId = next;\n index += 1;\n continue;\n }\n if (arg === \"--host\" && next) {\n config.host = next;\n index += 1;\n continue;\n }\n if (arg === \"--port\" && next) {\n const parsed = Number.parseInt(next, 10);\n if (Number.isFinite(parsed) && parsed > 0) {\n config.port = parsed;\n }\n index += 1;\n continue;\n }\n if (arg === \"--path\" && next) {\n config.path = next;\n index += 1;\n continue;\n }\n if (arg === \"--health-path\" && next) {\n config.healthPath = next;\n index += 1;\n continue;\n }\n if (arg === \"--server-auth-token\" && next) {\n config.serverAuthToken = next;\n index += 1;\n continue;\n }\n if (arg === \"--allow-api-key-passthrough\") {\n config.allowApiKeyPassthrough = true;\n continue;\n }\n if (arg === \"--no-api-key-passthrough\") {\n config.allowApiKeyPassthrough = false;\n }\n }\n return config;\n}\n\nfunction printUsage(): void {\n console.error(\n [\n \"Usage:\",\n \" lucern-mcp [--transport stdio|http] [options]\",\n \"\",\n \"Env fallbacks:\",\n \" LUCERN_MCP_TRANSPORT\",\n \" LUCERN_API_KEY\",\n \" LUCERN_BASE_URL\",\n \" LUCERN_TOPIC_ID\",\n \" LUCERN_MCP_HOST\",\n \" LUCERN_MCP_PORT\",\n \" LUCERN_MCP_PATH\",\n \" LUCERN_MCP_HEALTH_PATH\",\n \" LUCERN_MCP_SERVER_AUTH_TOKEN\",\n \" LUCERN_MCP_ALLOW_API_KEY_PASSTHROUGH\",\n \"\",\n \"Options:\",\n \" --transport <stdio|http> Transport mode (default: stdio)\",\n \" --api-key <key> Static Lucern API key for upstream calls\",\n \" --base-url <url> Lucern platform API base URL\",\n \" --host <host> HTTP host (default: 127.0.0.1)\",\n \" --port <port> HTTP port (default: 8080)\",\n \" --path <path> MCP HTTP route (default: /mcp)\",\n \" --health-path <path> Health route (default: /health)\",\n \" --server-auth-token <token> Optional bearer/shared token to protect hosted MCP\",\n \" --allow-api-key-passthrough Allow inbound x-lucern-key/Bearer luc_* pass-through\",\n \" --no-api-key-passthrough Disable inbound API key pass-through\",\n \" --topic-id <id> Optional topic hint for logging only\",\n ].join(\"\\n\")\n );\n}\n\nexport async function runLucernMcpCli(\n argv: readonly string[] = process.argv.slice(2)\n): Promise<void> {\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n printUsage();\n return;\n }\n\n const parsed = parseArgs(argv);\n const transport = (\n parsed.transport ??\n process.env.LUCERN_MCP_TRANSPORT ??\n \"stdio\"\n ).toLowerCase();\n const apiKey = parsed.apiKey ?? process.env.LUCERN_API_KEY;\n const baseUrl = parsed.baseUrl ?? process.env.LUCERN_BASE_URL;\n const topicId = parsed.topicId ?? process.env.LUCERN_TOPIC_ID;\n const host = parsed.host ?? process.env.LUCERN_MCP_HOST;\n const path = parsed.path ?? process.env.LUCERN_MCP_PATH;\n const healthPath = parsed.healthPath ?? process.env.LUCERN_MCP_HEALTH_PATH;\n const serverAuthToken =\n parsed.serverAuthToken ?? process.env.LUCERN_MCP_SERVER_AUTH_TOKEN;\n const allowApiKeyPassthrough =\n parsed.allowApiKeyPassthrough ??\n (process.env.LUCERN_MCP_ALLOW_API_KEY_PASSTHROUGH\n ? process.env.LUCERN_MCP_ALLOW_API_KEY_PASSTHROUGH.toLowerCase() !==\n \"false\"\n : true);\n const portValue = parsed.port ?? process.env.LUCERN_MCP_PORT;\n const parsedPort =\n typeof portValue === \"number\"\n ? portValue\n : portValue\n ? Number.parseInt(portValue, 10)\n : undefined;\n const port =\n parsedPort && Number.isFinite(parsedPort) && parsedPort > 0\n ? parsedPort\n : undefined;\n\n if (transport !== \"stdio\" && transport !== \"http\") {\n console.error(`Unsupported transport: ${transport}`);\n printUsage();\n process.exitCode = 1;\n return;\n }\n\n if (transport === \"stdio\" && !apiKey) {\n console.error(\"LUCERN_API_KEY is required.\");\n printUsage();\n process.exitCode = 1;\n return;\n }\n\n if (transport === \"stdio\") {\n await startLucernMcpStdioServer({\n apiKey,\n baseUrl,\n });\n\n if (topicId) {\n console.error(`lucern-mcp started (stdio) for topicId=${topicId}`);\n } else {\n console.error(\"lucern-mcp started (stdio)\");\n }\n return;\n }\n\n const hosted = await startLucernMcpHttpServer({\n apiKey,\n baseUrl,\n host,\n port,\n path,\n healthPath,\n serverAuthToken,\n allowApiKeyPassthrough,\n });\n\n const base = `http://${hosted.host}:${hosted.port}`;\n console.error(`lucern-mcp started (http): ${base}${hosted.path}`);\n console.error(`lucern-mcp health: ${base}${hosted.healthPath}`);\n if (topicId) {\n console.error(`lucern-mcp topic hint: ${topicId}`);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/execution.ts","../src/agentInstructions.ts","../src/credentials.ts","../src/observation-store.ts","../../sdk/src/coreClient.ts","../../sdk/src/sdkSurface.ts","../../sdk/src/adminClient.ts","../../sdk/src/answersClient.ts","../../sdk/src/audiencesClient.ts","../../sdk/src/auditClient.ts","../../sdk/src/beliefsClient.ts","../../sdk/src/customTools.ts","../../sdk/src/ontologyClient.ts","../../sdk/src/graphClient.ts","../../sdk/src/identityClient.ts","../../sdk/src/topicsClient.ts","../../sdk/src/gatewayFacades.ts","../../sdk/src/decisionsClient.ts","../../sdk/src/contextClient.ts","../../sdk/src/harnessClient.ts","../../sdk/src/learningClient.ts","../../sdk/src/mcpParityClient.ts","../../sdk/src/packsClient.ts","../../sdk/src/policyClient.ts","../../sdk/src/reportsClient.ts","../../sdk/src/schemaClient.ts","../../sdk/src/version.ts","../../sdk/src/workflowClient.ts","../../sdk/src/client.ts","../../sdk/src/controlObjectOwnership.ts","../../sdk/src/contracts/lens-workflow.contract.ts","../../sdk/src/contracts/mcp-tools.contract.ts","../../sdk/src/mcpParitySurface.ts","../src/types.ts","../src/handler-factory.ts","../src/handlers/beliefs.ts","../src/handlers/context.ts","../src/handlers/contradictions.ts","../src/handlers/edges.ts","../src/handlers/evidence.ts","../src/handlers/graph.ts","../src/handlers/judgments.ts","../src/handlers/observations.ts","../src/handlers/policy.ts","../src/handlers/questions.ts","../src/handlers/research.ts","../src/handlers/search.ts","../src/handlers/tasks.ts","../src/handlers/worktrees.ts","../src/handlers/index.ts","../src/server.ts","../src/standalone.ts","../src/remote.ts","../src/cli.ts","../src/legacyToolContracts.ts","../src/legacyAuthenticatedHandlers.ts","../src/legacyCredentialResolution.ts","../src/legacyScriptClient.ts","../src/legacyDiscovery.ts","../src/contextPackSchema.ts"],"names":["resolve","resolveAuthHeaders","asRecord","cleanString","asNodeArray","AUDIT_NODE_REFERENCE_KEY_PATTERN","matchesAuditNodeReference","readMetadata","z","path","existsSync","loadDotenv","CONTEXT_PACK_SCHEMA_VERSION","validateContextPackSchema"],"mappings":"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","file":"index.js","sourcesContent":["import type { McpToolContract } from \"@lucern/sdk\";\nimport type { McpToolResult } from \"./types\";\n\nexport type ToolExecutionTransportKind =\n | \"stdio\"\n | \"hosted\"\n | \"remote\"\n | \"chat\"\n | (string & {});\n\nexport type ToolExecutionAuthMode =\n | \"interactive_user\"\n | \"service_principal\"\n | \"tenant_api_key\"\n | \"session_token\"\n | \"unknown\";\n\nexport type ToolExecutionEnvelope = {\n toolName: string;\n params: Record<string, unknown>;\n contract: McpToolContract;\n transport: {\n kind: ToolExecutionTransportKind;\n surface: \"mcp\" | \"chat\";\n normalizedAt: \"handler_boundary\";\n };\n auth: {\n mode: ToolExecutionAuthMode;\n };\n policy: {\n requiredScopes: readonly string[];\n enforcement: \"gateway\";\n };\n audit: {\n source: \"gateway_envelope\";\n structuralFields: readonly [\n \"toolName\",\n \"code\",\n \"status\",\n \"correlationId\",\n \"policyTraceId\",\n \"invariant\",\n ];\n };\n};\n\nexport type ToolExecutionAuditEvent = {\n toolName: string;\n contractName: string;\n transportKind: ToolExecutionTransportKind;\n authMode: ToolExecutionAuthMode;\n requiredScopes: readonly string[];\n source: \"gateway_envelope\";\n isError: boolean;\n code?: string;\n status?: number;\n correlationId?: string | null;\n policyTraceId?: string | null;\n invariant?: string | null;\n};\n\nexport type ToolExecutionHookSet = {\n onEnvelope?: (envelope: ToolExecutionEnvelope) => Promise<void> | void;\n onAuditEvent?: (event: ToolExecutionAuditEvent) => Promise<void> | void;\n};\n\nexport type TransportParityDriftKind =\n | \"missing_tool\"\n | \"degraded_behavior\"\n | \"audit_drift\"\n | \"policy_drift\";\n\nconst SCOPE_ALIAS_GROUPS: readonly (readonly string[])[] = [];\n\nexport function classifyTransportParityDrift(\n kind: TransportParityDriftKind\n): \"critical\" | \"high\" | \"medium\" {\n switch (kind) {\n case \"missing_tool\":\n return \"critical\";\n case \"degraded_behavior\":\n return \"high\";\n case \"audit_drift\":\n case \"policy_drift\":\n return \"medium\";\n }\n}\n\nexport function createToolExecutionEnvelope(args: {\n toolName: string;\n params: Record<string, unknown>;\n contract: McpToolContract;\n transportKind: ToolExecutionTransportKind;\n authMode: ToolExecutionAuthMode;\n requiredScopes: readonly string[];\n}): ToolExecutionEnvelope {\n return {\n toolName: args.toolName,\n params: args.params,\n contract: args.contract,\n transport: {\n kind: args.transportKind,\n surface: args.transportKind === \"chat\" ? \"chat\" : \"mcp\",\n normalizedAt: \"handler_boundary\",\n },\n auth: {\n mode: args.authMode,\n },\n policy: {\n requiredScopes: args.requiredScopes,\n enforcement: \"gateway\",\n },\n audit: {\n source: \"gateway_envelope\",\n structuralFields: [\n \"toolName\",\n \"code\",\n \"status\",\n \"correlationId\",\n \"policyTraceId\",\n \"invariant\",\n ],\n },\n };\n}\n\nfunction hasValue(value: unknown): boolean {\n if (value === undefined || value === null) {\n return false;\n }\n if (typeof value === \"string\") {\n return value.trim().length > 0;\n }\n if (Array.isArray(value)) {\n return value.length > 0;\n }\n return true;\n}\n\nexport function normalizeToolExecutionParams(\n params: Record<string, unknown>\n): Record<string, unknown> {\n const normalized = { ...params };\n\n for (const aliases of SCOPE_ALIAS_GROUPS) {\n const sourceKey = aliases.find((key) => hasValue(normalized[key]));\n if (!sourceKey) {\n continue;\n }\n\n for (const key of aliases) {\n if (!hasValue(normalized[key])) {\n normalized[key] = normalized[sourceKey];\n }\n }\n }\n\n return normalized;\n}\n\nexport function parseToolExecutionMetadata(result: McpToolResult): {\n isError: boolean;\n code?: string;\n status?: number;\n correlationId?: string | null;\n policyTraceId?: string | null;\n invariant?: string | null;\n} {\n const raw = result.content[0]?.text;\n if (!raw) {\n return { isError: Boolean(result.isError) };\n }\n\n try {\n const payload = JSON.parse(raw) as Record<string, unknown>;\n return {\n isError: Boolean(result.isError),\n code: typeof payload.code === \"string\" ? payload.code : undefined,\n status: typeof payload.status === \"number\" ? payload.status : undefined,\n correlationId:\n typeof payload.correlationId === \"string\" ||\n payload.correlationId === null\n ? (payload.correlationId as string | null)\n : undefined,\n policyTraceId:\n typeof payload.policyTraceId === \"string\" ||\n payload.policyTraceId === null\n ? (payload.policyTraceId as string | null)\n : undefined,\n invariant:\n typeof payload.invariant === \"string\" || payload.invariant === null\n ? (payload.invariant as string | null)\n : undefined,\n };\n } catch {\n return { isError: Boolean(result.isError) };\n }\n}\n\nexport async function executeToolWithEnvelope(args: {\n envelope: ToolExecutionEnvelope;\n execute: () => Promise<McpToolResult>;\n hooks?: ToolExecutionHookSet;\n}): Promise<McpToolResult> {\n await args.hooks?.onEnvelope?.(args.envelope);\n\n const result = await args.execute();\n const metadata = parseToolExecutionMetadata(result);\n\n await args.hooks?.onAuditEvent?.({\n toolName: args.envelope.toolName,\n contractName: args.envelope.contract.name,\n transportKind: args.envelope.transport.kind,\n authMode: args.envelope.auth.mode,\n requiredScopes: args.envelope.policy.requiredScopes,\n source: args.envelope.audit.source,\n ...metadata,\n });\n\n return result;\n}\n","export const LUCERN_OBSERVER_PROMPT_NAME = \"lucern-observer\";\n\nexport const LUCERN_AGENT_MD = `# Lucern — Reasoning Intelligence\n\nYou are connected to a Lucern reasoning graph. Lucern tracks beliefs, evidence,\nquestions, judgments, and contradictions as structured reasoning state.\n\n## Behavioral Mode\n\nOperate in active observation mode:\n\n1. Watch for claims, evidence, questions, and contradictions.\n2. Suggest graph updates when reasoning-relevant events appear.\n3. Always request user confirmation before mutating graph state.\n4. Preserve uncertainty explicitly; unresolved contradictions are valid.\n\nUse this suggestion format:\n\n\\`🔍 Lucern detected: [what changed] -> Want me to log this?\\`\n\n## Tool Use Defaults\n\n1. Read context first for substantive questions.\n2. Prefer atomic writes: create belief/evidence/question separately, then link edges.\n3. Use worktree lifecycle for investigations: add_worktree -> merge -> push.\n4. Never auto-score confidence without explicit rationale.\n\n## Safety Defaults\n\n1. Do not fabricate evidence.\n2. Do not collapse contradictions automatically.\n3. Keep provenance and rationale in every write path.\n`;\n\nexport function buildLucernObserverPrompt(topicId?: string): string {\n const topicScope = topicId\n ? `Topic scope: ${topicId}.`\n : \"Topic scope: current active topic.\";\n return [\n \"You are in Lucern observation mode.\",\n topicScope,\n \"Continuously watch conversation and tool outputs for epistemic events:\",\n \"- new claim -> create_belief\",\n \"- supporting/challenging source -> add_evidence\",\n \"- unresolved unknown -> create_question\",\n \"- conflict between beliefs -> flag_contradiction\",\n \"Always ask for explicit confirmation before any mutation.\",\n ].join(\"\\n\");\n}\n","const TENANT_API_KEY_PREFIXES = [\"luc_\", \"stk_\"] as const;\nconst SERVICE_PRINCIPAL_KEY_PREFIXES = [\"lk_\", \"lsk_\"] as const;\n\nexport function isTenantApiKey(value: string): boolean {\n return TENANT_API_KEY_PREFIXES.some((prefix) => value.startsWith(prefix));\n}\n\nexport function isServicePrincipalKey(value: string): boolean {\n return SERVICE_PRINCIPAL_KEY_PREFIXES.some((prefix) =>\n value.startsWith(prefix)\n );\n}\n","export type ObservationKind =\n | \"claim\"\n | \"evidence\"\n | \"question\"\n | \"contradiction\"\n | \"judgment\"\n | \"note\";\n\nexport type ObservationRecord = {\n observationId: string;\n topicId: string;\n observationType: ObservationKind;\n summary: string;\n source?: string;\n confidence?: number;\n tags?: string[];\n metadata?: Record<string, unknown>;\n createdAt: number;\n};\n\nexport type ObservationContext = {\n topicId: string;\n totalObservations: number;\n latest: ObservationRecord[];\n semanticMatches: ObservationRecord[];\n byType: Record<ObservationKind, number>;\n generatedAt: number;\n};\n\ntype ObservationIngestInput = {\n topicId: string;\n observationType: ObservationKind;\n summary: string;\n source?: string;\n confidence?: number;\n tags?: string[];\n metadata?: Record<string, unknown>;\n};\n\ntype ObservationContextInput = {\n topicId: string;\n query?: string;\n limit?: number;\n};\n\nexport class McpObservationStore {\n private readonly byTopic = new Map<string, ObservationRecord[]>();\n\n ingest(input: ObservationIngestInput): ObservationRecord {\n const record: ObservationRecord = {\n observationId: `obs_${crypto.randomUUID()}`,\n topicId: input.topicId,\n observationType: input.observationType,\n summary: input.summary,\n source: input.source,\n confidence: input.confidence,\n tags: input.tags,\n metadata: input.metadata,\n createdAt: Date.now(),\n };\n\n const existing = this.byTopic.get(input.topicId) ?? [];\n existing.push(record);\n this.byTopic.set(input.topicId, existing);\n\n return record;\n }\n\n list(topicId: string, limit = 20): ObservationRecord[] {\n const records = this.byTopic.get(topicId) ?? [];\n return [...records]\n .sort((left, right) => right.createdAt - left.createdAt)\n .slice(0, Math.max(1, limit));\n }\n\n search(topicId: string, query: string, limit = 10): ObservationRecord[] {\n const records = this.byTopic.get(topicId) ?? [];\n const terms = tokenize(query);\n if (terms.length === 0) {\n return this.list(topicId, limit);\n }\n\n const scored = records\n .map((record) => ({\n record,\n score: scoreObservation(record, terms),\n }))\n .filter((entry) => entry.score > 0)\n .sort(\n (left, right) =>\n right.score - left.score ||\n right.record.createdAt - left.record.createdAt\n )\n .slice(0, Math.max(1, limit));\n\n return scored.map((entry) => entry.record);\n }\n\n getContext(input: ObservationContextInput): ObservationContext {\n const limit = Math.max(1, input.limit ?? 8);\n const records = this.byTopic.get(input.topicId) ?? [];\n\n const byType: Record<ObservationKind, number> = {\n claim: 0,\n evidence: 0,\n question: 0,\n contradiction: 0,\n judgment: 0,\n note: 0,\n };\n\n for (const record of records) {\n byType[record.observationType] += 1;\n }\n\n return {\n topicId: input.topicId,\n totalObservations: records.length,\n latest: this.list(input.topicId, limit),\n semanticMatches: input.query\n ? this.search(input.topicId, input.query, limit)\n : this.list(input.topicId, Math.min(limit, 5)),\n byType,\n generatedAt: Date.now(),\n };\n }\n}\n\nfunction tokenize(query: string): string[] {\n return query\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .map((term) => term.trim())\n .filter((term) => term.length >= 2);\n}\n\nfunction scoreObservation(record: ObservationRecord, terms: string[]): number {\n const source = [\n record.summary,\n record.source ?? \"\",\n ...(record.tags ?? []),\n ...(record.metadata\n ? Object.values(record.metadata).map((value) => String(value))\n : []),\n ]\n .join(\" \")\n .toLowerCase();\n\n let score = 0;\n for (const term of terms) {\n if (!source.includes(term)) {\n continue;\n }\n score += 1;\n if (source.includes(` ${term} `)) {\n score += 0.5;\n }\n }\n\n return score;\n}\n","import type { JsonObject, JsonValue } from \"./types\";\n\n/** Tenant and workspace identifiers used to scope gateway requests. */\nexport type GatewayScope = {\n tenantId?: string;\n workspaceId?: string;\n};\n\n/** Successful response envelope from the platform gateway with correlation metadata. */\nexport type PlatformGatewaySuccess<T> = {\n success: true;\n data: T;\n correlationId: string;\n policyTraceId: string | null;\n idempotentReplay: boolean;\n};\n\n/** Failed response envelope with structured error codes and optional invariant references. */\nexport type PlatformGatewayFailure = {\n success: false;\n /**\n * Error string is the canonical envelope field.\n * Object form is legacy-only compatibility for older gateway responses.\n */\n error:\n | string\n | {\n code: string;\n message: string;\n details?: JsonValue;\n };\n code?: string;\n invariant?: string | null;\n suggestion?: string | null;\n details?: JsonValue;\n legacyError?: {\n code: string;\n message: string;\n details?: JsonValue;\n };\n correlationId: string;\n policyTraceId: string | null;\n};\n\n/** Discriminated union of success and failure gateway responses. */\nexport type PlatformGatewayEnvelope<T> =\n | PlatformGatewaySuccess<T>\n | PlatformGatewayFailure;\n\n/**\n * Structured error thrown when a platform API request fails.\n *\n * Includes HTTP status, machine-readable error code, optional invariant\n * reference, and actionable suggestions for common failure modes.\n */\nexport class LucernApiError extends Error {\n public readonly code: string;\n public readonly status: number;\n public readonly invariant?: string | null;\n public readonly suggestion?: string | null;\n public readonly details?: JsonValue;\n public readonly requestId?: string;\n public readonly correlationId?: string;\n public readonly policyTraceId?: string | null;\n\n constructor(args: {\n code: string;\n message: string;\n status: number;\n invariant?: string | null;\n suggestion?: string | null;\n details?: JsonValue;\n requestId?: string;\n correlationId?: string;\n policyTraceId?: string | null;\n }) {\n super(args.message);\n this.name = \"LucernApiError\";\n this.code = args.code;\n this.status = args.status;\n this.invariant = args.invariant;\n this.suggestion = args.suggestion;\n this.details = args.details;\n this.requestId = args.requestId;\n this.correlationId = args.correlationId;\n this.policyTraceId = args.policyTraceId;\n }\n}\n\n/** Supported HTTP methods for gateway requests. */\nexport type GatewayHttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"PATCH\" | \"DELETE\";\n\ntype FetchLike = (\n input: RequestInfo | URL,\n init?: RequestInit\n) => Promise<Response>;\n\n/** Context passed to the `onRequest` hook before each gateway request attempt. */\nexport type GatewayRequestHookContext = {\n requestId: string;\n attempt: number;\n maxRetries: number;\n method: GatewayHttpMethod;\n path: string;\n url: string;\n headers: Headers;\n body?: string;\n timeoutMs: number;\n};\n\n/** Context passed to the `onResponse` hook after each gateway request attempt (including retries and failures). */\nexport type GatewayResponseHookContext = GatewayRequestHookContext & {\n durationMs: number;\n status?: number;\n response?: Response;\n error?: unknown;\n correlationId?: string;\n policyTraceId?: string | null;\n idempotentReplay?: boolean;\n retryAfterMs?: number | null;\n willRetry: boolean;\n};\n\n/**\n * Low-level transport configuration for the platform gateway client.\n *\n * Most developers should use {@link createLucernClient} instead, which wraps\n * this config with higher-level conveniences like `apiKey` and `environment`.\n */\nexport type GatewayClientConfig = {\n baseUrl?: string;\n fetchImpl?: FetchLike;\n getAuthHeaders?:\n | (() => Promise<Record<string, string>>)\n | (() => Record<string, string>);\n /** Max retries for transient errors (5xx, network). Defaults to 2. */\n maxRetries?: number;\n /** Request timeout in ms. Defaults to 15000. */\n timeoutMs?: number;\n /** Optional timeout overrides by HTTP method. */\n timeoutMsByMethod?: Partial<Record<GatewayHttpMethod, number>>;\n /** Optional request ID factory used for correlation headers. */\n requestIdFactory?: () => string;\n /** Invoked before each request attempt, including retries. */\n onRequest?:\n | ((context: GatewayRequestHookContext) => void)\n | ((context: GatewayRequestHookContext) => Promise<void>);\n /** Invoked after each request attempt, including retries and failures. */\n onResponse?:\n | ((context: GatewayResponseHookContext) => void)\n | ((context: GatewayResponseHookContext) => Promise<void>);\n};\n\n/**\n * Serialize a gateway query object into a URL query string.\n */\nexport function toQueryString(\n scope: GatewayScope & Record<string, string | number | boolean | undefined>\n): string {\n const params = new URLSearchParams();\n if (scope.tenantId) {\n params.set(\"tenantId\", scope.tenantId);\n }\n if (scope.workspaceId) {\n params.set(\"workspaceId\", scope.workspaceId);\n }\n for (const [key, value] of Object.entries(scope)) {\n if (key === \"tenantId\" || key === \"workspaceId\") {\n continue;\n }\n if (value === undefined) {\n continue;\n }\n params.set(key, String(value));\n }\n const serialized = params.toString();\n return serialized.length > 0 ? `?${serialized}` : \"\";\n}\n\nfunction fillRandomBytes(length: number): Uint8Array {\n const bytes = new Uint8Array(length);\n if (typeof globalThis.crypto?.getRandomValues === \"function\") {\n globalThis.crypto.getRandomValues(bytes);\n return bytes;\n }\n\n for (let index = 0; index < length; index += 1) {\n bytes[index] = Math.floor(Math.random() * 256);\n }\n return bytes;\n}\n\nfunction generatePortableRequestId(): string {\n if (typeof globalThis.crypto?.randomUUID === \"function\") {\n return globalThis.crypto.randomUUID();\n }\n\n const bytes = fillRandomBytes(16);\n bytes[6] = (bytes[6] & 0x0f) | 0x40;\n bytes[8] = (bytes[8] & 0x3f) | 0x80;\n const hex = Array.from(bytes, (value) => value.toString(16).padStart(2, \"0\"));\n return `${hex.slice(0, 4).join(\"\")}-${hex.slice(4, 6).join(\"\")}-${hex.slice(\n 6,\n 8\n ).join(\"\")}-${hex.slice(8, 10).join(\"\")}-${hex.slice(10).join(\"\")}`;\n}\n\n/**\n * Generate a random idempotency key for retry-safe writes.\n */\nexport function randomIdempotencyKey(): string {\n return generatePortableRequestId();\n}\n\nfunction isRetryableStatus(status: number): boolean {\n return status >= 500 || status === 408 || status === 429;\n}\n\nfunction fallbackErrorCode(status: number): string {\n if (status === 401) {\n return \"AUTHENTICATION_REQUIRED\";\n }\n if (status === 403) {\n return \"FORBIDDEN\";\n }\n if (status === 404) {\n return \"NOT_FOUND\";\n }\n if (status === 408) {\n return \"UPSTREAM_ERROR\";\n }\n if (status === 409) {\n return \"CONFLICT\";\n }\n if (status === 429) {\n return \"RATE_LIMIT_EXCEEDED\";\n }\n if (status >= 500) {\n return \"UPSTREAM_ERROR\";\n }\n return \"INTERNAL_ERROR\";\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction parseRetryAfterMs(value: string | null): number | null {\n if (!value) {\n return null;\n }\n const trimmed = value.trim();\n if (!trimmed) {\n return null;\n }\n const numeric = Number(trimmed);\n if (Number.isFinite(numeric)) {\n return Math.max(0, Math.round(numeric * 1000));\n }\n const parsedDate = Date.parse(trimmed);\n if (Number.isFinite(parsedDate)) {\n return Math.max(0, parsedDate - Date.now());\n }\n return null;\n}\n\nfunction computeRetryDelayMs(args: {\n attempt: number;\n status?: number;\n retryAfterMs?: number | null;\n}): number {\n const baseDelay =\n args.status === 429\n ? Math.max(\n args.retryAfterMs ?? 0,\n Math.min(1000 * 2 ** args.attempt, 10_000)\n )\n : Math.min(1000 * 2 ** args.attempt, 4000);\n\n if (args.status !== 429) {\n return baseDelay;\n }\n\n const jitterWindow = Math.max(250, Math.round(baseDelay * 0.25));\n return baseDelay + Math.round(Math.random() * jitterWindow);\n}\n\nfunction timeoutError(timeoutMs: number): Error {\n const error = new Error(`Request timed out after ${timeoutMs}ms`);\n error.name = \"AbortError\";\n return error;\n}\n\nfunction readPolicySummaryFromDetails(details?: JsonValue): string | null {\n if (!details || typeof details !== \"object\" || Array.isArray(details)) {\n return null;\n }\n\n const directSummary = (details as { summary?: JsonValue }).summary;\n if (typeof directSummary === \"string\" && directSummary.trim().length > 0) {\n return directSummary.trim();\n }\n\n const policy = (details as { policy?: JsonValue }).policy;\n if (!policy || typeof policy !== \"object\" || Array.isArray(policy)) {\n return null;\n }\n\n const explanation = (policy as { explanation?: JsonValue }).explanation;\n if (!explanation || typeof explanation !== \"object\" || Array.isArray(explanation)) {\n return null;\n }\n\n const nestedSummary = (explanation as { summary?: JsonValue }).summary;\n if (typeof nestedSummary === \"string\" && nestedSummary.trim().length > 0) {\n return nestedSummary.trim();\n }\n\n return null;\n}\n\n/**\n * Create the transport client used by all SDK modules.\n */\nexport function createGatewayRequestClient(config: GatewayClientConfig = {}) {\n const fetchImpl = config.fetchImpl ?? fetch;\n const baseUrl = config.baseUrl?.replace(/\\/+$/, \"\") ?? \"\";\n const maxRetries = config.maxRetries ?? 2;\n const requestIdFactory = config.requestIdFactory ?? (() => generatePortableRequestId());\n\n async function resolveAuthHeaders(): Promise<Record<string, string>> {\n if (!config.getAuthHeaders) {\n return {};\n }\n return await config.getAuthHeaders();\n }\n\n async function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs: number\n ): Promise<Response> {\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n try {\n return await fetchImpl(url, { ...init, signal: controller.signal });\n } catch (error) {\n if (controller.signal.aborted) {\n throw timeoutError(timeoutMs);\n }\n throw error;\n } finally {\n clearTimeout(timer);\n }\n }\n\n async function parsePayload<T>(\n response: Response\n ): Promise<PlatformGatewayEnvelope<T> | null> {\n const text = await response.text();\n if (!text) {\n return null;\n }\n try {\n return JSON.parse(text) as PlatformGatewayEnvelope<T>;\n } catch {\n return null;\n }\n }\n\n function resolveTimeoutMs(\n method: GatewayHttpMethod,\n requestTimeoutMs?: number\n ): number {\n if (typeof requestTimeoutMs === \"number\") {\n return requestTimeoutMs;\n }\n const methodTimeoutMs = config.timeoutMsByMethod?.[method];\n if (typeof methodTimeoutMs === \"number\") {\n return methodTimeoutMs;\n }\n return config.timeoutMs ?? 15_000;\n }\n\n function buildApiError(args: {\n requestId: string;\n response: Response;\n failure?: PlatformGatewayFailure | null;\n }): LucernApiError {\n const failure = args.failure;\n const legacyError =\n failure && typeof failure.error === \"object\" && failure.error !== null\n ? failure.error\n : failure?.legacyError;\n const correlationId =\n failure?.correlationId ??\n args.response.headers.get(\"x-lucern-correlation-id\")?.trim() ??\n args.requestId;\n const policyTraceId =\n failure?.policyTraceId ??\n args.response.headers.get(\"x-lucern-policy-trace-id\")?.trim() ??\n null;\n const details = failure?.details ?? legacyError?.details;\n const policySummary = readPolicySummaryFromDetails(details);\n\n return new LucernApiError({\n code: failure?.code ?? legacyError?.code ?? fallbackErrorCode(args.response.status),\n message:\n policySummary ??\n (typeof failure?.error === \"string\"\n ? failure.error\n : legacyError?.message ??\n (args.response.ok\n ? \"Platform API returned an invalid success payload.\"\n : \"Platform API request failed.\")),\n status: args.response.status,\n invariant: failure?.invariant,\n suggestion: failure?.suggestion,\n details,\n requestId: args.requestId,\n correlationId,\n policyTraceId,\n });\n }\n\n async function request<T>(args: {\n path: string;\n method?: GatewayHttpMethod;\n body?: JsonObject;\n idempotencyKey?: string;\n requestId?: string;\n timeoutMs?: number;\n }): Promise<PlatformGatewaySuccess<T>> {\n const authHeaders = await resolveAuthHeaders();\n const method = args.method ?? \"GET\";\n const timeoutMs = resolveTimeoutMs(method, args.timeoutMs);\n const headers = new Headers({\n \"content-type\": \"application/json\",\n ...authHeaders,\n });\n if (args.idempotencyKey) {\n headers.set(\"idempotency-key\", args.idempotencyKey);\n }\n const requestId =\n headers.get(\"x-correlation-id\")?.trim() ||\n headers.get(\"x-request-id\")?.trim() ||\n args.requestId ||\n requestIdFactory();\n if (!headers.has(\"x-correlation-id\") && !headers.has(\"x-request-id\")) {\n headers.set(\"x-correlation-id\", requestId);\n }\n\n const url = `${baseUrl}${args.path}`;\n const serializedBody = args.body ? JSON.stringify(args.body) : undefined;\n const init: RequestInit = {\n method,\n headers,\n body: serializedBody,\n };\n\n let lastError: unknown;\n\n for (let attempt = 0; attempt <= maxRetries; attempt++) {\n const hookRequestContext: GatewayRequestHookContext = {\n requestId,\n attempt,\n maxRetries,\n method,\n path: args.path,\n url,\n headers: new Headers(headers),\n body: serializedBody,\n timeoutMs,\n };\n await config.onRequest?.(hookRequestContext);\n const startedAt = Date.now();\n try {\n const response = await fetchWithTimeout(url, init, timeoutMs);\n const responseClone = response.clone();\n const payload = await parsePayload<T>(response);\n const retryAfterMs = parseRetryAfterMs(\n response.headers.get(\"Retry-After\")\n );\n\n if (!response.ok || !payload?.success) {\n const failure =\n payload && !payload.success ? (payload as PlatformGatewayFailure) : null;\n const apiError = buildApiError({\n requestId,\n response,\n failure,\n });\n const willRetry = attempt < maxRetries && isRetryableStatus(response.status);\n\n await config.onResponse?.({\n ...hookRequestContext,\n durationMs: Date.now() - startedAt,\n status: response.status,\n response: responseClone,\n error: apiError,\n correlationId: apiError.correlationId ?? requestId,\n policyTraceId: apiError.policyTraceId ?? null,\n retryAfterMs,\n willRetry,\n });\n\n if (willRetry) {\n lastError = apiError;\n await delay(\n computeRetryDelayMs({\n attempt,\n status: response.status,\n retryAfterMs,\n })\n );\n continue;\n }\n\n throw apiError;\n }\n\n const successPayload = payload as PlatformGatewaySuccess<T>;\n await config.onResponse?.({\n ...hookRequestContext,\n durationMs: Date.now() - startedAt,\n status: response.status,\n response: responseClone,\n correlationId:\n successPayload.correlationId ??\n response.headers.get(\"x-lucern-correlation-id\")?.trim() ??\n requestId,\n policyTraceId:\n successPayload.policyTraceId ??\n response.headers.get(\"x-lucern-policy-trace-id\")?.trim() ??\n null,\n idempotentReplay: successPayload.idempotentReplay,\n retryAfterMs,\n willRetry: false,\n });\n\n return successPayload;\n } catch (fetchError) {\n if (fetchError instanceof LucernApiError) {\n throw fetchError;\n }\n const willRetry = attempt < maxRetries;\n await config.onResponse?.({\n ...hookRequestContext,\n durationMs: Date.now() - startedAt,\n error: fetchError,\n correlationId: requestId,\n policyTraceId: null,\n willRetry,\n });\n lastError = fetchError;\n if (willRetry) {\n await delay(computeRetryDelayMs({ attempt }));\n }\n }\n }\n\n throw lastError instanceof Error\n ? lastError\n : new Error(\"Platform API request failed after retries.\");\n }\n\n return {\n request,\n };\n}\n","import type { PlatformGatewaySuccess } from \"./coreClient\";\nimport type { JsonObject, ListResult } from \"./types\";\n\ntype TopicScopedValue = {\n topicId?: string;\n};\n\ntype TextScopedValue = {\n text?: string;\n canonicalText?: string;\n};\n\ntype AnyRecord = Record<string, unknown>;\n\nfunction asRecord(value: unknown): AnyRecord {\n return value && typeof value === \"object\" ? (value as AnyRecord) : {};\n}\n\nfunction cleanString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nfunction normalizeVerificationStatus(value: unknown): string | undefined {\n const status = cleanString(value);\n if (!status) {\n return undefined;\n }\n if (status === \"verified\") {\n return \"human_verified\";\n }\n if (status === \"rejected\") {\n return \"contradicted\";\n }\n return status;\n}\n\nfunction cloneWith<T extends AnyRecord>(value: T, patch: AnyRecord): T {\n return { ...value, ...patch } as T;\n}\n\n/**\n * Resolve the canonical topic identifier.\n */\nexport function resolveTopicId(value: TopicScopedValue): string | undefined {\n return cleanString(value.topicId);\n}\n\n/**\n * Resolve the canonical text field from text-first or legacy canonicalText-first inputs.\n */\nexport function resolveText(value: TextScopedValue): string | undefined {\n return cleanString(value.text) ?? cleanString(value.canonicalText);\n}\n\n/**\n * Attach the topicId to a record.\n */\nexport function withTopicAlias<T extends AnyRecord>(value: T): T {\n const topicId = cleanString(value.topicId) ?? undefined;\n if (!topicId) {\n return value;\n }\n return cloneWith(value, { topicId });\n}\n\n/**\n * Attach the text/canonicalText alias pair to a record.\n */\nexport function withTextAlias<T extends AnyRecord>(value: T): T {\n const text =\n cleanString(value.text) ?? cleanString(value.canonicalText) ?? undefined;\n if (!text) {\n return value;\n }\n return cloneWith(value, { text, canonicalText: text });\n}\n\n/**\n * Attach topic and text aliases to SDK node-like records.\n */\nexport function withSdkAliases<T extends AnyRecord>(value: T): T {\n return withTopicAlias(withTextAlias(value));\n}\n\n/**\n * Normalize a belief/question/evidence write payload to the canonical gateway shape.\n */\nexport function normalizeNodeWriteInput<T extends JsonObject>(value: T): T {\n const topicId = resolveTopicId(value);\n const text = resolveText(value);\n const verificationStatus = normalizeVerificationStatus(value.verificationStatus);\n const next = { ...value } as JsonObject;\n\n if (topicId) {\n next.topicId = topicId;\n }\n if (text) {\n next.text = text;\n next.canonicalText = text;\n }\n if (verificationStatus) {\n next.verificationStatus = verificationStatus;\n }\n\n return next as T;\n}\n\nexport function normalizeNodeVerificationStatus(value: unknown) {\n return normalizeVerificationStatus(value);\n}\n\n/**\n * Build a topic-aware query object.\n */\nexport function normalizeTopicQuery<T extends JsonObject>(value: T): T {\n const topicId = cleanString(value.topicId);\n if (!topicId) {\n return value;\n }\n return { ...value, topicId } as T;\n}\n\n/**\n * Extract list items from array or list-envelope payloads.\n */\nexport function asListItems<T>(data: unknown, legacyKey?: string): T[] {\n if (Array.isArray(data)) {\n return data as T[];\n }\n\n const record = asRecord(data);\n if (Array.isArray(record.items)) {\n return record.items as T[];\n }\n if (legacyKey && Array.isArray(record[legacyKey])) {\n return record[legacyKey] as T[];\n }\n\n return [];\n}\n\n/**\n * Standardize list data to { items, total } while retaining an optional legacy array key.\n */\nexport function createListResult<T, LegacyKey extends string>(\n items: T[],\n legacyKey?: LegacyKey\n): ListResult<T, LegacyKey> {\n const result = {\n items,\n total: items.length,\n } as ListResult<T, LegacyKey>;\n\n if (legacyKey) {\n (result as Record<string, unknown>)[legacyKey] = items;\n }\n\n return result;\n}\n\n/**\n * Map a gateway success envelope's data while preserving the transport metadata.\n */\nexport function mapGatewayData<T, U>(\n response: PlatformGatewaySuccess<T>,\n mapper: (data: T) => U\n): PlatformGatewaySuccess<U> {\n return {\n ...response,\n data: mapper(response.data),\n };\n}\n\n/**\n * Apply SDK aliases across all items in a list-like payload.\n */\nexport function mapAliasedList<\n TItem extends AnyRecord,\n LegacyKey extends string,\n>(\n data: unknown,\n legacyKey?: LegacyKey\n): ListResult<TItem, LegacyKey> {\n const items = asListItems<TItem>(data, legacyKey).map((item) =>\n withSdkAliases(item)\n );\n return createListResult(items, legacyKey);\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { ControlObjectOwnershipContract } from \"./controlObjectOwnership\";\nimport type { JsonObject } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\n/** Configuration for the admin client. */\nexport type AdminClientConfig = GatewayClientConfig;\n\nexport type TenantApiKeyRecord = {\n id?: string;\n tenantId?: string;\n workspaceId?: string;\n label?: string;\n keyPrefix?: string;\n hashedKey?: string;\n scopes?: string[];\n status?: string;\n expiresAt?: number;\n lastUsedAt?: number;\n revokedAt?: number;\n revokedBy?: string;\n createdBy?: string;\n createdAt?: number;\n updatedAt?: number;\n};\n\nexport type TenantVaultSecretRecord = {\n id?: string;\n tenantId?: string;\n workspaceId?: string;\n name?: string;\n description?: string;\n lastRotated?: number;\n createdBy?: string;\n updatedBy?: string;\n createdAt?: number;\n updatedAt?: number;\n};\n\nexport type TenantAuthPolicyMode = \"open\" | \"invite_only\" | \"sso_required\";\nexport type TenantTopicVisibility = \"private\" | \"tenant\" | \"public\";\nexport type TenantFeatureFlags = Record<string, boolean>;\nexport type TenantModelSlotOverrides = Record<string, string>;\n\nexport type TenantConfigRecord = {\n tenantId: string;\n authPolicyMode: TenantAuthPolicyMode;\n defaultSessionTTL: number;\n defaultTopicVisibility: TenantTopicVisibility;\n featureFlags: TenantFeatureFlags;\n maxWorkspaceCount: number;\n defaultModelSlotOverrides: TenantModelSlotOverrides;\n updatedAt?: number;\n updatedBy?: string;\n};\n\nexport type TenantModelRoutingSlotRecord = {\n slot: string;\n category?: string;\n description?: string;\n modelKey: string;\n promptName?: string;\n temperature?: number;\n maxTokens?: number;\n enabled?: boolean;\n};\n\nexport type TenantModelRoutingModelRecord = {\n key: string;\n name?: string;\n modelId?: string;\n provider?: string;\n enabled?: boolean;\n recommended?: boolean;\n notes?: string;\n};\n\nexport type TenantModelRoutingBindingRecord = {\n slot: string;\n providerId: string;\n secretRef: string;\n label?: string;\n keyHint?: string;\n};\n\nexport type TenantModelRouteOverrideStatus =\n | \"inherit\"\n | \"active\"\n | \"blocked_missing_model\"\n | \"blocked_missing_binding\";\n\nexport type TenantModelRouteBindingState = \"ready\" | \"missing\";\nexport type TenantModelRouteSource = \"platform_default\" | \"tenant_override\";\n\nexport type TenantModelRouteRow = {\n slot: string;\n category: string;\n description?: string;\n promptName?: string;\n slotEnabled: boolean;\n platformModelKey: string;\n platformModelName?: string;\n platformProviderId?: string;\n overrideModelKey?: string;\n overrideModelName?: string;\n overrideProviderId?: string;\n effectiveModelKey: string;\n effectiveModelName?: string;\n effectiveProviderId?: string;\n effectiveSource: TenantModelRouteSource;\n overrideStatus: TenantModelRouteOverrideStatus;\n bindingState: TenantModelRouteBindingState;\n bindingLabel?: string;\n bindingKeyHint?: string;\n bindingSecretRef?: string;\n};\n\nexport type TenantModelRoutingSummary = {\n totalSlots: number;\n promptBoundSlots: number;\n activeOverrides: number;\n blockedOverrides: number;\n readyBindings: number;\n};\n\nexport type TenantModelRoutingSnapshot = {\n tenantId: string;\n defaultModelSlotOverrides: Record<string, string>;\n slots: TenantModelRoutingSlotRecord[];\n models: TenantModelRoutingModelRecord[];\n bindings: TenantModelRoutingBindingRecord[];\n rows: TenantModelRouteRow[];\n summary: TenantModelRoutingSummary;\n notes: string[];\n};\n\nfunction asTenantApiKeyRecord(data: unknown): TenantApiKeyRecord | null {\n if (!data || typeof data !== \"object\") {\n return null;\n }\n return data as TenantApiKeyRecord;\n}\n\nfunction asTenantApiKeyArray(data: unknown): TenantApiKeyRecord[] {\n if (!Array.isArray(data)) {\n return [];\n }\n return data\n .map(asTenantApiKeyRecord)\n .filter((row): row is TenantApiKeyRecord => Boolean(row));\n}\n\nfunction asTenantVaultSecretRecord(\n data: unknown\n): TenantVaultSecretRecord | null {\n if (!data || typeof data !== \"object\") {\n return null;\n }\n return data as TenantVaultSecretRecord;\n}\n\nfunction asTenantVaultSecretArray(data: unknown): TenantVaultSecretRecord[] {\n if (!Array.isArray(data)) {\n return [];\n }\n return data\n .map(asTenantVaultSecretRecord)\n .filter((row): row is TenantVaultSecretRecord => Boolean(row));\n}\n\n/**\n * Create the admin client for tenant, workspace, and membership administration.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to manage tenants, workspaces, and memberships.\n */\nexport function createAdminClient(config: AdminClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List tenants visible to the current principal.\n */\n async listTenants(\n query: {\n status?: \"active\" | \"disabled\" | \"archived\";\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/tenants${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"tenants\"\n )\n )\n );\n },\n\n /**\n * Create a tenant.\n */\n async createTenant(\n input: {\n key: string;\n slug?: string;\n name: string;\n status?: \"active\" | \"disabled\" | \"archived\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/tenants\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Get the control-object ownership contract.\n */\n async getControlObjectOwnership() {\n return gateway.request<ControlObjectOwnershipContract>({\n path: \"/api/platform/v1/admin/control-ownership\",\n });\n },\n\n /**\n * @deprecated Use getControlObjectOwnership.\n */\n async getControlObjectOwnershipContract() {\n return gateway.request<ControlObjectOwnershipContract>({\n path: \"/api/platform/v1/admin/control-ownership\",\n });\n },\n\n /**\n * List workspaces for the current admin scope.\n */\n async listWorkspaces(\n query: GatewayScope & {\n status?: \"active\" | \"archived\";\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/workspaces${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"workspaces\"\n )\n )\n );\n },\n\n /**\n * Create a workspace.\n */\n async createWorkspace(\n input: GatewayScope & {\n workspaceId?: string;\n key?: string;\n slug?: string;\n name?: string;\n status?: \"active\" | \"archived\";\n defaultProjectVisibility?:\n | \"private\"\n | \"team\"\n | \"firm\"\n | \"external\"\n | \"public\";\n restore?: boolean;\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/workspaces\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List memberships for the current admin scope.\n */\n async listMemberships(\n query: GatewayScope & {\n principalId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/memberships${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"memberships\"\n )\n )\n );\n },\n\n /**\n * Create a membership.\n */\n async createMembership(\n input: GatewayScope & {\n membershipId?: string;\n principalId: string;\n role:\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\n status?: \"active\" | \"revoked\" | \"expired\";\n source?: \"bootstrap\" | \"manual\" | \"sync\" | \"invitation\";\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/memberships\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a membership.\n */\n async updateMembership(\n input: GatewayScope & {\n membershipId?: string;\n principalId: string;\n role:\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\n status?: \"active\" | \"revoked\" | \"expired\";\n source?: \"bootstrap\" | \"manual\" | \"sync\" | \"invitation\";\n },\n idempotencyKey?: string\n ) {\n return this.createMembership(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createMembership or updateMembership.\n */\n async upsertMembership(\n input: GatewayScope & {\n membershipId?: string;\n principalId: string;\n role:\n | \"platform_admin\"\n | \"tenant_admin\"\n | \"workspace_admin\"\n | \"editor\"\n | \"viewer\"\n | \"auditor\"\n | \"service_agent\";\n status?: \"active\" | \"revoked\" | \"expired\";\n source?: \"bootstrap\" | \"manual\" | \"sync\" | \"invitation\";\n },\n idempotencyKey?: string\n ) {\n return this.createMembership(input, idempotencyKey);\n },\n\n /**\n * List tenant API keys in the current admin scope.\n */\n async listTenantApiKeys(\n scope: GatewayScope & {\n status?: \"active\" | \"revoked\" | \"expired\";\n }\n ) {\n const response = await gateway.request<{ keys?: unknown[] }>({\n path: `/api/platform/v1/tenant-api-keys${toQueryString(scope)}`,\n });\n\n return {\n ...response,\n data: {\n keys: asTenantApiKeyArray(response.data?.keys),\n },\n };\n },\n\n /**\n * Create a tenant API key.\n */\n async createTenantApiKey(\n input: GatewayScope & {\n label?: string;\n scopes: string[];\n expiresAt?: number;\n },\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{\n key?: unknown;\n plaintextKey?: string;\n }>({\n path: \"/api/platform/v1/tenant-api-keys\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n key: asTenantApiKeyRecord(response.data?.key),\n plaintextKey:\n typeof response.data?.plaintextKey === \"string\"\n ? response.data.plaintextKey\n : undefined,\n },\n };\n },\n\n /**\n * Revoke a tenant API key.\n */\n async revokeTenantApiKey(\n keyId: string,\n input: GatewayScope & { reason?: string } = {},\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/tenant-api-keys/${encodeURIComponent(keyId)}/revoke`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List tenant vault secrets.\n */\n async listTenantVaultSecrets(scope: GatewayScope) {\n const response = await gateway.request<{ secrets?: unknown[] }>({\n path: `/api/platform/v1/tenant-vault-secrets${toQueryString(scope)}`,\n });\n\n return {\n ...response,\n data: {\n secrets: asTenantVaultSecretArray(response.data?.secrets),\n },\n };\n },\n\n /**\n * Create a tenant vault secret.\n */\n async createTenantVaultSecret(\n input: GatewayScope & {\n name: string;\n description?: string;\n value: string;\n },\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{ secret?: unknown }>({\n path: \"/api/platform/v1/tenant-vault-secrets\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n secret: asTenantVaultSecretRecord(response.data?.secret),\n },\n };\n },\n\n /**\n * Update a tenant vault secret.\n */\n async updateTenantVaultSecret(\n secretId: string,\n input: GatewayScope & {\n name: string;\n description?: string;\n value?: string;\n },\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{ secret?: unknown }>({\n path: `/api/platform/v1/tenant-vault-secrets/${encodeURIComponent(secretId)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n secret: asTenantVaultSecretRecord(response.data?.secret),\n },\n };\n },\n\n /**\n * Delete a tenant vault secret.\n */\n async deleteTenantVaultSecret(\n secretId: string,\n scope: GatewayScope,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/tenant-vault-secrets/${encodeURIComponent(\n secretId\n )}${toQueryString(scope)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List tenant provider secrets.\n */\n async listTenantSecrets(\n scope: GatewayScope & {\n providerId?: string;\n status?: \"active\" | \"revoked\";\n }\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/tenant-secrets${toQueryString(scope)}`,\n });\n },\n\n /**\n * Upsert a tenant provider secret.\n */\n async upsertTenantSecret(\n input: GatewayScope & {\n providerId: string;\n apiKey: string;\n label?: string;\n modelSlotIds?: string[];\n passThroughOnly?: boolean;\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/tenant-secrets\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Revoke a tenant provider secret.\n */\n async revokeTenantSecret(\n secretRef: string,\n input: GatewayScope & { reason?: string },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/tenant-secrets/${encodeURIComponent(secretRef)}/revoke`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Get tenant configuration.\n */\n async getTenantConfig(scope: GatewayScope & { tenantId: string }) {\n return gateway.request<TenantConfigRecord>({\n path: `/api/platform/v1/tenant-config${toQueryString(scope)}`,\n });\n },\n\n /**\n * Get tenant model routing.\n */\n async getTenantModelRouting(scope: GatewayScope & { tenantId: string }) {\n return gateway.request<TenantModelRoutingSnapshot>({\n path: `/api/platform/v1/tenant-config/model-routing${toQueryString(scope)}`,\n });\n },\n\n /**\n * Upsert tenant configuration.\n */\n async upsertTenantConfig(\n input: GatewayScope & Omit<TenantConfigRecord, \"updatedAt\" | \"updatedBy\">,\n idempotencyKey?: string\n ) {\n return gateway.request<TenantConfigRecord>({\n path: \"/api/platform/v1/tenant-config\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List groups.\n */\n async listGroups(scope: GatewayScope & { limit?: number } = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/groups${toQueryString(scope)}`,\n });\n },\n\n /**\n * Create a group.\n */\n async createGroup(\n input: GatewayScope & {\n name: string;\n groupKey?: string;\n groupType?: string;\n description?: string;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/groups\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a group.\n */\n async updateGroup(\n groupId: string,\n input: GatewayScope & {\n name?: string;\n description?: string;\n workspaceId?: string;\n clearWorkspaceId?: boolean;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/groups/${encodeURIComponent(groupId)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Delete a group.\n */\n async deleteGroup(\n groupId: string,\n input: GatewayScope = {},\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/groups/${encodeURIComponent(groupId)}${toQueryString(input)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List group members.\n */\n async listGroupMembers(query: GatewayScope & { groupId: string }) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/groups/members${toQueryString(query)}`,\n });\n },\n\n /**\n * Add a group member.\n */\n async addGroupMember(\n input: GatewayScope & {\n groupId: string;\n principalId: string;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/groups/members\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Remove a group member.\n */\n async removeGroupMember(\n input: GatewayScope & { groupId: string; principalId: string },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/groups/members${toQueryString(input)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List pack-to-group assignments.\n */\n async listPackGroupAssignments(\n query: GatewayScope & {\n groupId?: string;\n status?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/groups/packs${toQueryString(query)}`,\n });\n },\n\n /**\n * Assign a pack to a group.\n */\n async assignPackToGroup(\n input: GatewayScope & {\n groupId: string;\n packKey: string;\n packVersion?: string;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/groups/packs\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Remove a pack from a group.\n */\n async removePackFromGroup(\n input: GatewayScope & { groupId: string; packKey: string },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/groups/packs${toQueryString(input)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n} from \"./coreClient\";\n\n/** Configuration for the answers client. */\nexport type AnswersClientConfig = GatewayClientConfig;\n\n/**\n * Create the answers client for retrieving question answers.\n * @param config - Gateway transport configuration.\n * @returns An object with a `get` method to fetch the answer for a question.\n */\nexport function createAnswersClient(config: AnswersClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * Get the current answer for a question.\n * @param questionId - The question node identifier.\n * @returns The answer record for the given question.\n */\n async get(questionId: string) {\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/questions/${encodeURIComponent(questionId)}/answer`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\n/** Configuration for the audiences client. */\nexport type AudiencesClientConfig = GatewayClientConfig;\n\n/** Input for creating or updating an audience registry entry. */\nexport type AudienceRegistryInput = GatewayScope & {\n audienceKey: string;\n audienceLabel: string;\n audienceClass: \"internal\" | \"restricted_external\" | \"public\";\n status?: \"active\" | \"disabled\" | \"archived\";\n description?: string;\n metadata?: JsonObject;\n};\n\n/** Input for creating an audience access grant. */\nexport type AudienceGrantInput = GatewayScope & {\n audienceKey: string;\n audienceClass?: \"internal\" | \"restricted_external\" | \"public\";\n principalId?: string;\n groupId?: string;\n expiresAt?: number;\n metadata?: JsonObject;\n};\n\n/** Input for revoking an audience grant by its identifier. */\nexport type AudienceGrantRevokeInput = GatewayScope & {\n grantId: string;\n};\n\n/**\n * Create the audiences client for registry entries and grants.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to manage audience registry entries and grants.\n */\nexport function createAudiencesClient(config: AudiencesClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List audience registry entries.\n */\n async listRegistry(\n query: GatewayScope & {\n effective?: boolean;\n status?: \"active\" | \"disabled\" | \"archived\";\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/audiences/registry${toQueryString({\n ...query,\n effective:\n typeof query.effective === \"boolean\"\n ? query.effective\n ? \"true\"\n : \"false\"\n : undefined,\n status: query.status,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"registryEntries\"\n )\n )\n );\n },\n\n /**\n * @deprecated Use listRegistry.\n */\n async getRegistry(\n query: GatewayScope & {\n effective?: boolean;\n status?: \"active\" | \"disabled\" | \"archived\";\n } = {}\n ) {\n return this.listRegistry(query);\n },\n\n /**\n * Create an audience registry entry.\n */\n async createRegistryEntry(\n input: AudienceRegistryInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/audiences/registry\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update an audience registry entry.\n */\n async updateRegistryEntry(\n input: AudienceRegistryInput,\n idempotencyKey?: string\n ) {\n return this.createRegistryEntry(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createRegistryEntry or updateRegistryEntry.\n */\n async upsertRegistry(\n input: AudienceRegistryInput,\n idempotencyKey?: string\n ) {\n return this.createRegistryEntry(input, idempotencyKey);\n },\n\n /**\n * List audience grants.\n */\n async listGrants(\n query: GatewayScope & {\n audienceKey?: string;\n principalId?: string;\n groupId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/audiences/grants${toQueryString({\n ...query,\n audienceKey: query.audienceKey,\n principalId: query.principalId,\n groupId: query.groupId,\n status: query.status,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"grants\")\n )\n );\n },\n\n /**\n * @deprecated Use listGrants.\n */\n async getGrants(\n query: GatewayScope & {\n audienceKey?: string;\n principalId?: string;\n groupId?: string;\n status?: \"active\" | \"revoked\" | \"expired\";\n } = {}\n ) {\n return this.listGrants(query);\n },\n\n /**\n * Create an audience grant.\n */\n async createGrant(input: AudienceGrantInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/audiences/grants\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createGrant.\n */\n async grant(input: AudienceGrantInput, idempotencyKey?: string) {\n return this.createGrant(input, idempotencyKey);\n },\n\n /**\n * Delete an audience grant by revoking it.\n */\n async deleteGrant(\n input: AudienceGrantRevokeInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/audiences/grants/revoke\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use deleteGrant.\n */\n async revokeGrant(\n input: AudienceGrantRevokeInput,\n idempotencyKey?: string\n ) {\n return this.deleteGrant(input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, normalizeTopicQuery } from \"./sdkSurface\";\nimport type { TopicIdentifierInput } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\n/** Configuration for the audit client. */\nexport type AuditClientConfig = GatewayClientConfig;\n\n/**\n * Create the audit client for transport-level audit event reads.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to list audit events.\n */\nexport function createAuditClient(config: AuditClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List audit events for the current scope.\n */\n async listEvents(\n query: GatewayScope & {\n action?: string;\n decision?: string;\n traceId?: string;\n principalId?: string;\n topicId?: string;\n limit?: number;\n } & TopicIdentifierInput = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/audit/events${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"events\")\n )\n );\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n} from \"./coreClient\";\nimport { normalizeNodeWriteInput } from \"./sdkSurface\";\nimport type {\n CreateBeliefResponse,\n ForkBeliefResponse,\n JsonObject,\n ModulateConfidenceResponse,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n CreateBeliefResponse,\n ForkBeliefResponse,\n ModulateConfidenceResponse,\n} from \"./types\";\n\n/** Configuration for the beliefs client. Inherits gateway transport settings. */\nexport type BeliefsClientConfig = GatewayClientConfig;\n\n/**\n * Input for creating a new belief within a topic scope.\n *\n * Use `text` as the canonical belief statement.\n * `canonicalText` remains available as a legacy alias for backwards compatibility.\n * Beliefs start as unscored drafts and can be scored via confidence modulation.\n */\nexport type CreateBeliefInput = {\n topicId?: string;\n /** Preferred belief statement alias. */\n text?: string;\n /** @deprecated Use text. */\n canonicalText?: string;\n layer?: \"L1\" | \"L2\" | \"L3\" | \"L4\";\n domain?: string;\n sourceType?: \"human\" | \"ai\" | \"agent\" | \"imported\";\n content?: string;\n contentHash?: string;\n globalId?: string;\n title?: string;\n subtype?: string;\n confidence?: number;\n tags?: string[];\n metadata?: JsonObject;\n verificationStatus?: \"unverified\" | \"verified\" | \"rejected\";\n};\n\n/**\n * Input for recording a confidence change on a belief.\n * Confidence modulation is append-only — each call adds a new credence history entry.\n */\nexport type ModulateConfidenceInput = {\n confidence: number;\n trigger?:\n | \"evidence_added\"\n | \"evidence_removed\"\n | \"contradiction_detected\"\n | \"contradiction_resolved\"\n | \"manual\"\n | \"decay\"\n | \"agent_assessment\"\n | \"merge_outcome\"\n | \"worktree_outcome\"\n | \"worktree_completed\";\n rationale: string;\n certainty?: number;\n};\n\n/**\n * Input for forking a scored belief into a new formulation.\n * Scored beliefs are immutable — fork to evolve understanding.\n */\nexport type ForkBeliefInput = {\n newFormulation: string;\n forkReason?:\n | \"refinement\"\n | \"contradiction_response\"\n | \"scope_change\"\n | \"confidence_collapse\"\n | \"manual\";\n rationale?: string;\n};\n\n/** Input for changing a belief's lifecycle status. */\nexport type UpdateBeliefStatusInput = {\n id?: string;\n nodeId?: string;\n beliefId?: string;\n status: \"active\" | \"superseded\" | \"archived\";\n reason?: string;\n};\n\n/** Input for updating a belief's rationale without refining its text. */\nexport type UpdateBeliefRationaleInput = {\n id?: string;\n nodeId?: string;\n beliefId?: string;\n rationale?: string;\n};\n\n/** Input for creating a belief-to-belief reasoning edge. */\nexport type LinkBeliefsInput = {\n fromNodeId: string;\n toNodeId: string;\n edgeType: string;\n weight?: number;\n context?: string;\n};\n\n/** Input for unlinking a belief from an attached evidence item. */\nexport type UnlinkBeliefEvidenceInput = {\n beliefNodeId?: string;\n beliefId?: string;\n nodeId?: string;\n insightId?: string;\n evidenceId?: string;\n};\n\n/** Input for updating a belief's criticality classification. */\nexport type UpdateBeliefCriticalityInput = {\n id?: string;\n nodeId?: string;\n beliefId?: string;\n criticality:\n | \"blocking\"\n | \"important\"\n | \"supporting\"\n | \"essential\"\n | \"nice_to_have\";\n};\n\n/** Input for bulk-updating multiple beliefs' criticality. */\nexport type BatchUpdateBeliefCriticalityInput = {\n updates: Array<{\n beliefId: string;\n criticality:\n | \"blocking\"\n | \"important\"\n | \"supporting\"\n | \"essential\"\n | \"nice_to_have\";\n ifFalseImpact?: string;\n triagePriority?: number;\n reasoning?: string;\n dependentBeliefIds?: string[];\n blockedByBeliefIds?: string[];\n }>;\n};\n\n/** Input for moving beliefs into a different topic scope. */\nexport type ReassignBeliefsTopicInput = {\n beliefNodeIds?: string[];\n beliefIds?: string[];\n targetTopicId: string;\n reason?: string;\n};\n\n/**\n * Create the beliefs client for belief lifecycle operations.\n *\n * @param config - Gateway transport configuration.\n * @returns An object with `createBelief`, `modulateConfidence`, and `forkBelief` methods.\n */\nexport function createBeliefsClient(config: BeliefsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * Create a belief within a topic scope.\n */\n async createBelief(input: CreateBeliefInput, idempotencyKey?: string) {\n return gateway.request<CreateBeliefResponse>({\n path: \"/api/platform/v1/beliefs\",\n method: \"POST\",\n body: normalizeNodeWriteInput(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Record a confidence change for an existing belief.\n */\n async modulateConfidence(\n beliefId: string,\n input: ModulateConfidenceInput,\n idempotencyKey?: string\n ) {\n return gateway.request<ModulateConfidenceResponse>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(beliefId)}/confidence`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Fork a scored belief into a new formulation.\n */\n async forkBelief(\n beliefId: string,\n input: ForkBeliefInput,\n idempotencyKey?: string\n ) {\n return gateway.request<ForkBeliefResponse>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(beliefId)}/fork`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a belief's lifecycle status.\n */\n async updateBeliefStatus(\n input: UpdateBeliefStatusInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/beliefs/update-status\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a belief's rationale without changing its text.\n */\n async updateBeliefRationale(\n input: UpdateBeliefRationaleInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/beliefs/update-rationale\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Create a typed relationship between two beliefs.\n */\n async linkBeliefs(input: LinkBeliefsInput, idempotencyKey?: string) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/beliefs/link\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Remove an evidence attachment from a belief.\n */\n async unlinkBeliefEvidence(\n input: UnlinkBeliefEvidenceInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/beliefs/unlink-evidence\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a belief's criticality metadata.\n */\n async updateBeliefCriticality(\n input: UpdateBeliefCriticalityInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/beliefs/update-criticality\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update multiple beliefs' criticality in one mutation.\n */\n async batchUpdateBeliefCriticality(\n input: BatchUpdateBeliefCriticalityInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/beliefs/batch-update-criticality\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Reassign beliefs to a different topic scope.\n */\n async reassignBeliefsTopic(\n input: ReassignBeliefsTopicInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/beliefs/reassign-topic\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n };\n}\n","import { z } from \"zod\";\nimport type {\n McpParameterDef,\n McpResponseDef,\n McpToolContract,\n} from \"./contracts/mcpTools\";\nimport type { JsonObject } from \"./types\";\n\n/** Default namespace assigned to custom tools when none is specified. */\nconst DEFAULT_CUSTOM_NAMESPACE = \"custom\";\n\n/** Namespace strings reserved for platform-internal tools. */\nconst RESERVED_NAMESPACES = new Set([\"lucern\"]);\n\ntype AnyZodObject = z.ZodObject<z.ZodRawShape>;\n\n/** Origin of a custom tool invocation (SDK call or MCP request). */\nexport type CustomToolInvocationSource = \"sdk\" | \"mcp\";\n\n/** Runtime context passed to a custom tool handler during invocation. */\nexport type CustomToolInvocationContext = {\n source: CustomToolInvocationSource;\n};\n\n/** Optional metadata attached to a custom tool registration. */\nexport type CustomToolMetadata = {\n category?: string;\n tags?: string[];\n requiredScopes?: string[];\n};\n\n/** Input descriptor for registering a custom tool with its schemas and handler. */\nexport type CustomToolRegistration<\n TInput extends AnyZodObject = AnyZodObject,\n TOutput extends z.ZodTypeAny = z.ZodTypeAny,\n> = {\n namespace?: string;\n name: string;\n description: string;\n inputSchema: TInput;\n outputSchema: TOutput;\n handler: (\n input: z.infer<TInput>,\n context: CustomToolInvocationContext\n ) => Promise<z.infer<TOutput>> | z.infer<TOutput>;\n metadata?: CustomToolMetadata;\n ownerModule?: string;\n ontologyPrimitive?: McpToolContract[\"ontologyPrimitive\"];\n tier?: McpToolContract[\"tier\"];\n};\n\n/** A fully resolved custom tool entry stored in the in-memory registry. */\nexport type RegisteredCustomTool = {\n fullName: string;\n namespace: string;\n shortName: string;\n metadata: CustomToolMetadata;\n contract: McpToolContract;\n inputSchema: AnyZodObject;\n outputSchema: z.ZodTypeAny;\n invoke: (\n input: JsonObject,\n context: CustomToolInvocationContext\n ) => Promise<unknown>;\n};\n\n/** Error thrown when custom tool registration or invocation fails validation. */\nexport class CustomToolRegistryError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CustomToolRegistryError\";\n }\n}\n\nconst customToolRegistry = new Map<string, RegisteredCustomTool>();\n\nfunction normalizeSegment(value: string, field: \"namespace\" | \"name\"): string {\n const normalized = value.trim();\n if (!normalized) {\n throw new CustomToolRegistryError(`Custom tool ${field} is required.`);\n }\n if (!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(normalized)) {\n throw new CustomToolRegistryError(\n `Invalid custom tool ${field}: \"${value}\". Use letters, numbers, \"_\" or \"-\".`\n );\n }\n return normalized;\n}\n\nfunction normalizeNamespace(namespace?: string): string {\n const resolved = normalizeSegment(\n namespace ?? DEFAULT_CUSTOM_NAMESPACE,\n \"namespace\"\n );\n if (RESERVED_NAMESPACES.has(resolved.toLowerCase())) {\n throw new CustomToolRegistryError(\n `Namespace \"${resolved}\" is reserved for platform tools.`\n );\n }\n return resolved;\n}\n\nfunction normalizeName(name: string): string {\n if (name.includes(\".\")) {\n throw new CustomToolRegistryError(\n `Custom tool name \"${name}\" must not include \".\"; use namespace + name.`\n );\n }\n return normalizeSegment(name, \"name\");\n}\n\nfunction buildFullName(namespace: string, shortName: string): string {\n return `${namespace}.${shortName}`;\n}\n\nfunction unwrapSchema(schema: z.ZodTypeAny): {\n schema: z.ZodTypeAny;\n required: boolean;\n} {\n if (schema instanceof z.ZodOptional) {\n return { schema: schema.unwrap(), required: false };\n }\n if (schema instanceof z.ZodDefault) {\n const removeDefault = (\n schema as unknown as { removeDefault?: () => z.ZodTypeAny }\n ).removeDefault;\n if (typeof removeDefault === \"function\") {\n return { schema: removeDefault.call(schema), required: false };\n }\n const inner = (schema as unknown as { _def?: { innerType?: z.ZodTypeAny } })\n ._def?.innerType;\n return { schema: inner ?? schema, required: false };\n }\n return { schema, required: true };\n}\n\nfunction resolveParameterType(schema: z.ZodTypeAny): {\n type: McpParameterDef[\"type\"];\n enum?: string[];\n} {\n if (schema instanceof z.ZodString) {\n return { type: \"string\" };\n }\n if (schema instanceof z.ZodEnum) {\n return { type: \"string\", enum: schema.options };\n }\n if (schema instanceof z.ZodNativeEnum) {\n const values = Object.values(schema.enum).filter(\n (value): value is string => typeof value === \"string\"\n );\n return values.length > 0\n ? { type: \"string\", enum: values }\n : { type: \"string\" };\n }\n if (schema instanceof z.ZodLiteral) {\n const literalValue = schema.value;\n if (typeof literalValue === \"string\") {\n return { type: \"string\", enum: [literalValue] };\n }\n if (typeof literalValue === \"number\") {\n return { type: \"number\" };\n }\n if (typeof literalValue === \"boolean\") {\n return { type: \"boolean\" };\n }\n return { type: \"object\" };\n }\n if (schema instanceof z.ZodNumber) {\n return { type: \"number\" };\n }\n if (schema instanceof z.ZodBoolean) {\n return { type: \"boolean\" };\n }\n if (schema instanceof z.ZodArray) {\n return { type: \"array\" };\n }\n return { type: \"object\" };\n}\n\nfunction schemaTypeLabel(schema: z.ZodTypeAny): string {\n if (schema instanceof z.ZodString || schema instanceof z.ZodEnum) {\n return \"string\";\n }\n if (schema instanceof z.ZodNumber) {\n return \"number\";\n }\n if (schema instanceof z.ZodBoolean) {\n return \"boolean\";\n }\n if (schema instanceof z.ZodArray) {\n return \"array\";\n }\n if (schema instanceof z.ZodObject) {\n return \"object\";\n }\n return \"unknown\";\n}\n\nfunction parseObjectSchema<TInput extends AnyZodObject>(\n value: TInput,\n fieldName: string\n): TInput {\n if (!(value instanceof z.ZodObject)) {\n throw new CustomToolRegistryError(\n `${fieldName} must be a Zod object schema.`\n );\n }\n return value;\n}\n\nfunction deriveParameters(schema: AnyZodObject): {\n parameters: Record<string, McpParameterDef>;\n required: string[];\n} {\n const shape = schema.shape;\n const parameters: Record<string, McpParameterDef> = {};\n const required: string[] = [];\n\n for (const [key, raw] of Object.entries(shape)) {\n const { schema: unwrapped, required: isRequired } = unwrapSchema(\n raw as z.ZodTypeAny\n );\n const parameterType = resolveParameterType(unwrapped);\n parameters[key] = {\n type: parameterType.type,\n description: (raw as z.ZodTypeAny).description ?? `${key} parameter`,\n ...(parameterType.enum ? { enum: parameterType.enum } : {}),\n };\n if (isRequired) {\n required.push(key);\n }\n }\n\n return { parameters, required };\n}\n\nfunction deriveResponse(schema: z.ZodTypeAny): McpResponseDef {\n if (schema instanceof z.ZodObject) {\n const fields = Object.fromEntries(\n Object.entries(schema.shape).map(([key, value]) => {\n const zodValue = value as z.ZodTypeAny;\n const label = schemaTypeLabel(unwrapSchema(zodValue).schema);\n const description = zodValue.description ?? \"custom output field\";\n return [key, `${label} — ${description}`];\n })\n );\n return {\n description: \"Custom tool result payload\",\n fields,\n };\n }\n\n return {\n description: \"Custom tool result payload\",\n fields: {\n result: `${schemaTypeLabel(schema)} — custom output payload`,\n },\n };\n}\n\nfunction buildContract<\n TInput extends AnyZodObject,\n TOutput extends z.ZodTypeAny,\n>(\n fullName: string,\n namespace: string,\n registration: CustomToolRegistration<TInput, TOutput>,\n inputSchema: TInput\n): McpToolContract {\n const { parameters, required } = deriveParameters(inputSchema);\n return {\n name: fullName,\n description: registration.description,\n parameters,\n required,\n response: deriveResponse(registration.outputSchema),\n ownerModule: registration.ownerModule ?? `${namespace}-extension`,\n ontologyPrimitive: registration.ontologyPrimitive ?? \"task\",\n tier: registration.tier ?? \"workhorse\",\n };\n}\n\n/**\n * Register a custom SDK tool in the in-memory registry.\n * @param registration - The tool definition including name, schemas, and handler.\n * @param options - Optional flags; set `replace` to overwrite an existing registration.\n * @returns The fully resolved registered tool entry.\n */\nexport function registerCustomTool<\n TInput extends AnyZodObject,\n TOutput extends z.ZodTypeAny,\n>(\n registration: CustomToolRegistration<TInput, TOutput>,\n options: { replace?: boolean } = {}\n): RegisteredCustomTool {\n const namespace = normalizeNamespace(registration.namespace);\n const shortName = normalizeName(registration.name);\n const fullName = buildFullName(namespace, shortName);\n\n if (customToolRegistry.has(fullName) && !options.replace) {\n throw new CustomToolRegistryError(\n `Custom tool \"${fullName}\" is already registered.`\n );\n }\n\n const inputSchema = parseObjectSchema(\n registration.inputSchema,\n \"inputSchema\"\n );\n const outputSchema = registration.outputSchema;\n const contract = buildContract(\n fullName,\n namespace,\n registration,\n inputSchema\n );\n const metadata: CustomToolMetadata = {\n category: registration.metadata?.category,\n tags: registration.metadata?.tags ?? [],\n requiredScopes: registration.metadata?.requiredScopes ?? [\"custom:execute\"],\n };\n\n const registered: RegisteredCustomTool = {\n fullName,\n namespace,\n shortName,\n metadata,\n contract,\n inputSchema,\n outputSchema,\n invoke: async (input, context) => {\n const parsedInput = inputSchema.parse(input);\n const rawOutput = await registration.handler(parsedInput, context);\n return outputSchema.parse(rawOutput);\n },\n };\n\n customToolRegistry.set(fullName, registered);\n return registered;\n}\n\n/**\n * Remove a custom SDK tool from the registry.\n * @param fullName - Fully qualified tool name (`namespace.name`).\n * @returns `true` if the tool was found and removed, `false` otherwise.\n */\nexport function unregisterCustomTool(fullName: string): boolean {\n return customToolRegistry.delete(fullName.trim());\n}\n\n/**\n * Get a custom SDK tool by fully qualified name.\n * @param fullName - Fully qualified tool name (`namespace.name`).\n * @returns The registered tool entry, or `undefined` if not found.\n */\nexport function getRegisteredCustomTool(\n fullName: string\n): RegisteredCustomTool | undefined {\n return customToolRegistry.get(fullName.trim());\n}\n\n/**\n * List all registered custom SDK tools, sorted alphabetically by full name.\n * @returns An array of all registered tool entries.\n */\nexport function listRegisteredCustomTools(): RegisteredCustomTool[] {\n return [...customToolRegistry.values()].sort((left, right) =>\n left.fullName.localeCompare(right.fullName)\n );\n}\n\n/**\n * Clear the registered custom tool registry.\n */\nexport function clearRegisteredCustomTools(): void {\n customToolRegistry.clear();\n}\n\n/**\n * Invoke a registered custom SDK tool by fully qualified name.\n * @param fullName - Fully qualified tool name (`namespace.name`).\n * @param params - JSON-serializable input parameters for the tool handler.\n * @param context - Invocation context indicating the call source.\n * @returns The validated output from the tool handler.\n */\nexport async function invokeRegisteredCustomTool(\n fullName: string,\n params: JsonObject,\n context: CustomToolInvocationContext\n): Promise<unknown> {\n const registered = getRegisteredCustomTool(fullName);\n if (!registered) {\n throw new CustomToolRegistryError(\n `Custom tool \"${fullName}\" is not registered.`\n );\n }\n return registered.invoke(params, context);\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\n/** Configuration for the ontology client. */\nexport type OntologyClientConfig = GatewayClientConfig;\n\n/** Input for binding an ontology to a topic. */\nexport type OntologyBindingInput = GatewayScope & {\n ontologyId: string;\n topicId: string;\n};\n\n/** Input for creating an ontology definition. */\nexport type OntologyDefinitionInput = GatewayScope & {\n ontologyKey: string;\n name: string;\n description?: string;\n tenantId?: string;\n tier?: \"platform\" | \"pack\" | \"tenant\";\n};\n\n/** Input for updating mutable fields on an ontology definition. */\nexport type OntologyDefinitionUpdateInput = GatewayScope & {\n name?: string;\n description?: string;\n status?: \"draft\" | \"active\" | \"deprecated\";\n};\n\n/** Input for creating a versioned snapshot of entity and edge type definitions. */\nexport type OntologyVersionInput = GatewayScope & {\n version: string;\n entityTypes: Array<{\n value: string;\n label: string;\n description?: string;\n schema?: JsonObject;\n subtypes?: Array<{ value: string; label: string; description?: string }>;\n }>;\n edgeTypes: Array<{\n value: string;\n label: string;\n description?: string;\n sourceTypes?: string[];\n targetTypes?: string[];\n constraintSeverity?: \"warn\" | \"info\";\n }>;\n releaseNotes?: string;\n};\n\n/**\n * Create the ontology client for ontology definitions and versions.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to manage ontology definitions, versions, and bindings.\n */\nexport function createOntologyClient(config: OntologyClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List ontology definitions matching optional filters.\n */\n async list(\n filters: GatewayScope & {\n tenantId?: string;\n tier?: string;\n status?: string;\n } = {}\n ) {\n return gateway\n .request<unknown>({\n path: `/api/platform/v1/ontologies${toQueryString(filters)}`,\n })\n .then((response) =>\n mapGatewayData(response, (data) => {\n const record =\n data && typeof data === \"object\" && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {};\n const ontologies = Array.isArray(record.ontologies)\n ? record.ontologies\n : Array.isArray(record.definitions)\n ? record.definitions\n : Array.isArray(data)\n ? data\n : [];\n const total =\n typeof record.total === \"number\" && Number.isFinite(record.total)\n ? record.total\n : ontologies.length;\n return {\n ...record,\n ...createListResult(ontologies, \"definitions\"),\n ontologies,\n total,\n };\n })\n );\n },\n\n /**\n * Get an ontology definition by identifier.\n */\n async get(id: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(id)}`,\n });\n },\n\n /**\n * Bind an ontology definition to a topic.\n */\n async bind(input: OntologyBindingInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(input.ontologyId)}/bind`,\n method: \"POST\",\n body: {\n topicId: input.topicId,\n },\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List ontology definitions.\n */\n async listDefinitions(\n filters: GatewayScope & {\n tenantId?: string;\n tier?: string;\n status?: string;\n } = {}\n ) {\n return this.list(filters);\n },\n\n /**\n * Get an ontology definition.\n */\n async getDefinition(id: string) {\n return this.get(id);\n },\n\n /**\n * Create an ontology definition.\n */\n async createDefinition(\n input: OntologyDefinitionInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/ontologies\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update an ontology definition.\n */\n async updateDefinition(\n id: string,\n input: OntologyDefinitionUpdateInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Archive an ontology definition.\n */\n async archiveDefinition(id: string, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List versions for an ontology definition.\n */\n async listVersions(\n ontologyId: string,\n filters: GatewayScope & { status?: string } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions${toQueryString(filters)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"versions\")\n )\n );\n },\n\n /**\n * Create an ontology version.\n */\n async createVersion(\n ontologyId: string,\n input: OntologyVersionInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Publish an ontology version.\n */\n async publishVersion(\n ontologyId: string,\n versionId: string,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions/${encodeURIComponent(versionId)}/publish`,\n method: \"POST\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Deprecate an ontology version.\n */\n async deprecateVersion(\n ontologyId: string,\n versionId: string,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(ontologyId)}/versions/${encodeURIComponent(versionId)}/deprecate`,\n method: \"POST\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List topics directly bound to a specific ontology definition.\n * Uses the topics gateway with ontologyId filter.\n */\n async listTopics(ontologyId: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/topics?ontologyId=${encodeURIComponent(ontologyId)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"topics\")\n )\n );\n },\n\n /**\n * @deprecated Use listTopics.\n */\n async listTopicsByOntology(ontologyId: string) {\n return this.listTopics(ontologyId);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n mapAliasedList,\n mapGatewayData,\n normalizeNodeWriteInput,\n normalizeNodeVerificationStatus,\n normalizeTopicQuery,\n withSdkAliases,\n} from \"./sdkSurface\";\nimport type {\n CreateEdgeResponse,\n CreateNodeResponse,\n DeleteEdgeResponse,\n GraphAnalyticsMetric,\n GraphAnalyticsResponse,\n GraphNeighborhoodResponse,\n GraphPathResponse,\n JsonObject,\n ListResult,\n PlatformGraphEdge,\n PlatformGraphNode,\n QueryEdgesResponse,\n QueryNodesResponse,\n TextAliasInput,\n TopicIdentifierInput,\n UpdateNodeResponse,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n CreateEdgeResponse,\n CreateNodeResponse,\n DeleteEdgeResponse,\n GraphAnalyticsMetric,\n GraphAnalyticsResponse,\n GraphNeighborhoodResponse,\n GraphPathResponse,\n ListResult,\n QueryEdgesResponse,\n QueryNodesResponse,\n UpdateNodeResponse,\n} from \"./types\";\n\n/** Configuration for the graph client. */\nexport type GraphClientConfig = GatewayClientConfig;\n\n/** Filter parameters for listing graph nodes. */\nexport type ListNodesInput = {\n nodeId?: string;\n globalId?: string;\n topicId?: string;\n nodeType?: string;\n limit?: number;\n} & TopicIdentifierInput;\n\n/** Paginated list response containing graph nodes. */\nexport type ListNodesResponse = ListResult<PlatformGraphNode, \"nodes\">;\n\n/** @deprecated Use ListNodesInput. */\nexport type QueryNodesInput = ListNodesInput;\n\n/** Input for creating a new graph node. */\nexport type CreateNodeInput = {\n text?: string;\n /** @deprecated Use text. */\n canonicalText?: string;\n nodeType: string;\n topicId?: string;\n content?: string;\n contentHash?: string;\n globalId?: string;\n sourceType?: string;\n subtype?: string;\n title?: string;\n confidence?: number;\n status?: string;\n tags?: string[];\n metadata?: JsonObject;\n verificationStatus?: string;\n} & TextAliasInput &\n TopicIdentifierInput;\n\n/** Input for updating an existing graph node. */\nexport type UpdateNodeInput = {\n nodeId: string;\n text?: string;\n canonicalText?: string;\n content?: string;\n contentHash?: string;\n title?: string;\n subtype?: string;\n confidence?: number;\n status?: string;\n tags?: string[];\n metadata?: JsonObject;\n verificationStatus?: string;\n} & TextAliasInput;\n\n/** Input for retrieving a single graph node by canonical identifier. */\nexport type GetNodeInput = {\n nodeId?: string;\n globalId?: string;\n};\n\n/** Filter parameters for listing graph edges. */\nexport type ListEdgesInput = {\n edgeId?: string;\n topicId?: string;\n fromNodeId?: string;\n toNodeId?: string;\n edgeType?: string;\n limit?: number;\n} & TopicIdentifierInput;\n\n/** Paginated list response containing graph edges. */\nexport type ListEdgesResponse = ListResult<PlatformGraphEdge, \"edges\">;\n\n/** @deprecated Use ListEdgesInput. */\nexport type QueryEdgesInput = ListEdgesInput;\n\n/** Input for creating a typed edge between two graph nodes. */\nexport type CreateEdgeInput = {\n fromNodeId: string;\n toNodeId: string;\n edgeType: string;\n globalId?: string;\n topicId?: string;\n confidence?: number;\n weight?: number;\n context?: string;\n derivationType?: string;\n} & TopicIdentifierInput;\n\n/** Filter for selecting edges to delete. */\nexport type DeleteEdgeInput = {\n edgeId?: string;\n fromNodeId?: string;\n toNodeId?: string;\n edgeType?: string;\n};\n\n/** Input for batch-creating multiple graph nodes. */\nexport type BatchCreateNodesInput = {\n nodes: Array<CreateNodeInput>;\n};\n\n/** Input for superseding an existing graph node with a new version. */\nexport type SupersedeNodeInput = {\n oldNodeId?: string;\n nodeId?: string;\n newGlobalId?: string;\n newCanonicalText?: string;\n text?: string;\n canonicalText?: string;\n newContentHash?: string;\n reason?: string;\n};\n\n/** Input for updating a node's verification state. */\nexport type VerifyNodeInput = {\n nodeId?: string;\n id?: string;\n verificationStatus: string;\n confidence?: number;\n};\n\n/** Input for permanently deleting a node via admin-only API. */\nexport type HardDeleteNodeInput = {\n nodeId?: string;\n id?: string;\n reason: string;\n allowBeliefHardDelete?: boolean;\n};\n\n/** Input for retrieving the local neighborhood around a graph node. */\nexport type NeighborhoodInput = {\n globalId?: string;\n globalIds?: string;\n maxDepth?: number;\n};\n\n/** Input for finding the shortest path between two graph nodes. */\nexport type PathInput = {\n fromGlobalId: string;\n toGlobalId: string;\n maxDepth?: number;\n};\n\n/** Input for retrieving a specific graph analytics metric. */\nexport type AnalyticsInput = {\n metric?: GraphAnalyticsMetric;\n limit?: number;\n};\n\n/** Input for traversing the graph from a starting node. */\nexport type TraverseInput = {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n} & TopicIdentifierInput;\n\n/** Input for structural analysis of a topic graph. */\nexport type AnalyzeInput = {\n topicId?: string;\n metric?: GraphAnalyticsMetric;\n limit?: number;\n} & TopicIdentifierInput;\n\n/** Input for detecting confirmation-bias patterns in a topic graph. */\nexport type BiasInput = {\n topicId?: string;\n threshold?: number;\n limit?: number;\n} & TopicIdentifierInput;\n\n/** Input for finding beliefs without sufficient testing questions. */\nexport type GapsInput = {\n topicId?: string;\n minConfidence?: number;\n} & TopicIdentifierInput;\n\n/** Input for cross-resource search within a topic scope. */\nexport type SearchInput = {\n q?: string;\n query?: string;\n topicId?: string;\n types?: string[];\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n} & TopicIdentifierInput;\n\n/**\n * Create the low-level graph client for nodes, edges, and graph analytics.\n * @param config - Gateway transport configuration.\n * @returns An object with methods for CRUD on nodes/edges plus analytics, traversal, and search.\n */\nexport function createGraphClient(config: GraphClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List graph nodes matching the provided filters.\n */\n async listNodes(query: ListNodesInput) {\n return gateway.request<ListNodesResponse>({\n path: `/api/platform/v1/graph/nodes${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) => mapAliasedList<PlatformGraphNode, \"nodes\">(data, \"nodes\"))\n );\n },\n\n /**\n * @deprecated Use listNodes.\n */\n async queryNodes(query: QueryNodesInput) {\n return this.listNodes(query);\n },\n\n /**\n * Retrieve a single graph node by nodeId or globalId.\n */\n async getNode(query: GetNodeInput) {\n return gateway.request<PlatformGraphNode>({\n path: `/api/platform/v1/graph/nodes${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withSdkAliases(data as Record<string, unknown>) as PlatformGraphNode\n )\n );\n },\n\n /**\n * Create a graph node.\n */\n async createNode(input: CreateNodeInput, idempotencyKey?: string) {\n return gateway.request<CreateNodeResponse>({\n path: \"/api/platform/v1/graph/nodes\",\n method: \"POST\",\n body: normalizeNodeWriteInput(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withSdkAliases(data as Record<string, unknown>) as CreateNodeResponse\n )\n );\n },\n\n /**\n * Update a graph node.\n */\n async updateNode(input: UpdateNodeInput, idempotencyKey?: string) {\n return gateway.request<UpdateNodeResponse>({\n path: \"/api/platform/v1/graph/nodes\",\n method: \"PUT\",\n body: normalizeNodeWriteInput(input as UpdateNodeInput & JsonObject),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withSdkAliases(data as Record<string, unknown>) as UpdateNodeResponse\n )\n );\n },\n\n /**\n * Batch create graph nodes through the admin route surface.\n */\n async batchCreateNodes(\n input: BatchCreateNodesInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/nodes/batch\",\n method: \"POST\",\n body: {\n nodes: input.nodes.map((node) => normalizeNodeWriteInput(node)),\n } as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Supersede an existing graph node with a new canonical version.\n */\n async supersedeNode(input: SupersedeNodeInput, idempotencyKey?: string) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/nodes/supersede\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a node's verification status.\n */\n async verifyNode(input: VerifyNodeInput, idempotencyKey?: string) {\n const verificationStatus =\n normalizeNodeVerificationStatus(input.verificationStatus) ??\n input.verificationStatus;\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/nodes/verify\",\n method: \"POST\",\n body: {\n ...input,\n verificationStatus,\n } as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Permanently delete a node via the admin-only hard-delete route.\n */\n async hardDeleteNode(input: HardDeleteNodeInput, idempotencyKey?: string) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/nodes/hard-delete\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List graph edges matching the provided filters.\n */\n async listEdges(query: ListEdgesInput) {\n return gateway.request<ListEdgesResponse>({\n path: `/api/platform/v1/graph/edges${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<PlatformGraphEdge, \"edges\">(data, \"edges\")\n )\n );\n },\n\n /**\n * @deprecated Use listEdges.\n */\n async queryEdges(query: QueryEdgesInput) {\n return this.listEdges(query);\n },\n\n /**\n * Create a graph edge.\n */\n async createEdge(input: CreateEdgeInput, idempotencyKey?: string) {\n return gateway.request<CreateEdgeResponse>({\n path: \"/api/platform/v1/graph/edges\",\n method: \"POST\",\n body: normalizeTopicQuery(input as CreateEdgeInput & JsonObject),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Delete one or more edges matching the provided filter.\n */\n async deleteEdge(query: DeleteEdgeInput, idempotencyKey?: string) {\n return gateway.request<DeleteEdgeResponse>({\n path: `/api/platform/v1/graph/edges${toQueryString(query)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Retrieve a graph neighborhood around a root node.\n */\n async neighborhood(query: NeighborhoodInput) {\n return gateway.request<GraphNeighborhoodResponse>({\n path: `/api/platform/v1/graph/neighborhood${toQueryString(query)}`,\n });\n },\n\n /**\n * Traverse the graph from a starting node.\n */\n async traverse(query: TraverseInput) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/traverse\",\n method: \"POST\",\n body: normalizeTopicQuery(query as TraverseInput & JsonObject),\n });\n },\n\n /**\n * Analyze graph structure for a topic.\n */\n async analyze(query: AnalyzeInput = {}) {\n const normalized = normalizeTopicQuery(query as AnalyzeInput & JsonObject);\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/graph/analyze${toQueryString({\n topicId:\n typeof normalized.topicId === \"string\" ? normalized.topicId : undefined,\n metric:\n typeof normalized.metric === \"string\" ? normalized.metric : undefined,\n limit:\n typeof normalized.limit === \"number\" ? normalized.limit : undefined,\n })}`,\n });\n },\n\n /**\n * Detect confirmation-bias patterns for a topic graph.\n */\n async bias(query: BiasInput = {}) {\n const normalized = normalizeTopicQuery(query as BiasInput & JsonObject);\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/graph/bias${toQueryString({\n topicId:\n typeof normalized.topicId === \"string\" ? normalized.topicId : undefined,\n threshold:\n typeof normalized.threshold === \"number\"\n ? normalized.threshold\n : undefined,\n limit:\n typeof normalized.limit === \"number\" ? normalized.limit : undefined,\n })}`,\n });\n },\n\n /**\n * Find graph gaps for beliefs that still need testing.\n */\n async gaps(query: GapsInput) {\n const normalized = normalizeTopicQuery(query as GapsInput & JsonObject);\n return gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/graph/gaps${toQueryString({\n topicId:\n typeof normalized.topicId === \"string\" ? normalized.topicId : undefined,\n minConfidence:\n typeof normalized.minConfidence === \"number\"\n ? normalized.minConfidence\n : undefined,\n })}`,\n });\n },\n\n /**\n * Search across graph resources within a topic.\n */\n async search(query: SearchInput) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/search\",\n method: \"POST\",\n body: normalizeTopicQuery(query as SearchInput & JsonObject),\n });\n },\n\n /**\n * Retrieve a graph neighborhood around a root node.\n */\n async getNeighborhood(query: NeighborhoodInput) {\n return this.neighborhood(query);\n },\n\n /**\n * Retrieve the shortest known path between two graph nodes.\n */\n async getPath(query: PathInput) {\n return gateway.request<GraphPathResponse>({\n path: `/api/platform/v1/graph/path${toQueryString(query)}`,\n });\n },\n\n /**\n * Retrieve graph analytics for the requested metric.\n */\n async getAnalytics(query: AnalyticsInput = {}) {\n return gateway.request<GraphAnalyticsResponse>({\n path: `/api/platform/v1/graph/analytics${toQueryString(query)}`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n type PlatformGatewaySuccess,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject, SdkPrincipalContext } from \"./types\";\n\n/** Summary of the currently authenticated principal and their scopes. */\nexport type IdentitySummary = SdkPrincipalContext;\n\n/** Gateway response wrapping an identity summary payload. */\nexport type IdentityWhoamiResponse = PlatformGatewaySuccess<IdentitySummary>;\n\nfunction createIdentityWhoamiClient(\n config: GatewayClientConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async whoami(): Promise<IdentityWhoamiResponse> {\n return gateway.request<SdkPrincipalContext>({\n path: \"/api/platform/v1/identity/whoami\",\n });\n },\n };\n}\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\n/** Configuration for the identity client. */\nexport type IdentityClientConfig = GatewayClientConfig;\n\nexport type ClerkUserSearchResult = {\n clerkId: string;\n email: string | null;\n firstName: string | null;\n lastName: string | null;\n displayName: string | null;\n imageUrl: string | null;\n};\n\n/**\n * Create the identity client for principals and API keys.\n * @param config - Gateway transport configuration.\n * @returns An object with methods for whoami, principal management, and key management.\n */\nexport function createIdentityClient(config: IdentityClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n const whoamiClient = createIdentityWhoamiClient(config);\n\n const requestPrincipalWrite = (\n method: \"POST\" | \"PATCH\",\n input: GatewayScope & {\n principalId: string;\n principalType: \"user\" | \"group\" | \"service\" | \"external_viewer\";\n clerkId?: string;\n email?: string;\n displayName?: string;\n status?: \"active\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) =>\n gateway.request<unknown>({\n path: \"/api/platform/v1/identity/principals\",\n method,\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n /**\n * Resolve the current authenticated identity summary.\n */\n async whoami() {\n return whoamiClient.whoami().then((response) =>\n mapGatewayData(response, (data) => ({\n principalId: data.principalId,\n principalType: data.principalType,\n tenantId: data.tenantId ?? null,\n workspaceId: data.workspaceId ?? null,\n scopes: Array.isArray(data.scopes) ? data.scopes : [],\n roles: Array.isArray(data.roles) ? data.roles : [],\n isPlatformAdmin: data.isPlatformAdmin === true,\n isTenantAdmin: data.isTenantAdmin === true,\n isWorkspaceAdmin: data.isWorkspaceAdmin === true,\n authMode: data.authMode,\n sessionId: data.sessionId,\n delegatedBy: data.delegatedBy,\n expiresAt: data.expiresAt,\n }))\n );\n },\n\n /**\n * List principals in the current identity scope.\n */\n async listPrincipals(\n query: GatewayScope & {\n status?: string;\n principalType?: string;\n query?: string;\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/principals${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(\n Array.isArray(data) ? data : [],\n \"principals\"\n )\n )\n );\n },\n\n /**\n * Create a principal.\n */\n async createPrincipal(\n input: GatewayScope & {\n principalId: string;\n principalType: \"user\" | \"group\" | \"service\" | \"external_viewer\";\n clerkId?: string;\n email?: string;\n displayName?: string;\n status?: \"active\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return requestPrincipalWrite(\"POST\", input, idempotencyKey);\n },\n\n /**\n * Update a principal.\n */\n async updatePrincipal(\n input: GatewayScope & {\n principalId: string;\n principalType: \"user\" | \"group\" | \"service\" | \"external_viewer\";\n clerkId?: string;\n email?: string;\n displayName?: string;\n status?: \"active\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return requestPrincipalWrite(\"PATCH\", input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createPrincipal or updatePrincipal.\n */\n async upsertPrincipal(\n input: GatewayScope & {\n principalId: string;\n principalType: \"user\" | \"group\" | \"service\" | \"external_viewer\";\n clerkId?: string;\n email?: string;\n displayName?: string;\n status?: \"active\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return requestPrincipalWrite(\"PATCH\", input, idempotencyKey);\n },\n\n /**\n * List keys in the current identity scope.\n */\n async listKeys(\n query: GatewayScope & {\n principalId?: string;\n status?: string;\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/keys${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"keys\")\n )\n );\n },\n\n /**\n * Create an API key.\n */\n async createKey(\n input: GatewayScope & {\n principalId: string;\n keyId?: string;\n token?: string;\n scopes?: string[];\n environment?: \"sandbox\" | \"production\";\n expiresInDays?: number;\n rateLimitTier?: \"free\" | \"developer\" | \"partner\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/identity/keys\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Rotate an API key.\n */\n async rotateKey(\n keyId: string,\n input: {\n replacementKeyId?: string;\n replacementToken?: string;\n replacementExpiresInDays?: number;\n gracePeriodHours?: number;\n } = {},\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/keys/${encodeURIComponent(keyId)}/rotate`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Delete an API key by revoking it.\n */\n async deleteKey(\n keyId: string,\n input: { reason?: string } = {},\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/identity/keys/${encodeURIComponent(keyId)}/revoke`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use deleteKey.\n */\n async revokeKey(\n keyId: string,\n input: { reason?: string } = {},\n idempotencyKey?: string\n ) {\n return this.deleteKey(keyId, input, idempotencyKey);\n },\n\n /**\n * Search Clerk users by email or display attributes.\n */\n async searchClerkUsers(q: string) {\n return gateway.request<ClerkUserSearchResult[]>({\n path: `/api/platform/v1/identity/clerk-users${toQueryString({ q })}`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n createListResult,\n mapGatewayData,\n resolveTopicId,\n withTopicAlias,\n} from \"./sdkSurface\";\nimport type {\n JsonObject,\n TopicCoverageResponse,\n TopicIdentifierInput,\n TopicListResponse,\n TopicRecord,\n TopicTreeNode,\n TopicTreeResponse,\n} from \"./types\";\n\n/** Configuration for the topics client. Inherits gateway transport settings. */\nexport type TopicsClientConfig = GatewayClientConfig;\n\n/** Filters for listing topics within a scope. */\nexport type TopicListInput = TopicIdentifierInput & {\n ontologyId?: string;\n parentTopicId?: string;\n status?: string;\n type?: string;\n};\n\n/** Input for creating a new topic. Name is required; all other fields are optional. */\nexport type TopicCreateInput = TopicIdentifierInput & {\n name: string;\n description?: string;\n type?: string;\n parentTopicId?: string;\n ontologyId?: string;\n tenantId?: string;\n workspaceId?: string;\n visibility?: \"private\" | \"team\" | \"firm\" | \"external\" | \"public\";\n createdBy?: string;\n metadata?: JsonObject;\n};\n\n/** Input for updating an existing topic's metadata. All fields are optional. */\nexport type TopicUpdateInput = TopicIdentifierInput & {\n name?: string;\n description?: string;\n type?: string;\n ontologyId?: string;\n clearOntologyId?: boolean;\n status?: \"active\" | \"archived\" | \"watching\";\n visibility?: \"private\" | \"team\" | \"firm\" | \"external\" | \"public\";\n};\n\n/** Options for retrieving the topic hierarchy. */\nexport type TopicTreeQuery = {\n maxDepth?: number;\n};\n\n/** Options for retrieving belief/question/evidence coverage across a topic tree. */\nexport type TopicCoverageQuery = {\n includeDescendants?: boolean;\n maxDepth?: number;\n};\n\n/** Input for batch-creating topics. */\nexport type TopicBulkCreateInput = {\n topics: Array<\n TopicIdentifierInput & {\n globalId?: string;\n name: string;\n description?: string;\n type: string;\n parentTopicId?: string;\n depth?: number;\n path?: string[];\n tenantId?: string;\n workspaceId?: string;\n graphScopeProjectId?: string;\n status?: \"active\" | \"archived\" | \"watching\";\n visibility?: \"private\" | \"team\" | \"firm\" | \"external\" | \"public\";\n metadata?: JsonObject;\n createdBy?: string;\n }\n >;\n};\n\nfunction asRecord(value: unknown): Record<string, unknown> {\n return value && typeof value === \"object\"\n ? (value as Record<string, unknown>)\n : {};\n}\n\nfunction cleanString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nfunction normalizeTopicRecord(value: unknown): TopicRecord {\n const record = asRecord(value);\n const topicId =\n cleanString(record.topicId) ??\n cleanString(record.id) ??\n cleanString(record._id);\n\n return withTopicAlias({\n ...record,\n ...(topicId ? { topicId } : {}),\n }) as TopicRecord;\n}\n\nfunction normalizeTopicTreeNode(value: unknown): TopicTreeNode {\n return normalizeTopicRecord(value) as TopicTreeNode;\n}\n\n/**\n * Create the topics client for managing hierarchical knowledge containers.\n *\n * @param config - Gateway transport configuration.\n * @returns An object with `list`, `get`, `create`, `update`, `getTree`, and `getCoverage` methods.\n */\nexport function createTopicsClient(config: TopicsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async list(query: TopicListInput = {}) {\n const topicId = resolveTopicId(query);\n return gateway.request<TopicListResponse>({\n path: `/api/platform/v1/topics${toQueryString({\n ...(topicId ? { topicId } : {}),\n ontologyId: query.ontologyId,\n parentTopicId: query.parentTopicId,\n status: query.status,\n type: query.type,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record = asRecord(data);\n const items = Array.isArray(record.topics)\n ? record.topics.map(normalizeTopicRecord)\n : [];\n\n return {\n ...createListResult(items, \"topics\"),\n ...record,\n topics: items,\n total:\n typeof record.total === \"number\" ? record.total : items.length,\n } as TopicListResponse;\n })\n );\n },\n\n async get(topicId: string) {\n return gateway.request<TopicRecord>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n normalizeTopicRecord(asRecord(data).topic ?? data)\n )\n );\n },\n\n async create(input: TopicCreateInput, idempotencyKey?: string) {\n const topicId = resolveTopicId(input);\n return gateway.request<TopicRecord>({\n path: \"/api/platform/v1/topics\",\n method: \"POST\",\n body: {\n ...input,\n ...(topicId ? { topicId } : {}),\n type: input.type ?? \"theme\",\n } as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) => normalizeTopicRecord(data))\n );\n },\n\n async update(\n topicId: string,\n input: TopicUpdateInput,\n idempotencyKey?: string\n ) {\n return gateway.request<TopicRecord>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) => normalizeTopicRecord(data))\n );\n },\n\n async getTree(topicId: string, query: TopicTreeQuery = {}) {\n return gateway.request<TopicTreeResponse>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}/tree${toQueryString(\n query\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record = asRecord(data);\n return {\n tree: Array.isArray(record.tree)\n ? record.tree.map(normalizeTopicTreeNode)\n : [],\n } as TopicTreeResponse;\n })\n );\n },\n\n async getCoverage(topicId: string, query: TopicCoverageQuery = {}) {\n return gateway.request<TopicCoverageResponse>({\n path: `/api/platform/v1/topics/${encodeURIComponent(topicId)}/coverage${toQueryString(\n query\n )}`,\n });\n },\n\n async remove(topicId: string, idempotencyKey?: string) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/topics/remove\",\n method: \"POST\",\n body: { id: topicId },\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n async bulkCreate(input: TopicBulkCreateInput, idempotencyKey?: string) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/topics/bulk\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"./coreClient\";\nimport {\n createOntologyClient,\n type OntologyBindingInput,\n} from \"./ontologyClient\";\nimport { createGraphClient } from \"./graphClient\";\nimport { createIdentityClient } from \"./identityClient\";\nimport {\n createTopicsClient,\n type TopicBulkCreateInput,\n type TopicCreateInput,\n type TopicCoverageQuery,\n type TopicListInput,\n type TopicTreeQuery,\n type TopicUpdateInput,\n} from \"./topicsClient\";\nimport type { GraphAnalyticsMetric, JsonObject } from \"./types\";\n\ntype GatewayRecord = Record<string, unknown>;\ntype GatewayList = GatewayRecord & { cursor?: string; total?: number };\n\ntype BeliefRecord = GatewayRecord & {\n id?: string;\n beliefId?: string;\n nodeId?: string;\n};\n\ntype BeliefsListResult = GatewayList & {\n beliefs?: BeliefRecord[];\n};\n\ntype BeliefsLineageResult = GatewayRecord & {\n beliefId?: string;\n lineage?: GatewayRecord[];\n};\n\ntype SearchResult = GatewayList & {\n beliefs?: GatewayRecord[];\n results?: GatewayRecord[];\n};\n\ntype GraphNeighborhoodInput = {\n globalId?: string;\n globalIds?: string | string[];\n maxDepth?: number;\n};\n\ntype GraphTraverseInput = {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n};\n\ntype GraphAnalyzeInput = {\n topicId?: string;\n metric?: GraphAnalyticsMetric;\n limit?: number;\n};\n\ntype GraphBiasInput = {\n topicId?: string;\n threshold?: number;\n limit?: number;\n};\n\ntype GraphGapsInput = {\n topicId?: string;\n minConfidence?: number;\n};\n\ntype GraphFalsifyInput = {\n topicId?: string;\n beliefId?: string;\n beliefIds?: string[];\n minConfidence?: number;\n};\n\ntype EventsListResult = GatewayList & {\n events?: GatewayRecord[];\n};\n\ntype WebhooksListResult = GatewayList & {\n webhooks?: GatewayRecord[];\n};\n\ntype QuestionsListResult = GatewayList & {\n questions?: Array<GatewayRecord & { priority?: string }>;\n};\n\ntype ContradictionsListResult = GatewayList & {\n contradictions?: GatewayRecord[];\n};\n\ntype WorktreesListResult = GatewayList & {\n worktrees?: GatewayRecord[];\n};\n\ntype TaskListResult = GatewayList & {\n tasks?: GatewayRecord[];\n};\n\ntype EvidenceCreateResult = GatewayRecord & {\n id?: string;\n};\n\ntype EvidenceLinkResult = GatewayRecord & {\n edgeId?: string;\n};\n\ntype BeliefCreateInput = {\n topicId: string;\n text: string;\n rationale?: string;\n worktreeId?: string;\n pillar?: string;\n sourceBeliefIds?: string[];\n sourceType?: string;\n beliefType?: string;\n reversibility?: string;\n predictionMeta?: JsonObject;\n metadata?: JsonObject;\n};\n\ntype BeliefsListQuery = {\n topicId?: string;\n status?: string;\n worktreeId?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n};\n\ntype BeliefRefineInput = {\n text: string;\n rationale?: string;\n};\n\ntype BeliefForkInput = {\n text: string;\n forkReason?: string;\n rationale?: string;\n};\n\ntype BeliefConfidenceInput = {\n confidence: number;\n trigger?: string;\n rationale: string;\n certainty?: number;\n maxInlinePropagationTargets?: number;\n};\n\ntype BeliefArchiveInput = {\n reason?: string;\n rationale?: string;\n};\n\ntype BeliefContractInput = GatewayRecord;\n\ntype BeliefBisectInput = {\n expectedDirection: \"overconfident\" | \"underconfident\";\n timeRange?: {\n start: number;\n end: number;\n };\n};\n\ntype EdgeCreateInput = {\n sourceId: string;\n targetId: string;\n edgeType: string;\n topicId?: string;\n confidence?: number;\n weight?: number;\n context?: string;\n reasoning?: string;\n};\n\ntype EdgeListQuery = {\n sourceId?: string;\n edgeType?: string;\n limit?: number;\n cursor?: string;\n};\n\ntype EdgeTraverseInput = {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n};\n\ntype EvidenceCreateInput = {\n topicId: string;\n text: string;\n source?: string;\n targetId?: string;\n weight?: number;\n metadata?: JsonObject;\n title?: string;\n content?: string;\n contentType?: string;\n kind?: string;\n};\n\ntype EvidenceListQuery = {\n topicId?: string;\n targetId?: string;\n limit?: number;\n cursor?: string;\n};\n\ntype EvidenceSearchInput = {\n q: string;\n topicId?: string;\n targetId?: string;\n methodology?: string;\n limit?: number;\n cursor?: string;\n};\n\ntype EvidenceLinkInput = {\n evidenceId: string;\n targetId: string;\n targetType?: \"belief\" | \"question\";\n weight?: number;\n rationale?: string;\n};\n\ntype QuestionsListQuery = {\n topicId?: string;\n status?: string;\n priority?: string;\n worktreeId?: string;\n limit?: number;\n cursor?: string;\n};\n\ntype QuestionCreateInput = {\n topicId: string;\n text: string;\n priority?: string;\n linkedBeliefId?: string;\n metadata?: JsonObject;\n};\n\ntype QuestionAnswerInput = {\n text: string;\n confidence?: string;\n evidenceIds?: string[];\n rationale?: string;\n};\n\ntype QuestionRefineInput = {\n text: string;\n rationale?: string;\n};\n\ntype QuestionArchiveInput = {\n reason?: string;\n rationale?: string;\n};\n\ntype QuestionStatusInput = {\n status: string;\n rationale?: string;\n};\n\ntype SearchQueryInput = {\n q?: string;\n query?: string;\n topicId?: string;\n types?: string[];\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n};\n\ntype TaskCreateInput = {\n topicId?: string;\n title: string;\n description?: string;\n taskType?: string;\n priority?: string;\n linkedBeliefId?: string;\n linkedQuestionId?: string;\n linkedWorktreeId?: string;\n};\n\ntype TaskUpdateInput = {\n id: string;\n title?: string;\n description?: string;\n priority?: string;\n status?: string;\n linkedBeliefId?: string;\n linkedQuestionId?: string;\n linkedWorktreeId?: string;\n metadata?: JsonObject;\n};\n\ntype TaskCompleteInput = {\n id: string;\n outputSummary: string;\n};\n\ntype TaskListQuery = {\n topicId?: string;\n worktreeId?: string;\n status?: string;\n limit?: number;\n};\n\ntype WorktreeCreateInput = {\n title: string;\n topicId?: string;\n objective?: string;\n hypothesis?: string;\n beliefIds?: string[];\n autoShape?: boolean;\n domainPackId?: string;\n executionOrder?: number;\n dependsOn?: string[];\n blocks?: string[];\n gate?: string;\n proofArtifacts?: unknown[];\n staffingHint?: string;\n lastReconciledAt?: number;\n autoFixPolicy?: unknown;\n};\n\ntype WorktreeListQuery = {\n topicId?: string;\n status?: string;\n limit?: number;\n};\n\ntype WorktreeActivateInput = {\n id: string;\n};\n\ntype WorktreeUpdateInput = {\n id: string;\n objective?: string;\n hypothesis?: string;\n rationale?: string;\n track?: string;\n trackPosition?: number;\n executionBand?: number;\n executionOrder?: number;\n dependsOn?: string[];\n blocks?: string[];\n gate?: string;\n status?: string;\n topicId?: string;\n additionalTopicIds?: string[];\n proofArtifacts?: unknown[];\n staffingHint?: string;\n lastReconciledAt?: number;\n autoFixPolicy?: unknown;\n lensId?: string;\n};\n\ntype WorktreeMergeInput = {\n id: string;\n summary?: string;\n outcomes: Array<{\n beliefId: string;\n confidence: number;\n rationale: string;\n }>;\n};\n\ntype WorktreeTargetsInput = {\n id: string;\n addBeliefIds?: string[];\n addQuestionIds?: string[];\n removeBeliefIds?: string[];\n removeQuestionIds?: string[];\n};\n\ntype OntologyListInput = {\n tenantId?: string;\n tier?: string;\n status?: string;\n};\n\ntype OntologyMatchInput = GatewayRecord;\n\ntype WebhookCreateInput = GatewayRecord;\ntype WebhookUpdateInput = GatewayRecord;\ntype WebhookListQuery = {\n topicId?: string;\n};\ntype WebhookTestInput = {\n topicId?: string;\n};\ntype WebhookDeliveriesQuery = {\n limit?: number;\n};\n\ntype EventsListQuery = {\n topicId?: string;\n after?: string;\n types?: string[];\n startTime?: number;\n endTime?: number;\n limit?: number;\n};\n\ntype ReplayEventsInput = GatewayRecord;\n\nfunction serializeTypes(types: string[] | undefined) {\n return Array.isArray(types) && types.length > 0 ? types.join(\",\") : undefined;\n}\n\nexport function createBeliefsFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: BeliefCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<BeliefRecord>> {\n return gateway.request<BeliefRecord>({\n path: \"/api/platform/v1/beliefs\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async get(id: string): Promise<PlatformGatewaySuccess<BeliefRecord>> {\n return gateway.request<BeliefRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}`,\n });\n },\n\n async list(\n query: BeliefsListQuery\n ): Promise<PlatformGatewaySuccess<BeliefsListResult>> {\n return gateway.request<BeliefsListResult>({\n path: `/api/platform/v1/beliefs${toQueryString({\n topicId: query.topicId,\n status: query.status,\n worktreeId: query.worktreeId,\n minConfidence: query.minConfidence,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async refine(\n id: string,\n input: BeliefRefineInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<BeliefRecord>> {\n return gateway.request<BeliefRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async fork(\n id: string,\n input: BeliefForkInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<BeliefRecord>> {\n return gateway.request<BeliefRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}/fork`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateConfidence(\n id: string,\n input: BeliefConfidenceInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}/confidence`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateStatus(\n input: {\n id?: string;\n nodeId?: string;\n beliefId?: string;\n status: \"active\" | \"superseded\" | \"archived\";\n reason?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/beliefs/update-status\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateRationale(\n input: {\n id?: string;\n nodeId?: string;\n beliefId?: string;\n rationale?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/beliefs/update-rationale\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async linkBeliefs(\n input: {\n fromNodeId: string;\n toNodeId: string;\n edgeType: string;\n weight?: number;\n context?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/beliefs/link\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async unlinkEvidence(\n input: {\n beliefNodeId?: string;\n beliefId?: string;\n insightId?: string;\n evidenceId?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/beliefs/unlink-evidence\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateCriticality(\n input: {\n id?: string;\n nodeId?: string;\n beliefId?: string;\n criticality: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/beliefs/update-criticality\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async batchUpdateCriticality(\n input: {\n updates: GatewayRecord[];\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/beliefs/batch-update-criticality\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async reassignTopic(\n input: {\n beliefNodeIds?: string[];\n beliefIds?: string[];\n targetTopicId: string;\n reason?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/beliefs/reassign-topic\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async archive(\n id: string,\n input: BeliefArchiveInput = {},\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async lineage(\n id: string\n ): Promise<PlatformGatewaySuccess<BeliefsLineageResult>> {\n return gateway.request<BeliefsLineageResult>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}/lineage`,\n });\n },\n\n async confidenceHistory(\n id: string\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}/confidence-history`,\n });\n },\n\n async createContract(\n id: string,\n input: BeliefContractInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}/contracts`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async bisect(\n id: string,\n input: BeliefBisectInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/beliefs/${encodeURIComponent(id)}/bisect`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n\nexport function createContradictionsFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async flag(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/contradictions\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(\n query: {\n topicId?: string;\n status?: string;\n limit?: number;\n cursor?: string;\n }\n ): Promise<PlatformGatewaySuccess<ContradictionsListResult>> {\n return gateway.request<ContradictionsListResult>({\n path: `/api/platform/v1/contradictions${toQueryString({\n topicId: query.topicId,\n status: query.status,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async get(id: string): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/contradictions/${encodeURIComponent(id)}`,\n });\n },\n };\n}\n\nexport function createEdgesFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: EdgeCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/edges\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(\n query: EdgeListQuery\n ): Promise<PlatformGatewaySuccess<GatewayList>> {\n return gateway.request<GatewayList>({\n path: `/api/platform/v1/edges${toQueryString({\n sourceId: query.sourceId,\n edgeType: query.edgeType,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async traverse(\n input: EdgeTraverseInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/edges/traverse\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async update(\n input: {\n edgeId: string;\n weight?: number;\n confidence?: number;\n context?: string;\n derivationType?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/edges/update\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async remove(\n input: { edgeId: string },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/edges/remove\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async removeBetween(\n input: {\n fromNodeId: string;\n toNodeId: string;\n edgeType?: string;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/edges/remove-between\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async batchCreate(\n input: {\n edges: GatewayRecord[];\n skipLayerValidation?: boolean;\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/edges/batch\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async delete(\n input: { edgeIds: string[] },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/edges/delete\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n\nexport function createEvidenceFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: EvidenceCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<EvidenceCreateResult>> {\n return gateway.request<EvidenceCreateResult>({\n path: \"/api/platform/v1/evidence\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async get(id: string): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/evidence/${encodeURIComponent(id)}`,\n });\n },\n\n async list(\n query: EvidenceListQuery\n ): Promise<PlatformGatewaySuccess<GatewayList>> {\n return gateway.request<GatewayList>({\n path: `/api/platform/v1/evidence${toQueryString({\n topicId: query.topicId,\n targetId: query.targetId,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async link(\n input: EvidenceLinkInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<EvidenceLinkResult>> {\n return gateway.request<EvidenceLinkResult>({\n path: `/api/platform/v1/evidence/${encodeURIComponent(input.evidenceId)}/link`,\n method: \"POST\",\n body: {\n targetId: input.targetId,\n targetType: input.targetType,\n weight: input.weight,\n rationale: input.rationale,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async search(\n query: EvidenceSearchInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayList>> {\n return gateway.request<GatewayList>({\n path: \"/api/platform/v1/evidence/search\",\n method: \"POST\",\n body: query as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateStatus(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/evidence/update-status\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async update(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/evidence/update\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async flagIncorrect(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/evidence/flag-incorrect\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async remove(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/evidence/remove\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateVerificationStatus(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/evidence/update-verification-status\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n\nexport function createEventsFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async list(\n query: EventsListQuery = {}\n ): Promise<PlatformGatewaySuccess<EventsListResult>> {\n return gateway.request<EventsListResult>({\n path: `/api/platform/v1/events${toQueryString({\n topicId: query.topicId,\n after: query.after,\n types: serializeTypes(query.types),\n startTime: query.startTime,\n endTime: query.endTime,\n limit: query.limit,\n })}`,\n });\n },\n\n async replay(\n input: ReplayEventsInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/events/replay\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n\nexport function createGraphFacade(config: GatewayClientConfig = {}) {\n const graphClient = createGraphClient(config);\n const gateway = createGatewayRequestClient(config);\n\n return {\n async neighborhood(input: GraphNeighborhoodInput) {\n return graphClient.neighborhood({\n globalId: input.globalId,\n globalIds: Array.isArray(input.globalIds)\n ? input.globalIds.join(\",\")\n : input.globalIds,\n maxDepth: input.maxDepth,\n });\n },\n\n async traverse(input: GraphTraverseInput) {\n return graphClient.traverse(input);\n },\n\n async analyze(input: GraphAnalyzeInput = {}) {\n return graphClient.analyze(input);\n },\n\n async bias(input: GraphBiasInput = {}) {\n return graphClient.bias(input);\n },\n\n async gaps(input: GraphGapsInput) {\n return graphClient.gaps(input);\n },\n\n async falsify(\n input: GraphFalsifyInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/graph/falsify\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n\nexport function createIdentityFacade(config: GatewayClientConfig = {}) {\n const identityClient = createIdentityClient(config);\n\n return {\n async whoami() {\n const response = await identityClient.whoami();\n return Object.assign({}, response, response.data);\n },\n };\n}\n\nexport function createOntologiesFacade(config: GatewayClientConfig = {}) {\n const ontologyClient = createOntologyClient(config);\n const gateway = createGatewayRequestClient(config);\n\n return {\n async get(id: string): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(id)}`,\n });\n },\n\n async list(query: OntologyListInput = {}) {\n return ontologyClient.list(query);\n },\n\n async bind(\n input: OntologyBindingInput,\n idempotencyKey?: string\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/ontologies/${encodeURIComponent(input.ontologyId)}/bind`,\n method: \"POST\",\n body: {\n topicId: input.topicId,\n } as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n async match(\n input: OntologyMatchInput,\n idempotencyKey?: string\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/ontologies/match\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n\nexport function createQuestionsFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: QuestionCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async get(id: string): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/questions/${encodeURIComponent(id)}`,\n });\n },\n\n async list(\n query: QuestionsListQuery\n ): Promise<PlatformGatewaySuccess<QuestionsListResult>> {\n return gateway.request<QuestionsListResult>({\n path: `/api/platform/v1/questions${toQueryString({\n topicId: query.topicId,\n status: query.status,\n priority: query.priority,\n worktreeId: query.worktreeId,\n limit: query.limit,\n cursor: query.cursor,\n })}`,\n });\n },\n\n async answer(\n id: string,\n input: QuestionAnswerInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/questions/${encodeURIComponent(id)}/answer`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async refine(\n id: string,\n input: QuestionRefineInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/questions/${encodeURIComponent(id)}/refine`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async archive(\n id: string,\n input: QuestionArchiveInput = {},\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/questions/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateStatus(\n id: string,\n input: QuestionStatusInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/questions/${encodeURIComponent(id)}/status`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async batchCreate(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/batch\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async add(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/add\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updatePriority(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/update-priority\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async advanceToConviction(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/advance-to-conviction\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateConviction(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/update-conviction\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async finalizeConviction(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/finalize-conviction\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async update(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/update\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async delete(\n input: GatewayRecord,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/questions/delete\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n\nexport function createSearchFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async query(\n input: SearchQueryInput\n ): Promise<PlatformGatewaySuccess<SearchResult>> {\n return gateway.request<SearchResult>({\n path: \"/api/platform/v1/search\",\n method: \"POST\",\n body: input as JsonObject,\n });\n },\n };\n}\n\nexport function createTasksFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: TaskCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/tasks\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async update(\n input: TaskUpdateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/tasks/${encodeURIComponent(input.id)}`,\n method: \"PATCH\",\n body: {\n title: input.title,\n description: input.description,\n priority: input.priority,\n status: input.status,\n linkedBeliefId: input.linkedBeliefId,\n linkedQuestionId: input.linkedQuestionId,\n linkedWorktreeId: input.linkedWorktreeId,\n metadata: input.metadata,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async complete(\n input: TaskCompleteInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/tasks/${encodeURIComponent(input.id)}/complete`,\n method: \"POST\",\n body: {\n outputSummary: input.outputSummary,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(\n query: TaskListQuery\n ): Promise<PlatformGatewaySuccess<TaskListResult>> {\n return gateway.request<TaskListResult>({\n path: `/api/platform/v1/tasks${toQueryString({\n topicId: query.topicId,\n worktreeId: query.worktreeId,\n status: query.status,\n limit: query.limit,\n })}`,\n });\n },\n };\n}\n\nexport function createTopicsFacade(config: GatewayClientConfig = {}) {\n const topicsClient = createTopicsClient(config);\n\n return {\n async create(input: TopicCreateInput, idempotencyKey?: string) {\n return topicsClient.create(input, idempotencyKey);\n },\n\n async get(id: string) {\n return topicsClient.get(id);\n },\n\n async list(query: TopicListInput = {}) {\n return topicsClient.list(query);\n },\n\n async update(\n input: TopicUpdateInput & { id: string },\n idempotencyKey?: string\n ) {\n const { id, ...rest } = input;\n return topicsClient.update(id, rest, idempotencyKey);\n },\n\n async tree(input: TopicTreeQuery & { id: string }) {\n return topicsClient.getTree(input.id, {\n maxDepth: input.maxDepth,\n });\n },\n\n async coverage(input: TopicCoverageQuery & { id: string }) {\n return topicsClient.getCoverage(input.id, {\n includeDescendants: input.includeDescendants,\n maxDepth: input.maxDepth,\n });\n },\n\n async remove(id: string, idempotencyKey = randomIdempotencyKey()) {\n return topicsClient.remove(id, idempotencyKey);\n },\n\n async bulkCreate(\n input: TopicBulkCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ) {\n return topicsClient.bulkCreate(input, idempotencyKey);\n },\n };\n}\n\nexport function createWebhooksFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: WebhookCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/webhooks\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(\n query: WebhookListQuery = {}\n ): Promise<PlatformGatewaySuccess<WebhooksListResult>> {\n return gateway.request<WebhooksListResult>({\n path: `/api/platform/v1/webhooks${toQueryString({\n topicId: query.topicId,\n })}`,\n });\n },\n\n async get(id: string): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/webhooks/${encodeURIComponent(id)}`,\n });\n },\n\n async update(\n id: string,\n input: WebhookUpdateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/webhooks/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async delete(\n id: string,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/webhooks/${encodeURIComponent(id)}`,\n method: \"DELETE\",\n idempotencyKey,\n });\n },\n\n async test(\n id: string,\n input: WebhookTestInput = {},\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/webhooks/${encodeURIComponent(id)}/test`,\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async deliveries(\n id: string,\n query: WebhookDeliveriesQuery = {}\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/webhooks/${encodeURIComponent(id)}/deliveries${toQueryString({\n limit: query.limit,\n })}`,\n });\n },\n\n async health(id: string): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/webhooks/${encodeURIComponent(id)}/health`,\n });\n },\n };\n}\n\nexport function createWorktreesFacade(config: GatewayClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n async create(\n input: WorktreeCreateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/worktrees\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async list(\n query: WorktreeListQuery\n ): Promise<PlatformGatewaySuccess<WorktreesListResult>> {\n return gateway.request<WorktreesListResult>({\n path: `/api/platform/v1/worktrees${toQueryString({\n topicId: query.topicId,\n status: query.status,\n limit: query.limit,\n })}`,\n });\n },\n\n async activate(\n input: WorktreeActivateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(input.id)}/activate`,\n method: \"POST\",\n body: {} as JsonObject,\n idempotencyKey,\n });\n },\n\n async update(\n input: WorktreeUpdateInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(input.id)}`,\n method: \"PATCH\",\n body: {\n objective: input.objective,\n hypothesis: input.hypothesis,\n rationale: input.rationale,\n track: input.track,\n trackPosition: input.trackPosition,\n executionBand: input.executionBand,\n executionOrder: input.executionOrder,\n dependsOn: input.dependsOn,\n blocks: input.blocks,\n gate: input.gate,\n status: input.status,\n topicId: input.topicId,\n additionalTopicIds: input.additionalTopicIds,\n proofArtifacts: input.proofArtifacts,\n staffingHint: input.staffingHint,\n lastReconciledAt: input.lastReconciledAt,\n autoFixPolicy: input.autoFixPolicy,\n lensId: input.lensId,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async merge(\n input: WorktreeMergeInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(input.id)}/merge`,\n method: \"POST\",\n body: {\n summary: input.summary,\n outcomes: input.outcomes,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async updateTargets(\n input: WorktreeTargetsInput,\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(input.id)}/targets`,\n method: \"POST\",\n body: {\n addBeliefIds: input.addBeliefIds,\n addQuestionIds: input.addQuestionIds,\n removeBeliefIds: input.removeBeliefIds,\n removeQuestionIds: input.removeQuestionIds,\n } as JsonObject,\n idempotencyKey,\n });\n },\n\n async complete(\n input: {\n worktreeId: string;\n keyFindings?: string[];\n decisionsReached?: string[];\n nextSteps?: string[];\n },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/worktrees/complete\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async advancePhase(\n input: { worktreeId: string },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/worktrees/advance-phase\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async setPhase(\n input: { worktreeId: string; phase: string },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/worktrees/set-phase\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async patchState(\n input: { worktreeId: string; patch: GatewayRecord },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/worktrees/patch-state\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n\n async bulkCreate(\n input: { worktrees: unknown[] },\n idempotencyKey = randomIdempotencyKey()\n ): Promise<PlatformGatewaySuccess<GatewayRecord>> {\n return gateway.request<GatewayRecord>({\n path: \"/api/platform/v1/worktrees/bulk\",\n method: \"POST\",\n body: input as JsonObject,\n idempotencyKey,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n createListResult,\n mapGatewayData,\n normalizeTopicQuery,\n withTopicAlias,\n} from \"./sdkSurface\";\nimport type {\n GetJudgmentResponse,\n JudgmentCalibrationResponse,\n JudgmentRecord,\n JudgmentReadinessResponse,\n JudgmentTransitionAuditIntegrityResponse,\n ListJudgmentsResponse,\n PendingJudgmentOutcomeReviewResponse,\n PendingJudgmentOutcomeRecord,\n RecordJudgmentOutcomeResponse,\n RecordJudgmentResponse,\n TopicIdentifierInput,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n GetJudgmentResponse,\n JudgmentCalibrationResponse,\n JudgmentReadinessResponse,\n JudgmentTransitionAuditIntegrityResponse,\n ListJudgmentsResponse,\n PendingJudgmentOutcomeReviewResponse,\n RecordJudgmentOutcomeResponse,\n RecordJudgmentResponse,\n} from \"./types\";\n\n/** Configuration for the decisions client. */\nexport type DecisionsClientConfig = GatewayClientConfig;\n\n/** Input for recording a new judgment (irreversible decision commitment). */\nexport type RecordJudgmentInput = {\n title: string;\n summary?: string;\n rationale: string;\n topicId?: string;\n confidence?: number;\n decisionConfidence?: number;\n judgmentType?: string;\n decisionType?: string;\n beliefIds?: string[];\n keyUncertainties?: string[];\n alternativesConsidered?: string[];\n decisionMakers?: string[];\n companyId?: string;\n amount?: number;\n valuation?: number;\n terms?: string;\n themeIds?: string[];\n} & TopicIdentifierInput;\n\n/** Filter parameters for listing judgments within a topic scope. */\nexport type ListJudgmentsInput = {\n topicId?: string;\n includeArchived?: boolean;\n limit?: number;\n} & TopicIdentifierInput;\n\n/** Input for recording the real-world outcome of a judgment. */\nexport type RecordJudgmentOutcomeInput = {\n outcome:\n | \"pending\"\n | \"successful\"\n | \"unsuccessful\"\n | \"mixed\"\n | \"unknown\"\n | \"too_early\";\n outcomeNotes?: string;\n notes?: string;\n};\n\n/** Input for retrieving judgment calibration analytics. */\nexport type GetJudgmentCalibrationInput = {\n topicId?: string;\n} & TopicIdentifierInput;\n\n/** Input for listing judgments still awaiting outcome review. */\nexport type ListPendingJudgmentOutcomeReviewInput = {\n topicId?: string;\n} & TopicIdentifierInput;\n\n/** Input for checking audit integrity of judgment state transitions. */\nexport type GetJudgmentTransitionAuditIntegrityInput = {\n topicId?: string;\n judgmentId?: string;\n includePassing?: boolean;\n} & TopicIdentifierInput;\n\n/**\n * Create the judgments client for decision lifecycle operations.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to manage judgments, outcomes, readiness, and calibration.\n */\nexport function createDecisionsClient(config: DecisionsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List judgments for a topic scope.\n */\n async listJudgments(query: ListJudgmentsInput) {\n return gateway.request<ListJudgmentsResponse>({\n path: `/api/platform/v1/graph/judgments${toQueryString({\n ...normalizeTopicQuery(query),\n includeArchived:\n typeof query.includeArchived === \"boolean\"\n ? query.includeArchived\n ? \"true\"\n : \"false\"\n : undefined,\n limit: query.limit,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const rows = Array.isArray(data) ? data : [];\n const judgments = rows.map((row) =>\n withTopicAlias(row as Record<string, unknown>) as JudgmentRecord\n );\n return {\n ...createListResult(judgments, \"judgments\"),\n } as ListJudgmentsResponse;\n })\n );\n },\n\n /**\n * Get a single judgment by identifier.\n */\n async getJudgment(judgmentId: string) {\n return gateway.request<GetJudgmentResponse>({\n path: `/api/platform/v1/graph/judgments/${encodeURIComponent(judgmentId)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n data && typeof data === \"object\"\n ? (withTopicAlias(\n data as Record<string, unknown>\n ) as GetJudgmentResponse)\n : data\n )\n );\n },\n\n /**\n * Get readiness signals for creating a judgment.\n */\n async getJudgmentReadiness(query: {\n topicId?: string;\n } & TopicIdentifierInput) {\n return gateway.request<JudgmentReadinessResponse>({\n path: `/api/platform/v1/graph/judgments/readiness${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n });\n },\n\n /**\n * Get calibration analytics for judgment outcomes.\n */\n async getJudgmentCalibration(query: GetJudgmentCalibrationInput) {\n return gateway.request<JudgmentCalibrationResponse>({\n path: `/api/platform/v1/graph/judgments/calibration${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n });\n },\n\n /**\n * List judgments still awaiting outcome review.\n */\n async listPendingOutcomeReviews(\n query: ListPendingJudgmentOutcomeReviewInput\n ) {\n return gateway.request<PendingJudgmentOutcomeReviewResponse>({\n path: `/api/platform/v1/graph/judgments/pending-outcome-review${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const rows = Array.isArray(data) ? data : [];\n const reviews = rows.map((row) =>\n withTopicAlias(\n row as Record<string, unknown>\n ) as PendingJudgmentOutcomeRecord\n );\n return createListResult(reviews, \"reviews\");\n })\n );\n },\n\n /**\n * @deprecated Use listPendingOutcomeReviews.\n */\n async listPendingJudgmentOutcomeReview(\n query: ListPendingJudgmentOutcomeReviewInput\n ) {\n return this.listPendingOutcomeReviews(query);\n },\n\n /**\n * Get audit integrity checks for judgment transitions.\n */\n async getJudgmentTransitionAuditIntegrity(\n query: GetJudgmentTransitionAuditIntegrityInput\n ) {\n return gateway.request<JudgmentTransitionAuditIntegrityResponse>({\n path: `/api/platform/v1/graph/judgments/transition-audit-integrity${toQueryString(\n {\n ...normalizeTopicQuery(query),\n judgmentId: query.judgmentId,\n includePassing:\n typeof query.includePassing === \"boolean\"\n ? query.includePassing\n ? \"true\"\n : \"false\"\n : undefined,\n }\n )}`,\n });\n },\n\n /**\n * Create a judgment.\n */\n async createJudgment(input: RecordJudgmentInput, idempotencyKey?: string) {\n return gateway.request<RecordJudgmentResponse>({\n path: \"/api/platform/v1/graph/judgments\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(\n data as Record<string, unknown>\n ) as RecordJudgmentResponse\n )\n );\n },\n\n /**\n * @deprecated Use createJudgment.\n */\n async recordJudgment(input: RecordJudgmentInput, idempotencyKey?: string) {\n return this.createJudgment(input, idempotencyKey);\n },\n\n /**\n * Update the outcome for an existing judgment.\n */\n async updateJudgmentOutcome(\n judgmentId: string,\n input: RecordJudgmentOutcomeInput,\n idempotencyKey?: string\n ) {\n return gateway.request<RecordJudgmentOutcomeResponse>({\n path: `/api/platform/v1/graph/judgments/${encodeURIComponent(judgmentId)}/outcome`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use updateJudgmentOutcome.\n */\n async recordJudgmentOutcome(\n judgmentId: string,\n input: RecordJudgmentOutcomeInput,\n idempotencyKey?: string\n ) {\n return this.updateJudgmentOutcome(judgmentId, input, idempotencyKey);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n} from \"./coreClient\";\nimport type {\n CompileContextInput,\n PublicCompiledContext,\n} from \"./contextTypes\";\nimport type { JsonObject } from \"./types\";\n\n/** Configuration for the context client. */\nexport type ContextClientConfig = GatewayClientConfig;\n\n/** Alias for the compiled context payload returned by the gateway. */\nexport type CompileContextResponse = PublicCompiledContext;\n\n/** Internal request shape for the context compile endpoint. */\ntype ContextClientRequest = {\n path: \"/api/platform/v1/context/compile\";\n method: \"POST\";\n body: Record<string, unknown>;\n};\n\nfunction cleanString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0\n ? value.trim()\n : undefined;\n}\n\nfunction cleanNumber(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nfunction cleanBoolean(value: unknown): boolean | undefined {\n return typeof value === \"boolean\" ? value : undefined;\n}\n\nfunction buildCompileContextRequest(\n topicId: string,\n input: CompileContextInput = {}\n): ContextClientRequest {\n const payload: Record<string, unknown> = { topicId };\n\n const query = cleanString(input.query);\n if (query) {\n payload.query = query;\n }\n\n const budget = cleanNumber(input.budget) ?? cleanNumber(input.tokenBudget);\n if (budget !== undefined) {\n payload.budget = budget;\n }\n\n const ranking = cleanString(input.ranking) ?? cleanString(input.rankingProfile);\n if (ranking) {\n payload.ranking = ranking;\n }\n\n const limit = cleanNumber(input.limit);\n if (limit !== undefined) {\n payload.limit = limit;\n }\n\n const maxDepth = cleanNumber(input.maxDepth);\n if (maxDepth !== undefined) {\n payload.maxDepth = maxDepth;\n }\n\n const includeEntities = cleanBoolean(input.includeEntities);\n if (includeEntities !== undefined) {\n payload.includeEntities = includeEntities;\n }\n\n const mode = cleanString(input.mode);\n if (mode) {\n payload.mode = mode;\n }\n\n const includeFailures = cleanBoolean(input.includeFailures);\n if (includeFailures !== undefined) {\n payload.includeFailures = includeFailures;\n }\n\n const worktreeId = cleanString(input.worktreeId);\n if (worktreeId) {\n payload.worktreeId = worktreeId;\n }\n\n const sessionId = cleanString(input.sessionId);\n if (sessionId) {\n payload.sessionId = sessionId;\n }\n\n if (Array.isArray(input.packWeightOverrides) && input.packWeightOverrides.length > 0) {\n payload.packWeightOverrides = input.packWeightOverrides;\n }\n\n return {\n path: \"/api/platform/v1/context/compile\",\n method: \"POST\",\n body: payload,\n };\n}\n\n/**\n * Create the context client for compiling reasoning context packs.\n * @param config - Gateway transport configuration.\n * @returns An object with a `compile` method for building context packs.\n */\nexport function createContextClient(config: ContextClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * Compile a focused reasoning context pack for a topic scope.\n * @param topicId - The topic to compile context for.\n * @param input - Optional compile parameters (query, budget, ranking, etc.).\n * @returns The compiled context payload with beliefs, questions, and evidence.\n */\n async compile(topicId: string, input: CompileContextInput = {}) {\n const request = buildCompileContextRequest(topicId, input);\n return gateway.request<CompileContextResponse>({\n ...request,\n body: request.body as JsonObject,\n });\n },\n };\n}\n\nexport type { CompileContextInput, PublicCompiledContext } from \"./contextTypes\";\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, normalizeTopicQuery } from \"./sdkSurface\";\nimport type { JsonObject, JsonValue, TopicIdentifierInput } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\n/** Configuration for the harness client. Inherits gateway transport settings. */\nexport type HarnessClientConfig = GatewayClientConfig;\n\nexport type HarnessAgentGuardrails = {\n isolationMode?: \"direct\" | \"sandbox\";\n maxExecutionMs?: number;\n heartbeatIntervalMs?: number;\n maxToolCalls?: number;\n allowNetworkEgress?: boolean;\n allowedOrigins?: string[];\n};\n\nexport type HarnessAgentRuntimeConfig = {\n entryPoint?: string;\n callbackUrl?: string;\n modelRouting?: \"model_machine\" | \"tenant_proxy\" | \"bring_your_own\";\n auditMode?: \"harness\" | \"master_control\";\n};\n\n/** Input for creating or updating an agent definition in the harness registry. */\nexport type HarnessAgentWriteInput = GatewayScope & {\n agentDefinitionId?: string;\n agentKey: string;\n displayName: string;\n description: string;\n version: string;\n status?: \"active\" | \"deprecated\" | \"disabled\";\n executionAdapter:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n scopeRequirements?: string[];\n promptReleaseChannel?: \"dev\" | \"staging\" | \"prod\";\n promptName?: string;\n systemPrompt?: string;\n toolIds?: string[];\n modelSlot?: string;\n requiredModelCapabilities?: string[];\n parameterSchema?: JsonObject;\n outputSchema?: JsonObject;\n guardrails?: HarnessAgentGuardrails;\n runtimeConfig?: HarnessAgentRuntimeConfig;\n exampleInvocations?: Array<{\n input: JsonObject;\n expectedOutput?: JsonValue;\n }>;\n metadata?: JsonObject;\n};\n\n/** Input for creating or updating a tool definition in the harness registry. */\nexport type HarnessToolWriteInput = GatewayScope & {\n toolId?: string;\n toolName: string;\n description: string;\n version: string;\n status?: \"draft\" | \"active\" | \"deprecated\" | \"disabled\";\n executionAdapter:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n gateClassification?: \"core\" | \"shimmed\";\n scopeRequirements?: string[];\n requiredRole?: string;\n requiredAction?: string;\n surfaces?: string[];\n category?: string;\n parameterSchema?: JsonObject;\n returnSchema?: JsonObject;\n handlerRef?: string;\n callbackUrl?: string;\n safetyMetadata: {\n readOnly?: boolean;\n idempotent?: boolean;\n sideEffectLevel: \"none\" | \"low\" | \"high\";\n };\n exampleInvocations?: Array<{\n input: JsonObject;\n expectedOutput?: JsonValue;\n }>;\n metadata?: JsonObject;\n};\n\nexport type HarnessExecuteToolInput = GatewayScope & {\n input?: JsonObject;\n version?: string;\n transportKind?: string;\n};\n\nexport type HarnessExecuteToolResult = {\n tool: {\n toolId: string;\n toolName: string;\n version: string;\n status: \"active\" | \"deprecated\" | \"disabled\";\n executionAdapter:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n gateClassification: \"core\" | \"shimmed\";\n scopeRequirements: string[];\n safetyMetadata: {\n readOnly: boolean;\n idempotent: boolean;\n sideEffectLevel: \"none\" | \"low\" | \"high\";\n };\n };\n execution: {\n input: JsonObject;\n transportKind: string;\n startedAt: number;\n completedAt: number;\n durationMs: number;\n };\n envelope: JsonObject | null;\n audit: {\n toolName: string;\n contractName: string;\n transportKind: string;\n authMode: string;\n requiredScopes: string[];\n source: \"gateway_envelope\";\n isError: boolean;\n code?: string;\n status?: number;\n correlationId?: string | null;\n policyTraceId?: string | null;\n invariant?: string | null;\n } | null;\n output: {\n isError: boolean;\n parsed: JsonValue;\n raw: JsonValue;\n };\n};\n\n/** Input for starting a new harness run (agent execution session). */\nexport type HarnessStartRunInput = GatewayScope & {\n agentDefinitionId: string;\n agentVersion: string;\n executionAdapter:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n promptReleaseChannel?: \"dev\" | \"staging\" | \"prod\";\n chatId?: string;\n worktreeId?: string;\n topicId?: string;\n langfuseTraceId?: string;\n metadata?: JsonObject;\n} & TopicIdentifierInput;\n\nexport type HarnessInvokeManagedAgentInput = GatewayScope & {\n agentDefinitionId: string;\n input?: JsonObject;\n metadata?: JsonObject;\n};\n\n/** Input for reporting a ledger event (tool call, prompt resolution, or policy decision) within a run. */\nexport type HarnessRunReportInput = {\n reportingToken: string;\n type: \"tool_call\" | \"prompt_resolution\" | \"policy_decision\";\n metadata?: JsonObject;\n toolCallId?: string;\n toolName?: string;\n executionAdapter?:\n | \"convex_mutation\"\n | \"convex_action\"\n | \"http_callback\"\n | \"mcp_tool\"\n | \"sdk_invocation\"\n | \"external_observed\";\n policyDecisionId?: string;\n requiredScopes?: string[];\n policyResult?: \"allowed\" | \"denied\";\n policyReasonCode?: string;\n inputHash?: string;\n outputHash?: string;\n durationMs?: number;\n success?: boolean;\n startedAt?: number;\n completedAt?: number;\n input?: JsonObject;\n result?: JsonValue;\n promptKey?: string;\n promptVersion?: string;\n decision?: string;\n reasonCode?: string;\n latencyMs?: number;\n error?:\n | string\n | {\n code?: string;\n message: string;\n details?: JsonValue;\n };\n};\n\n/** Input for completing a harness run with a terminal status. */\nexport type HarnessCompleteRunInput = {\n reportingToken: string;\n status: \"completed\" | \"failed\" | \"timeout\";\n error?: {\n category:\n | \"policy_denied\"\n | \"tool_execution\"\n | \"prompt_resolution\"\n | \"model_error\"\n | \"timeout\"\n | \"heartbeat_timeout\"\n | \"input_validation\"\n | \"internal\"\n | \"external_service\";\n message: string;\n code?: string;\n };\n};\n\n/**\n * Create the harness client for agent and tool registry operations.\n */\nexport function createHarnessClient(config: HarnessClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List agent definitions.\n */\n async listAgentDefinitions(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"agents\")\n )\n );\n },\n\n /**\n * Get an agent definition.\n */\n async getAgentDefinition(agentId: string, scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents/${encodeURIComponent(agentId)}${toQueryString(scope)}`,\n });\n },\n\n /**\n * Create an agent definition.\n */\n async createAgentDefinition(\n input: HarnessAgentWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/agents\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createAgentDefinition.\n */\n async registerAgentDefinition(\n input: HarnessAgentWriteInput,\n idempotencyKey?: string\n ) {\n return this.createAgentDefinition(input, idempotencyKey);\n },\n\n /**\n * Update an agent definition.\n */\n async updateAgentDefinition(\n agentId: string,\n input: HarnessAgentWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents/${encodeURIComponent(agentId)}`,\n method: \"PUT\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Invoke a managed agent definition.\n */\n async invokeManagedAgentDefinition(\n agentId: string,\n input: Omit<HarnessInvokeManagedAgentInput, \"agentDefinitionId\">,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents/${encodeURIComponent(agentId)}/runs`,\n method: \"POST\",\n body: {\n agentDefinitionId: agentId,\n ...input,\n },\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List runs for an agent definition.\n */\n async listAgentRuns(\n agentId: string,\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/agents/${encodeURIComponent(agentId)}/runs${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"runs\")\n )\n );\n },\n\n /**\n * @deprecated Use listAgentRuns.\n */\n async listRunsForAgent(\n agentId: string,\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return this.listAgentRuns(agentId, scope);\n },\n\n /**\n * List tool definitions.\n */\n async listToolDefinitions(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n gateClassification?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/tools${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"tools\")\n )\n );\n },\n\n /**\n * Get a tool definition.\n */\n async getToolDefinition(toolId: string, scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/tools/${encodeURIComponent(toolId)}${toQueryString(scope)}`,\n });\n },\n\n /**\n * Create a tool definition.\n */\n async createToolDefinition(\n input: HarnessToolWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/tools\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createToolDefinition.\n */\n async registerToolDefinition(\n input: HarnessToolWriteInput,\n idempotencyKey?: string\n ) {\n return this.createToolDefinition(input, idempotencyKey);\n },\n\n /**\n * Update a tool definition.\n */\n async updateToolDefinition(\n toolId: string,\n input: HarnessToolWriteInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/tools/${encodeURIComponent(toolId)}`,\n method: \"PUT\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Execute a tool definition.\n */\n async executeToolDefinition(\n toolId: string,\n input: HarnessExecuteToolInput = {}\n ) {\n return gateway.request<HarnessExecuteToolResult>({\n path: `/api/platform/v1/harness/tools/${encodeURIComponent(toolId)}/execute`,\n method: \"POST\",\n body: input,\n });\n },\n\n /**\n * List run ledger entries.\n */\n async listRunEntries(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"runs\")\n )\n );\n },\n\n /**\n * @deprecated Use listRunEntries.\n */\n async listRunLedgerEntries(\n scope: GatewayScope & {\n status?: string;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n return this.listRunEntries(scope);\n },\n\n /**\n * Create a harness run.\n */\n async startHarnessRun(\n input: HarnessStartRunInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/runs\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Get a run ledger entry.\n */\n async getRunLedgerEntry(runId: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}`,\n });\n },\n\n /**\n * Update a harness run with a ledger event.\n */\n async reportHarnessRunEvent(\n runId: string,\n input: HarnessRunReportInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}/report`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a harness run heartbeat.\n */\n async heartbeatHarnessRun(\n runId: string,\n input: { reportingToken: string },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}/heartbeat`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Complete a harness run.\n */\n async completeHarnessRun(\n runId: string,\n input: HarnessCompleteRunInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/runs/${encodeURIComponent(runId)}/complete`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List prompt resolutions.\n */\n async listPromptResolutions(\n query: { runId?: string; promptName?: string; limit?: number } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/harness/prompts${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"prompts\")\n )\n );\n },\n\n /**\n * Get the harness scope taxonomy.\n */\n async getScopeTaxonomy() {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/harness/scopes\",\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, normalizeTopicQuery } from \"./sdkSurface\";\nimport type { TopicIdentifierInput } from \"./types\";\n\n/** Configuration for the learning client. */\nexport type LearningClientConfig = GatewayClientConfig;\n\n/**\n * Create the learning client for execution telemetry reads.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to list executions and retrieve stats.\n */\nexport function createLearningClient(config: LearningClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List recent execution records.\n */\n async listRecentExecutions(\n args: {\n namespace?: string;\n topicId?: string;\n audienceMode?: string;\n success?: boolean;\n limit?: number;\n } & TopicIdentifierInput = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/learning/executions/recent${toQueryString({\n ...normalizeTopicQuery(args),\n namespace: args.namespace,\n audienceMode: args.audienceMode,\n success:\n typeof args.success === \"boolean\"\n ? args.success\n ? \"true\"\n : \"false\"\n : undefined,\n limit:\n typeof args.limit === \"number\" && Number.isFinite(args.limit)\n ? String(args.limit)\n : undefined,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"executions\")\n )\n );\n },\n\n /**\n * @deprecated Use listRecentExecutions.\n */\n async getRecentExecutions(\n args: {\n namespace?: string;\n topicId?: string;\n audienceMode?: string;\n success?: boolean;\n limit?: number;\n } & TopicIdentifierInput = {}\n ) {\n return this.listRecentExecutions(args);\n },\n\n /**\n * Get aggregate execution statistics.\n */\n async getExecutionStats(\n args: {\n namespace?: string;\n topicId?: string;\n audienceMode?: string;\n hours?: number;\n } & TopicIdentifierInput = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/learning/executions/stats${toQueryString({\n ...normalizeTopicQuery(args),\n namespace: args.namespace,\n audienceMode: args.audienceMode,\n hours:\n typeof args.hours === \"number\" && Number.isFinite(args.hours)\n ? String(args.hours)\n : undefined,\n })}`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n randomIdempotencyKey,\n type PlatformGatewaySuccess,\n} from \"./coreClient\";\nimport type { JsonObject } from \"./types\";\n\n/** Configuration for the MCP parity client. Inherits gateway transport settings. */\nexport type McpParityClientConfig = GatewayClientConfig;\n\ntype ToolArgs = JsonObject;\n\ntype ToolResult<T = unknown> = Promise<PlatformGatewaySuccess<T>>;\n\nfunction withSdkSessionId(args: ToolArgs | undefined, sessionId: string): ToolArgs {\n return {\n ...(args ?? {}),\n __sdkSessionId: sessionId,\n };\n}\n\n/**\n * Thin typed bridge for MCP-only SDK parity methods.\n *\n * These methods map 1:1 to the Lucern MCP handlers and execute through the\n * platform gateway so the SDK can cover the full control-plane surface.\n */\nexport function createMcpParityClient(config: McpParityClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n const sessionId = crypto.randomUUID();\n\n function executeRead<T = unknown>(\n toolName: string,\n args?: ToolArgs\n ): ToolResult<T> {\n return gateway.request<T>({\n path: `/api/platform/v1/mcp-tools/${encodeURIComponent(toolName)}`,\n method: \"POST\",\n body: withSdkSessionId(args, sessionId),\n });\n }\n\n function executeMutation<T = unknown>(\n toolName: string,\n args?: ToolArgs,\n idempotencyKey?: string\n ): ToolResult<T> {\n return gateway.request<T>({\n path: `/api/platform/v1/mcp-tools/${encodeURIComponent(toolName)}`,\n method: \"POST\",\n body: withSdkSessionId(args, sessionId),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n }\n\n return {\n sessionId,\n\n listTopics(args: ToolArgs = {}) {\n return executeRead(\"list_topics\", args);\n },\n createTopic(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_topic\", args, idempotencyKey);\n },\n getTopic(args: ToolArgs) {\n return executeRead(\"get_topic\", args);\n },\n getTopicTree(args: ToolArgs) {\n return executeRead(\"get_topic_tree\", args);\n },\n\n activateWorktree(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"activate_worktree\", args, idempotencyKey);\n },\n updateWorktreeMetadata(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"update_worktree_metadata\", args, idempotencyKey);\n },\n updateWorktreeTargets(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"update_worktree_targets\", args, idempotencyKey);\n },\n listAllWorktrees(args: ToolArgs = {}) {\n return executeRead(\"list_all_worktrees\", args);\n },\n pipelineSnapshot(args: ToolArgs) {\n return executeRead(\"pipeline_snapshot\", args);\n },\n recordScopeLearning(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"record_scope_learning\", args, idempotencyKey);\n },\n discover(args: ToolArgs) {\n return executeRead(\"discover\", args);\n },\n analyzeTopicDensity(args: ToolArgs) {\n return executeRead(\"analyze_topic_density\", args);\n },\n applyAutoBranching(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"apply_auto_branching\", args, idempotencyKey);\n },\n seedBeliefLattice(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"seed_belief_lattice\", args, idempotencyKey);\n },\n getLatticeCoverage(args: ToolArgs = {}) {\n return executeRead(\"get_lattice_coverage\", args);\n },\n matchEntityType(args: ToolArgs) {\n return executeRead(\"match_entity_type\", args);\n },\n discoverEntityConnections(args: ToolArgs) {\n return executeRead(\"discover_entity_connections\", args);\n },\n triggerBeliefReview(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"trigger_belief_review\", args, idempotencyKey);\n },\n\n listOntologies(args: ToolArgs = {}) {\n return executeRead(\"list_ontologies\", args);\n },\n getOntology(args: ToolArgs) {\n return executeRead(\"get_ontology\", args);\n },\n applyOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"apply_ontology\", args, idempotencyKey);\n },\n createOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_ontology\", args, idempotencyKey);\n },\n updateOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"update_ontology\", args, idempotencyKey);\n },\n archiveOntology(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"archive_ontology\", args, idempotencyKey);\n },\n createOntologyVersion(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_ontology_version\", args, idempotencyKey);\n },\n publishOntologyVersion(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"publish_ontology_version\", args, idempotencyKey);\n },\n deprecateOntologyVersion(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\n \"deprecate_ontology_version\",\n args,\n idempotencyKey\n );\n },\n resolveEffectiveOntology(args: ToolArgs) {\n return executeRead(\"resolve_effective_ontology\", args);\n },\n\n registerSession(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"register_session\", args, idempotencyKey);\n },\n heartbeatSession(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"heartbeat_session\", args, idempotencyKey);\n },\n endSession(args: ToolArgs = {}, idempotencyKey?: string) {\n return executeMutation(\"end_session\", args, idempotencyKey);\n },\n listActiveSessions(args: ToolArgs = {}) {\n return executeRead(\"list_active_sessions\", args);\n },\n sendAgentMessage(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"send_agent_message\", args, idempotencyKey);\n },\n broadcastMessage(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"broadcast_message\", args, idempotencyKey);\n },\n getAgentInbox(args: ToolArgs = {}) {\n return executeRead(\"get_agent_inbox\", args);\n },\n claimFiles(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"claim_files\", args, idempotencyKey);\n },\n\n listTasks(args: ToolArgs) {\n return executeRead(\"list_tasks\", args);\n },\n createAnswer(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"create_answer\", args, idempotencyKey);\n },\n getAnswer(args: ToolArgs) {\n return executeRead(\"get_answer\", args);\n },\n flagContradiction(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"flag_contradiction\", args, idempotencyKey);\n },\n\n ingestObservation(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"ingest_observation\", args, idempotencyKey);\n },\n getObservationContext(args: ToolArgs) {\n return executeRead(\"get_observation_context\", args);\n },\n\n getCodeContext(args: ToolArgs) {\n return executeRead(\"get_code_context\", args);\n },\n getChangeHistory(args: ToolArgs) {\n return executeRead(\"get_change_history\", args);\n },\n recordAttempt(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"record_attempt\", args, idempotencyKey);\n },\n getFailureLog(args: ToolArgs) {\n return executeRead(\"get_failure_log\", args);\n },\n\n createEpistemicContract(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\n \"create_epistemic_contract\",\n args,\n idempotencyKey\n );\n },\n evaluateContract(args: ToolArgs, idempotencyKey?: string) {\n return executeMutation(\"evaluate_contract\", args, idempotencyKey);\n },\n getContractStatus(args: ToolArgs) {\n return executeRead(\"get_contract_status\", args);\n },\n\n checkPermission(args: ToolArgs) {\n return executeRead(\"check_permission\", args);\n },\n filterByPermission(args: ToolArgs) {\n return executeRead(\"filter_by_permission\", args);\n },\n\n manageWritePolicy(args: ToolArgs, idempotencyKey?: string) {\n return args.action === \"set\"\n ? executeMutation(\"manage_write_policy\", args, idempotencyKey)\n : executeRead(\"manage_write_policy\", args);\n },\n\n generateSessionHandoff(args: ToolArgs) {\n return executeRead(\"generate_session_handoff\", args);\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\n/** Configuration for the packs client. */\nexport type PacksClientConfig = GatewayClientConfig;\n\n/** Input for installing a pack into a tenant or workspace scope. */\nexport type PackInstallInput = GatewayScope & {\n packKey: string;\n version?: string;\n autoEnable?: boolean;\n metadata?: JsonObject;\n};\n\n/** Input for enabling a previously installed pack. */\nexport type PackEnableInput = GatewayScope & {\n packKey: string;\n metadata?: JsonObject;\n};\n\n/** Input for disabling an active pack. */\nexport type PackDisableInput = GatewayScope & {\n packKey: string;\n force?: boolean;\n metadata?: JsonObject;\n};\n\n/** Input for uninstalling a pack from a tenant or workspace scope. */\nexport type PackUninstallInput = GatewayScope & {\n packKey: string;\n metadata?: JsonObject;\n};\n\n/** Input for upgrading a pack through the prepare/canary/commit/rollback lifecycle. */\nexport type PackUpgradeInput = GatewayScope & {\n packKey: string;\n mode: \"prepare\" | \"canary\" | \"commit\" | \"rollback\";\n targetVersion?: string;\n metadata?: JsonObject;\n};\n\n/** Input for creating or updating a pack entitlement record. */\nexport type PackEntitlementInput = GatewayScope & {\n packKey: string;\n status: \"active\" | \"disabled\" | \"revoked\";\n allowedLifecycles?: Array<\"active\" | \"beta\" | \"experimental\">;\n minVersion?: string;\n maxVersion?: string;\n metadata?: JsonObject;\n};\n\n/**\n * Create the packs client for pack catalog, state, and entitlement operations.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to manage pack lifecycle, telemetry, and entitlements.\n */\nexport function createPacksClient(config: PacksClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List catalog entries for available packs.\n */\n async listCatalog() {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/catalog\",\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"catalog\")\n )\n );\n },\n\n /**\n * @deprecated Use listCatalog.\n */\n async getCatalog() {\n return this.listCatalog();\n },\n\n /**\n * Get the discovery catalog for packs.\n */\n async getDiscoveryCatalog() {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/discovery\",\n });\n },\n\n /**\n * Get discovery details for a specific pack.\n */\n async getDiscoveryDetail(packKey: string) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/packs/discovery/${encodeURIComponent(packKey)}`,\n });\n },\n\n /**\n * List pack states for the current scope.\n */\n async listStates(query: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/packs/states${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"states\")\n )\n );\n },\n\n /**\n * @deprecated Use listStates.\n */\n async getStates(query: GatewayScope = {}) {\n return this.listStates(query);\n },\n\n /**\n * Get health details for a pack.\n */\n async getHealth(packKey: string, query: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/packs/${encodeURIComponent(packKey)}/health${toQueryString(\n query\n )}`,\n });\n },\n\n /**\n * List pack telemetry entries.\n */\n async listTelemetry(\n query: GatewayScope & { lookbackHours?: number; limit?: number } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/packs/telemetry${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"telemetry\")\n )\n );\n },\n\n /**\n * @deprecated Use listTelemetry.\n */\n async getTelemetry(\n query: GatewayScope & { lookbackHours?: number; limit?: number } = {}\n ) {\n return this.listTelemetry(query);\n },\n\n /**\n * Create a pack entitlement.\n */\n async createEntitlement(\n input: PackEntitlementInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/entitlements\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a pack entitlement.\n */\n async updateEntitlement(\n input: PackEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createEntitlement or updateEntitlement.\n */\n async upsertEntitlement(\n input: PackEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n\n /**\n * Install a pack.\n */\n async install(input: PackInstallInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/install\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Enable a pack.\n */\n async enable(input: PackEnableInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/enable\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Disable a pack.\n */\n async disable(input: PackDisableInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/disable\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Uninstall a pack.\n */\n async uninstall(input: PackUninstallInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/uninstall\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Upgrade a pack.\n */\n async upgrade(input: PackUpgradeInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/packs/upgrade\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\n/** Configuration for the policy client. */\nexport type PolicyClientConfig = GatewayClientConfig;\n\n/** Permission direction: read access or write access. */\nexport type PermissionKind = \"read\" | \"write\";\n\n/** Permission level for a write policy rule. */\nexport type WritePolicyPermission = \"allow\" | \"deny\" | \"review_required\";\n\ntype TopicRecord = {\n topicId?: string;\n name?: string;\n type?: string;\n isOwner?: boolean;\n [key: string]: unknown;\n};\n\n/** Structured explanation of how a policy decision was derived. */\nexport type PolicyDecisionExplanation = {\n summary?: string;\n matchedReasonCode?: string;\n steps?: Array<{\n stage?: string;\n outcome?: string;\n reasonCode?: string;\n detail?: string;\n }>;\n [key: string]: unknown;\n};\n\n/** Result of a permission check against the policy engine. */\nexport type PermissionDecision = {\n allowed?: boolean;\n decision?: string;\n reasonCode?: string;\n principalId?: string;\n topicId?: string;\n permission?: string;\n policyVersion?: string;\n traceId?: string | null;\n explanation?: PolicyDecisionExplanation;\n};\n\n/** A persisted write policy rule controlling mutation access. */\nexport type WritePolicyRecord = {\n id?: string;\n topicId?: string;\n role?: string;\n toolCategory?: string;\n permission?: WritePolicyPermission;\n maxWritesPerSession?: number;\n enabled?: boolean;\n rationale?: string;\n createdAt?: number;\n updatedAt?: number;\n createdBy?: string;\n resolution?: string;\n [key: string]: unknown;\n};\n\n/** Input for creating a write policy rule. */\nexport type WritePolicyCreateInput = GatewayScope & {\n topicId?: string;\n role: string;\n toolCategory: string;\n permission: WritePolicyPermission;\n maxWritesPerSession?: number;\n enabled?: boolean;\n rationale?: string;\n createdBy?: string;\n};\n\n/** Input for partially updating an existing write policy rule. */\nexport type WritePolicyUpdateInput = GatewayScope & {\n topicId?: string;\n clearTopicId?: boolean;\n role?: string;\n toolCategory?: string;\n permission?: WritePolicyPermission;\n maxWritesPerSession?: number;\n clearMaxWritesPerSession?: boolean;\n enabled?: boolean;\n rationale?: string;\n clearRationale?: boolean;\n};\n\nexport type TenantPolicyPermission = {\n resource: string;\n actions: string[];\n};\n\nexport type TenantPolicyRecord = {\n id?: string;\n tenantId: string;\n workspaceId?: string;\n roleName: string;\n description?: string;\n permissions: TenantPolicyPermission[];\n groupBindings: string[];\n createdAt?: number;\n updatedAt?: number;\n createdBy?: string;\n updatedBy?: string;\n};\n\ntype AccessibleTopicsResponse = {\n permission: PermissionKind;\n topics: TopicRecord[];\n total: number;\n deniedTopics: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n};\n\ntype FilterByPermissionResponse = {\n permission: PermissionKind;\n allowedTopicIds: string[];\n deniedTopics: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n count: number;\n};\n\nfunction asTopicArray(data: unknown): TopicRecord[] {\n if (Array.isArray(data)) {\n return data.filter(\n (row): row is TopicRecord => Boolean(row) && typeof row === \"object\"\n );\n }\n return [];\n}\n\nfunction asWritePolicyRecord(data: unknown): WritePolicyRecord | null {\n if (!data || typeof data !== \"object\") {\n return null;\n }\n return data as WritePolicyRecord;\n}\n\nfunction asWritePolicyArray(data: unknown): WritePolicyRecord[] {\n if (!Array.isArray(data)) {\n return [];\n }\n return data\n .map(asWritePolicyRecord)\n .filter((row): row is WritePolicyRecord => Boolean(row));\n}\n\nfunction asRolePolicyRecord(data: unknown): TenantPolicyRecord | null {\n if (!data || typeof data !== \"object\") {\n return null;\n }\n return data as TenantPolicyRecord;\n}\n\nfunction asRolePolicyArray(data: unknown): TenantPolicyRecord[] {\n if (!Array.isArray(data)) {\n return [];\n }\n return data\n .map(asRolePolicyRecord)\n .filter((row): row is TenantPolicyRecord => Boolean(row));\n}\n\n/**\n * Create the policy client for permission checks, grants, and write policies.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to check permissions, manage grants, and manage write policies.\n */\nexport function createPolicyClient(config: PolicyClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List policy decisions in the current scope.\n */\n async listDecisions(\n query: GatewayScope & {\n action?: string;\n decision?: string;\n traceId?: string;\n principalId?: string;\n topicId?: string;\n limit?: number;\n } = {}\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/policy/decisions${toQueryString(query)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"decisions\")\n )\n );\n },\n\n /**\n * Create a permission grant.\n */\n async grant(\n input: GatewayScope & {\n topicId: string;\n permission: PermissionKind;\n principal?: string;\n principalId?: string;\n groupId?: string;\n beliefClusterId?: string;\n expiresAt?: number;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/policy/grant\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Delete a permission grant by revoking it.\n */\n async revoke(\n input: GatewayScope & {\n topicId: string;\n principal?: string;\n principalId?: string;\n groupId?: string;\n beliefClusterId?: string;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/policy/revoke\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List write policy rules for the current scope.\n */\n async listWritePolicies(\n query: GatewayScope & {\n topicId?: string;\n role?: string;\n toolCategory?: string;\n enabled?: boolean;\n } = {}\n ) {\n const response = await gateway.request<{ policies?: unknown[] }>({\n path: `/api/platform/v1/policy/write-policies${toQueryString(query)}`,\n });\n const rawPolicies =\n response.data && typeof response.data === \"object\"\n ? (response.data as { policies?: unknown[] }).policies\n : response.data;\n\n return {\n ...response,\n data: {\n policies: asWritePolicyArray(rawPolicies),\n },\n };\n },\n\n /**\n * Create a write policy rule.\n */\n async createWritePolicy(\n input: WritePolicyCreateInput,\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{\n id?: string;\n created?: boolean;\n policy?: unknown;\n }>({\n path: \"/api/platform/v1/policy/write-policies\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n id:\n typeof response.data?.id === \"string\" ? response.data.id : undefined,\n created: response.data?.created === true,\n policy: asWritePolicyRecord(response.data?.policy),\n },\n };\n },\n\n /**\n * Update an existing write policy rule by identifier.\n */\n async updateWritePolicy(\n id: string,\n input: WritePolicyUpdateInput,\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{\n id?: string;\n updated?: boolean;\n policy?: unknown;\n }>({\n path: `/api/platform/v1/policy/write-policies/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n id:\n typeof response.data?.id === \"string\" ? response.data.id : undefined,\n updated: response.data?.updated === true,\n policy: asWritePolicyRecord(response.data?.policy),\n },\n };\n },\n\n /**\n * Delete a write policy rule by identifier.\n */\n async deleteWritePolicy(\n id: string,\n scope: GatewayScope = {},\n idempotencyKey?: string\n ) {\n return gateway.request<{ id?: string; deleted?: boolean }>({\n path: `/api/platform/v1/policy/write-policies/${encodeURIComponent(\n id\n )}${toQueryString(scope)}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List tenant role policies for the current scope.\n */\n async listRolePolicies(query: GatewayScope = {}) {\n const response = await gateway.request<{ policies?: unknown[] }>({\n path: `/api/platform/v1/policy/roles${toQueryString(query)}`,\n });\n\n return {\n ...response,\n data: {\n policies: asRolePolicyArray(response.data?.policies),\n },\n };\n },\n\n /**\n * Create a tenant role policy.\n */\n async createRolePolicy(\n input: GatewayScope & {\n roleName: string;\n description?: string;\n permissions: TenantPolicyPermission[];\n groupBindings?: string[];\n },\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{ policy?: unknown }>({\n path: \"/api/platform/v1/policy/roles\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n policy: asRolePolicyRecord(response.data?.policy),\n },\n };\n },\n\n /**\n * Update a tenant role policy by identifier.\n */\n async updateRolePolicy(\n id: string,\n input: GatewayScope & {\n roleName: string;\n description?: string;\n permissions: TenantPolicyPermission[];\n groupBindings?: string[];\n },\n idempotencyKey?: string\n ) {\n const response = await gateway.request<{ policy?: unknown }>({\n path: `/api/platform/v1/policy/roles/${encodeURIComponent(id)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n\n return {\n ...response,\n data: {\n policy: asRolePolicyRecord(response.data?.policy),\n },\n };\n },\n\n /**\n * Delete a tenant role policy by identifier.\n */\n async deleteRolePolicy(\n id: string,\n scope: GatewayScope = {},\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/policy/roles/${encodeURIComponent(id)}${toQueryString(\n scope\n )}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Check a permission decision for a topic or project scope.\n */\n async checkPermission(\n query: GatewayScope & {\n topicId?: string;\n permission?: PermissionKind;\n principal?: string;\n principalId?: string;\n beliefClusterId?: string;\n }\n ) {\n if (!query.topicId) {\n throw new Error(\"topicId is required\");\n }\n return gateway.request<PermissionDecision>({\n path: `/api/platform/v1/policy/check${toQueryString(query)}`,\n });\n },\n\n /**\n * List accessible topics for a principal.\n */\n async listAccessibleTopics(\n query: GatewayScope & {\n permission?: PermissionKind;\n includeShared?: boolean;\n principal?: string;\n principalId?: string;\n limit?: number;\n } = {}\n ) {\n const permission = query.permission ?? \"read\";\n const principal = query.principal ?? query.principalId;\n const response = await gateway.request<{\n permission?: PermissionKind;\n topics?: unknown[];\n total?: number;\n deniedTopics?: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n }>({\n path: `/api/platform/v1/policy/topics${toQueryString({\n tenantId: query.tenantId,\n workspaceId: query.workspaceId,\n permission,\n includeShared: query.includeShared,\n principal,\n limit: query.limit,\n })}`,\n });\n\n return {\n ...response,\n data: {\n permission,\n topics: asTopicArray(response.data?.topics),\n total:\n typeof response.data?.total === \"number\"\n ? response.data.total\n : asTopicArray(response.data?.topics).length,\n deniedTopics: Array.isArray(response.data?.deniedTopics)\n ? response.data.deniedTopics\n : [],\n } satisfies AccessibleTopicsResponse,\n };\n },\n\n /**\n * Filter topic identifiers by permission.\n */\n async filterByPermission(\n input: GatewayScope & {\n topicIds?: string[];\n permission?: PermissionKind;\n principal?: string;\n principalId?: string;\n }\n ) {\n const permission = input.permission ?? \"read\";\n const principal = input.principal ?? input.principalId;\n const uniqueTopicIds = [...new Set(input.topicIds ?? [])].filter(\n (topicId) => typeof topicId === \"string\" && topicId.trim().length > 0\n );\n const response = await gateway.request<{\n permission?: PermissionKind;\n allowedTopicIds?: string[];\n deniedTopics?: Array<{\n topicId: string;\n reasonCode: string;\n }>;\n count?: number;\n }>({\n path: \"/api/platform/v1/policy/filter\",\n method: \"POST\",\n body: {\n tenantId: input.tenantId,\n workspaceId: input.workspaceId,\n topicIds: uniqueTopicIds,\n permission,\n principal,\n },\n });\n\n const allowedTopicIds = Array.isArray(response.data?.allowedTopicIds)\n ? response.data.allowedTopicIds\n : [];\n const deniedTopics = Array.isArray(response.data?.deniedTopics)\n ? response.data.deniedTopics\n : [];\n\n return {\n success: true,\n data: {\n permission,\n allowedTopicIds,\n deniedTopics,\n count:\n typeof response.data?.count === \"number\"\n ? response.data.count\n : allowedTopicIds.length,\n } satisfies FilterByPermissionResponse,\n };\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData, resolveTopicId } from \"./sdkSurface\";\nimport type {\n TopicIdentifierInput,\n ProjectReportsResponse,\n ReportTemplatesResponse,\n ReportWithSectionsResponse,\n} from \"./types\";\n\n/** Configuration for the reports client. */\nexport type ReportsClientConfig = GatewayClientConfig;\nexport type {\n ProjectReportsResponse,\n ReportTemplatesResponse,\n ReportWithSectionsResponse,\n} from \"./types\";\n\n/**\n * Create the reports client for report templates and generated reports.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to list templates, list reports, and get a report.\n */\nexport function createReportsClient(config: ReportsClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List report templates.\n */\n async listTemplates(args: { slug?: string } = {}) {\n return gateway.request<ReportTemplatesResponse>({\n path: `/api/platform/v1/reports/templates${toQueryString({\n slug: args.slug,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record =\n data && typeof data === \"object\"\n ? (data as Record<string, unknown>)\n : {};\n const rows = Array.isArray(data)\n ? data\n : Array.isArray(record.templates)\n ? record.templates\n : [];\n return createListResult(rows, \"templates\") as ReportTemplatesResponse;\n })\n );\n },\n\n /**\n * @deprecated Use listTemplates.\n */\n async getTemplates(args: { slug?: string } = {}) {\n return this.listTemplates(args);\n },\n\n /**\n * List reports for a topic scope.\n */\n async listReports(\n input: TopicIdentifierInput,\n args: { summary?: boolean } = {}\n ) {\n const topicId = resolveTopicId(input);\n if (!topicId) {\n throw new Error(\"topicId is required\");\n }\n return gateway.request<ProjectReportsResponse>({\n path: `/api/platform/v1/reports/topics/${encodeURIComponent(topicId)}${toQueryString(\n {\n summary:\n typeof args.summary === \"boolean\"\n ? args.summary\n ? \"true\"\n : \"false\"\n : undefined,\n }\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"reports\")\n )\n );\n },\n /**\n * Get a generated report.\n */\n async getReport(reportId: string) {\n return gateway.request<ReportWithSectionsResponse>({\n path: `/api/platform/v1/reports/${encodeURIComponent(reportId)}`,\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject } from \"./types\";\n\nexport { LucernApiError };\nexport type { GatewayScope, PlatformGatewaySuccess } from \"./coreClient\";\n\n/** Configuration for the schema client. */\nexport type SchemaClientConfig = GatewayClientConfig;\n\n/** Input for installing a schema pack into a tenant scope. */\nexport type SchemaPackInstallInput = GatewayScope & {\n packKey: string;\n version?: string;\n autoEnable?: boolean;\n metadata?: JsonObject;\n};\n\n/** Input for creating or updating a schema entitlement record. */\nexport type SchemaEntitlementInput = GatewayScope & {\n packKey: string;\n status: \"active\" | \"disabled\" | \"revoked\";\n allowedLifecycles?: Array<\"active\" | \"beta\" | \"experimental\">;\n minVersion?: string;\n maxVersion?: string;\n metadata?: JsonObject;\n};\n\n/**\n * Create the schema client for pack catalog and entitlement operations.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to manage schema packs and entitlements.\n */\nexport function createSchemaClient(config: SchemaClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n\n return {\n /**\n * List schema packs.\n */\n async listPacks(scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/schema/packs${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"packs\")\n )\n );\n },\n\n /**\n * Install a schema pack.\n */\n async installPack(input: SchemaPackInstallInput, idempotencyKey?: string) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/schema/packs\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Get a schema pack by identifier.\n */\n async getPack(packId: string, scope: GatewayScope = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/schema/packs/${encodeURIComponent(packId)}${toQueryString(\n scope\n )}`,\n });\n },\n\n /**\n * List schema entitlements.\n */\n async listEntitlements(scope: GatewayScope & { packKey?: string } = {}) {\n return gateway.request<unknown>({\n path: `/api/platform/v1/schema/entitlements${toQueryString(scope)}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n createListResult(Array.isArray(data) ? data : [], \"entitlements\")\n )\n );\n },\n\n /**\n * Create a schema entitlement.\n */\n async createEntitlement(\n input: SchemaEntitlementInput,\n idempotencyKey?: string\n ) {\n return gateway.request<unknown>({\n path: \"/api/platform/v1/schema/entitlements\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a schema entitlement.\n */\n async updateEntitlement(\n input: SchemaEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use createEntitlement or updateEntitlement.\n */\n async upsertEntitlement(\n input: SchemaEntitlementInput,\n idempotencyKey?: string\n ) {\n return this.createEntitlement(input, idempotencyKey);\n },\n };\n}\n","/** Current SDK package version. */\nexport const LUCERN_SDK_VERSION = \"0.2.0-alpha.1\";\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n asListItems,\n createListResult,\n mapAliasedList,\n mapGatewayData,\n normalizeTopicQuery,\n resolveTopicId,\n withTopicAlias,\n} from \"./sdkSurface\";\nimport type {\n LensPerspectiveType,\n LensPromptTemplateReference,\n LensStatus,\n LensTaskTemplate,\n LensWorkflowTemplate,\n} from \"./contracts/lensWorkflow\";\nimport type {\n WorkflowAutoFixPolicy,\n WorkflowProofArtifact,\n WorkflowStaffingHint,\n} from \"./contracts/workflowRuntime\";\nimport type {\n AddWorktreeResponse,\n CompleteTaskResponse,\n CreateBranchResponse,\n CreateLensResponse,\n CreateTaskResponse,\n JsonObject,\n JsonValue,\n LensTopicBindingResponse,\n ListBranchesResponse,\n ListLensesResponse,\n ListTopicsResponse,\n ListWorktreesResponse,\n MergeWorktreeResponse,\n OpenPullRequestResponse,\n PushWorktreeResponse,\n SwitchTopicContextResponse,\n TopicIdentifierInput,\n UpdateTaskResponse,\n WorkflowBranchRecord,\n WorkflowLensRecord,\n WorkflowTopicRecord,\n WorkflowWorktreeRecord,\n} from \"./types\";\n\nexport { LucernApiError };\nexport type { PlatformGatewaySuccess } from \"./coreClient\";\nexport type {\n AddWorktreeResponse,\n CompleteTaskResponse,\n CreateBranchResponse,\n CreateLensResponse,\n CreateTaskResponse,\n LensTopicBindingResponse,\n ListBranchesResponse,\n ListLensesResponse,\n ListTopicsResponse,\n ListWorktreesResponse,\n MergeWorktreeResponse,\n OpenPullRequestResponse,\n PushWorktreeResponse,\n SwitchTopicContextResponse,\n UpdateTaskResponse,\n} from \"./types\";\n\n/** Configuration for the workflow client. */\nexport type WorkflowClientConfig = GatewayClientConfig;\n\n/** Lifecycle status of a workflow branch. */\nexport type WorkflowBranchStatus = \"dormant\" | \"active\" | \"archived\";\n\n/** Lifecycle status of a workflow lens. */\nexport type WorkflowLensStatus = LensStatus;\n\n/** Analytical perspective type for a lens overlay. */\nexport type WorkflowLensPerspectiveType = LensPerspectiveType;\n\n/** Lifecycle status of a workflow worktree. */\nexport type WorkflowWorktreeStatus =\n | \"planning\"\n | \"active\"\n | \"paused\"\n | \"completed\"\n | \"merged\"\n | \"failed\"\n | \"archived\";\n\n/** Possible outcomes when merging worktree findings into the main belief line. */\nexport type WorkflowMergeOutcome =\n | \"validated\"\n | \"invalidated\"\n | \"forked\"\n | \"inconclusive\";\n\n/** Input for creating a new workflow worktree. */\nexport type AddWorktreeInput = {\n title: string;\n topicId?: string;\n branchId?: string;\n objective?: string;\n hypothesis?: string;\n beliefIds?: string[];\n autoShape?: boolean;\n domainPackId?: string;\n executionOrder?: number;\n dependsOn?: string[];\n blocks?: string[];\n gate?: string;\n proofArtifacts?: WorkflowProofArtifact[];\n staffingHint?: WorkflowStaffingHint | string;\n lastReconciledAt?: number;\n autoFixPolicy?: WorkflowAutoFixPolicy;\n} & TopicIdentifierInput;\n\n/** Input for merging worktree findings with belief confidence outcomes. */\nexport type MergeInput = {\n outcomes: Array<{\n beliefId: string;\n confidence: number;\n rationale: string;\n }>;\n summary?: string;\n};\n\n/** Input for updating the beliefs and questions tracked by a worktree. */\nexport type UpdateWorktreeTargetsInput = {\n worktreeId: string;\n addBeliefIds?: string[];\n addQuestionIds?: string[];\n removeBeliefIds?: string[];\n removeQuestionIds?: string[];\n};\n\n/** Input for marking a worktree complete with recorded outcomes. */\nexport type CompleteWorktreeInput = {\n worktreeId: string;\n keyFindings?: string[];\n decisionsReached?: string[];\n nextSteps?: string[];\n};\n\n/** Input for moving a worktree forward to its next phase. */\nexport type AdvanceWorktreePhaseInput = {\n worktreeId: string;\n};\n\n/** Input for forcing a worktree into a specific phase. */\nexport type SetWorktreePhaseInput = {\n worktreeId: string;\n phase: string;\n};\n\n/** Input for patching arbitrary structured worktree state. */\nexport type PatchWorktreeStateInput = {\n worktreeId: string;\n patch: JsonObject;\n};\n\n/** Input for batch-creating worktrees through the workflow surface. */\nexport type BulkCreateWorktreesInput = {\n worktrees: unknown[];\n};\n\n/** Input for listing accessible topic contexts. */\nexport type ListTopicsInput = {\n includeShared?: boolean;\n limit?: number;\n};\n\n/** Input for switching the active topic context by name. */\nexport type SwitchTopicContextInput = {\n targetTopicName: string;\n};\n\n/** Input for creating a workflow task linked to a question or worktree. */\nexport type CreateTaskInput = {\n title: string;\n topicId?: string;\n taskType?: \"research\" | \"interview\" | \"analysis\" | \"data_collection\";\n linkedQuestionId?: string;\n linkedWorktreeId?: string;\n linkedBeliefId?: string;\n description?: string;\n priority?: \"low\" | \"medium\" | \"high\" | \"urgent\";\n} & TopicIdentifierInput;\n\n/** Input for marking a workflow task as completed with an output summary. */\nexport type CompleteTaskInput = {\n outputSummary: string;\n evidenceCreated?: boolean;\n};\n\n/** Input for partially updating an existing workflow task. */\nexport type UpdateTaskInput = {\n title?: string;\n description?: string;\n linkedBeliefId?: string;\n linkedQuestionId?: string;\n linkedWorktreeId?: string;\n priority?: \"critical\" | \"high\" | \"medium\" | \"low\";\n status?: \"todo\" | \"in_progress\" | \"blocked\" | \"done\";\n};\n\nfunction normalizeLensQuery<T extends { topicId?: string }>(\n value: T\n) {\n const topicId = resolveTopicId(value);\n return {\n ...value,\n ...(topicId ? { topicId } : {}),\n };\n}\n\n/**\n * Create the workflow client for lenses, legacy branches, worktrees, context,\n * and tasks.\n * @param config - Gateway transport configuration.\n * @returns An object with methods to manage branches, lenses, worktrees, topics, and tasks.\n */\nexport function createWorkflowClient(config: WorkflowClientConfig = {}) {\n const gateway = createGatewayRequestClient(config);\n const client = {\n /**\n * List workflow branches for a topic scope.\n */\n async listBranches(query: {\n topicId?: string;\n status?: WorkflowBranchStatus;\n limit?: number;\n } & TopicIdentifierInput) {\n return gateway.request<ListBranchesResponse>({\n path: `/api/platform/v1/workflow/branches${toQueryString(\n normalizeTopicQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<WorkflowBranchRecord, \"branches\">(data, \"branches\")\n )\n );\n },\n\n /**\n * Create a workflow branch.\n */\n async createBranch(\n input: {\n name: string;\n topicId?: string;\n description?: string;\n metadata?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n return gateway.request<CreateBranchResponse>({\n path: \"/api/platform/v1/workflow/branches\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as CreateBranchResponse\n )\n );\n },\n\n /**\n * List reusable lenses for a workspace or topic scope.\n */\n async listLenses(query: {\n workspaceId?: string;\n topicId?: string;\n status?: WorkflowLensStatus;\n perspectiveType?: WorkflowLensPerspectiveType;\n } & TopicIdentifierInput) {\n return gateway.request<ListLensesResponse>({\n path: `/api/platform/v1/workflow/lenses${toQueryString(\n normalizeLensQuery(query)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<WorkflowLensRecord, \"lenses\">(data, \"lenses\")\n )\n );\n },\n\n /**\n * Create a reusable workflow lens.\n */\n async createLens(\n input: {\n name: string;\n workspaceId?: string;\n topicId?: string;\n description?: string;\n perspectiveType: WorkflowLensPerspectiveType;\n promptTemplates?: LensPromptTemplateReference[];\n workflowTemplates?: LensWorkflowTemplate[];\n taskTemplates?: LensTaskTemplate[];\n filterCriteria?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n const payload = normalizeLensQuery(input);\n return gateway.request<CreateLensResponse>({\n path: \"/api/platform/v1/workflow/lenses\",\n method: \"POST\",\n body: payload as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as CreateLensResponse\n )\n );\n },\n\n /**\n * Apply an existing lens to a topic.\n */\n async applyLensToTopic(\n input: {\n lensId: string;\n topicId?: string;\n metadata?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n const payload = normalizeLensQuery(input);\n return gateway.request<LensTopicBindingResponse>({\n path: \"/api/platform/v1/workflow/lens-bindings\",\n method: \"POST\",\n body: payload,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as LensTopicBindingResponse\n )\n );\n },\n\n /**\n * Remove an applied lens from a topic.\n */\n async removeLensFromTopic(\n input: {\n lensId: string;\n topicId?: string;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n const topicId = resolveTopicId(input);\n if (!topicId) {\n throw new LucernApiError({\n code: \"INVALID_REQUEST\",\n message: \"topicId is required\",\n status: 400,\n });\n }\n\n return gateway.request<LensTopicBindingResponse>({\n path: `/api/platform/v1/workflow/lens-bindings${toQueryString({\n lensId: input.lensId,\n topicId,\n })}`,\n method: \"DELETE\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as LensTopicBindingResponse\n )\n );\n },\n\n /**\n * List worktrees for a topic scope.\n */\n async listWorktrees(query: {\n topicId?: string;\n branchId?: string;\n status?: WorkflowWorktreeStatus;\n track?: string;\n executionBand?: number;\n limit?: number;\n } & TopicIdentifierInput) {\n const normalized = normalizeTopicQuery(query);\n return gateway.request<ListWorktreesResponse>({\n path: `/api/platform/v1/worktrees${toQueryString({\n ...normalized,\n track: query.track,\n executionBand: query.executionBand,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n mapAliasedList<WorkflowWorktreeRecord, \"worktrees\">(\n data,\n \"worktrees\"\n )\n )\n );\n },\n\n /**\n * List all worktrees across accessible topics.\n */\n async listAllWorktrees(query: {\n status?: WorkflowWorktreeStatus;\n track?: string;\n executionBand?: number;\n limit?: number;\n } = {}) {\n return gateway.request<ListWorktreesResponse>({\n path: `/api/platform/v1/worktrees${toQueryString({\n status: query.status,\n track: query.track,\n executionBand: query.executionBand,\n limit: query.limit,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const record =\n data && typeof data === \"object\" && !Array.isArray(data)\n ? (data as Record<string, unknown>)\n : {};\n const list = mapAliasedList<WorkflowWorktreeRecord, \"worktrees\">(\n data,\n \"worktrees\"\n );\n return {\n ...list,\n ...(record.tracks &&\n typeof record.tracks === \"object\" &&\n !Array.isArray(record.tracks)\n ? { tracks: record.tracks as Record<string, number> }\n : {}),\n ...(record.bands &&\n typeof record.bands === \"object\" &&\n !Array.isArray(record.bands)\n ? { bands: record.bands as Record<string, number> }\n : {}),\n } as ListWorktreesResponse;\n })\n );\n },\n\n /**\n * Create a workflow worktree.\n */\n async createWorktree(input: AddWorktreeInput, idempotencyKey?: string) {\n return gateway.request<AddWorktreeResponse>({\n path: \"/api/platform/v1/worktrees\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse\n )\n );\n },\n\n /**\n * @deprecated Use createWorktree.\n */\n async addWorktree(input: AddWorktreeInput, idempotencyKey?: string) {\n return client.createWorktree(input, idempotencyKey);\n },\n\n /**\n * Merge a worktree into the main belief line.\n */\n async merge(\n worktreeId: string,\n input: MergeInput,\n idempotencyKey?: string\n ) {\n return gateway.request<MergeWorktreeResponse>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/merge`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Activate a planning worktree.\n */\n async activateWorktree(worktreeId: string, idempotencyKey?: string) {\n return gateway.request<AddWorktreeResponse>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/activate`,\n method: \"POST\",\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse\n )\n );\n },\n\n /**\n * Update targeted beliefs/questions for a worktree.\n */\n async updateWorktreeTargets(\n input: UpdateWorktreeTargetsInput,\n idempotencyKey?: string\n ) {\n const { worktreeId, ...body } = input;\n return gateway.request<AddWorktreeResponse>({\n path: `/api/platform/v1/worktrees/${encodeURIComponent(worktreeId)}/targets`,\n method: \"POST\",\n body,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(data as Record<string, unknown>) as AddWorktreeResponse\n )\n );\n },\n\n /**\n * Mark a worktree record complete.\n */\n async completeWorktree(\n input: CompleteWorktreeInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/worktrees/complete\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Advance a worktree to its next lifecycle phase.\n */\n async advanceWorktreePhase(\n input: AdvanceWorktreePhaseInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/worktrees/advance-phase\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Force a worktree into a specific lifecycle phase.\n */\n async setWorktreePhase(\n input: SetWorktreePhaseInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/worktrees/set-phase\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Patch opaque worktree state for orchestration flows.\n */\n async patchWorktreeState(\n input: PatchWorktreeStateInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/worktrees/patch-state\",\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Batch create worktree records.\n */\n async bulkCreateWorktrees(\n input: BulkCreateWorktreesInput,\n idempotencyKey?: string\n ) {\n return gateway.request<Record<string, unknown>>({\n path: \"/api/platform/v1/worktrees/bulk\",\n method: \"POST\",\n body: input as unknown as JsonObject,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Open a pull request for a worktree.\n */\n async openPullRequest(\n worktreeId: string,\n input: {\n summary: string;\n reviewers?: string[];\n status?:\n | \"pending_review\"\n | \"changes_requested\"\n | \"approved\"\n | \"blocked\";\n },\n idempotencyKey?: string\n ) {\n return gateway.request<OpenPullRequestResponse>({\n path: `/api/platform/v1/workflow/worktrees/${encodeURIComponent(worktreeId)}/pull-request`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Push scored worktree findings into another context.\n */\n async push(\n worktreeId: string,\n input: {\n targetContext: string;\n beliefIds?: string[];\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return gateway.request<PushWorktreeResponse>({\n path: `/api/platform/v1/workflow/worktrees/${encodeURIComponent(worktreeId)}/push`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * List accessible topic contexts.\n */\n async listTopics(query: ListTopicsInput = {}) {\n return gateway.request<ListTopicsResponse>({\n path: `/api/platform/v1/workflow/topics${toQueryString({\n includeShared:\n typeof query.includeShared === \"boolean\"\n ? query.includeShared\n ? \"true\"\n : \"false\"\n : undefined,\n limit: query.limit,\n })}`,\n }).then((response) =>\n mapGatewayData(response, (data) => {\n const items = asListItems<WorkflowTopicRecord>(data, \"topics\").map(\n (item) =>\n withTopicAlias(\n item as Record<string, unknown>\n ) as WorkflowTopicRecord\n );\n const record =\n data && typeof data === \"object\"\n ? (data as Record<string, unknown>)\n : {};\n return {\n ...record,\n ...createListResult(items, \"topics\"),\n total:\n typeof record.total === \"number\" ? record.total : items.length,\n } as ListTopicsResponse;\n })\n );\n },\n\n /**\n * Switch the active context by topic or project name.\n */\n async switchTopicContext(\n input: SwitchTopicContextInput,\n idempotencyKey?: string\n ) {\n return gateway.request<SwitchTopicContextResponse>({\n path: \"/api/platform/v1/workflow/topics/switch\",\n method: \"POST\",\n body: {\n targetTopicName: input.targetTopicName,\n },\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n }).then((response) =>\n mapGatewayData(response, (data) =>\n withTopicAlias(\n data as Record<string, unknown>\n ) as SwitchTopicContextResponse\n )\n );\n },\n\n /**\n * Create a workflow task.\n */\n async createTask(input: CreateTaskInput, idempotencyKey?: string) {\n return gateway.request<CreateTaskResponse>({\n path: \"/api/platform/v1/workflow/tasks\",\n method: \"POST\",\n body: normalizeTopicQuery(input),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Complete a workflow task.\n */\n async completeTask(\n taskId: string,\n input: CompleteTaskInput,\n idempotencyKey?: string\n ) {\n return gateway.request<CompleteTaskResponse>({\n path: `/api/platform/v1/workflow/tasks/${encodeURIComponent(taskId)}/complete`,\n method: \"POST\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * Update a workflow task.\n */\n async updateTask(\n taskId: string,\n input: UpdateTaskInput,\n idempotencyKey?: string\n ) {\n return gateway.request<UpdateTaskResponse>({\n path: `/api/platform/v1/workflow/tasks/${encodeURIComponent(taskId)}`,\n method: \"PATCH\",\n body: input,\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n /**\n * @deprecated Use createBranch.\n */\n async createPillar(\n input: {\n name: string;\n topicId?: string;\n description?: string;\n metadata?: JsonObject;\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n return client.createBranch(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use addWorktree.\n */\n async createSprint(\n input: {\n title: string;\n topicId?: string;\n branchId?: string;\n hypothesis?: string;\n beliefIds?: string[];\n } & TopicIdentifierInput,\n idempotencyKey?: string\n ) {\n return client.createWorktree(input, idempotencyKey);\n },\n\n /**\n * @deprecated Use merge.\n */\n async completeSprint(\n worktreeId: string,\n input: MergeInput,\n idempotencyKey?: string\n ) {\n return client.merge(worktreeId, input, idempotencyKey);\n },\n\n /**\n * @deprecated Use openPullRequest.\n */\n async requestReview(\n worktreeId: string,\n input: {\n summary: string;\n reviewers?: string[];\n status?:\n | \"pending_review\"\n | \"changes_requested\"\n | \"approved\"\n | \"blocked\";\n },\n idempotencyKey?: string\n ) {\n return client.openPullRequest(worktreeId, input, idempotencyKey);\n },\n\n /**\n * @deprecated Use push.\n */\n async publishFindings(\n worktreeId: string,\n input: {\n targetContext: string;\n beliefIds?: string[];\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) {\n return client.push(worktreeId, input, idempotencyKey);\n },\n };\n\n return client;\n}\n","import { type AdminClientConfig, createAdminClient } from \"./adminClient\";\nimport {\n type AnswersClientConfig,\n createAnswersClient,\n} from \"./answersClient\";\nimport {\n type AudiencesClientConfig,\n createAudiencesClient,\n} from \"./audiencesClient\";\nimport { type AuditClientConfig, createAuditClient } from \"./auditClient\";\nimport {\n type BeliefsClientConfig,\n createBeliefsClient,\n} from \"./beliefsClient\";\nimport {\n createGatewayRequestClient,\n type GatewayClientConfig,\n LucernApiError,\n type PlatformGatewaySuccess,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport {\n type CustomToolRegistration,\n clearRegisteredCustomTools,\n invokeRegisteredCustomTool,\n listRegisteredCustomTools,\n registerCustomTool,\n unregisterCustomTool,\n} from \"./customTools\";\nimport {\n createBeliefsFacade,\n createContradictionsFacade,\n createEdgesFacade,\n createEvidenceFacade,\n createEventsFacade,\n createGraphFacade,\n createIdentityFacade,\n createOntologiesFacade,\n createQuestionsFacade,\n createSearchFacade,\n createTasksFacade,\n createTopicsFacade,\n createWebhooksFacade,\n createWorktreesFacade,\n} from \"./gatewayFacades\";\nimport {\n createDecisionsClient,\n type DecisionsClientConfig,\n type RecordJudgmentInput,\n} from \"./decisionsClient\";\nimport {\n createContextClient,\n type ContextClientConfig,\n} from \"./contextClient\";\nimport { createGraphClient, type GraphClientConfig } from \"./graphClient\";\nimport { createHarnessClient, type HarnessClientConfig } from \"./harnessClient\";\nimport {\n createIdentityClient,\n type IdentityClientConfig,\n} from \"./identityClient\";\nimport {\n createLearningClient,\n type LearningClientConfig,\n} from \"./learningClient\";\nimport {\n createMcpParityClient,\n type McpParityClientConfig,\n} from \"./mcpParityClient\";\nimport {\n createOntologyClient,\n type OntologyClientConfig,\n} from \"./ontologyClient\";\nimport { createPacksClient, type PacksClientConfig } from \"./packsClient\";\nimport { createPolicyClient, type PolicyClientConfig } from \"./policyClient\";\nimport { createReportsClient, type ReportsClientConfig } from \"./reportsClient\";\nimport { createSchemaClient, type SchemaClientConfig } from \"./schemaClient\";\nimport { asListItems, resolveText, resolveTopicId } from \"./sdkSurface\";\nimport { createTopicsClient, type TopicsClientConfig } from \"./topicsClient\";\nimport type {\n JsonObject,\n PlatformGraphEdge,\n PlatformGraphNode,\n} from \"./types\";\nimport { LUCERN_SDK_VERSION } from \"./version\";\nimport {\n type AddWorktreeInput,\n type CompleteTaskInput,\n type CreateTaskInput,\n createWorkflowClient,\n type MergeInput,\n type UpdateTaskInput,\n type WorkflowClientConfig,\n} from \"./workflowClient\";\n\ntype ClientConfig =\n | BeliefsClientConfig\n | GraphClientConfig\n | DecisionsClientConfig\n | AnswersClientConfig\n | ContextClientConfig\n | WorkflowClientConfig\n | AuditClientConfig\n | AdminClientConfig\n | IdentityClientConfig\n | PolicyClientConfig\n | PacksClientConfig\n | ReportsClientConfig\n | LearningClientConfig\n | McpParityClientConfig\n | OntologyClientConfig\n | HarnessClientConfig\n | SchemaClientConfig\n | AudiencesClientConfig\n | TopicsClientConfig;\n\ntype NodeLike = PlatformGraphNode;\ntype EdgeLike = PlatformGraphEdge;\ntype CustomToolInput = JsonObject;\ntype CustomToolInvoker = (input?: CustomToolInput) => Promise<unknown>;\ntype CustomToolNamespace = Record<string, CustomToolInvoker>;\ntype GatewayDataEnvelope<T extends Record<string, unknown>> =\n PlatformGatewaySuccess<T> & T;\n\ntype BeliefsCompatCreateInput = {\n topicId?: string;\n text?: string;\n canonicalText?: string;\n formulation?: string;\n rationale?: string;\n worktreeId?: string;\n pillar?: string;\n sourceBeliefIds?: string[];\n sourceType?: string;\n beliefType?: string;\n reversibility?: string;\n predictionMeta?: JsonObject;\n metadata?: JsonObject;\n};\n\ntype BeliefsCompatForkInput = {\n text?: string;\n newFormulation?: string;\n formulation?: string;\n forkReason?:\n | \"refinement\"\n | \"contradiction_response\"\n | \"scope_change\"\n | \"confidence_collapse\"\n | \"manual\";\n rationale?: string;\n};\n\ntype BeliefsCompatUpdateConfidenceInput = {\n confidence: number;\n trigger?:\n | \"evidence_added\"\n | \"evidence_removed\"\n | \"contradiction_detected\"\n | \"contradiction_resolved\"\n | \"manual\"\n | \"decay\"\n | \"agent_assessment\"\n | \"merge_outcome\"\n | \"worktree_outcome\"\n | \"worktree_completed\";\n rationale: string;\n certainty?: number;\n maxInlinePropagationTargets?: number;\n};\n\nfunction asNodeArray(data: unknown): NodeLike[] {\n const rows = asListItems<NodeLike>(data, \"nodes\");\n if (rows.length > 0) {\n return rows.filter(\n (value): value is NodeLike => Boolean(value) && typeof value === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as NodeLike];\n }\n return [];\n}\n\nfunction asEdgeArray(data: unknown): EdgeLike[] {\n const rows = asListItems<EdgeLike>(data, \"edges\");\n if (rows.length > 0) {\n return rows.filter(\n (value): value is EdgeLike => Boolean(value) && typeof value === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as EdgeLike];\n }\n return [];\n}\n\nfunction normalizeBeliefStatus(status: string | undefined): string {\n if (!status) {\n return \"unscored\";\n }\n if (status === \"unscored\" || status === \"scored\" || status === \"archived\") {\n return status;\n }\n if (status === \"active\" || status === \"in_evaluation\") {\n return \"unscored\";\n }\n if (status === \"challenged\" || status === \"validated\") {\n return \"scored\";\n }\n return \"unscored\";\n}\n\nfunction confidenceFromNode(node: NodeLike): number {\n if (typeof node.confidence === \"number\") {\n return node.confidence;\n }\n if (typeof node.metadata?.confidence === \"number\") {\n return node.metadata.confidence;\n }\n return 0;\n}\n\nfunction toGatewayConfig(config: LucernClientConfig): GatewayClientConfig {\n return {\n baseUrl: config.baseUrl,\n fetchImpl: config.fetchImpl,\n maxRetries: config.maxRetries,\n timeoutMs: config.timeoutMs,\n timeoutMsByMethod: config.timeoutMsByMethod,\n requestIdFactory: config.requestIdFactory,\n onRequest: config.onRequest,\n onResponse: config.onResponse,\n getAuthHeaders: async () => {\n const base = (\n config.getAuthHeaders ? await config.getAuthHeaders() : {}\n ) as Record<string, string>;\n if (config.apiKey && !base[\"x-lucern-key\"] && !base.Authorization) {\n base[\"x-lucern-key\"] = config.apiKey;\n }\n if (config.userToken && !base[\"x-lucern-user-token\"]) {\n base[\"x-lucern-user-token\"] = config.userToken;\n }\n if (config.environment && !base[\"x-lucern-environment\"]) {\n base[\"x-lucern-environment\"] = config.environment;\n }\n return base;\n },\n };\n}\n\nfunction requireTopicId(args: { topicId?: string }): string {\n const topicId = resolveTopicId(args);\n if (!topicId) {\n throw new Error(\"topicId is required\");\n }\n return topicId;\n}\n\nconst AUDIT_NODE_REFERENCE_KEY_PATTERN =\n /(^|_)(id|nodeid|beliefid|resourceid|targetid|sourceid|subjectid|globalid|entityid|recordid|fromnodeid|tonodeid|linkednodeid|linkedbeliefid|nodeids|beliefids|resourceids)$/i;\n\nfunction matchesAuditNodeReference(value: unknown, nodeId: string): boolean {\n if (Array.isArray(value)) {\n return value.some((entry) => matchesAuditNodeReference(entry, nodeId));\n }\n\n if (!value || typeof value !== \"object\") {\n return false;\n }\n\n return Object.entries(value as Record<string, unknown>).some(([key, entry]) => {\n if (\n typeof entry === \"string\" &&\n entry === nodeId &&\n AUDIT_NODE_REFERENCE_KEY_PATTERN.test(key)\n ) {\n return true;\n }\n\n if (\n Array.isArray(entry) &&\n AUDIT_NODE_REFERENCE_KEY_PATTERN.test(key) &&\n entry.some((item) => item === nodeId)\n ) {\n return true;\n }\n\n return matchesAuditNodeReference(entry, nodeId);\n });\n}\n\nfunction requireText(args: {\n text?: string;\n canonicalText?: string;\n formulation?: string;\n newFormulation?: string;\n}): string {\n const text = resolveText(args);\n if (!text) {\n throw new Error(\"text is required\");\n }\n return text;\n}\n\nfunction exposeGatewayData<T extends Record<string, unknown>>(\n response: PlatformGatewaySuccess<T>\n): GatewayDataEnvelope<T> {\n return Object.assign({}, response, response.data);\n}\n\n/**\n * Configuration for the high-level Lucern SDK client.\n *\n * At minimum, provide `apiKey` and `baseUrl`. The SDK handles\n * authentication, retries, and idempotency automatically.\n */\nexport type LucernClientConfig = ClientConfig & {\n /** API key for authenticating with the Lucern platform. */\n apiKey?: string;\n /**\n * Optional Clerk JWT for per-user identity and RBAC.\n * When present, the SDK operates in user-scoped mode with\n * pack-aware tool filtering. When absent, operates in agent mode.\n */\n userToken?: string;\n /**\n * Optional pack key for auto-install convenience.\n * When set, the SDK will call `packs.install()` on first use\n * to ensure the pack is available in the workspace.\n */\n packKey?: string;\n /** Target environment. Defaults to production if not specified. */\n environment?: \"sandbox\" | \"production\";\n};\n\n/**\n * Create the high-level Lucern SDK client with all domain namespaces.\n *\n * @param config - Client configuration with API key, base URL, and optional settings.\n * @returns The Lucern client with namespaced methods for beliefs, topics, evidence, decisions, and more.\n */\nexport function createLucernClient(config: LucernClientConfig = {}) {\n const gatewayConfig = toGatewayConfig(config);\n const beliefsClient = createBeliefsClient(gatewayConfig);\n const beliefsFacade = createBeliefsFacade(gatewayConfig);\n const graphClient = createGraphClient(gatewayConfig);\n const graphFacade = createGraphFacade(gatewayConfig);\n const decisionsClient = createDecisionsClient(gatewayConfig);\n const contextClient = createContextClient(gatewayConfig);\n const workflowClient = createWorkflowClient(gatewayConfig);\n const auditClient = createAuditClient(gatewayConfig);\n const adminClient = createAdminClient(gatewayConfig);\n const answersClient = createAnswersClient(gatewayConfig);\n const contradictionsFacade = createContradictionsFacade(gatewayConfig);\n const edgesFacade = createEdgesFacade(gatewayConfig);\n const evidenceFacade = createEvidenceFacade(gatewayConfig);\n const eventsFacade = createEventsFacade(gatewayConfig);\n const identityClient = createIdentityClient(gatewayConfig);\n const identityFacade = createIdentityFacade(gatewayConfig);\n const ontologiesFacade = createOntologiesFacade(gatewayConfig);\n const questionsFacade = createQuestionsFacade(gatewayConfig);\n const searchFacade = createSearchFacade(gatewayConfig);\n const tasksFacade = createTasksFacade(gatewayConfig);\n const topicsFacade = createTopicsFacade(gatewayConfig);\n const webhooksFacade = createWebhooksFacade(gatewayConfig);\n const worktreesFacade = createWorktreesFacade(gatewayConfig);\n const policyClient = createPolicyClient(gatewayConfig);\n const ontologyClient = createOntologyClient(gatewayConfig);\n const mcpParityClient = createMcpParityClient(gatewayConfig);\n const packsClient = createPacksClient(gatewayConfig);\n const reportsClient = createReportsClient(gatewayConfig);\n const learningClient = createLearningClient(gatewayConfig);\n const harnessClient = createHarnessClient(gatewayConfig);\n const schemaClient = createSchemaClient(gatewayConfig);\n const audiencesClient = createAudiencesClient(gatewayConfig);\n const topicsClient = createTopicsClient(gatewayConfig);\n const gateway = createGatewayRequestClient(gatewayConfig);\n const customNamespaceCache = new Map<string, CustomToolNamespace>();\n\n // Pack auto-install: tracks whether the configured packKey has been installed.\n // Install is lazy — triggered on first API call or explicit ensurePack().\n let _packInstalled = !config.packKey; // true if no packKey configured\n let _packInstallPromise: Promise<void> | null = null;\n\n async function ensurePack(): Promise<void> {\n if (_packInstalled) {\n return;\n }\n if (_packInstallPromise) {\n return _packInstallPromise;\n }\n\n const installPromise = (async () => {\n try {\n await packsClient.install({\n packKey: config.packKey!,\n autoEnable: true,\n });\n _packInstalled = true;\n } catch (err) {\n // If the pack is already installed, treat as success\n if (err instanceof LucernApiError && err.code === \"ALREADY_EXISTS\") {\n _packInstalled = true;\n return;\n }\n // Re-throw — caller decides whether to proceed without the pack\n throw err;\n }\n })();\n\n _packInstallPromise = installPromise;\n\n try {\n await installPromise;\n } catch (error) {\n if (_packInstallPromise === installPromise) {\n _packInstallPromise = null;\n }\n throw error;\n }\n }\n\n const invokeCustomTool = async (\n fullName: string,\n input: CustomToolInput = {}\n ): Promise<unknown> => {\n const payload =\n input && typeof input === \"object\" && !Array.isArray(input) ? input : {};\n return invokeRegisteredCustomTool(fullName, payload, { source: \"sdk\" });\n };\n\n const getCustomNamespace = (namespace: string): CustomToolNamespace => {\n const normalized = namespace.trim() || \"custom\";\n const cached = customNamespaceCache.get(normalized);\n if (cached) {\n return cached;\n }\n\n const proxy = new Proxy(\n {},\n {\n get(_target, property): unknown {\n if (typeof property !== \"string\" || property === \"then\") {\n return;\n }\n return async (input: CustomToolInput = {}) =>\n invokeCustomTool(`${normalized}.${property}`, input);\n },\n }\n ) as CustomToolNamespace;\n\n customNamespaceCache.set(normalized, proxy);\n return proxy;\n };\n\n const extensionNamespaces = new Proxy(\n {},\n {\n get(_target, namespace): unknown {\n if (typeof namespace !== \"string\" || namespace === \"then\") {\n return;\n }\n return getCustomNamespace(namespace);\n },\n }\n ) as Record<string, CustomToolNamespace>;\n\n async function createEvidenceCompat(args: {\n text?: string;\n canonicalText?: string;\n topicId?: string;\n source?: string;\n sourceUrl?: string;\n targetId?: string;\n weight?: number;\n metadata?: JsonObject;\n title?: string;\n content?: string;\n contentType?: string;\n kind?: string;\n supports?: {\n nodeId: string;\n weight: number;\n reasoning?: string;\n };\n }) {\n const topicId = requireTopicId(args);\n const text = resolveText(args);\n if (!text) {\n throw new Error(\"text is required\");\n }\n const metadata = {\n ...(args.metadata ?? {}),\n ...(args.supports?.reasoning\n ? { rationale: args.supports.reasoning }\n : {}),\n } as JsonObject;\n\n return evidenceFacade.create({\n topicId,\n text,\n source: args.source ?? args.sourceUrl,\n targetId: args.targetId ?? args.supports?.nodeId,\n weight: args.weight ?? args.supports?.weight,\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n title: args.title,\n content: args.content,\n contentType: args.contentType,\n kind: args.kind,\n });\n }\n\n async function addEvidence(args: {\n text?: string;\n canonicalText?: string;\n topicId?: string;\n source?: string;\n sourceUrl?: string;\n targetId?: string;\n weight?: number;\n metadata?: JsonObject;\n title?: string;\n content?: string;\n contentType?: string;\n kind?: string;\n supports?: {\n nodeId: string;\n weight: number;\n reasoning?: string;\n };\n }) {\n const created = await createEvidenceCompat({\n ...args,\n targetId: args.supports ? undefined : args.targetId,\n weight: args.supports ? undefined : args.weight,\n });\n\n if (!args.supports) {\n return created.data;\n }\n\n const evidenceId = created.data.id;\n if (typeof evidenceId !== \"string\" || evidenceId.length === 0) {\n throw new Error(\"evidence create did not return an id\");\n }\n\n const linked = await evidenceFacade.link({\n evidenceId,\n targetId: args.supports.nodeId,\n weight: args.supports.weight,\n rationale: args.supports.reasoning,\n });\n\n return {\n ...created.data,\n edgeId: linked.data.edgeId,\n };\n }\n\n async function listBeliefs(args: {\n topicId?: string;\n worktreeId?: string;\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n }) {\n const response = await beliefsFacade.list({\n topicId: requireTopicId(args),\n status: args.status,\n worktreeId: args.worktreeId,\n minConfidence: args.minConfidence,\n limit: args.limit,\n cursor: args.cursor,\n });\n return Array.isArray(response.data.beliefs) ? response.data.beliefs : [];\n }\n\n async function searchBeliefs(args: {\n query: string;\n topicId?: string;\n status?: string;\n minConfidence?: number;\n limit?: number;\n }) {\n const topicId = resolveTopicId(args);\n if (!topicId) {\n return { results: [] };\n }\n const response = await searchFacade.query({\n q: args.query,\n topicId,\n types: [\"belief\"],\n status: args.status,\n minConfidence: args.minConfidence,\n limit: args.limit,\n });\n const data = exposeGatewayData(response);\n const groupedBeliefs = Array.isArray(data.beliefs)\n ? (data.beliefs as Record<string, unknown>[])\n : [];\n const mergedResults = Array.isArray(data.results)\n ? (data.results as Record<string, unknown>[])\n : [];\n const results =\n groupedBeliefs.length > 0\n ? groupedBeliefs\n : mergedResults.filter((result) => result.type === \"belief\");\n return { results };\n }\n\n async function searchResources(\n query: string,\n options: {\n topicId?: string;\n types?: string[];\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n } = {}\n ) {\n const topicId = resolveTopicId(options);\n if (!topicId) {\n throw new Error(\"topicId is required\");\n }\n\n return searchFacade\n .query({\n q: query,\n topicId,\n types: options.types as Array<\"belief\" | \"evidence\" | \"question\"> | undefined,\n status: options.status,\n minConfidence: options.minConfidence,\n limit: options.limit,\n cursor: options.cursor,\n })\n .then(exposeGatewayData);\n }\n\n async function findContradictions(args: {\n topicId?: string;\n nodeId?: string;\n status?: string;\n }) {\n const topicId = resolveTopicId(args);\n const response = topicId\n ? await graphClient.listNodes({\n topicId,\n nodeType: \"contradiction\",\n limit: 500,\n })\n : args.nodeId\n ? await graphClient.queryNodes({ nodeId: args.nodeId })\n : { data: [] };\n const contradictions = asNodeArray(response.data)\n .filter((node) => {\n const status =\n typeof node.metadata?.status === \"string\"\n ? node.metadata.status\n : typeof node.status === \"string\"\n ? node.status\n : \"unresolved\";\n if (args.status && status !== args.status) {\n return false;\n }\n return true;\n })\n .map((node) => ({\n beliefA:\n typeof node.metadata?.beliefA === \"string\"\n ? node.metadata.beliefA\n : \"\",\n beliefB:\n typeof node.metadata?.beliefB === \"string\"\n ? node.metadata.beliefB\n : \"\",\n description: node.canonicalText ?? \"\",\n severity:\n typeof node.metadata?.severity === \"string\"\n ? node.metadata.severity\n : \"medium\",\n status:\n typeof node.metadata?.status === \"string\"\n ? node.metadata.status\n : \"unresolved\",\n defeatType:\n typeof node.metadata?.defeatType === \"string\"\n ? node.metadata.defeatType\n : \"rebuts\",\n }));\n return { contradictions };\n }\n\n async function queryLineage(nodeId: string, depth = 5) {\n const response = await beliefsFacade.lineage(nodeId);\n const lineage = Array.isArray(response.data.lineage)\n ? response.data.lineage\n : [];\n const chain =\n lineage.length > 0\n ? lineage\n .slice(0, depth + 1)\n .map((entry, index) => ({\n nodeId: entry.nodeId ?? entry.beliefId ?? \"\",\n relation: index === 0 ? \"self\" : \"ancestor\",\n }))\n : [{ nodeId, relation: \"self\" }];\n return {\n chain,\n forkTree: {\n nodeId,\n parentCount: Math.max(0, lineage.length - 1),\n childCount: 0,\n children: [],\n },\n depth,\n beliefId: response.data.beliefId,\n lineage,\n };\n }\n\n async function getConfidenceHistory(nodeId: string) {\n return beliefsFacade.confidenceHistory(nodeId).then(exposeGatewayData);\n }\n\n async function getAuditTrail(nodeId: string, limit = 50) {\n const events = await auditClient.listEvents({ limit });\n const entries = asListItems<JsonObject>(events.data, \"events\")\n .filter((event) => matchesAuditNodeReference(event, nodeId))\n .slice(0, limit)\n .map((event) => {\n const row = event as JsonObject;\n return {\n action: typeof row.action === \"string\" ? row.action : \"unknown\",\n actor: typeof row.actor === \"string\" ? row.actor : \"unknown\",\n timestamp:\n typeof row.timestamp === \"number\" ? row.timestamp : Date.now(),\n rationale:\n typeof row.rationale === \"string\"\n ? row.rationale\n : \"No rationale recorded.\",\n before: row.before ?? null,\n after: row.after ?? null,\n };\n });\n return { entries };\n }\n\n async function bisectConfidence(\n nodeId: string,\n args: { expectedDirection: \"overconfident\" | \"underconfident\" }\n ) {\n return beliefsFacade.bisect(nodeId, args).then(exposeGatewayData);\n }\n\n async function discoverTopics(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/context/discover\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function discoverEntityConnections(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/context/entity-connections\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function triggerBeliefReview(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/context/belief-review\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function createContractCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/contracts\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function evaluateContractCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/contracts/evaluate\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function getContractStatusCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/contracts/status\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function listContractsCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: `/api/platform/v1/contracts${toQueryString({\n beliefNodeId:\n typeof input.beliefNodeId === \"string\"\n ? input.beliefNodeId\n : undefined,\n contractId:\n typeof input.contractId === \"string\" ? input.contractId : undefined,\n status: typeof input.status === \"string\" ? input.status : undefined,\n })}`,\n })\n .then(exposeGatewayData);\n }\n\n async function createOntologyCompat(input: JsonObject = {}) {\n const response = await ontologyClient.createDefinition(\n input as Parameters<typeof ontologyClient.createDefinition>[0]\n );\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function updateOntologyCompat(input: JsonObject = {}) {\n const id = typeof input.id === \"string\" ? input.id : \"\";\n const { id: _id, ...rest } = input;\n const response = await ontologyClient.updateDefinition(\n id,\n rest as Parameters<typeof ontologyClient.updateDefinition>[1]\n );\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function archiveOntologyCompat(input: JsonObject = {}) {\n const id = typeof input.id === \"string\" ? input.id : \"\";\n const response = await ontologyClient.archiveDefinition(id);\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function createOntologyVersionCompat(input: JsonObject = {}) {\n const ontologyId =\n typeof input.ontologyId === \"string\" ? input.ontologyId : \"\";\n const { ontologyId: _ontologyId, ...rest } = input;\n const response = await ontologyClient.createVersion(\n ontologyId,\n rest as Parameters<typeof ontologyClient.createVersion>[1]\n );\n const envelope = response as PlatformGatewaySuccess<Record<string, unknown>>;\n return Object.assign({}, envelope, envelope.data);\n }\n\n async function publishOntologyVersionCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/ontologies/versions/publish\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function deprecateOntologyVersionCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/ontologies/versions/deprecate\",\n method: \"POST\",\n body: input,\n idempotencyKey: randomIdempotencyKey(),\n })\n .then(exposeGatewayData);\n }\n\n async function resolveEffectiveOntologyCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/ontologies/effective\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n async function traceEntityImpactCompat(input: JsonObject = {}) {\n return gateway\n .request<Record<string, unknown>>({\n path: \"/api/platform/v1/graph/trace-entity-impact\",\n method: \"POST\",\n body: input,\n })\n .then(exposeGatewayData);\n }\n\n const nodesNamespace = {\n list(query: Parameters<typeof graphClient.listNodes>[0]) {\n return graphClient.listNodes(query);\n },\n get(input: string | Parameters<typeof graphClient.getNode>[0]) {\n return graphClient.getNode(\n typeof input === \"string\" ? { nodeId: input } : input\n );\n },\n create(\n input: Parameters<typeof graphClient.createNode>[0],\n idempotencyKey?: string\n ) {\n return graphClient.createNode(input, idempotencyKey);\n },\n update(\n input: Parameters<typeof graphClient.updateNode>[0],\n idempotencyKey?: string\n ) {\n return graphClient.updateNode(input, idempotencyKey);\n },\n batchCreate(\n input: Parameters<typeof graphClient.batchCreateNodes>[0],\n idempotencyKey?: string\n ) {\n return graphClient.batchCreateNodes(input, idempotencyKey);\n },\n supersede(\n input: Parameters<typeof graphClient.supersedeNode>[0],\n idempotencyKey?: string\n ) {\n return graphClient.supersedeNode(input, idempotencyKey);\n },\n verify(\n input: Parameters<typeof graphClient.verifyNode>[0],\n idempotencyKey?: string\n ) {\n return graphClient.verifyNode(input, idempotencyKey);\n },\n hardDelete(\n input: Parameters<typeof graphClient.hardDeleteNode>[0],\n idempotencyKey?: string\n ) {\n return graphClient.hardDeleteNode(input, idempotencyKey);\n },\n };\n\n return {\n config,\n version: LUCERN_SDK_VERSION,\n search(\n query: string,\n options?: {\n topicId?: string;\n types?: string[];\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n }\n ) {\n return searchResources(query, options);\n },\n events: {\n list(query: Parameters<typeof eventsFacade.list>[0] = {}) {\n return eventsFacade.list(query).then(exposeGatewayData);\n },\n replay(\n input: Parameters<typeof eventsFacade.replay>[0]\n ) {\n return eventsFacade.replay(input).then(exposeGatewayData);\n },\n },\n beliefs: {\n create(input: BeliefsCompatCreateInput) {\n return beliefsFacade\n .create({\n topicId: requireTopicId(input),\n text: requireText(input),\n rationale: input.rationale,\n worktreeId: input.worktreeId,\n pillar: input.pillar,\n sourceBeliefIds: input.sourceBeliefIds,\n sourceType: input.sourceType,\n beliefType: input.beliefType,\n reversibility: input.reversibility,\n predictionMeta: input.predictionMeta,\n metadata: input.metadata,\n })\n .then(exposeGatewayData);\n },\n get(nodeId: string) {\n return beliefsFacade.get(nodeId).then(exposeGatewayData);\n },\n refine(\n nodeId: string,\n textOrInput: string | { text: string; rationale?: string },\n rationale?: string\n ) {\n const payload =\n typeof textOrInput === \"string\"\n ? { text: textOrInput, rationale }\n : {\n text: textOrInput.text,\n rationale: textOrInput.rationale,\n };\n return beliefsFacade.refine(nodeId, payload).then(exposeGatewayData);\n },\n updateConfidence(\n nodeId: string,\n input: BeliefsCompatUpdateConfidenceInput\n ) {\n return beliefsFacade.updateConfidence(nodeId, input).then(exposeGatewayData);\n },\n modulateConfidence(\n nodeId: string,\n input: BeliefsCompatUpdateConfidenceInput\n ) {\n return beliefsFacade.updateConfidence(nodeId, input).then(exposeGatewayData);\n },\n updateStatus(\n input: Parameters<typeof beliefsFacade.updateStatus>[0],\n idempotencyKey?: string\n ) {\n return beliefsFacade\n .updateStatus(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n updateRationale(\n input: Parameters<typeof beliefsFacade.updateRationale>[0],\n idempotencyKey?: string\n ) {\n return beliefsFacade\n .updateRationale(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n linkBeliefs(\n input: Parameters<typeof beliefsFacade.linkBeliefs>[0],\n idempotencyKey?: string\n ) {\n return beliefsFacade\n .linkBeliefs(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n unlinkEvidence(\n input: Parameters<typeof beliefsFacade.unlinkEvidence>[0],\n idempotencyKey?: string\n ) {\n return beliefsFacade\n .unlinkEvidence(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n updateCriticality(\n input: Parameters<typeof beliefsFacade.updateCriticality>[0],\n idempotencyKey?: string\n ) {\n return beliefsFacade\n .updateCriticality(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n batchUpdateCriticality(\n input: Parameters<typeof beliefsFacade.batchUpdateCriticality>[0],\n idempotencyKey?: string\n ) {\n return beliefsFacade\n .batchUpdateCriticality(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n reassignTopic(\n input: Parameters<typeof beliefsFacade.reassignTopic>[0],\n idempotencyKey?: string\n ) {\n return beliefsFacade\n .reassignTopic(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n fork(nodeId: string, input: BeliefsCompatForkInput) {\n return beliefsFacade\n .fork(nodeId, {\n text: requireText(input),\n forkReason: input.forkReason,\n rationale: input.rationale,\n })\n .then(exposeGatewayData);\n },\n archive(\n nodeId: string,\n input?: string | { reason?: string; rationale?: string }\n ) {\n const payload =\n typeof input === \"string\"\n ? { reason: input }\n : input\n ? { reason: input.reason ?? input.rationale }\n : undefined;\n return beliefsFacade.archive(nodeId, payload).then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n worktreeId?: string;\n status?: string;\n minConfidence?: number;\n limit?: number;\n cursor?: string;\n }) {\n return beliefsFacade\n .list({\n topicId: requireTopicId(args),\n worktreeId: args.worktreeId,\n status: args.status,\n minConfidence: args.minConfidence,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n search: searchBeliefs,\n lineage(nodeId: string) {\n return beliefsFacade.lineage(nodeId).then(exposeGatewayData);\n },\n confidenceHistory(nodeId: string) {\n return beliefsFacade.confidenceHistory(nodeId).then(exposeGatewayData);\n },\n createContract(\n nodeId: string,\n input: Parameters<typeof beliefsFacade.createContract>[1]\n ) {\n return beliefsFacade\n .createContract(nodeId, input)\n .then(exposeGatewayData);\n },\n bisect(\n nodeId: string,\n input: Parameters<typeof beliefsFacade.bisect>[1]\n ) {\n return beliefsFacade.bisect(nodeId, input).then(exposeGatewayData);\n },\n },\n webhooks: {\n create(input: Parameters<typeof webhooksFacade.create>[0]) {\n return webhooksFacade.create(input).then(exposeGatewayData);\n },\n list(query?: Parameters<typeof webhooksFacade.list>[0]) {\n return webhooksFacade.list(query).then(exposeGatewayData);\n },\n get(id: string) {\n return webhooksFacade.get(id).then(exposeGatewayData);\n },\n update(\n id: string,\n input: Parameters<typeof webhooksFacade.update>[1]\n ) {\n return webhooksFacade.update(id, input).then(exposeGatewayData);\n },\n delete(id: string) {\n return webhooksFacade.delete(id).then(exposeGatewayData);\n },\n test(id: string, input?: Parameters<typeof webhooksFacade.test>[1]) {\n return webhooksFacade.test(id, input).then(exposeGatewayData);\n },\n deliveries(\n id: string,\n query?: Parameters<typeof webhooksFacade.deliveries>[1]\n ) {\n return webhooksFacade.deliveries(id, query).then(exposeGatewayData);\n },\n health(id: string) {\n return webhooksFacade.health(id).then(exposeGatewayData);\n },\n },\n edges: {\n create(args: {\n sourceId: string;\n targetId: string;\n edgeType: string;\n topicId?: string;\n confidence?: number;\n weight?: number;\n context?: string;\n reasoning?: string;\n }) {\n return edgesFacade\n .create({\n sourceId: args.sourceId,\n targetId: args.targetId,\n edgeType: args.edgeType,\n topicId: args.topicId,\n confidence: args.confidence,\n weight: args.weight,\n context: args.context ?? args.reasoning,\n })\n .then(exposeGatewayData);\n },\n update(\n input: Parameters<typeof edgesFacade.update>[0],\n idempotencyKey?: string\n ) {\n return edgesFacade.update(input, idempotencyKey).then(exposeGatewayData);\n },\n remove(\n input: Parameters<typeof edgesFacade.remove>[0],\n idempotencyKey?: string\n ) {\n return edgesFacade.remove(input, idempotencyKey).then(exposeGatewayData);\n },\n removeBetween(\n input: Parameters<typeof edgesFacade.removeBetween>[0],\n idempotencyKey?: string\n ) {\n return edgesFacade\n .removeBetween(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n batchCreate(\n input: Parameters<typeof edgesFacade.batchCreate>[0],\n idempotencyKey?: string\n ) {\n return edgesFacade\n .batchCreate(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n delete(\n input: Parameters<typeof edgesFacade.delete>[0],\n idempotencyKey?: string\n ) {\n return edgesFacade.delete(input, idempotencyKey).then(exposeGatewayData);\n },\n list(args: {\n sourceId: string;\n edgeType?: string;\n limit?: number;\n cursor?: string;\n }) {\n return edgesFacade\n .list({\n sourceId: args.sourceId,\n edgeType: args.edgeType,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n traverse(args: {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n }) {\n return edgesFacade\n .traverse({\n startNode: args.startNode,\n direction: args.direction,\n maxDepth: args.maxDepth,\n topicId: args.topicId,\n })\n .then(exposeGatewayData);\n },\n },\n evidence: {\n create(args: {\n text?: string;\n canonicalText?: string;\n topicId?: string;\n source?: string;\n sourceUrl?: string;\n targetId?: string;\n weight?: number;\n metadata?: JsonObject;\n title?: string;\n content?: string;\n contentType?: string;\n kind?: string;\n supports?: {\n nodeId: string;\n weight: number;\n reasoning?: string;\n };\n }) {\n return createEvidenceCompat(args).then(exposeGatewayData);\n },\n add: addEvidence,\n get(evidenceId: string) {\n return evidenceFacade.get(evidenceId).then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n targetId?: string;\n limit?: number;\n cursor?: string;\n }) {\n return evidenceFacade\n .list({\n topicId: args.topicId,\n targetId: args.targetId,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n search(args: {\n q?: string;\n query?: string;\n topicId?: string;\n targetId?: string;\n methodology?: string;\n limit?: number;\n cursor?: string;\n }) {\n const q = args.q ?? args.query;\n if (!q) {\n throw new Error(\"q is required\");\n }\n return evidenceFacade\n .search({\n q,\n topicId: args.topicId,\n targetId: args.targetId,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n link(args: {\n evidenceId: string;\n targetId?: string;\n beliefId?: string;\n questionId?: string;\n targetType?: \"belief\" | \"question\" | string;\n weight?: number;\n rationale?: string;\n }) {\n const targetId = args.targetId ?? args.questionId ?? args.beliefId;\n if (!targetId) {\n throw new Error(\"targetId is required\");\n }\n const targetType =\n typeof args.targetType === \"string\"\n ? args.targetType\n : args.questionId\n ? \"question\"\n : args.beliefId\n ? \"belief\"\n : undefined;\n return evidenceFacade\n .link({\n evidenceId: args.evidenceId,\n targetId,\n targetType: targetType as \"belief\" | \"question\" | undefined,\n weight: args.weight,\n rationale: args.rationale,\n })\n .then(exposeGatewayData);\n },\n linkToBelief(args: {\n evidenceId: string;\n beliefId: string;\n weight: number;\n rationale?: string;\n }) {\n return evidenceFacade\n .link({\n evidenceId: args.evidenceId,\n targetId: args.beliefId,\n weight: args.weight,\n rationale: args.rationale,\n })\n .then((response) => ({\n ...response.data,\n beliefId: args.beliefId,\n }));\n },\n updateStatus(\n input: Parameters<typeof evidenceFacade.updateStatus>[0],\n idempotencyKey?: string\n ) {\n return evidenceFacade\n .updateStatus(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n update(\n input: Parameters<typeof evidenceFacade.update>[0],\n idempotencyKey?: string\n ) {\n return evidenceFacade.update(input, idempotencyKey).then(exposeGatewayData);\n },\n flagIncorrect(\n input: Parameters<typeof evidenceFacade.flagIncorrect>[0],\n idempotencyKey?: string\n ) {\n return evidenceFacade\n .flagIncorrect(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n remove(\n input: Parameters<typeof evidenceFacade.remove>[0],\n idempotencyKey?: string\n ) {\n return evidenceFacade.remove(input, idempotencyKey).then(exposeGatewayData);\n },\n updateVerificationStatus(\n input: Parameters<typeof evidenceFacade.updateVerificationStatus>[0],\n idempotencyKey?: string\n ) {\n return evidenceFacade\n .updateVerificationStatus(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n },\n questions: {\n create(args: {\n text: string;\n topicId?: string;\n priority?: string;\n linkedBeliefId?: string;\n metadata?: JsonObject;\n }) {\n return questionsFacade\n .create({\n topicId: requireTopicId(args),\n text: args.text,\n priority: args.priority,\n linkedBeliefId: args.linkedBeliefId,\n metadata: args.metadata,\n })\n .then(exposeGatewayData);\n },\n get(questionId: string) {\n return questionsFacade.get(questionId).then(exposeGatewayData);\n },\n refine(\n questionId: string,\n text: string,\n refinementReason?: string\n ) {\n return questionsFacade\n .refine(questionId, {\n text,\n rationale: refinementReason,\n })\n .then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n status?: string;\n priority?: string;\n worktreeId?: string;\n limit?: number;\n cursor?: string;\n }) {\n return questionsFacade\n .list({\n topicId: requireTopicId(args),\n status: args.status,\n priority: args.priority,\n worktreeId: args.worktreeId,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n updateStatus(questionId: string, status: string, rationale?: string) {\n return questionsFacade\n .updateStatus(questionId, {\n status,\n rationale,\n })\n .then(exposeGatewayData);\n },\n batchCreate(\n input: Parameters<typeof questionsFacade.batchCreate>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade\n .batchCreate(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n add(\n input: Parameters<typeof questionsFacade.add>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade.add(input, idempotencyKey).then(exposeGatewayData);\n },\n updatePriority(\n input: Parameters<typeof questionsFacade.updatePriority>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade\n .updatePriority(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n advanceToConviction(\n input: Parameters<typeof questionsFacade.advanceToConviction>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade\n .advanceToConviction(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n updateConviction(\n input: Parameters<typeof questionsFacade.updateConviction>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade\n .updateConviction(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n finalizeConviction(\n input: Parameters<typeof questionsFacade.finalizeConviction>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade\n .finalizeConviction(input, idempotencyKey)\n .then(exposeGatewayData);\n },\n update(\n input: Parameters<typeof questionsFacade.update>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade.update(input, idempotencyKey).then(exposeGatewayData);\n },\n delete(\n input: Parameters<typeof questionsFacade.delete>[0],\n idempotencyKey?: string\n ) {\n return questionsFacade.delete(input, idempotencyKey).then(exposeGatewayData);\n },\n answer(\n questionId: string,\n input: {\n text: string;\n confidence?: string;\n evidenceIds?: string[];\n rationale?: string;\n }\n ) {\n return questionsFacade\n .answer(questionId, input)\n .then(exposeGatewayData);\n },\n archive(questionId: string, reason?: string) {\n return questionsFacade\n .archive(questionId, { reason })\n .then(exposeGatewayData);\n },\n linkEvidence(args: {\n evidenceId: string;\n questionId: string;\n relevance?: number;\n weight?: number;\n rationale?: string;\n }) {\n const weight = args.weight ?? args.relevance;\n return evidenceFacade\n .link({\n evidenceId: args.evidenceId,\n targetId: args.questionId,\n targetType: \"question\",\n weight,\n rationale: args.rationale,\n })\n .then((response) => ({\n ...response.data,\n questionId: args.questionId,\n relevance: weight,\n }));\n },\n getHighPriority(args: {\n topicId?: string;\n limit?: number;\n includeAnswered?: boolean;\n }) {\n return this.list({\n topicId: requireTopicId(args),\n status: args.includeAnswered ? undefined : \"open\",\n }).then((data) => {\n const questions = (\n Array.isArray(data.questions) ? data.questions : []\n ) as Array<{ priority?: string } & Record<string, unknown>>;\n const rank = (priority: string | undefined): number => {\n switch (priority) {\n case \"urgent\":\n return 4;\n case \"high\":\n return 3;\n case \"medium\":\n return 2;\n case \"low\":\n return 1;\n default:\n return 0;\n }\n };\n\n return {\n questions: [...questions]\n .sort((a, b) => rank(b.priority) - rank(a.priority))\n .slice(0, args.limit ?? 20),\n };\n });\n },\n async findMissing(args: {\n topicId?: string;\n minConfidence?: number;\n }) {\n return graphFacade\n .gaps({\n topicId: requireTopicId(args),\n minConfidence: args.minConfidence,\n })\n .then(exposeGatewayData);\n },\n },\n graph: {\n nodes: nodesNamespace,\n createEdge(input: Parameters<typeof graphClient.createEdge>[0]) {\n return graphClient.createEdge(input);\n },\n neighborhood(args: Parameters<typeof graphClient.neighborhood>[0]) {\n return graphFacade\n .neighborhood({\n globalId: args.globalId,\n globalIds:\n typeof args.globalIds === \"string\"\n ? args.globalIds\n .split(\",\")\n .map((value) => value.trim())\n .filter((value) => value.length > 0)\n : undefined,\n maxDepth: args.maxDepth,\n })\n .then(exposeGatewayData);\n },\n queryLineage,\n getConfidenceHistory,\n getAuditTrail,\n traverse(args: {\n startNode: string;\n direction?: string;\n maxDepth?: number;\n topicId?: string;\n }) {\n return graphFacade\n .traverse({\n startNode: args.startNode,\n direction: args.direction,\n maxDepth: args.maxDepth ?? 3,\n topicId: args.topicId,\n })\n .then(exposeGatewayData);\n },\n analyze(args: {\n topicId?: string;\n limit?: number;\n metric?: string;\n }) {\n return graphFacade\n .analyze({\n topicId: requireTopicId(args),\n limit: args.limit,\n metric: args.metric as never,\n })\n .then(exposeGatewayData);\n },\n bias(args: {\n topicId?: string;\n threshold?: number;\n limit?: number;\n }) {\n return graphFacade\n .bias({\n topicId: requireTopicId(args),\n threshold: args.threshold,\n limit: args.limit,\n })\n .then(exposeGatewayData);\n },\n gaps(args: {\n topicId?: string;\n minConfidence?: number;\n }) {\n return graphFacade\n .gaps({\n topicId: requireTopicId(args),\n minConfidence: args.minConfidence,\n })\n .then(exposeGatewayData);\n },\n falsify(args: {\n topicId?: string;\n beliefId?: string;\n beliefIds?: string[];\n minConfidence?: number;\n }) {\n return graphFacade\n .falsify({\n topicId: args.topicId,\n beliefId: args.beliefId,\n beliefIds: args.beliefIds,\n minConfidence: args.minConfidence,\n })\n .then(exposeGatewayData);\n },\n traceEntityImpact(args: { nodeId: string; topicId?: string }) {\n return traceEntityImpactCompat({\n nodeId: args.nodeId,\n topicId: args.topicId,\n });\n },\n searchBeliefs,\n findContradictions,\n bisectConfidence,\n listBeliefs,\n detectConfirmationBias(\n topicId: string,\n threshold?: number\n ) {\n return this.bias({\n topicId,\n threshold,\n limit: 200,\n }).then((response) => ({\n ...response,\n topicId,\n threshold: threshold ?? 0.7,\n }));\n },\n getStructureAnalysis(topicId: string) {\n return this.analyze({\n topicId,\n limit: 200,\n }).then((response) => ({\n ...response,\n topicId,\n }));\n },\n getFalsificationQuestions(\n topicId: string,\n beliefIds?: string[]\n ) {\n return graphFacade\n .falsify({\n topicId,\n beliefIds,\n })\n .then(exposeGatewayData)\n .then((response) => ({\n topicId,\n questions: response.questions,\n }));\n },\n },\n judgments: {\n create(input: RecordJudgmentInput) {\n return decisionsClient.createJudgment(input);\n },\n record(input: RecordJudgmentInput) {\n return decisionsClient.recordJudgment(input);\n },\n list(query: Parameters<typeof decisionsClient.listJudgments>[0]) {\n return decisionsClient.listJudgments(query);\n },\n get(judgmentId: string) {\n return decisionsClient.getJudgment(judgmentId);\n },\n recordOutcome(\n judgmentId: string,\n input: Parameters<typeof decisionsClient.recordJudgmentOutcome>[1]\n ) {\n return decisionsClient.recordJudgmentOutcome(judgmentId, input);\n },\n updateOutcome(\n judgmentId: string,\n input: Parameters<typeof decisionsClient.updateJudgmentOutcome>[1]\n ) {\n return decisionsClient.updateJudgmentOutcome(judgmentId, input);\n },\n readiness(topicId: string) {\n return decisionsClient.getJudgmentReadiness({\n topicId,\n });\n },\n calibration(topicId: string) {\n return decisionsClient.getJudgmentCalibration({\n topicId,\n });\n },\n pendingOutcomeReview(topicId: string) {\n return decisionsClient.listPendingJudgmentOutcomeReview({\n topicId,\n });\n },\n transitionAuditIntegrity(args: {\n topicId?: string;\n judgmentId?: string;\n includePassing?: boolean;\n }) {\n return decisionsClient.getJudgmentTransitionAuditIntegrity({\n ...args,\n topicId: requireTopicId(args),\n });\n },\n },\n worktrees: {\n createBranch(input: Parameters<typeof workflowClient.createBranch>[0]) {\n return workflowClient.createBranch(input);\n },\n createLens(input: Parameters<typeof workflowClient.createLens>[0]) {\n return workflowClient.createLens(input);\n },\n listLenses(query: Parameters<typeof workflowClient.listLenses>[0]) {\n return workflowClient.listLenses(query);\n },\n applyLensToTopic(\n input: Parameters<typeof workflowClient.applyLensToTopic>[0]\n ) {\n return workflowClient.applyLensToTopic(input);\n },\n removeLensFromTopic(\n input: Parameters<typeof workflowClient.removeLensFromTopic>[0]\n ) {\n return workflowClient.removeLensFromTopic(input);\n },\n create(input: AddWorktreeInput) {\n return worktreesFacade.create({\n title: input.title,\n topicId: requireTopicId(input),\n objective: input.objective,\n hypothesis: input.hypothesis,\n beliefIds: input.beliefIds,\n autoShape: input.autoShape,\n domainPackId: input.domainPackId,\n executionOrder: input.executionOrder,\n dependsOn: input.dependsOn,\n blocks: input.blocks,\n gate: input.gate,\n proofArtifacts: input.proofArtifacts,\n staffingHint:\n typeof input.staffingHint === \"string\"\n ? input.staffingHint\n : undefined,\n lastReconciledAt: input.lastReconciledAt,\n autoFixPolicy: input.autoFixPolicy,\n });\n },\n add(input: AddWorktreeInput) {\n return worktreesFacade.create({\n title: input.title,\n topicId: requireTopicId(input),\n objective: input.objective,\n hypothesis: input.hypothesis,\n beliefIds: input.beliefIds,\n autoShape: input.autoShape,\n domainPackId: input.domainPackId,\n executionOrder: input.executionOrder,\n dependsOn: input.dependsOn,\n blocks: input.blocks,\n gate: input.gate,\n proofArtifacts: input.proofArtifacts,\n staffingHint:\n typeof input.staffingHint === \"string\"\n ? input.staffingHint\n : undefined,\n lastReconciledAt: input.lastReconciledAt,\n autoFixPolicy: input.autoFixPolicy,\n });\n },\n list(query: Parameters<typeof workflowClient.listWorktrees>[0]) {\n return worktreesFacade.list({\n topicId: requireTopicId(query),\n status: query.status,\n limit: query.limit,\n });\n },\n activate(worktreeId: string) {\n return worktreesFacade.activate({ id: worktreeId });\n },\n updateMetadata(\n input: Parameters<typeof mcpParityClient.updateWorktreeMetadata>[0]\n ) {\n const dependsOn = Array.isArray(input.dependsOn)\n ? input.dependsOn.filter(\n (value): value is string => typeof value === \"string\"\n )\n : undefined;\n const blocks = Array.isArray(input.blocks)\n ? input.blocks.filter((value): value is string => typeof value === \"string\")\n : undefined;\n return worktreesFacade.update({\n id: typeof input.worktreeId === \"string\" ? input.worktreeId : \"\",\n hypothesis: typeof input.hypothesis === \"string\" ? input.hypothesis : undefined,\n track: typeof input.track === \"string\" ? input.track : undefined,\n trackPosition:\n typeof input.trackPosition === \"number\" ? input.trackPosition : undefined,\n executionBand:\n typeof input.executionBand === \"number\" ? input.executionBand : undefined,\n executionOrder:\n typeof input.executionOrder === \"number\" ? input.executionOrder : undefined,\n dependsOn,\n blocks,\n gate: typeof input.gate === \"string\" ? input.gate : undefined,\n });\n },\n update(\n input: Parameters<typeof mcpParityClient.updateWorktreeMetadata>[0]\n ) {\n return this.updateMetadata(input);\n },\n updateTargets(\n input: Parameters<typeof workflowClient.updateWorktreeTargets>[0]\n ) {\n return worktreesFacade.updateTargets({\n id: input.worktreeId,\n addBeliefIds: input.addBeliefIds,\n addQuestionIds: input.addQuestionIds,\n removeBeliefIds: input.removeBeliefIds,\n removeQuestionIds: input.removeQuestionIds,\n });\n },\n listAll(\n query: Parameters<typeof workflowClient.listAllWorktrees>[0] = {}\n ) {\n return workflowClient.listAllWorktrees(query);\n },\n merge(worktreeId: string, input: MergeInput) {\n return worktreesFacade.merge({\n id: worktreeId,\n outcomes: input.outcomes,\n summary: input.summary,\n });\n },\n push(\n worktreeId: string,\n input: Parameters<typeof workflowClient.push>[1]\n ) {\n return workflowClient.push(worktreeId, input);\n },\n openPullRequest(\n worktreeId: string,\n input: Parameters<typeof workflowClient.openPullRequest>[1]\n ) {\n return workflowClient.openPullRequest(worktreeId, input);\n },\n pipelineSnapshot(topicId: string) {\n return mcpParityClient.pipelineSnapshot({ topicId });\n },\n complete(\n input: Parameters<typeof worktreesFacade.complete>[0],\n idempotencyKey?: string\n ) {\n return worktreesFacade.complete(input, idempotencyKey);\n },\n advancePhase(\n worktreeId: string,\n idempotencyKey?: string\n ) {\n return worktreesFacade.advancePhase(\n { worktreeId },\n idempotencyKey\n );\n },\n setPhase(\n worktreeId: string,\n phase: string,\n idempotencyKey?: string\n ) {\n return worktreesFacade.setPhase(\n { worktreeId, phase },\n idempotencyKey\n );\n },\n patchState(\n input: Parameters<typeof worktreesFacade.patchState>[0],\n idempotencyKey?: string\n ) {\n return worktreesFacade.patchState(input, idempotencyKey);\n },\n bulkCreate(\n input: Parameters<typeof worktreesFacade.bulkCreate>[0],\n idempotencyKey?: string\n ) {\n return worktreesFacade.bulkCreate(input, idempotencyKey);\n },\n },\n context: {\n listTopics(query: Parameters<typeof topicsClient.list>[0] = {}) {\n return topicsFacade.list({\n ontologyId: query.ontologyId,\n parentTopicId: query.parentTopicId,\n status: query.status as\n | \"active\"\n | \"archived\"\n | \"watching\"\n | undefined,\n type: query.type,\n });\n },\n compile(\n topicId: string,\n input: Parameters<typeof contextClient.compile>[1] = {}\n ) {\n return contextClient.compile(topicId, input);\n },\n recordScopeLearning(\n input: Parameters<typeof mcpParityClient.recordScopeLearning>[0]\n ) {\n return mcpParityClient.recordScopeLearning(input);\n },\n discover(input: Parameters<typeof mcpParityClient.discover>[0]) {\n return discoverTopics(input as JsonObject);\n },\n analyzeTopicDensity(\n input: Parameters<typeof mcpParityClient.analyzeTopicDensity>[0]\n ) {\n return mcpParityClient.analyzeTopicDensity(input);\n },\n applyAutoBranching(\n input: Parameters<typeof mcpParityClient.applyAutoBranching>[0]\n ) {\n return mcpParityClient.applyAutoBranching(input);\n },\n seedBeliefLattice(\n input: Parameters<typeof mcpParityClient.seedBeliefLattice>[0] = {}\n ) {\n return mcpParityClient.seedBeliefLattice(input);\n },\n getLatticeCoverage(\n input: Parameters<typeof mcpParityClient.getLatticeCoverage>[0] = {}\n ) {\n return mcpParityClient.getLatticeCoverage(input);\n },\n matchEntityType(\n input: Parameters<typeof mcpParityClient.matchEntityType>[0]\n ) {\n return ontologiesFacade\n .match(input as Parameters<typeof ontologiesFacade.match>[0])\n .then(exposeGatewayData);\n },\n discoverEntityConnections(\n input: Parameters<typeof mcpParityClient.discoverEntityConnections>[0]\n ) {\n return discoverEntityConnections(input as JsonObject);\n },\n triggerBeliefReview(\n input: Parameters<typeof mcpParityClient.triggerBeliefReview>[0]\n ) {\n return triggerBeliefReview(input as JsonObject);\n },\n },\n tasks: {\n create(input: CreateTaskInput) {\n return tasksFacade.create({\n topicId: requireTopicId(input),\n title: input.title,\n description: input.description,\n taskType: input.taskType,\n priority: input.priority,\n linkedBeliefId: input.linkedBeliefId,\n linkedQuestionId: input.linkedQuestionId,\n linkedWorktreeId: input.linkedWorktreeId,\n });\n },\n complete(taskId: string, input: CompleteTaskInput) {\n return tasksFacade.complete({\n id: taskId,\n outputSummary: input.outputSummary,\n });\n },\n update(taskId: string, input: UpdateTaskInput) {\n return tasksFacade.update({\n id: taskId,\n title: input.title,\n description: input.description,\n priority: input.priority,\n status: input.status,\n linkedBeliefId: input.linkedBeliefId,\n linkedQuestionId: input.linkedQuestionId,\n linkedWorktreeId: input.linkedWorktreeId,\n });\n },\n list(input: Parameters<typeof mcpParityClient.listTasks>[0]) {\n return tasksFacade.list({\n topicId: resolveTopicId(input),\n worktreeId:\n typeof input.worktreeId === \"string\"\n ? input.worktreeId\n : typeof input.linkedWorktreeId === \"string\"\n ? input.linkedWorktreeId\n : undefined,\n status: typeof input.status === \"string\" ? input.status : undefined,\n limit: typeof input.limit === \"number\" ? input.limit : undefined,\n });\n },\n },\n topics: {\n list(input: Parameters<typeof topicsClient.list>[0] = {}) {\n return topicsFacade.list({\n ontologyId: input.ontologyId,\n parentTopicId: input.parentTopicId,\n status: input.status as \"active\" | \"archived\" | \"watching\" | undefined,\n type: input.type,\n });\n },\n get(topicId: string) {\n return topicsFacade.get(topicId);\n },\n create(input: Parameters<typeof topicsClient.create>[0]) {\n return topicsFacade.create({\n name: input.name,\n description: input.description,\n type: input.type,\n parentTopicId: input.parentTopicId,\n ontologyId: input.ontologyId,\n tenantId: input.tenantId,\n workspaceId: input.workspaceId,\n visibility: input.visibility,\n createdBy: input.createdBy,\n });\n },\n update(\n topicId: string,\n input: Parameters<typeof topicsClient.update>[1]\n ) {\n return topicsFacade.update({\n id: topicId,\n name: input.name,\n description: input.description,\n type: input.type,\n ontologyId: input.ontologyId,\n clearOntologyId: input.clearOntologyId,\n status: input.status,\n visibility: input.visibility,\n });\n },\n tree(\n topicId: string,\n query: Parameters<typeof topicsClient.getTree>[1] = {}\n ) {\n return topicsFacade.tree({\n id: topicId,\n maxDepth: query.maxDepth,\n });\n },\n getTree(input: { rootId: string; maxDepth?: number }) {\n return topicsFacade.tree({\n id: input.rootId,\n maxDepth: input.maxDepth,\n });\n },\n coverage(\n topicId: string,\n query: Parameters<typeof topicsClient.getCoverage>[1] = {}\n ) {\n return topicsFacade.coverage({\n id: topicId,\n includeDescendants: query.includeDescendants,\n maxDepth: query.maxDepth,\n });\n },\n remove(topicId: string, idempotencyKey?: string) {\n return topicsFacade.remove(topicId, idempotencyKey);\n },\n bulkCreate(\n input: Parameters<typeof topicsFacade.bulkCreate>[0],\n idempotencyKey?: string\n ) {\n return topicsFacade.bulkCreate(input, idempotencyKey);\n },\n },\n answers: {\n create(input: Parameters<typeof mcpParityClient.createAnswer>[0]) {\n const questionId =\n typeof input.questionNodeId === \"string\" ? input.questionNodeId : \"\";\n if (!questionId) {\n throw new Error(\"questionNodeId is required\");\n }\n const text =\n typeof input.answerText === \"string\" ? input.answerText : \"\";\n if (!text) {\n throw new Error(\"answerText is required\");\n }\n const confidence =\n input.confidence === \"moderate\" ? \"medium\" : input.confidence;\n\n return questionsFacade.answer(questionId, {\n text,\n confidence:\n typeof confidence === \"string\" ? confidence : undefined,\n evidenceIds: Array.isArray(input.evidenceNodeIds)\n ? input.evidenceNodeIds.filter(\n (value): value is string => typeof value === \"string\"\n )\n : undefined,\n });\n },\n get(input: Parameters<typeof mcpParityClient.getAnswer>[0]) {\n const questionId =\n typeof input.questionNodeId === \"string\" ? input.questionNodeId : \"\";\n if (!questionId) {\n throw new Error(\"questionNodeId is required\");\n }\n return answersClient.get(questionId);\n },\n },\n contradictions: {\n flag(args: {\n beliefA: string;\n beliefB: string;\n description: string;\n topicId?: string;\n severity?: string;\n defeatType?: string;\n }) {\n return contradictionsFacade\n .flag({\n beliefA: args.beliefA,\n beliefB: args.beliefB,\n description: args.description,\n topicId: requireTopicId(args),\n severity: args.severity,\n defeatType: args.defeatType,\n })\n .then(exposeGatewayData);\n },\n list(args: {\n topicId?: string;\n status?: string;\n limit?: number;\n cursor?: string;\n }) {\n return contradictionsFacade\n .list({\n topicId: requireTopicId(args),\n status: args.status,\n limit: args.limit,\n cursor: args.cursor,\n })\n .then(exposeGatewayData);\n },\n get(contradictionId: string) {\n return contradictionsFacade.get(contradictionId).then(exposeGatewayData);\n },\n find: findContradictions,\n },\n ontologies: {\n list(\n input: {\n tenantId?: string;\n tier?: string;\n status?: string;\n } = {}\n ) {\n return ontologiesFacade.list(input).then(exposeGatewayData);\n },\n get(ontologyId: string) {\n return ontologiesFacade\n .get(ontologyId)\n .then((response) => exposeGatewayData(response));\n },\n bind(\n input: Parameters<typeof ontologiesFacade.bind>[0],\n idempotencyKey?: Parameters<typeof ontologiesFacade.bind>[1]\n ) {\n return ontologiesFacade\n .bind(input, idempotencyKey)\n .then((response) => exposeGatewayData(response));\n },\n match(\n input: Parameters<typeof ontologiesFacade.match>[0],\n idempotencyKey?: Parameters<typeof ontologiesFacade.match>[1]\n ) {\n return ontologiesFacade.match(input, idempotencyKey).then(exposeGatewayData);\n },\n create(input: Parameters<typeof mcpParityClient.createOntology>[0]) {\n return createOntologyCompat(input as JsonObject);\n },\n update(input: Parameters<typeof mcpParityClient.updateOntology>[0]) {\n return updateOntologyCompat(input as JsonObject);\n },\n archive(input: Parameters<typeof mcpParityClient.archiveOntology>[0]) {\n return archiveOntologyCompat(input as JsonObject);\n },\n createVersion(\n input: Parameters<typeof mcpParityClient.createOntologyVersion>[0]\n ) {\n return createOntologyVersionCompat(input as JsonObject);\n },\n publishVersion(\n input: Parameters<typeof mcpParityClient.publishOntologyVersion>[0]\n ) {\n return publishOntologyVersionCompat(input as JsonObject);\n },\n deprecateVersion(\n input: Parameters<typeof mcpParityClient.deprecateOntologyVersion>[0]\n ) {\n return deprecateOntologyVersionCompat(input as JsonObject);\n },\n resolveEffective(\n input: Parameters<typeof mcpParityClient.resolveEffectiveOntology>[0]\n ) {\n return resolveEffectiveOntologyCompat(input as JsonObject);\n },\n raw: ontologyClient,\n },\n coordination: {\n registerSession(\n input: Parameters<typeof mcpParityClient.registerSession>[0] = {}\n ) {\n return mcpParityClient.registerSession(input);\n },\n heartbeatSession(\n input: Parameters<typeof mcpParityClient.heartbeatSession>[0] = {}\n ) {\n return mcpParityClient.heartbeatSession(input);\n },\n endSession(\n input: Parameters<typeof mcpParityClient.endSession>[0] = {}\n ) {\n return mcpParityClient.endSession(input);\n },\n listActiveSessions(\n input: Parameters<typeof mcpParityClient.listActiveSessions>[0] = {}\n ) {\n return mcpParityClient.listActiveSessions(input);\n },\n sendAgentMessage(\n input: Parameters<typeof mcpParityClient.sendAgentMessage>[0]\n ) {\n return mcpParityClient.sendAgentMessage(input);\n },\n broadcastMessage(\n input: Parameters<typeof mcpParityClient.broadcastMessage>[0]\n ) {\n return mcpParityClient.broadcastMessage(input);\n },\n getInbox(\n input: Parameters<typeof mcpParityClient.getAgentInbox>[0] = {}\n ) {\n return mcpParityClient.getAgentInbox(input);\n },\n claimFiles(input: Parameters<typeof mcpParityClient.claimFiles>[0]) {\n return mcpParityClient.claimFiles(input);\n },\n },\n policy: {\n checkPermission(\n input: Parameters<typeof mcpParityClient.checkPermission>[0]\n ) {\n return policyClient.checkPermission({\n topicId: typeof input.topicId === \"string\" ? input.topicId : undefined,\n permission:\n typeof input.permission === \"string\"\n ? (input.permission as \"read\" | \"write\")\n : undefined,\n principal:\n typeof input.principal === \"string\" ? input.principal : undefined,\n principalId:\n typeof input.principalId === \"string\" ? input.principalId : undefined,\n beliefClusterId:\n typeof input.beliefClusterId === \"string\"\n ? input.beliefClusterId\n : undefined,\n });\n },\n listAccessibleTopics(\n input: Parameters<typeof policyClient.listAccessibleTopics>[0] = {}\n ) {\n return policyClient.listAccessibleTopics({\n permission:\n typeof input.permission === \"string\"\n ? (input.permission as \"read\" | \"write\")\n : undefined,\n includeShared:\n typeof input.includeShared === \"boolean\"\n ? input.includeShared\n : undefined,\n principal:\n typeof input.principal === \"string\" ? input.principal : undefined,\n principalId:\n typeof input.principalId === \"string\" ? input.principalId : undefined,\n limit: typeof input.limit === \"number\" ? input.limit : undefined,\n });\n },\n filterByPermission(\n input: Parameters<typeof mcpParityClient.filterByPermission>[0]\n ) {\n return policyClient.filterByPermission({\n topicIds: Array.isArray(input.topicIds)\n ? input.topicIds.filter(\n (value): value is string => typeof value === \"string\"\n )\n : undefined,\n permission:\n typeof input.permission === \"string\"\n ? (input.permission as \"read\" | \"write\")\n : undefined,\n principal:\n typeof input.principal === \"string\" ? input.principal : undefined,\n principalId:\n typeof input.principalId === \"string\" ? input.principalId : undefined,\n });\n },\n manageWritePolicy(\n input: Parameters<typeof mcpParityClient.manageWritePolicy>[0]\n ) {\n return mcpParityClient.manageWritePolicy(input);\n },\n raw: policyClient,\n },\n observations: {\n ingest(input: Parameters<typeof mcpParityClient.ingestObservation>[0]) {\n return mcpParityClient.ingestObservation(input);\n },\n getContext(\n input: Parameters<typeof mcpParityClient.getObservationContext>[0]\n ) {\n return mcpParityClient.getObservationContext(input);\n },\n },\n coding: {\n getCodeContext(input: Parameters<typeof mcpParityClient.getCodeContext>[0]) {\n return mcpParityClient.getCodeContext(input);\n },\n getChangeHistory(\n input: Parameters<typeof mcpParityClient.getChangeHistory>[0]\n ) {\n return mcpParityClient.getChangeHistory(input);\n },\n recordAttempt(input: Parameters<typeof mcpParityClient.recordAttempt>[0]) {\n return mcpParityClient.recordAttempt(input);\n },\n getFailureLog(input: Parameters<typeof mcpParityClient.getFailureLog>[0]) {\n return mcpParityClient.getFailureLog(input);\n },\n },\n contracts: {\n create(\n input: Parameters<typeof mcpParityClient.createEpistemicContract>[0]\n ) {\n return createContractCompat(input as JsonObject);\n },\n list(\n input: {\n beliefNodeId?: string;\n contractId?: string;\n status?: string;\n } = {}\n ) {\n return listContractsCompat(input as JsonObject);\n },\n evaluate(input: Parameters<typeof mcpParityClient.evaluateContract>[0]) {\n return evaluateContractCompat(input as JsonObject);\n },\n getStatus(input: Parameters<typeof mcpParityClient.getContractStatus>[0]) {\n return getContractStatusCompat(input as JsonObject);\n },\n },\n bootstrap: {\n generateSessionHandoff(\n input: Parameters<typeof mcpParityClient.generateSessionHandoff>[0]\n ) {\n return mcpParityClient.generateSessionHandoff(input);\n },\n },\n research: {\n searchSources(args: {\n query: string;\n topicId?: string;\n sources?: string[];\n }) {\n const topicId = requireTopicId(args);\n return graphClient\n .listNodes({\n topicId,\n nodeType: \"source\",\n limit: 100,\n })\n .then((response) => {\n const query = args.query.toLowerCase();\n const results = asNodeArray(response.data)\n .filter((node) => {\n const text = `${node.canonicalText ?? \"\"} ${\n typeof node.metadata?.title === \"string\"\n ? node.metadata.title\n : \"\"\n }`.toLowerCase();\n if (!text.includes(query)) {\n return false;\n }\n if (!args.sources || args.sources.length === 0) {\n return true;\n }\n const sourceType =\n typeof node.metadata?.sourceType === \"string\"\n ? node.metadata.sourceType.toLowerCase()\n : \"\";\n return args.sources.some((source) =>\n sourceType.includes(source.toLowerCase())\n );\n })\n .map((node) => ({\n title:\n typeof node.metadata?.title === \"string\"\n ? node.metadata.title\n : (node.canonicalText ?? \"Untitled source\"),\n url:\n typeof node.metadata?.sourceUrl === \"string\"\n ? node.metadata.sourceUrl\n : \"\",\n snippet: node.canonicalText ?? \"\",\n relevanceScore: 1,\n suggestedEvidence: node.canonicalText ?? \"\",\n }));\n return { results };\n });\n },\n async executeDeepResearch(args: {\n query: string;\n topicId?: string;\n depth?: \"quick\" | \"standard\" | \"deep\";\n }) {\n const sources = await this.searchSources({\n query: args.query,\n topicId: requireTopicId(args),\n sources: [\"web\"],\n });\n const sampleSize =\n args.depth === \"deep\" ? 10 : args.depth === \"quick\" ? 3 : 5;\n const selected = sources.results.slice(0, sampleSize);\n return {\n report: {\n summary:\n selected.length > 0\n ? `Research completed for \"${args.query}\" with ${selected.length} relevant sources.`\n : `No relevant sources found for \"${args.query}\".`,\n findings: selected.map((source) => ({\n title: source.title,\n summary: source.snippet,\n sourceUrl: source.url,\n })),\n sources: selected.map((source) => ({\n title: source.title,\n url: source.url,\n })),\n linkedEvidence: [],\n linkedQuestions: [],\n },\n };\n },\n },\n tools: {\n register(registration: CustomToolRegistration) {\n return registerCustomTool(registration);\n },\n unregister(fullName: string) {\n return unregisterCustomTool(fullName);\n },\n list() {\n return listRegisteredCustomTools();\n },\n clear() {\n clearRegisteredCustomTools();\n },\n invoke(name: string, input: CustomToolInput = {}) {\n const fullName = name.includes(\".\") ? name : `custom.${name}`;\n return invokeCustomTool(fullName, input);\n },\n namespace(namespace: string) {\n return getCustomNamespace(namespace);\n },\n },\n packs: {\n /**\n * Ensure the configured packKey is installed.\n * No-op if no packKey was provided or if the pack is already installed.\n * Called automatically on first API use when packKey is set.\n */\n ensurePack,\n /**\n * Check if the configured pack has been installed in this session.\n */\n get isInstalled() {\n return _packInstalled;\n },\n listCatalog() {\n return packsClient.listCatalog();\n },\n catalog() {\n return packsClient.getCatalog();\n },\n listStates(scope?: Parameters<typeof packsClient.listStates>[0]) {\n return packsClient.listStates(scope);\n },\n states(scope?: Parameters<typeof packsClient.getStates>[0]) {\n return packsClient.getStates(scope);\n },\n install(input: Parameters<typeof packsClient.install>[0]) {\n return packsClient.install(input);\n },\n enable(input: Parameters<typeof packsClient.enable>[0]) {\n return packsClient.enable(input);\n },\n disable(input: Parameters<typeof packsClient.disable>[0]) {\n return packsClient.disable(input);\n },\n },\n nodes: nodesNamespace,\n identity: identityFacade,\n custom: getCustomNamespace(\"custom\"),\n extensions: extensionNamespaces,\n raw: {\n beliefs: beliefsClient,\n graph: graphClient,\n decisions: decisionsClient,\n workflow: workflowClient,\n audit: auditClient,\n admin: adminClient,\n identity: identityClient,\n policy: policyClient,\n answers: answersClient,\n ontology: ontologyClient,\n mcpParity: mcpParityClient,\n packs: packsClient,\n reports: reportsClient,\n learning: learningClient,\n harness: harnessClient,\n schema: schemaClient,\n audiences: audiencesClient,\n topics: topicsClient,\n },\n };\n}\n","/** All recognized control object kinds in the ownership model. */\nexport const CONTROL_OBJECT_KINDS = [\n \"tenant\",\n \"workspace\",\n \"principal\",\n \"tool\",\n \"pack\",\n \"ontology\",\n \"belief\",\n \"policy_rule\",\n] as const;\n/** A kind of control object (tenant, workspace, principal, tool, etc.). */\nexport type ControlObjectKind = (typeof CONTROL_OBJECT_KINDS)[number];\n\n/** Canonical ownership scopes: platform, tenant, workspace, or resource. */\nexport const CONTROL_OBJECT_OWNER_SCOPES = [\n \"platform\",\n \"tenant\",\n \"workspace\",\n \"resource\",\n] as const;\n/** The scope level that canonically owns a control object. */\nexport type ControlObjectOwnerScope =\n (typeof CONTROL_OBJECT_OWNER_SCOPES)[number];\n\n/** UI surfaces authorized to edit control objects. */\nexport const CONTROL_OBJECT_EDIT_SURFACES = [\n \"platform_admin\",\n \"tenant_admin\",\n \"workspace_admin\",\n \"graph_worktree\",\n] as const;\n/** A UI surface authorized to mutate a control object (platform admin, tenant admin, etc.). */\nexport type ControlObjectEditSurface =\n (typeof CONTROL_OBJECT_EDIT_SURFACES)[number];\n\n/** Rules governing how control object configuration flows through the scope hierarchy. */\nexport const CONTROL_OBJECT_INHERITANCE_RULES = [\n \"none\",\n \"platform_seed_to_tenant\",\n \"tenant_default_to_workspace\",\n \"workspace_narrowing_only\",\n \"pack_overlay_to_tenant\",\n \"topic_lineage_to_resource\",\n] as const;\n/** How a control object's configuration propagates through scope hierarchy. */\nexport type ControlObjectInheritanceRule =\n (typeof CONTROL_OBJECT_INHERITANCE_RULES)[number];\n\n/** Scope of impact when a control object is modified. */\nexport const CONTROL_OBJECT_BLAST_RADII = [\n \"platform\",\n \"tenant\",\n \"workspace\",\n \"resource\",\n] as const;\n/** The furthest scope impacted by a mutation to a control object. */\nexport type ControlObjectBlastRadius = (typeof CONTROL_OBJECT_BLAST_RADII)[number];\n\n/** A single row in the ownership matrix describing who owns, edits, and inherits a control object. */\nexport type ControlObjectOwnershipCase = {\n caseKey: string;\n caseLabel: string;\n kind: ControlObjectKind;\n canonicalOwnerScope: ControlObjectOwnerScope;\n editSurface: ControlObjectEditSurface;\n inheritanceRule: ControlObjectInheritanceRule;\n blastRadius: ControlObjectBlastRadius;\n};\n\n/** Full ownership matrix keyed by control object kind. */\nexport type ControlObjectOwnershipMatrix = Record<\n ControlObjectKind,\n readonly ControlObjectOwnershipCase[]\n>;\n\n/** Versioned ownership contract bundling all enums, the matrix, and flattened rows. */\nexport type ControlObjectOwnershipContract = {\n version: \"1.0.0\";\n kinds: readonly ControlObjectKind[];\n ownerScopes: readonly ControlObjectOwnerScope[];\n editSurfaces: readonly ControlObjectEditSurface[];\n inheritanceRules: readonly ControlObjectInheritanceRule[];\n blastRadii: readonly ControlObjectBlastRadius[];\n matrix: ControlObjectOwnershipMatrix;\n rows: readonly ControlObjectOwnershipCase[];\n};\n\nfunction defineCases<const T extends readonly ControlObjectOwnershipCase[]>(\n cases: T\n): T {\n return cases;\n}\n\n/** Static ownership matrix mapping each control object kind to its ownership cases. */\nexport const CONTROL_OBJECT_OWNERSHIP_MATRIX = {\n tenant: defineCases([\n {\n caseKey: \"platform-record\",\n caseLabel: \"Platform Record\",\n kind: \"tenant\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"none\",\n blastRadius: \"tenant\",\n },\n ]),\n workspace: defineCases([\n {\n caseKey: \"tenant-workspace\",\n caseLabel: \"Tenant Workspace\",\n kind: \"workspace\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"tenant_default_to_workspace\",\n blastRadius: \"workspace\",\n },\n ]),\n principal: defineCases([\n {\n caseKey: \"tenant-principal\",\n caseLabel: \"Tenant Principal\",\n kind: \"principal\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"workspace_narrowing_only\",\n blastRadius: \"resource\",\n },\n ]),\n tool: defineCases([\n {\n caseKey: \"platform-core\",\n caseLabel: \"Platform Core\",\n kind: \"tool\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-custom\",\n caseLabel: \"Tenant Custom\",\n kind: \"tool\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"tenant_default_to_workspace\",\n blastRadius: \"tenant\",\n },\n ]),\n pack: defineCases([\n {\n caseKey: \"platform-definition\",\n caseLabel: \"Platform Definition\",\n kind: \"pack\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-installation\",\n caseLabel: \"Tenant Installation\",\n kind: \"pack\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"tenant\",\n },\n ]),\n ontology: defineCases([\n {\n caseKey: \"platform-base\",\n caseLabel: \"Platform Base\",\n kind: \"ontology\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"pack-overlay\",\n caseLabel: \"Pack Overlay\",\n kind: \"ontology\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"pack_overlay_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-extension\",\n caseLabel: \"Tenant Extension\",\n kind: \"ontology\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"topic_lineage_to_resource\",\n blastRadius: \"tenant\",\n },\n ]),\n belief: defineCases([\n {\n caseKey: \"topic-resource\",\n caseLabel: \"Topic Resource\",\n kind: \"belief\",\n canonicalOwnerScope: \"resource\",\n editSurface: \"graph_worktree\",\n inheritanceRule: \"topic_lineage_to_resource\",\n blastRadius: \"resource\",\n },\n ]),\n policy_rule: defineCases([\n {\n caseKey: \"platform-baseline\",\n caseLabel: \"Platform Baseline\",\n kind: \"policy_rule\",\n canonicalOwnerScope: \"platform\",\n editSurface: \"platform_admin\",\n inheritanceRule: \"platform_seed_to_tenant\",\n blastRadius: \"platform\",\n },\n {\n caseKey: \"tenant-bundle\",\n caseLabel: \"Tenant Bundle\",\n kind: \"policy_rule\",\n canonicalOwnerScope: \"tenant\",\n editSurface: \"tenant_admin\",\n inheritanceRule: \"tenant_default_to_workspace\",\n blastRadius: \"tenant\",\n },\n {\n caseKey: \"workspace-override\",\n caseLabel: \"Workspace Override\",\n kind: \"policy_rule\",\n canonicalOwnerScope: \"workspace\",\n editSurface: \"workspace_admin\",\n inheritanceRule: \"none\",\n blastRadius: \"workspace\",\n },\n ]),\n} as const satisfies ControlObjectOwnershipMatrix;\n\nfunction flattenOwnershipMatrix(\n matrix: ControlObjectOwnershipMatrix\n): ControlObjectOwnershipCase[] {\n return CONTROL_OBJECT_KINDS.flatMap((kind) => [...matrix[kind]]);\n}\n\n/** Flattened array of all ownership cases across all control object kinds. */\nexport const CONTROL_OBJECT_OWNERSHIP_ROWS = Object.freeze(\n flattenOwnershipMatrix(CONTROL_OBJECT_OWNERSHIP_MATRIX)\n);\n\n/** The canonical ownership contract exposed by the SDK. */\nexport const CONTROL_OBJECT_OWNERSHIP_CONTRACT = {\n version: \"1.0.0\",\n kinds: CONTROL_OBJECT_KINDS,\n ownerScopes: CONTROL_OBJECT_OWNER_SCOPES,\n editSurfaces: CONTROL_OBJECT_EDIT_SURFACES,\n inheritanceRules: CONTROL_OBJECT_INHERITANCE_RULES,\n blastRadii: CONTROL_OBJECT_BLAST_RADII,\n matrix: CONTROL_OBJECT_OWNERSHIP_MATRIX,\n rows: CONTROL_OBJECT_OWNERSHIP_ROWS,\n} as const satisfies ControlObjectOwnershipContract;\n\n/**\n * List ownership cases for one control-object kind or the full matrix.\n */\nexport function listControlObjectOwnershipCases(\n kind?: ControlObjectKind\n): readonly ControlObjectOwnershipCase[] {\n if (!kind) {\n return CONTROL_OBJECT_OWNERSHIP_ROWS;\n }\n return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind];\n}\n\n/**\n * Get a specific ownership case by kind and case key.\n */\nexport function getControlObjectOwnershipCase(\n kind: ControlObjectKind,\n caseKey: string\n): ControlObjectOwnershipCase | undefined {\n return CONTROL_OBJECT_OWNERSHIP_MATRIX[kind].find(\n (ownershipCase) => ownershipCase.caseKey === caseKey\n );\n}\n","/**\n * Canonical lens workflow contract shared across schema, SDK, and MCP surfaces.\n */\n\n// Re-export filter criteria types for consumers who import from lens-workflow\nexport type {\n LensFilterCriteria,\n TaxonomyFilterCriteriaV1,\n EntityTypeFilterV1,\n OntologyScope,\n FilterValidationResult,\n} from \"./lens-filter.contract\";\nexport {\n validateFilterCriteria,\n isLensFilterCriteria,\n isTaxonomyFilterCriteriaV1,\n} from \"./lens-filter.contract\";\n\nexport const LENS_PERSPECTIVE_TYPES = [\n \"investigation\",\n \"monitoring\",\n \"analysis\",\n \"comparison\",\n \"taxonomy\",\n] as const;\n\nexport type LensPerspectiveType = (typeof LENS_PERSPECTIVE_TYPES)[number];\n\nexport const LENS_STATUSES = [\"draft\", \"active\", \"archived\"] as const;\n\nexport type LensStatus = (typeof LENS_STATUSES)[number];\n\nexport const LENS_TASK_TEMPLATE_PRIORITIES = [\n \"critical\",\n \"high\",\n \"medium\",\n \"low\",\n] as const;\n\nexport type LensTaskTemplatePriority =\n (typeof LENS_TASK_TEMPLATE_PRIORITIES)[number];\n\nexport type LensLooseMetadata = Record<string, unknown>;\n\nexport type LensPromptTemplateReference = {\n key: string;\n promptRef: string;\n phase?: string;\n role?: string;\n version?: string;\n required?: boolean;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowStepTemplate = {\n key: string;\n title: string;\n description?: string;\n promptTemplateKey?: string;\n taskTemplateKeys?: string[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensWorkflowTemplate = {\n key: string;\n name: string;\n description?: string;\n steps: LensWorkflowStepTemplate[];\n metadata?: LensLooseMetadata;\n};\n\nexport type LensTaskTemplate = {\n key: string;\n title: string;\n description?: string;\n priority?: LensTaskTemplatePriority;\n phase?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensQuestionTemplate = {\n key: string;\n text: string;\n priority?: LensTaskTemplatePriority;\n linkedBeliefKey?: string;\n metadata?: LensLooseMetadata;\n};\n\nexport type LensBranchMigrationSuggestion = {\n recommendedTool: \"create_lens\";\n perspectiveType: LensPerspectiveType;\n message: string;\n suggestedPayload: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n perspectiveType: LensPerspectiveType;\n };\n};\n\nexport const BRANCH_DEPRECATION_MESSAGE =\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens instead.\";\n\nexport type DeprecatedBranchMetadata = {\n deprecated: true;\n deprecationMessage: string;\n lensSuggestion: LensBranchMigrationSuggestion;\n};\n\nexport function inferLensPerspectiveTypeFromBranchSchema(\n schema?: string | null\n): LensPerspectiveType {\n const normalized = schema?.trim().toLowerCase();\n if (normalized === \"phase\") {\n return \"monitoring\";\n }\n if (normalized === \"axis\" || normalized === \"dimension\") {\n return \"comparison\";\n }\n if (normalized === \"track\") {\n return \"investigation\";\n }\n return \"analysis\";\n}\n\nexport function migrateBranchToLens(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): LensBranchMigrationSuggestion {\n const perspectiveType = inferLensPerspectiveTypeFromBranchSchema(args.schema);\n return {\n recommendedTool: \"create_lens\",\n perspectiveType,\n message:\n \"Branches are deprecated for operational framing. Create a workspace-scoped lens with the suggested payload instead.\",\n suggestedPayload: {\n name: args.name,\n description: args.description,\n topicId: args.topicId,\n workspaceId: args.workspaceId,\n perspectiveType,\n },\n };\n}\n\nexport function buildDeprecatedBranchMetadata(args: {\n name: string;\n description?: string;\n topicId?: string;\n workspaceId?: string;\n schema?: string | null;\n}): DeprecatedBranchMetadata {\n return {\n deprecated: true,\n deprecationMessage: BRANCH_DEPRECATION_MESSAGE,\n lensSuggestion: migrateBranchToLens(args),\n };\n}\n","/**\n * MCP Tool Contract Definitions\n *\n * Machine-readable source of truth for all Lucern MCP tool names,\n * descriptions, parameters, and response schemas.\n *\n * CONTRACT SURFACE: These definitions are the external API for AI agents.\n * Renaming a tool or changing its description is a BREAKING CHANGE.\n *\n * Git-native naming rules (enforced by lint):\n * 1. Workflow tools use git verbs directly (add_worktree, merge, push, open_pull_request)\n * 2. Knowledge tools use epistemic verbs (create_belief, fork_belief, modulate_confidence)\n * 3. First sentence of description includes the git analog verb\n * 4. Description includes \"Like `git X`\" parenthetical\n * 5. Parameter names use domain terms (canonicalText, nodeId, confidence)\n */\n\nimport { LENS_PERSPECTIVE_TYPES } from \"./lens-workflow.contract\";\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\nexport type McpToolContract = {\n /** Stable tool name — breaking change to rename */\n name: string;\n /** Git-semantic description — breaking change to remove git references */\n description: string;\n /** Parameter schema (JSON Schema subset) */\n parameters: Record<string, McpParameterDef>;\n /** Required parameter names */\n required: string[];\n /** Response shape description */\n response: McpResponseDef;\n /** Which Lucern module owns the implementation */\n ownerModule: string;\n /** Ontology primitive this tool operates on */\n ontologyPrimitive:\n | \"belief\"\n | \"evidence\"\n | \"source\"\n | \"question\"\n | \"judgment\"\n | \"worktree\"\n | \"branch\"\n | \"lens\"\n | \"edge\"\n | \"graph\"\n | \"task\"\n | \"policy\"\n | \"ontology\"\n | \"identity\";\n /** MCP surface tier — showcase (front page, every demo) or workhorse (complete CRUD, discovered when building) */\n tier: \"showcase\" | \"workhorse\";\n /** Hide this tool from public discovery surfaces. */\n internal?: boolean;\n /** Deprecation notice shown in contract-driven docs and discovery. */\n deprecated?: string;\n};\n\nexport type McpParameterDef = {\n type: \"string\" | \"number\" | \"boolean\" | \"array\" | \"object\";\n description: string;\n required?: boolean;\n enum?: string[];\n};\n\nexport type McpResponseDef = {\n description: string;\n fields: Record<string, string>;\n};\n\n// =============================================================================\n// BELIEF LIFECYCLE TOOLS\n// =============================================================================\n\nexport const CREATE_BELIEF: McpToolContract = {\n name: \"create_belief\",\n description:\n \"Commit a new belief (knowledge unit) to the reasoning graph. \" +\n \"Like `git commit` — creates an atomic, traceable knowledge object. \" +\n \"The belief starts as unscored (draft). Score it with modulate_confidence to freeze the formulation.\",\n parameters: {\n canonicalText: {\n type: \"string\",\n description: \"The belief statement — what the agent holds to be true\",\n },\n topicId: { type: \"string\", description: \"Topic scope for the belief\" },\n beliefType: {\n type: \"string\",\n description:\n \"Belief type (e.g., hypothesis, belief, principle, invariant, tenet, forecast). Validated against schemaEnumConfig.\",\n },\n metadata: {\n type: \"object\",\n description:\n \"Optional extra metadata merged into the node (e.g., { codeAnchors: ['path/to/file.ts'] } for coding intelligence)\",\n },\n },\n required: [\"canonicalText\", \"topicId\"],\n response: {\n description: \"The created canonical belief record\",\n fields: {\n id: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n beliefId: \"string — canonical belief ID\",\n text: \"string — canonical belief formulation\",\n topicId: \"string\",\n status: \"string — active | superseded | archived\",\n scoringState: \"string — unscored | scored\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const GET_BELIEF: McpToolContract = {\n name: \"get_belief\",\n description:\n \"Read one belief by ID. \" +\n \"Like `git show` — resolves the canonical belief payload for a single identifier.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical belief ID\" },\n },\n required: [\"id\"],\n response: {\n description: \"The canonical belief record\",\n fields: {\n id: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n beliefId: \"string — canonical belief ID\",\n text: \"string — canonical belief formulation\",\n topicId: \"string\",\n status: \"string — active | superseded | archived\",\n scoringState: \"string — unscored | scored\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const REFINE_BELIEF: McpToolContract = {\n name: \"refine_belief\",\n description:\n \"Amend a draft belief in-place within an active worktree. \" +\n \"Like `git commit --amend` — rewrites the last commit on a feature branch. \" +\n \"Only valid before merge to main. Fails if the belief is already scored.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to refine\" },\n canonicalText: { type: \"string\", description: \"Updated belief statement\" },\n rationale: { type: \"string\", description: \"Why the refinement was made\" },\n },\n required: [\"nodeId\", \"canonicalText\"],\n response: {\n description: \"The updated belief node\",\n fields: {\n nodeId: \"string\",\n canonicalText: \"string — updated text\",\n updatedAt: \"number — timestamp\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const MODULATE_CONFIDENCE: McpToolContract = {\n name: \"modulate_confidence\",\n description:\n \"Record a confidence change for a belief. \" +\n \"Like `git commit` to the credence log — an atomic, append-only write. \" +\n \"Each modulation is a new entry in the history, not an overwrite. \" +\n \"Scoring happens via merge; this tool records the individual data points. \" +\n \"Triggers: evidence_added, contradiction_detected, merge_outcome, manual, decay.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to score\" },\n confidence: { type: \"number\", description: \"Confidence level in [0, 1]\" },\n trigger: {\n type: \"string\",\n description: \"What caused this confidence change\",\n enum: [\n \"evidence_added\",\n \"contradiction_detected\",\n \"merge_outcome\",\n \"manual\",\n \"decay\",\n ],\n },\n rationale: {\n type: \"string\",\n description: \"Human-readable explanation of why confidence changed\",\n },\n },\n required: [\"nodeId\", \"confidence\", \"trigger\", \"rationale\"],\n response: {\n description: \"Confidence modulation result\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n newConfidence: \"number\",\n previousConfidence: \"number\",\n trigger: \"string\",\n requestId: \"string — request identifier for the scheduled cascade\",\n propagationSummary:\n \"object — bounded inline cascade summary with totalCandidateTargets, inlineTargets, and remainingTargetCount\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const FORK_BELIEF: McpToolContract = {\n name: \"fork_belief\",\n description:\n \"Branch off a scored belief to create a new version with a different formulation. \" +\n \"Like `git fork` — the parent remains immutable with full history. \" +\n \"The new belief gets a `supersedes` edge to the parent. \" +\n \"Fork reasons: refinement, contradiction_response, scope_change, confidence_collapse, manual.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The scored belief to fork from\" },\n newFormulation: {\n type: \"string\",\n description: \"The evolved belief statement\",\n },\n forkReason: {\n type: \"string\",\n description: \"Why this fork was created\",\n enum: [\n \"refinement\",\n \"contradiction_response\",\n \"scope_change\",\n \"confidence_collapse\",\n \"manual\",\n ],\n },\n },\n required: [\"nodeId\", \"newFormulation\", \"forkReason\"],\n response: {\n description: \"The forked canonical belief record\",\n fields: {\n id: \"string — canonical child belief ID\",\n nodeId: \"string — canonical child belief ID\",\n beliefId: \"string — canonical child belief ID\",\n parentBeliefId: \"string — canonical parent belief ID\",\n forkReason: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const ARCHIVE_BELIEF: McpToolContract = {\n name: \"archive_belief\",\n description:\n \"Soft-delete a belief by setting its status to archived. \" +\n \"Like `git rm` — removed from the working tree but preserved in history. \" +\n \"Beliefs are never truly deleted. Archived beliefs retain full lineage and confidence history.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to archive\" },\n rationale: {\n type: \"string\",\n description: \"Why this belief is being archived\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Archived canonical belief record\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n nodeId: \"string — canonical belief ID\",\n previousStatus: \"string | undefined\",\n newStatus: \"string — 'archived'\",\n status: \"string — 'archived'\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const CREATE_EPISTEMIC_CONTRACT: McpToolContract = {\n name: \"create_epistemic_contract\",\n description:\n \"Bind a machine-evaluable epistemic contract to a belief. \" +\n \"Like `git add` for falsification rules — records the verification condition, modulation policy, \" +\n \"and evaluation schedule that keep a belief accountable to reality.\",\n parameters: {\n beliefNodeId: {\n type: \"string\",\n description: \"The belief node to bind this contract to\",\n },\n title: {\n type: \"string\",\n description: \"Contract title\",\n },\n description: {\n type: \"string\",\n description: \"Optional contract description\",\n },\n conditionType: {\n type: \"string\",\n description: \"What kind of contract condition to evaluate\",\n enum: [\"assertion\", \"temporal\", \"evidential\", \"threshold\", \"composite\"],\n },\n direction: {\n type: \"string\",\n description: \"Whether satisfying the condition confirms or falsifies\",\n enum: [\"confirms\", \"falsifies\"],\n },\n condition: {\n type: \"object\",\n description:\n \"Condition payload: { expression, evaluator, evaluatorConfig? }\",\n },\n deadline: {\n type: \"number\",\n description: \"Optional Unix timestamp deadline for temporal contracts\",\n },\n compositeOf: {\n type: \"array\",\n description: \"Optional array of sub-contract IDs for composite contracts\",\n },\n compositeOperator: {\n type: \"string\",\n description: \"How composite sub-contracts should be combined\",\n enum: [\"all\", \"any\", \"majority\"],\n },\n modulation: {\n type: \"object\",\n description:\n \"Asymmetric modulation rules for confirmed, disconfirmed, expired, and partial outcomes\",\n },\n evaluationSchedule: {\n type: \"string\",\n description: \"When this contract should be evaluated\",\n enum: [\"on_demand\", \"on_evidence\", \"periodic\", \"event_driven\"],\n },\n periodicIntervalMs: {\n type: \"number\",\n description: \"Optional interval in milliseconds for periodic contracts\",\n },\n },\n required: [\n \"beliefNodeId\",\n \"title\",\n \"conditionType\",\n \"direction\",\n \"condition\",\n \"modulation\",\n \"evaluationSchedule\",\n ],\n response: {\n description: \"The created epistemic contract binding\",\n fields: {\n id: \"string — storage record ID\",\n contractId: \"string — contract identifier\",\n beliefId: \"string — canonical belief ID\",\n status: \"string — initial contract status\",\n title: \"string — contract title\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// EVIDENCE TOOLS\n// =============================================================================\n\nexport const ADD_EVIDENCE: McpToolContract = {\n name: \"add_evidence\",\n description:\n \"Commit evidence to the reasoning graph and attach it to a belief. \" +\n \"Like `git add && git commit` — an atomic write that creates a traceable evidence object. \" +\n \"Weight ranges from -1.0 (contradicts) to +1.0 (strongly supports). \" +\n \"Evidence is always context-bound: tied to its source, the time it was captured, and the belief it informs.\",\n parameters: {\n canonicalText: { type: \"string\", description: \"The evidence statement\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n sourceUrl: { type: \"string\", description: \"URL of the source material\" },\n targetNodeId: {\n type: \"string\",\n description: \"The belief this evidence bears on\",\n },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n reasoning: {\n type: \"string\",\n description: \"Why this evidence is relevant to the target belief\",\n },\n title: {\n type: \"string\",\n description: \"Optional short title for the evidence node\",\n },\n content: {\n type: \"string\",\n description:\n \"Optional long-form content (separate from canonicalText summary)\",\n },\n contentType: {\n type: \"string\",\n description:\n \"Content MIME type or format hint (e.g., 'text/markdown', 'code')\",\n },\n metadata: {\n type: \"object\",\n description:\n \"Optional extra metadata merged into the node (e.g., { codeAnchors: ['path/to/file.ts'], failedApproach: true } for coding intelligence)\",\n },\n },\n required: [\"canonicalText\", \"topicId\", \"targetNodeId\"],\n response: {\n description: \"The created evidence node and its edge\",\n fields: {\n nodeId: \"string — evidence node ID\",\n edgeId: \"string — edge to target belief\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// CONTRADICTION TOOLS\n// =============================================================================\n\nexport const FLAG_CONTRADICTION: McpToolContract = {\n name: \"flag_contradiction\",\n description:\n \"Flag a contradiction between two beliefs. Contradictions are first-class objects \" +\n \"with their own lifecycle — they may remain permanently unresolved. \" +\n \"Like a merge conflict that is allowed to persist. \" +\n \"Contradictions can trigger structural changes: forking, confidence collapse, or decision blocking. \" +\n \"Resolution is NEVER automatic — always surfaces for human review.\",\n parameters: {\n beliefA: {\n type: \"string\",\n description: \"First belief in the contradiction\",\n },\n beliefB: {\n type: \"string\",\n description: \"Second belief in the contradiction\",\n },\n description: { type: \"string\", description: \"What the tension is about\" },\n severity: {\n type: \"string\",\n description: \"How serious the contradiction is\",\n enum: [\"low\", \"medium\", \"high\", \"critical\"],\n },\n topicId: { type: \"string\", description: \"Topic scope\" },\n defeatType: {\n type: \"string\",\n description:\n \"Pollock defeat classification: rebuts (direct contradiction), undercuts (attacks the inferential link), undermines (attacks a premise)\",\n enum: [\"rebuts\", \"undercuts\", \"undermines\"],\n },\n },\n required: [\"beliefA\", \"beliefB\", \"description\", \"topicId\"],\n response: {\n description: \"The created contradiction object\",\n fields: {\n contradictionId: \"string\",\n status: \"string — 'unresolved'\",\n beliefA: \"string\",\n beliefB: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// WORKTREE TOOLS (git worktree add, git merge)\n// =============================================================================\n\nexport const ADD_WORKTREE: McpToolContract = {\n name: \"add_worktree\",\n description:\n \"Check out a branch into an active worktree for investigation. \" +\n \"Like `git worktree add <branch>` — creates independent working state on a thematic branch. \" +\n \"Beliefs committed within the worktree can be freely amended (draft code on a feature branch). \" +\n \"When investigation is complete, `merge` integrates findings into main.\",\n parameters: {\n title: { type: \"string\", description: \"Worktree name/objective\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n branchId: {\n type: \"string\",\n description: \"The branch this worktree investigates\",\n },\n objective: {\n type: \"string\",\n description:\n \"Plain-text reasoning objective to auto-shape into a hypothesis, questions, tasks, and dependencies\",\n },\n hypothesis: {\n type: \"string\",\n description: \"The testable claim this worktree investigates\",\n },\n beliefIds: {\n type: \"array\",\n description: \"Beliefs to test in this worktree\",\n },\n autoShape: {\n type: \"boolean\",\n description:\n \"Whether to invoke inquiry auto-shaping during worktree creation\",\n },\n domainPackId: {\n type: \"string\",\n description:\n \"Optional domain pack whose shaping hooks should influence generated questions and tasks\",\n },\n executionOrder: {\n type: \"number\",\n description: \"Global execution order for this worktree\",\n },\n dependsOn: {\n type: \"array\",\n description: \"Worktree IDs that must complete before this one can activate\",\n },\n blocks: {\n type: \"array\",\n description: \"Worktree IDs blocked by this worktree\",\n },\n gate: {\n type: \"string\",\n description: \"Exit gate name for this worktree\",\n },\n },\n required: [\"title\", \"topicId\"],\n response: {\n description: \"The created worktree\",\n fields: {\n worktreeId: \"string\",\n branchId: \"string | null\",\n status: \"string — usually 'planning' or 'active'\",\n title: \"string\",\n hypothesis: \"string | null\",\n questionCount: \"number\",\n taskCount: \"number\",\n autoShapeApplied: \"boolean\",\n frameworkSuggestions: \"array\",\n dependencySuggestions: \"array\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\nexport const MERGE: McpToolContract = {\n name: \"merge\",\n description:\n \"Merge a worktree's findings into the stable knowledge base (main). \" +\n \"Like `git merge` to main — formulations freeze, confidence is recorded, findings are integrated. \" +\n \"Each belief gets a confidence score and rationale. After merge, beliefs can only evolve via fork. \" +\n \"Low-confidence beliefs may need forking.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to merge\" },\n outcomes: {\n type: \"array\",\n description:\n \"Scoring outcomes for each belief: { beliefId, confidence, rationale }\",\n },\n summary: { type: \"string\", description: \"Overall findings summary\" },\n },\n required: [\"worktreeId\", \"outcomes\"],\n response: {\n description: \"Merge result\",\n fields: {\n worktreeId: \"string\",\n status: \"string — 'merged'\",\n beliefsScored: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// LINEAGE AND AUDIT TOOLS\n// =============================================================================\n\nexport const QUERY_LINEAGE: McpToolContract = {\n name: \"query_lineage\",\n description:\n \"Trace a belief's full ancestry — every fork, score, and confidence modulation. \" +\n \"Like `git log --graph`. \" +\n \"Returns the complete evolution chain showing how understanding developed over time. \" +\n \"Lineage is permanent and can never be erased (Invariant #3).\",\n parameters: {\n nodeId: { type: \"string\", description: \"Starting node to trace from\" },\n depth: {\n type: \"number\",\n description: \"How many generations to traverse (default: 5)\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Canonical lineage result\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n lineage: \"array — ancestry entries with beliefId, nodeId, formulation, forkReason, and createdAt\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const GET_CONFIDENCE_HISTORY: McpToolContract = {\n name: \"get_confidence_history\",\n description:\n \"Get the full confidence history for a belief. \" +\n \"Each entry records the confidence level, trigger, rationale, and actor. \" +\n \"Like `git log` for a single metric — append-only, never overwritten.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to get history for\" },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Confidence history entries\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n entries: \"array — { confidence, trigger, rationale, timestamp, userId }\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const GET_AUDIT_TRAIL: McpToolContract = {\n name: \"get_audit_trail\",\n description:\n \"Get the full audit trail for a node — every mutation, who made it, when, and why. \" +\n \"Like `git blame` for knowledge. \" +\n \"All state transitions are explicit, attributable, and permanently queryable. \" +\n \"No silent changes are possible (Invariant #14).\",\n parameters: {\n nodeId: { type: \"string\", description: \"The node to audit\" },\n limit: {\n type: \"number\",\n description: \"Maximum entries to return (default: 50)\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description: \"Audit trail entries\",\n fields: {\n entries: \"array — { action, actor, timestamp, before, after, rationale }\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// GRAPH QUERY TOOLS\n// =============================================================================\n\nexport const TRAVERSE_GRAPH: McpToolContract = {\n name: \"traverse_graph\",\n description:\n \"Walk the reasoning graph from a starting node. \" +\n \"Like `git log --graph` — traverses connected lineage across nodes and edges. \" +\n \"Traversal follows epistemic layers: L4 (judgments) → L3 (beliefs, questions) → L2 (evidence) → L1 (sources). \" +\n \"Never skips layers. \" +\n \"Use direction 'up' to trace what a piece of evidence supports, 'down' to trace what supports a judgment.\",\n parameters: {\n startNode: { type: \"string\", description: \"Node to start traversal from\" },\n direction: {\n type: \"string\",\n description: \"Traversal direction\",\n enum: [\"up\", \"down\", \"both\"],\n },\n maxDepth: {\n type: \"number\",\n description: \"Maximum traversal depth (default: 3)\",\n },\n },\n required: [\"startNode\"],\n response: {\n description: \"Subgraph of traversed nodes and edges\",\n fields: {\n nodes: \"array — traversed nodes\",\n edges: \"array — traversed edges\",\n depth: \"number\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_GRAPH_NEIGHBORHOOD: McpToolContract = {\n name: \"get_graph_neighborhood\",\n description:\n \"Retrieve the local neighborhood around one or more graph nodes. \" +\n \"Like `git log --graph --boundary` for a focused reasoning window. \" +\n \"Returns the canonical neighborhood payload shared by HTTP and SDK graph surfaces.\",\n parameters: {\n globalId: {\n type: \"string\",\n description: \"Single root node global identifier.\",\n },\n globalIds: {\n type: \"array\",\n description: \"Optional list of root node global identifiers.\",\n },\n maxDepth: {\n type: \"number\",\n description: \"Maximum traversal depth (default: 2).\",\n },\n },\n required: [],\n response: {\n description: \"Canonical graph neighborhood payload\",\n fields: {\n nodes: \"array — graph nodes in the returned neighborhood\",\n edges: \"array — graph edges in the returned neighborhood\",\n depth: \"number — deepest traversed node depth\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const TRACE_ENTITY_IMPACT: McpToolContract = {\n name: \"trace_entity_impact\",\n description:\n \"Returns code-grounded beliefs, contracts, migration states, and failed attempts \" +\n \"anchored to a specific file or function path. \" +\n \"Like `git log -- <path>` — filters the knowledge graph to nodes anchored to a file path \" +\n \"via metadata.codeAnchors. Results are separated by coding belief type: decisions, contracts, \" +\n \"migrations, patterns, deprecations, and failures.\",\n parameters: {\n nodeId: {\n type: \"string\",\n description: \"Entity node ID to trace impact from\",\n },\n },\n required: [\"nodeId\"],\n response: {\n description:\n \"Entity impact trace: direct beliefs, evidence, and indirect belief reach\",\n fields: {\n entityNodeId: \"string — the traced entity\",\n entityType: \"string — nodeType of the entity\",\n directBeliefConnections:\n \"array — beliefs directly connected via bridge edges\",\n evidenceConnections: \"array — evidence referencing this entity\",\n indirectBeliefConnections: \"array — beliefs reached through evidence\",\n totalBeliefReach: \"number — total unique beliefs impacted\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const SEARCH_BELIEFS: McpToolContract = {\n name: \"search_beliefs\",\n description:\n \"Search for beliefs in the reasoning graph. \" +\n \"Like `git grep` — finds relevant beliefs across the full history and active state. \" +\n \"Supports semantic search, filtering by status (unscored, scored, archived), \" +\n \"confidence thresholds, and topic scope. \" +\n \"Returns beliefs with their current confidence, lineage depth, and contradiction count.\",\n parameters: {\n query: { type: \"string\", description: \"Semantic search query\" },\n status: {\n type: \"string\",\n description: \"Filter by belief status\",\n enum: [\"unscored\", \"scored\", \"archived\"],\n },\n minConfidence: {\n type: \"number\",\n description: \"Minimum confidence threshold (0-1)\",\n },\n topicId: { type: \"string\", description: \"Filter by topic\" },\n limit: { type: \"number\", description: \"Maximum results (default: 10)\" },\n },\n required: [\"query\"],\n response: {\n description: \"Matching beliefs with metadata\",\n fields: {\n results:\n \"array — { nodeId, canonicalText, confidence, status, contradictionCount }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const SEARCH_RESOURCES: McpToolContract = {\n name: \"search_resources\",\n description:\n \"Search beliefs, evidence, and questions in one cross-resource call. \" +\n \"Like `git grep` across the reasoning stack — returns one ranked payload with grouped hits by resource type.\",\n parameters: {\n q: { type: \"string\", description: \"Search query\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n types: {\n type: \"array\",\n description: \"Optional resource filters: belief, evidence, question\",\n },\n status: {\n type: \"string\",\n description: \"Optional belief/question status filter\",\n },\n minConfidence: {\n type: \"number\",\n description: \"Optional minimum belief confidence threshold\",\n },\n limit: { type: \"number\", description: \"Maximum results (default: 25)\" },\n cursor: { type: \"string\", description: \"Optional pagination cursor\" },\n },\n required: [\"q\", \"topicId\"],\n response: {\n description: \"Canonical cross-resource search payload\",\n fields: {\n q: \"string — echoed query text\",\n topicId: \"string — canonical topic scope\",\n types: \"array — the resource types included in the search\",\n results: \"array — ranked mixed resource hits\",\n beliefs: \"array — grouped belief hits\",\n evidence: \"array — grouped evidence hits\",\n questions: \"array — grouped question hits\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const FIND_CONTRADICTIONS: McpToolContract = {\n name: \"find_contradictions\",\n description:\n \"Find contradictions in the reasoning graph — beliefs that are in tension with each other. \" +\n \"Like a merge conflict in `git` — surfaces incompatible states that require explicit resolution. \" +\n \"Contradictions are first-class objects that may remain permanently unresolved. \" +\n \"They can block judgments, trigger forks, or collapse confidence. \" +\n \"Filter by project, status (unresolved, resolved, accepted), and severity.\",\n parameters: {\n topicId: { type: \"string\", description: \"Filter by topic\" },\n nodeId: {\n type: \"string\",\n description: \"Find contradictions involving a specific belief\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status\",\n enum: [\"unresolved\", \"resolved\", \"accepted\"],\n },\n },\n required: [],\n response: {\n description: \"Contradiction objects\",\n fields: {\n contradictions:\n \"array — { beliefA, beliefB, description, severity, status, defeatType }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// EDGE TOOLS\n// =============================================================================\n\nexport const CREATE_EDGE: McpToolContract = {\n name: \"create_edge\",\n description:\n \"Commit a typed relationship between two nodes in the reasoning graph. \" +\n \"Like `git commit` — an atomic write that declares a dependency between nodes. \" +\n \"The engine enforces layer transition rules — for example, L1 → L3 direct edges are forbidden (must go through L2).\",\n parameters: {\n sourceId: {\n type: \"string\",\n description: \"Source node of the relationship\",\n },\n targetId: {\n type: \"string\",\n description: \"Target node of the relationship\",\n },\n edgeType: {\n type: \"string\",\n description:\n \"Relationship type (informs, tests, depends_on, supersedes, etc.)\",\n },\n weight: {\n type: \"number\",\n description:\n \"Edge weight: -1.0 to +1.0 for informs edges, 0-1 for structural\",\n },\n reasoning: { type: \"string\", description: \"Why this relationship exists\" },\n reasoningMethod: {\n type: \"string\",\n description: \"How this was determined\",\n enum: [\"deductive\", \"inductive\", \"abductive\", \"analogical\", \"empirical\"],\n },\n },\n required: [\"sourceId\", \"targetId\", \"edgeType\"],\n response: {\n description: \"The created edge\",\n fields: {\n globalId: \"string — edge identifier\",\n edgeType: \"string\",\n fromLayer: \"string\",\n toLayer: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// JUDGMENT TOOLS (Phase 1: new vocabulary, aliased to decision implementation)\n// =============================================================================\n\nexport const RECORD_JUDGMENT: McpToolContract = {\n name: \"record_judgment\",\n description:\n \"Record a judgment — an irreversible commitment based on the current epistemic state. \" +\n \"Like a `git tag` marking a release. \" +\n \"A judgment synthesizes beliefs, evidence, and uncertainties into a determination. \" +\n \"Once issued, a judgment is evaluated against the epistemic state that existed when it was made \" +\n \"(knowledge horizon evaluation, Invariant #10).\",\n parameters: {\n title: { type: \"string\", description: \"Short judgment statement\" },\n rationale: {\n type: \"string\",\n description: \"Full reasoning behind the judgment\",\n },\n topicId: { type: \"string\", description: \"Topic scope\" },\n beliefIds: {\n type: \"array\",\n description: \"Beliefs that warrant this judgment\",\n },\n confidence: {\n type: \"number\",\n description: \"Confidence in the judgment (0-1)\",\n },\n },\n required: [\"title\", \"rationale\", \"topicId\"],\n response: {\n description: \"The recorded judgment\",\n fields: {\n judgmentId: \"string\",\n title: \"string\",\n status: \"string — 'issued'\",\n },\n },\n ownerModule: \"decision-state\",\n ontologyPrimitive: \"judgment\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// LENS TOOLS (workspace-scoped operational frames)\n// =============================================================================\n\nexport const CREATE_LENS: McpToolContract = {\n name: \"create_lens\",\n description:\n \"Create a reusable lens that overlays a workspace topic with a specific analytical perspective. \" +\n \"Like `git branch <name>` for operational scaffolding — a lens persists across worktrees and carries prompts, workflows, and task templates. \" +\n \"Multiple topics in the same workspace can reuse the same lens.\",\n parameters: {\n name: {\n type: \"string\",\n description: \"Lens name (e.g., 'market dynamics', 'team quality')\",\n },\n workspaceId: {\n type: \"string\",\n description:\n \"Workspace scope for the lens. Required unless topicId resolves to a workspace-scoped topic.\",\n },\n topicId: {\n type: \"string\",\n description:\n \"Optional originating topic scope. Lenses remain reusable across topics even when this is set.\",\n },\n description: {\n type: \"string\",\n description: \"What this lens is designed to investigate or monitor\",\n },\n perspectiveType: {\n type: \"string\",\n description:\n \"Perspective type for the lens. Validated against schemaEnumConfig category 'lens_perspective_type'.\",\n enum: [...LENS_PERSPECTIVE_TYPES],\n },\n promptTemplates: {\n type: \"array\",\n description: \"Langfuse prompt references used when operating through this lens\",\n },\n workflowTemplates: {\n type: \"array\",\n description: \"Guided workflow templates for lens-driven investigations\",\n },\n taskTemplates: {\n type: \"array\",\n description: \"Default task templates instantiated when the lens is applied\",\n },\n filterCriteria: {\n type: \"object\",\n description: \"Belief/evidence filtering rules applied by the lens\",\n },\n },\n required: [\"name\", \"perspectiveType\"],\n response: {\n description: \"The created lens\",\n fields: {\n lensId: \"string\",\n name: \"string\",\n workspaceId: \"string\",\n status: \"string — 'active'\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"showcase\",\n};\n\nexport const LIST_LENSES: McpToolContract = {\n name: \"list_lenses\",\n description:\n \"List reusable lenses for a workspace, optionally scored by whether they are active on a topic. \" +\n \"Like `git branch --list` — shows the available named frames you can activate. \" +\n \"When topicId is provided, the response can indicate which lenses are already applied there.\",\n parameters: {\n workspaceId: {\n type: \"string\",\n description: \"Workspace scope to list lenses from\",\n },\n topicId: {\n type: \"string\",\n description:\n \"Optional topic scope used to derive workspace and annotate applied lenses\",\n },\n status: {\n type: \"string\",\n description: \"Filter by lens lifecycle status\",\n enum: [\"draft\", \"active\", \"archived\"],\n },\n perspectiveType: {\n type: \"string\",\n description: \"Filter by perspective type\",\n enum: [...LENS_PERSPECTIVE_TYPES],\n },\n },\n required: [],\n response: {\n description: \"Available lenses\",\n fields: {\n lenses:\n \"array — each item includes lensId, name, workspaceId, perspectiveType, status, and optional isAppliedToTopic\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"workhorse\",\n};\n\nexport const APPLY_LENS_TO_TOPIC: McpToolContract = {\n name: \"apply_lens_to_topic\",\n description:\n \"Apply a lens to a topic so it becomes an active perspective overlay. \" +\n \"Like `git checkout <branch>` for a reusable frame — the topic keeps its knowledge, but the active lens shapes guidance and retrieval. \" +\n \"Multiple active lenses can coexist on the same topic.\",\n parameters: {\n lensId: { type: \"string\", description: \"Lens to activate on the topic\" },\n topicId: { type: \"string\", description: \"Topic that should receive the lens\" },\n },\n required: [\"lensId\", \"topicId\"],\n response: {\n description: \"Lens activation result\",\n fields: {\n bindingId: \"string\",\n lensId: \"string\",\n topicId: \"string\",\n status: \"string — 'active'\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"workhorse\",\n};\n\nexport const REMOVE_LENS_FROM_TOPIC: McpToolContract = {\n name: \"remove_lens_from_topic\",\n description:\n \"Remove an active lens overlay from a topic. \" +\n \"Like `git switch` away from a frame — the topic remains, but the lens stops shaping the investigation context. \" +\n \"Historical binding state is preserved for auditability.\",\n parameters: {\n lensId: { type: \"string\", description: \"Lens to remove from the topic\" },\n topicId: { type: \"string\", description: \"Topic that currently has the lens applied\" },\n },\n required: [\"lensId\", \"topicId\"],\n response: {\n description: \"Lens removal result\",\n fields: {\n bindingId: \"string\",\n lensId: \"string\",\n topicId: \"string\",\n status: \"string — 'removed'\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"lens\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// PUSH TOOLS (git push)\n// =============================================================================\n\nexport const PUSH: McpToolContract = {\n name: \"push\",\n description:\n \"Push scored beliefs from a merged worktree to other contexts. \" +\n \"Like `git push` — makes local findings available on the remote. \" +\n \"Only merged beliefs can be pushed. \" +\n \"Publication makes findings visible to other projects, teams, or external consumers.\",\n parameters: {\n worktreeId: {\n type: \"string\",\n description: \"The merged worktree whose findings to push\",\n },\n targetContext: {\n type: \"string\",\n description: \"Where to push (e.g., 'portfolio', 'ic_review', 'external')\",\n },\n beliefIds: {\n type: \"array\",\n description: \"Optional subset of beliefs to push (default: all scored)\",\n },\n },\n required: [\"worktreeId\", \"targetContext\"],\n response: {\n description: \"Push result\",\n fields: {\n pushedCount: \"number\",\n targetContext: \"string\",\n pushedAt: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// PULL REQUEST TOOLS (git pull request)\n// =============================================================================\n\nexport const OPEN_PULL_REQUEST: McpToolContract = {\n name: \"open_pull_request\",\n description:\n \"Open a pull request for peer review before merging a worktree. \" +\n \"Like opening a `git pull request` — the worktree's findings are ready but await approval before merge. \" +\n \"Reviewers can approve, request changes, or block the merge. \" +\n \"This is the gate between draft work and scored knowledge.\",\n parameters: {\n worktreeId: {\n type: \"string\",\n description: \"The worktree to submit for review\",\n },\n reviewers: {\n type: \"array\",\n description: \"User IDs of requested reviewers\",\n },\n summary: {\n type: \"string\",\n description: \"Summary of findings and why they're ready for merge\",\n },\n },\n required: [\"worktreeId\", \"summary\"],\n response: {\n description: \"The pull request\",\n fields: {\n pullRequestId: \"string\",\n worktreeId: \"string\",\n status: \"string — 'pending_review'\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// FORENSIC TOOLS (git bisect)\n// =============================================================================\n\nexport const BISECT_CONFIDENCE: McpToolContract = {\n name: \"bisect_confidence\",\n description:\n \"Find when a belief's confidence diverged from reality. \" +\n \"Like `git bisect` — binary search through the credence history to find the inflection point. \" +\n \"Given a belief that is now known to be wrong (or right), traces back through \" +\n \"confidence modulations to identify which evidence or event caused the divergence.\",\n parameters: {\n nodeId: { type: \"string\", description: \"The belief to bisect\" },\n expectedDirection: {\n type: \"string\",\n description: \"Was confidence too high or too low?\",\n enum: [\"overconfident\", \"underconfident\"],\n },\n timeRange: {\n type: \"object\",\n description:\n \"Optional time range to search within: { start: number, end: number }\",\n },\n },\n required: [\"nodeId\", \"expectedDirection\"],\n response: {\n description: \"The inflection point in confidence history\",\n fields: {\n beliefId: \"string — canonical belief ID\",\n expectedDirection: \"string — overconfident | underconfident\",\n inflectionEntry:\n \"object — the confidence modulation where divergence began\",\n triggerEvent: \"string | null — what caused the divergence\",\n confidenceBefore: \"number | null\",\n confidenceAfter: \"number | null\",\n totalEntries: \"number\",\n inflectionIndex: \"number | null\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// GRAPH INTELLIGENCE TOOLS\n// =============================================================================\n\nexport const DETECT_CONFIRMATION_BIAS: McpToolContract = {\n name: \"detect_confirmation_bias\",\n description:\n \"Detect confirmation bias in the evidence graph. \" +\n \"Like `git diff --stat` for reasoning — analyzes the ratio of supporting vs challenging evidence \" +\n \"per belief and flags beliefs where the evidence is suspiciously one-sided. \" +\n \"Returns risk classification (critical/high/moderate/healthy).\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic to analyze\" },\n threshold: {\n type: \"number\",\n description: \"Bias threshold (0-1, default 0.7)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Beliefs with bias scores, risk levels, and evidence counts\",\n fields: {\n beliefs:\n \"array — { nodeId, biasScore, riskLevel, supportingCount, challengingCount }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const GET_GRAPH_STRUCTURE_ANALYSIS: McpToolContract = {\n name: \"get_graph_structure_analysis\",\n description:\n \"Run comprehensive structural analysis on the knowledge graph. \" +\n \"Like `git fsck` combined with PageRank — runs 14 algorithmic detectors including \" +\n \"PageRank centrality, Louvain community detection, Tarjan SCC, Fiedler vector spectral analysis, \" +\n \"Bayesian surprise, and overconfidence detection.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic to analyze\" },\n },\n required: [\"topicId\"],\n response: {\n description:\n \"Structural analysis with detector results and recommendations\",\n fields: {\n topicId: \"string — canonical topic scope\",\n metric: \"string — analysis metric identifier\",\n payload: \"object — detector results, recommendations, graph metrics\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const GET_FALSIFICATION_QUESTIONS: McpToolContract = {\n name: \"get_falsification_questions\",\n description:\n \"Generate Popperian falsification questions for beliefs. \" +\n \"Like `git test` — identifies the questions most likely to disprove current beliefs. \" +\n \"Karl Popper as a tool: surfaces what would need to be true to invalidate each belief.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic to analyze\" },\n beliefIds: { type: \"array\", description: \"Specific beliefs to target\" },\n },\n required: [\"topicId\"],\n response: {\n description:\n \"Questions with falsification potential scores and target beliefs\",\n fields: {\n questions:\n \"array — { questionText, falsificationPotential, targetBeliefId, targetBeliefText }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"question\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// SOURCES & RESEARCH TOOLS\n// =============================================================================\n\nexport const SEARCH_SOURCES: McpToolContract = {\n name: \"search_sources\",\n description:\n \"Search and ingest external sources into the knowledge graph. \" +\n \"Like `git fetch` — pulls information from external sources (web, documents, APIs) \" +\n \"and stages it for evidence creation. Does not commit — you decide what becomes evidence.\",\n parameters: {\n query: { type: \"string\", description: \"Search query\" },\n sources: {\n type: \"array\",\n description: \"Source types to search: web, news, academic\",\n },\n },\n required: [\"query\"],\n response: {\n description:\n \"Results with source metadata, relevance scores, and suggested evidence\",\n fields: {\n results:\n \"array — { title, url, snippet, relevanceScore, suggestedEvidence }\",\n },\n },\n ownerModule: \"research-engine\",\n ontologyPrimitive: \"source\",\n tier: \"showcase\",\n};\n\nexport const EXECUTE_DEEP_RESEARCH: McpToolContract = {\n name: \"execute_deep_research\",\n description:\n \"Execute multi-source deep research on a topic. \" +\n \"Like `git submodule update --recursive` — launches a comprehensive research agent that searches \" +\n \"multiple sources, synthesizes findings, and produces a structured report. \" +\n \"Auto-links results to relevant questions and beliefs.\",\n parameters: {\n query: { type: \"string\", description: \"Research question or topic\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n depth: {\n type: \"string\",\n description: \"Research depth: quick, standard, deep\",\n enum: [\"quick\", \"standard\", \"deep\"],\n },\n },\n required: [\"query\", \"topicId\"],\n response: {\n description:\n \"Report with findings, sources, auto-linked evidence and questions\",\n fields: {\n report:\n \"object — { summary, findings, sources, linkedEvidence, linkedQuestions }\",\n },\n },\n ownerModule: \"research-engine\",\n ontologyPrimitive: \"source\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// EVIDENCE OPERATION TOOLS\n// =============================================================================\n\nexport const SEARCH_EVIDENCE: McpToolContract = {\n name: \"search_evidence\",\n description:\n \"Search for evidence across the reasoning graph. \" +\n \"Like `git grep` — returns the evidence records that best match a textual query. \" +\n \"Results share the same canonical semantics as the HTTP and SDK evidence search surface.\",\n parameters: {\n q: { type: \"string\", description: \"Search text\" },\n topicId: { type: \"string\", description: \"Topic scope filter\" },\n targetId: {\n type: \"string\",\n description: \"Optional belief or question identifier to scope the search\",\n },\n limit: { type: \"number\", description: \"Max results\" },\n cursor: { type: \"string\", description: \"Pagination cursor\" },\n },\n required: [\"q\"],\n response: {\n description: \"Canonical evidence search results page\",\n fields: {\n results:\n \"array — { evidenceId, nodeId, globalId?, text, source?, kind?, relevanceScore }\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const CREATE_EVIDENCE: McpToolContract = {\n name: \"create_evidence\",\n description:\n \"Commit evidence to the reasoning graph. \" +\n \"Like `git commit` — creates a traceable evidence record with canonical public IDs. \" +\n \"Optionally links the evidence to a belief or question in the same operation.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n text: { type: \"string\", description: \"Canonical evidence text\" },\n source: { type: \"string\", description: \"Source URL or source label\" },\n targetId: {\n type: \"string\",\n description: \"Optional belief or question identifier to link immediately\",\n },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n metadata: {\n type: \"object\",\n description: \"Optional metadata merged into the canonical evidence node\",\n },\n title: { type: \"string\", description: \"Optional short title\" },\n content: { type: \"string\", description: \"Optional long-form content\" },\n contentType: {\n type: \"string\",\n description: \"Optional content format or MIME hint\",\n },\n kind: { type: \"string\", description: \"Optional evidence kind\" },\n },\n required: [\"topicId\", \"text\"],\n response: {\n description: \"The created canonical evidence record\",\n fields: {\n id: \"string — canonical evidence ID\",\n nodeId: \"string — canonical evidence ID\",\n evidenceId: \"string — canonical evidence ID\",\n text: \"string\",\n topicId: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const GET_EVIDENCE: McpToolContract = {\n name: \"get_evidence\",\n description:\n \"Read one evidence record by ID. \" +\n \"Like `git show` — resolves the canonical evidence payload for a single identifier.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical evidence ID\" },\n },\n required: [\"id\"],\n response: {\n description: \"The canonical evidence record\",\n fields: {\n id: \"string — canonical evidence ID\",\n nodeId: \"string — canonical evidence ID\",\n evidenceId: \"string — canonical evidence ID\",\n text: \"string\",\n topicId: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const LIST_EVIDENCE: McpToolContract = {\n name: \"list_evidence\",\n description:\n \"List evidence records within a topic or linked to a target. \" +\n \"Like `git log -- path` — returns the canonical evidence page for a topic, belief, or question scope.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope filter\" },\n targetId: {\n type: \"string\",\n description: \"Optional belief or question identifier to scope by linkage\",\n },\n limit: { type: \"number\", description: \"Max results\" },\n cursor: { type: \"string\", description: \"Pagination cursor\" },\n },\n required: [],\n response: {\n description: \"Canonical evidence page\",\n fields: {\n evidence: \"array — canonical evidence records\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const LINK_EVIDENCE: McpToolContract = {\n name: \"link_evidence\",\n description:\n \"Link evidence to a belief or question. \" +\n \"Like `git notes add` — attaches a supporting or contradicting edge without rewriting the evidence itself.\",\n parameters: {\n evidenceId: { type: \"string\", description: \"Canonical evidence ID\" },\n targetId: {\n type: \"string\",\n description: \"Canonical belief or question ID\",\n },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n rationale: { type: \"string\", description: \"Why this link exists\" },\n },\n required: [\"evidenceId\", \"targetId\"],\n response: {\n description: \"The created canonical evidence edge summary\",\n fields: {\n edgeId: \"string\",\n evidenceId: \"string\",\n targetId: \"string\",\n targetType: \"string — belief | question\",\n weight: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"workhorse\",\n};\n\nexport const LINK_EVIDENCE_TO_BELIEF: McpToolContract = {\n name: \"link_evidence_to_belief\",\n description:\n \"Link evidence to a belief with a support weight. \" +\n \"Like `git add` — stages evidence in support of (or against) a belief. \" +\n \"The weight ranges from -1.0 (strongly contradicts) to +1.0 (strongly supports).\",\n parameters: {\n evidenceId: { type: \"string\", description: \"The evidence node ID\" },\n beliefId: { type: \"string\", description: \"The belief node ID\" },\n weight: {\n type: \"number\",\n description: \"Support weight: -1.0 (contradicts) to +1.0 (supports)\",\n },\n rationale: { type: \"string\", description: \"Why this evidence is relevant\" },\n },\n required: [\"evidenceId\", \"beliefId\", \"weight\"],\n response: {\n description: \"The created edge linking evidence to belief\",\n fields: {\n edgeId: \"string\",\n evidenceId: \"string\",\n beliefId: \"string\",\n weight: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// QUESTION OPERATION TOOLS\n// =============================================================================\n\nexport const CREATE_QUESTION: McpToolContract = {\n name: \"create_question\",\n description:\n \"Commit an investigation question to the reasoning graph. \" +\n \"Like `git issue` — creates a traceable question that drives research and evidence collection. \" +\n \"Questions test beliefs and guide worktree investigation.\",\n parameters: {\n text: { type: \"string\", description: \"The question text\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n priority: {\n type: \"string\",\n description: \"Priority: urgent, high, medium, low\",\n enum: [\"urgent\", \"high\", \"medium\", \"low\"],\n },\n linkedBeliefId: {\n type: \"string\",\n description: \"Belief this question tests\",\n },\n metadata: {\n type: \"object\",\n description: \"Optional metadata merged into the question record\",\n },\n },\n required: [\"text\", \"topicId\"],\n response: {\n description: \"The created canonical question record\",\n fields: {\n id: \"string — canonical question ID\",\n nodeId: \"string — canonical question ID\",\n questionId: \"string — canonical question ID\",\n text: \"string\",\n status: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const GET_QUESTION: McpToolContract = {\n name: \"get_question\",\n description:\n \"Read one question by ID. \" +\n \"Like `git show` — resolves the canonical question payload for a single identifier.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical question ID\" },\n },\n required: [\"id\"],\n response: {\n description: \"The canonical question record\",\n fields: {\n id: \"string — canonical question ID\",\n nodeId: \"string — canonical question ID\",\n questionId: \"string — canonical question ID\",\n text: \"string\",\n status: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const REFINE_QUESTION: McpToolContract = {\n name: \"refine_question\",\n description:\n \"Refine a question's framing or scope. \" +\n \"Like `git commit --amend` for questions — updates the question text \" +\n \"while preserving its identity and linked evidence.\",\n parameters: {\n id: { type: \"string\", description: \"The question to refine\" },\n text: { type: \"string\", description: \"Updated question text\" },\n rationale: {\n type: \"string\",\n description: \"Why the question is being refined\",\n },\n },\n required: [\"id\", \"text\"],\n response: {\n description: \"The refined question\",\n fields: {\n id: \"string\",\n questionId: \"string\",\n updatedText: \"string\",\n previousText: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const LIST_QUESTIONS: McpToolContract = {\n name: \"list_questions\",\n description:\n \"List questions scoped to a topic or worktree. \" +\n \"Like `git issue list` — returns questions with their status, priority, and linked belief context. \" +\n \"Supports filtering by status and priority.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n worktreeId: { type: \"string\", description: \"Filter to worktree scope\" },\n status: {\n type: \"string\",\n description: \"Filter by canonical question status\",\n enum: [\"open\", \"researching\", \"answered\", \"parked\", \"closed\"],\n },\n priority: {\n type: \"string\",\n description: \"Filter by canonical question priority\",\n enum: [\"urgent\", \"high\", \"medium\", \"low\"],\n },\n limit: { type: \"number\", description: \"Max results\" },\n cursor: { type: \"string\", description: \"Pagination cursor\" },\n },\n required: [\"topicId\"],\n response: {\n description: \"Canonical question page\",\n fields: {\n questions: \"array — canonical question records\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const ANSWER_QUESTION: McpToolContract = {\n name: \"answer_question\",\n description:\n \"Answer a question with optional evidence links. \" +\n \"Like `git commit` on the question thread — records the answer and closes the loop with a canonical answered state.\",\n parameters: {\n id: { type: \"string\", description: \"Canonical question ID\" },\n text: { type: \"string\", description: \"Answer text\" },\n confidence: {\n type: \"string\",\n description: \"Optional answer confidence\",\n enum: [\"weak\", \"medium\", \"strong\"],\n },\n evidenceIds: {\n type: \"array\",\n description: \"Optional canonical evidence IDs supporting the answer\",\n },\n rationale: { type: \"string\", description: \"Why this answer is credible\" },\n },\n required: [\"id\", \"text\"],\n response: {\n description: \"Answer result\",\n fields: {\n questionId: \"string\",\n answerId: \"string\",\n status: \"string — answered\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_QUESTION_STATUS: McpToolContract = {\n name: \"update_question_status\",\n description:\n \"Transition a question's status through its lifecycle. \" +\n \"Like `git issue update` — moves a question through the canonical reasoning lifecycle. \" +\n \"Status transitions preserve history and keep linked evidence intact.\",\n parameters: {\n id: { type: \"string\", description: \"The question to update\" },\n status: {\n type: \"string\",\n description: \"New status\",\n enum: [\"open\", \"researching\", \"answered\", \"parked\", \"closed\"],\n },\n rationale: { type: \"string\", description: \"Why the status is changing\" },\n },\n required: [\"id\", \"status\"],\n response: {\n description: \"Updated question status\",\n fields: {\n id: \"string\",\n questionId: \"string\",\n previousStatus: \"string\",\n newStatus: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const ARCHIVE_QUESTION: McpToolContract = {\n name: \"archive_question\",\n description:\n \"Archive a question no longer relevant to current investigation scope. \" +\n \"Like `git issue close` — removes it from active work while preserving audit history. \" +\n \"Archived questions keep their existing links to beliefs and evidence.\",\n parameters: {\n questionId: { type: \"string\", description: \"The question to archive\" },\n reason: {\n type: \"string\",\n description: \"Why the question is being archived\",\n },\n },\n required: [\"questionId\"],\n response: {\n description: \"Archive confirmation\",\n fields: {\n questionId: \"string\",\n status: \"string — 'archived'\",\n archivedAt: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const LINK_EVIDENCE_TO_QUESTION: McpToolContract = {\n name: \"link_evidence_to_question\",\n description:\n \"Link evidence to the question it helps answer. \" +\n \"Like `git notes add` — attaches supporting detail to an active question. \" +\n \"Question-level links improve answer quality and traceability to beliefs.\",\n parameters: {\n evidenceId: { type: \"string\", description: \"The evidence to link\" },\n questionId: {\n type: \"string\",\n description: \"The question this evidence addresses\",\n },\n relevance: { type: \"number\", description: \"Relevance score in [0,1]\" },\n rationale: {\n type: \"string\",\n description: \"How this evidence bears on the question\",\n },\n },\n required: [\"evidenceId\", \"questionId\"],\n response: {\n description: \"The created edge\",\n fields: {\n edgeId: \"string\",\n evidenceId: \"string\",\n questionId: \"string\",\n relevance: \"number\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"edge\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// ANSWER LIFECYCLE TOOLS\n// =============================================================================\n\nexport const CREATE_ANSWER: McpToolContract = {\n name: \"create_answer\",\n description:\n \"Create an answer node responding to a question. \" +\n \"Like `git commit` for resolved questions — creates an immutable answer snapshot at L2. \" +\n \"New answers supersede old ones, preserving full version history. \" +\n \"Answers link to supporting evidence via based_on edges.\",\n parameters: {\n questionNodeId: {\n type: \"string\",\n description: \"The question node ID this answers\",\n },\n answerText: {\n type: \"string\",\n description: \"The answer content — the actual response to the question\",\n },\n topicId: {\n type: \"string\",\n description: \"Topic scope (optional if question already has topicId)\",\n },\n confidence: {\n type: \"string\",\n description:\n \"Answer confidence: definitive, strong, moderate, weak, speculative\",\n },\n evidenceNodeIds: {\n type: \"array\",\n description: \"Supporting evidence node IDs to link via based_on edges\",\n },\n answerSource: {\n type: \"string\",\n description:\n \"How the answer was produced: human, ai_generated, deep_research, synthesis\",\n },\n },\n required: [\"questionNodeId\", \"answerText\"],\n response: {\n description: \"The created answer node with version metadata\",\n fields: {\n nodeId: \"string — unique node identifier\",\n globalId: \"string — globally unique ID\",\n versionNumber: \"number — version of this answer (auto-incremented)\",\n questionNodeId: \"string — the question this answers\",\n confidence: \"string — answer confidence level\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\nexport const GET_ANSWER: McpToolContract = {\n name: \"get_answer\",\n description:\n \"Get the latest answer for a question. \" +\n \"Like `git show HEAD` for a question's resolution — returns the active answer snapshot. \" +\n \"Returns null if the question is unanswered.\",\n parameters: {\n questionNodeId: {\n type: \"string\",\n description: \"The question node ID to get the answer for\",\n },\n },\n required: [\"questionNodeId\"],\n response: {\n description: \"The active answer node or null\",\n fields: {\n nodeId: \"string | null\",\n globalId: \"string | null\",\n answerText: \"string | null\",\n versionNumber: \"number\",\n isLatest: \"boolean\",\n evidenceCount: \"number\",\n confidence: \"string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"evidence\",\n tier: \"workhorse\",\n};\n\nexport const GET_HIGH_PRIORITY_QUESTIONS: McpToolContract = {\n name: \"get_high_priority_questions\",\n description:\n \"Rank open questions by urgency and expected decision impact. \" +\n \"Like `git issue list --sort=priority` — brings the highest-leverage open questions to the top. \" +\n \"Ranking accounts for linked belief criticality and evidence gaps.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n limit: { type: \"number\", description: \"Maximum results (default: 20)\" },\n includeAnswered: {\n type: \"boolean\",\n description: \"Include answered questions (default: false)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Priority-ranked questions\",\n fields: {\n questions:\n \"array — { questionId, text, priority, urgencyScore, linkedBeliefCount, evidenceGapCount }\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\nexport const FIND_MISSING_QUESTIONS: McpToolContract = {\n name: \"find_missing_questions\",\n description:\n \"Identify beliefs missing testing questions. \" +\n \"Like `git diff --check` — surfaces reasoning coverage gaps before merge. \" +\n \"Returns candidate beliefs that need explicit question coverage.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n minConfidence: {\n type: \"number\",\n description: \"Only check beliefs above this confidence (default: 0)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Beliefs missing testing questions\",\n fields: {\n gaps: \"array — { beliefId, canonicalText, confidence, suggestedQuestions }\",\n totalGaps: \"number\",\n },\n },\n ownerModule: \"graph-search\",\n ontologyPrimitive: \"question\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// LISTING & QUERY TOOLS\n// =============================================================================\n\nexport const LIST_BELIEFS: McpToolContract = {\n name: \"list_beliefs\",\n description:\n \"List beliefs scoped to a topic or worktree. \" +\n \"Like `git log --oneline` — returns beliefs with their confidence, status, and scoring state. \" +\n \"Supports filtering by status and confidence threshold.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n worktreeId: { type: \"string\", description: \"Filter to worktree scope\" },\n status: {\n type: \"string\",\n description: \"Filter: unscored, scored, archived\",\n enum: [\"unscored\", \"scored\", \"archived\"],\n },\n minConfidence: {\n type: \"number\",\n description: \"Minimum confidence threshold\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Canonical belief page\",\n fields: {\n beliefs: \"array — canonical belief records\",\n nextCursor: \"string | null\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const LIST_WORKTREES: McpToolContract = {\n name: \"list_worktrees\",\n description:\n \"List all worktrees for a topic. \" +\n \"Like `git worktree list` — shows active and completed investigation branches \" +\n \"with their phase, status, and belief counts.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n status: {\n type: \"string\",\n description: \"Filter: active, merged, abandoned\",\n enum: [\"active\", \"merged\", \"abandoned\"],\n },\n },\n required: [\"topicId\"],\n response: {\n description:\n \"Worktrees with phase, status, belief count, and creation time\",\n fields: {\n worktrees:\n \"array — { worktreeId, title, phase, status, beliefCount, createdAt }\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const LIST_ALL_WORKTREES: McpToolContract = {\n name: \"list_all_worktrees\",\n description:\n \"List ALL worktrees across ALL topics in one query. No topic scope required. \" +\n \"Like `git worktree list --all` — returns the complete pipeline inventory with \" +\n \"track, trackPosition, executionBand, dependencies, and status. \" +\n \"Supports filtering by status, track, and executionBand. \" +\n \"This is the PM's primary pipeline query — one call, full picture.\",\n parameters: {\n status: {\n type: \"string\",\n description:\n \"Filter by status: planning, active, completed, abandoned, superseded, long_term, idea, paused, suggested, dismissed\",\n enum: [\n \"planning\",\n \"active\",\n \"completed\",\n \"abandoned\",\n \"superseded\",\n \"long_term\",\n \"idea\",\n \"paused\",\n \"suggested\",\n \"dismissed\",\n ],\n },\n track: {\n type: \"string\",\n description:\n \"Filter by track name (e.g., 'ontology', 'tc-scope', 'control-plane', 'dev-portal', 'mcp-sdk-parity')\",\n },\n executionBand: {\n type: \"number\",\n description:\n \"Filter by execution band number (e.g., 1, 2, 3). Returns only worktrees in that parallel execution group.\",\n },\n limit: {\n type: \"number\",\n description: \"Maximum results to return (default: 500, max: 1000)\",\n },\n },\n required: [],\n response: {\n description: \"All worktrees across all topics with full pipeline metadata\",\n fields: {\n worktrees:\n \"array — { worktreeId, title, topicId, topicName, phase, status, hypothesis, track, trackPosition, executionBand, executionOrder, dependsOn, blocks, gate, createdAt }\",\n total: \"number — total count after filtering\",\n tracks: \"object — { trackName: count } summary of worktrees per track\",\n bands:\n \"object — { bandNumber: count } summary of worktrees per execution band\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"showcase\",\n};\n\nexport const ACTIVATE_WORKTREE: McpToolContract = {\n name: \"activate_worktree\",\n description:\n \"Activate a worktree to begin investigation. \" +\n \"Like `git checkout <branch>` — transitions a worktree from planning to active status. \" +\n \"Sets the initial phase and enables belief/question editing within the worktree scope.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to activate\" },\n },\n required: [\"worktreeId\"],\n response: {\n description: \"Activation result with initial phase\",\n fields: {\n worktreeId: \"string\",\n status: \"string — 'active'\",\n phase: \"string\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_WORKTREE_TARGETS: McpToolContract = {\n name: \"update_worktree_targets\",\n description:\n \"Update the target beliefs and questions tracked by a worktree. \" +\n \"Like `git add/rm <files>` — stages or unstages beliefs/questions for investigation \" +\n \"within the worktree scope. Supports adding and removing targets atomically.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to update\" },\n addBeliefIds: {\n type: \"array\",\n description: \"Belief node IDs to add to the worktree\",\n },\n addQuestionIds: {\n type: \"array\",\n description: \"Question node IDs to add to the worktree\",\n },\n removeBeliefIds: {\n type: \"array\",\n description: \"Belief node IDs to remove from the worktree\",\n },\n removeQuestionIds: {\n type: \"array\",\n description: \"Question node IDs to remove from the worktree\",\n },\n },\n required: [\"worktreeId\"],\n response: {\n description: \"Updated target counts\",\n fields: {\n worktreeId: \"string\",\n beliefCount: \"number\",\n questionCount: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_WORKTREE_METADATA: McpToolContract = {\n name: \"update_worktree_metadata\",\n description:\n \"Update worktree sequencing metadata — execution order, dependencies, blocking relations, and gates. \" +\n \"Like `git config` for a worktree — sets the scheduling and dependency metadata that determines \" +\n \"when this worktree can activate relative to others. Use to backfill or correct sequencing data.\",\n parameters: {\n worktreeId: { type: \"string\", description: \"The worktree to update\" },\n hypothesis: {\n type: \"string\",\n description: \"Testable claim this worktree investigates\",\n },\n executionOrder: {\n type: \"number\",\n description: \"Global execution order (1 = first, higher = later)\",\n },\n dependsOn: {\n type: \"array\",\n description:\n \"Worktree IDs that must complete before this one can activate\",\n },\n blocks: {\n type: \"array\",\n description: \"Worktree IDs that are blocked until this one completes\",\n },\n gate: {\n type: \"string\",\n description: \"Exit gate name (e.g., 'gate:ontology-schema-hardened')\",\n },\n rationale: {\n type: \"string\",\n description: \"Why this worktree is sequenced here\",\n },\n objective: {\n type: \"string\",\n description: \"What we're trying to learn/prove\",\n },\n proofArtifacts: {\n type: \"array\",\n description:\n \"Typed proof artifacts that define what evidence or deliverables this worktree must emit before it can claim success.\",\n },\n staffingHint: {\n type: \"string\",\n description:\n \"Advisory staffing shape for the worktree (for example `backend+tests` or `fullstack`).\",\n },\n lastReconciledAt: {\n type: \"number\",\n description:\n \"Timestamp of the last deterministic workflow reconciliation pass against this worktree.\",\n },\n autoFixPolicy: {\n type: \"object\",\n description:\n \"Calibrated auto-fix policy controlling dry-run vs safe execution, per-run action caps, and permitted mutation tiers.\",\n },\n track: {\n type: \"string\",\n description:\n \"Parallel workstream name (e.g., 'ontology', 'tc-scope', 'control-plane', 'dev-portal', 'mcp-sdk-parity', 'execution-program'). Groups worktrees into named lanes for pipeline visualization and PM analysis.\",\n },\n trackPosition: {\n type: \"number\",\n description:\n \"Position within the track (1-indexed). E.g., TC-A=1, TC-B=2, TC-C=3 within the 'tc-scope' track.\",\n },\n executionBand: {\n type: \"number\",\n description:\n \"Parallel execution band number. All worktrees in the same band can run simultaneously. Band 2 = OE-B + TC-A, Band 3 = TC-B + 11D-R + S2-13A, etc.\",\n },\n status: {\n type: \"string\",\n description:\n \"Override the worktree status. Use for lifecycle transitions like marking a worktree superseded, long-term, or as a raw idea.\",\n enum: [\n \"suggested\",\n \"planning\",\n \"active\",\n \"paused\",\n \"completed\",\n \"dismissed\",\n \"abandoned\",\n \"superseded\",\n \"long_term\",\n \"idea\",\n ],\n },\n topicId: {\n type: \"string\",\n description:\n \"Reassign this worktree's primary topic. Validates the target topic exists before updating.\",\n },\n additionalTopicIds: {\n type: \"array\",\n description:\n \"Set additional topic associations for cross-topic worktrees. Each topic ID is validated before updating. \" +\n \"Use when a worktree spans multiple knowledge domains.\",\n },\n },\n required: [\"worktreeId\"],\n response: {\n description: \"Update confirmation\",\n fields: { worktreeId: \"string\", success: \"boolean\" },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"worktree\",\n tier: \"workhorse\",\n};\n\nexport const IDENTITY_WHOAMI: McpToolContract = {\n name: \"identity_whoami\",\n description:\n \"Read the authenticated identity summary for the current session. \" +\n \"Like `git config --get user.name` — shows who the current MCP session is acting as.\",\n parameters: {},\n required: [],\n response: {\n description: \"Canonical identity summary for the current session\",\n fields: {\n principalId: \"string — canonical federated principal identifier\",\n principalType: \"string — human, service, or agent\",\n tenantId: \"string | undefined — resolved tenant scope\",\n workspaceId: \"string | undefined — resolved workspace scope\",\n scopes: \"string[] | undefined — granted scopes for this session\",\n roles: \"string[] | undefined — canonical roles for this session\",\n },\n },\n ownerModule: \"identity-core\",\n ontologyPrimitive: \"identity\",\n tier: \"workhorse\",\n};\n\nexport const COMPILE_CONTEXT: McpToolContract = {\n name: \"compile_context\",\n description:\n \"Compile a focused reasoning context for a topic. \" +\n \"Like `git log --graph --decorate` for the reasoning substrate — returns the canonical Pillar 3 context pack through the public API shape.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope ID to compile\",\n },\n query: {\n type: \"string\",\n description: \"Optional focus query used to rank context items\",\n },\n budget: {\n type: \"number\",\n description: \"Token budget for prompt injection planning\",\n },\n ranking: {\n type: \"string\",\n description: \"Ranking profile for context ordering\",\n enum: [\"baseline_v1\", \"weighted_v1\"],\n },\n limit: {\n type: \"number\",\n description: \"Optional per-section item limit\",\n },\n maxDepth: {\n type: \"number\",\n description: \"Optional descendant topic depth for neighborhood expansion\",\n },\n includeEntities: {\n type: \"boolean\",\n description: \"Include related ontological entities in the compiled result\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Compiled context pack for the requested topic\",\n fields: {\n schemaVersion: \"string\",\n topicId: \"string\",\n topicName: \"string\",\n scopedTopicIds: \"array — topic IDs included in the compilation neighborhood\",\n generatedAt:\n \"number — deterministic graph-backed reference timestamp for this compilation\",\n ranking: \"string — baseline_v1 | weighted_v1\",\n summary: \"object — counts and scoped health signals\",\n invariants: \"array — high-confidence invariant beliefs\",\n activeBeliefs: \"array — current high-signal beliefs\",\n openQuestions: \"array — unresolved questions ranked for this query\",\n recentEvidence: \"array — recent evidence ranked for this query\",\n contradictions: \"array — unresolved contradiction records\",\n relatedEntities: \"array | undefined — ranked ontological entities in scope\",\n contextNarrative: \"array — guidance for prompt assembly\",\n injectionPolicy: \"object — token-budgeted section selections\",\n diagnostics: \"object — scoring and utilization telemetry\",\n },\n },\n ownerModule: \"reasoning-kernel\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// POLICY / ACL TOOLS\n// =============================================================================\n\nexport const CHECK_PERMISSION: McpToolContract = {\n name: \"check_permission\",\n description:\n \"Check whether a principal can read or mutate a topic scope. \" +\n \"Like `git check-ref-format` for ACLs — validates whether the requested operation is allowed before execution.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope to evaluate\" },\n permission: {\n type: \"string\",\n description: \"Permission to evaluate\",\n enum: [\"read\", \"write\"],\n },\n principal: {\n type: \"string\",\n description:\n \"Optional principal override (defaults to current principal)\",\n },\n beliefClusterId: {\n type: \"string\",\n description: \"Optional neighborhood scope within a topic\",\n },\n },\n required: [\"topicId\", \"permission\"],\n response: {\n description: \"Permission evaluation result\",\n fields: {\n allowed: \"boolean\",\n decision: \"string — allow | deny\",\n reasonCode: \"string\",\n principalId: \"string\",\n topicId: \"string\",\n permission: \"string — read | write\",\n },\n },\n ownerModule: \"access-control\",\n ontologyPrimitive: \"policy\",\n tier: \"workhorse\",\n};\n\nexport const FILTER_BY_PERMISSION: McpToolContract = {\n name: \"filter_by_permission\",\n description:\n \"Filter a topic set down to ACL-authorized topics. \" +\n \"Like `git rev-list --ancestry-path` for policy boundaries — keeps only topics permitted for the requested action.\",\n parameters: {\n topicIds: { type: \"array\", description: \"Topic IDs to evaluate\" },\n permission: {\n type: \"string\",\n description: \"Permission filter\",\n enum: [\"read\", \"write\"],\n },\n principal: {\n type: \"string\",\n description: \"Optional principal override (tenant admin only)\",\n },\n },\n required: [\"topicIds\", \"permission\"],\n response: {\n description: \"Allowed/denied split for the requested topic set\",\n fields: {\n permission: \"string — read | write\",\n allowedTopicIds: \"array — topic IDs allowed by policy\",\n deniedTopics: \"array — { topicId, reasonCode }\",\n count: \"number\",\n },\n },\n ownerModule: \"access-control\",\n ontologyPrimitive: \"policy\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// OBSERVATION TOOLS\n// =============================================================================\n\nexport const INGEST_OBSERVATION: McpToolContract = {\n name: \"ingest_observation\",\n description:\n \"Record an observational delta for a topic context stream. \" +\n \"Like `git notes add` — attaches structured observation metadata without mutating graph state directly. \" +\n \"Used by watcher/cowork agents to stage candidate updates before explicit write confirmation.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope for the observation\",\n },\n observationType: {\n type: \"string\",\n description: \"Observation class\",\n enum: [\n \"claim\",\n \"evidence\",\n \"question\",\n \"contradiction\",\n \"judgment\",\n \"note\",\n ],\n },\n summary: {\n type: \"string\",\n description: \"Human-readable observation summary\",\n },\n source: {\n type: \"string\",\n description: \"Optional source (message ID, tool name, URL, etc.)\",\n },\n confidence: { type: \"number\", description: \"Optional confidence in [0,1]\" },\n tags: { type: \"array\", description: \"Optional observation tags\" },\n metadata: {\n type: \"object\",\n description: \"Optional structured metadata payload\",\n },\n },\n required: [\"topicId\", \"observationType\", \"summary\"],\n response: {\n description: \"Recorded observation entry\",\n fields: {\n observationId: \"string\",\n topicId: \"string\",\n observationType: \"string\",\n createdAt: \"number\",\n contextResourceUri: \"string\",\n },\n },\n ownerModule: \"agent-harness\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_OBSERVATION_CONTEXT: McpToolContract = {\n name: \"get_observation_context\",\n description:\n \"Retrieve observer-ready context for a topic, including recent deltas and semantic matches. \" +\n \"Like `git log --grep` — shows recent context and filtered matches across observation history. \" +\n \"This powers prompt context injection without mutating graph state.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n query: {\n type: \"string\",\n description: \"Optional semantic query over observation history\",\n },\n limit: {\n type: \"number\",\n description: \"Maximum entries in each returned collection\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Observation context payload\",\n fields: {\n topicId: \"string\",\n totalObservations: \"number\",\n latest: \"array\",\n semanticMatches: \"array\",\n byType: \"object\",\n generatedAt: \"number\",\n },\n },\n ownerModule: \"agent-harness\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// TASK LIFECYCLE TOOLS\n// =============================================================================\n\nexport const CREATE_TASK: McpToolContract = {\n name: \"create_task\",\n description:\n \"Create an execution task tied to the reasoning state. \" +\n \"Like `git task` — tracks concrete work items (calls to make, data to gather, analyses to run) \" +\n \"linked to questions, beliefs, or worktrees.\",\n parameters: {\n title: { type: \"string\", description: \"Task description\" },\n topicId: { type: \"string\", description: \"Topic scope\" },\n taskType: {\n type: \"string\",\n description: \"Type: research, interview, analysis, data_collection\",\n enum: [\"research\", \"interview\", \"analysis\", \"data_collection\"],\n },\n linkedQuestionId: {\n type: \"string\",\n description: \"Question this task addresses\",\n },\n linkedWorktreeId: { type: \"string\", description: \"Worktree scope\" },\n },\n required: [\"title\", \"topicId\"],\n response: {\n description: \"The created task\",\n fields: {\n taskId: \"string\",\n status: \"string — 'pending'\",\n createdAt: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\nexport const COMPLETE_TASK: McpToolContract = {\n name: \"complete_task\",\n description:\n \"Mark a task as complete with an output summary. \" +\n \"Like `git tag` for work items — records the discrete completion event and captures what was learned. \" +\n \"Completed tasks feed back into the evidence graph.\",\n parameters: {\n taskId: { type: \"string\", description: \"The task to complete\" },\n outputSummary: {\n type: \"string\",\n description: \"What was accomplished or learned\",\n },\n evidenceCreated: {\n type: \"boolean\",\n description: \"Whether new evidence was created from this task\",\n },\n },\n required: [\"taskId\", \"outputSummary\"],\n response: {\n description: \"The completed task\",\n fields: {\n taskId: \"string\",\n completedAt: \"number\",\n outputSummary: \"string\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_TASK: McpToolContract = {\n name: \"update_task\",\n description:\n \"Update a task's fields — relink to a different worktree, belief, or question, change title/priority/status. \" +\n \"Like `git task edit` — mutates an existing task in place instead of requiring recreate-plus-supersede.\",\n parameters: {\n taskId: { type: \"string\", description: \"The task to update\" },\n linkedWorktreeId: {\n type: \"string\",\n description: \"Reassign this task to a different worktree\",\n },\n linkedBeliefId: {\n type: \"string\",\n description: \"Link or relink this task to a belief node\",\n },\n linkedQuestionId: {\n type: \"string\",\n description: \"Link or relink this task to a question node\",\n },\n title: { type: \"string\", description: \"Updated task title\" },\n description: {\n type: \"string\",\n description: \"Updated task description\",\n },\n priority: {\n type: \"string\",\n description: \"Updated priority\",\n enum: [\"critical\", \"high\", \"medium\", \"low\"],\n },\n status: {\n type: \"string\",\n description: \"Updated status\",\n enum: [\"todo\", \"in_progress\", \"blocked\", \"done\"],\n },\n },\n required: [\"taskId\"],\n response: {\n description: \"The updated task\",\n fields: {\n taskId: \"string\",\n updatedAt: \"number\",\n },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\nexport const LIST_TASKS: McpToolContract = {\n name: \"list_tasks\",\n description:\n \"List tasks for a topic or worktree. \" +\n \"Like `git task list` — returns tasks with status, priority, and linked nodes. \" +\n \"Filter by worktree to see tasks for a specific investigation, or by status to find incomplete work.\",\n parameters: {\n topicId: { type: \"string\", description: \"Topic scope\" },\n linkedWorktreeId: {\n type: \"string\",\n description: \"Filter to tasks linked to this worktree\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status: todo, in_progress, blocked, done\",\n enum: [\"todo\", \"in_progress\", \"blocked\", \"done\"],\n },\n limit: { type: \"number\", description: \"Maximum results (default: 100)\" },\n },\n required: [\"topicId\"],\n response: {\n description: \"List of tasks with metadata\",\n fields: { tasks: \"array of task objects\", count: \"number\" },\n },\n ownerModule: \"workflow-engine\",\n ontologyPrimitive: \"task\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// TOPIC TOOLS (git init, git remote)\n// =============================================================================\n\nexport const CREATE_TOPIC: McpToolContract = {\n name: \"create_topic\",\n description:\n \"Create a new topic container for scoping knowledge. \" +\n \"Like `git init` — initializes a new repository for a knowledge domain. \" +\n \"Topics are hierarchical: a deal topic can nest under a theme topic. \" +\n \"Types: domain, theme, deal, strategy, constitution, project, portfolio.\",\n parameters: {\n name: { type: \"string\", description: \"Topic name\" },\n type: {\n type: \"string\",\n description:\n \"Topic type. Validated against schemaEnumConfig category 'topic_type'.\",\n },\n description: { type: \"string\", description: \"What this topic covers\" },\n parentTopicId: {\n type: \"string\",\n description: \"Optional parent topic for nesting\",\n },\n createdBy: { type: \"string\", description: \"Who created this topic\" },\n },\n required: [\"name\", \"type\"],\n response: {\n description: \"The created topic\",\n fields: {\n id: \"string — topic ID\",\n globalId: \"string — globally unique ID\",\n depth: \"number — nesting depth\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const LIST_TOPICS: McpToolContract = {\n name: \"list_topics\",\n description:\n \"List topics, optionally filtered by type or parent. \" +\n \"Like `git remote -v` — shows all knowledge containers with their types and hierarchy.\",\n parameters: {\n type: {\n type: \"string\",\n description: \"Filter by topic type (e.g., 'theme', 'deal')\",\n },\n parentTopicId: {\n type: \"string\",\n description: \"Filter to children of this parent\",\n },\n status: {\n type: \"string\",\n description: \"Filter by status\",\n enum: [\"active\", \"archived\", \"watching\"],\n },\n },\n required: [],\n response: {\n description: \"List of topics with metadata\",\n fields: {\n topics: \"array — { id, name, type, depth, status, parentTopicId }\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_TOPIC: McpToolContract = {\n name: \"get_topic\",\n description:\n \"Get one topic by ID. \" +\n \"Like `git remote show origin` — inspects a single knowledge container in detail.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Canonical topic ID to retrieve\",\n },\n id: {\n type: \"string\",\n description: \"Legacy alias for topicId\",\n },\n },\n required: [],\n response: {\n description: \"Single topic record\",\n fields: {\n topic:\n \"object — { id, globalId, name, type, depth, status, parentTopicId, description }\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const UPDATE_TOPIC: McpToolContract = {\n name: \"update_topic\",\n description:\n \"Update an existing topic's metadata. \" +\n \"Like `git remote set-url` — changes the canonical configuration for a knowledge container without recreating it.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Canonical topic ID to update\",\n },\n id: {\n type: \"string\",\n description: \"Legacy alias for topicId\",\n },\n name: { type: \"string\", description: \"Updated topic name\" },\n description: { type: \"string\", description: \"Updated topic description\" },\n type: {\n type: \"string\",\n description:\n \"Updated topic type. Validated against schemaEnumConfig category 'topic_type'.\",\n },\n ontologyId: {\n type: \"string\",\n description: \"Updated ontology binding\",\n },\n clearOntologyId: {\n type: \"boolean\",\n description: \"Clear the current ontology binding\",\n },\n status: {\n type: \"string\",\n description: \"Updated topic status\",\n enum: [\"active\", \"archived\", \"watching\"],\n },\n visibility: {\n type: \"string\",\n description: \"Updated topic visibility\",\n enum: [\"private\", \"team\", \"firm\", \"external\", \"public\"],\n },\n },\n required: [],\n response: {\n description: \"The updated topic\",\n fields: {\n id: \"string — topic ID\",\n globalId: \"string — globally unique ID\",\n status: \"string — topic lifecycle status\",\n visibility: \"string — topic visibility\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\nexport const GET_TOPIC_TREE: McpToolContract = {\n name: \"get_topic_tree\",\n description:\n \"Get the full topic hierarchy from a root. \" +\n \"Like `git log --graph --all` — shows the complete tree of nested topics.\",\n parameters: {\n rootId: { type: \"string\", description: \"Root topic to start from\" },\n maxDepth: {\n type: \"number\",\n description: \"Maximum depth to traverse (default: 5)\",\n },\n },\n required: [\"rootId\"],\n response: {\n description: \"Tree of topics with nesting\",\n fields: { tree: \"array — topics in BFS order with depth and path\" },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"graph\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// CODING INTELLIGENCE TOOLS (code-grounded knowledge)\n// =============================================================================\n\nexport const GET_CODE_CONTEXT: McpToolContract = {\n name: \"get_code_context\",\n description:\n \"Returns code-grounded beliefs, contracts, migration states, and failed attempts anchored to a specific file or function path. \" +\n \"Like `git log -- <path>` — filters the knowledge graph to nodes anchored to a file path via metadata.codeAnchors. \" +\n \"Results are separated by coding belief type: decisions, contracts, migrations, patterns, deprecations, and failures.\",\n parameters: {\n filePath: {\n type: \"string\",\n description:\n \"File path to search for (partial matches supported, e.g. 'epistemicBeliefs.ts' or 'convex/epistemicBeliefs.ts')\",\n },\n topicId: {\n type: \"string\",\n description: \"Topic scope (optional, uses default if not provided)\",\n },\n includeFailures: {\n type: \"boolean\",\n description: \"Whether to include failed attempt evidence (default: true)\",\n },\n },\n required: [\"filePath\"],\n response: {\n description: \"Code-anchored beliefs and evidence grouped by type\",\n fields: {\n filePath: \"string — queried path\",\n decisions: \"array — implementation_decision beliefs\",\n contracts: \"array — interface_contract beliefs\",\n migrations: \"array — migration_state beliefs\",\n patterns: \"array — code_pattern beliefs\",\n deprecations: \"array — deprecation_notice beliefs\",\n failures: \"array — failed attempt evidence\",\n totalMatched: \"number\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"belief\",\n tier: \"showcase\",\n};\n\nexport const GET_CHANGE_HISTORY: McpToolContract = {\n name: \"get_change_history\",\n description:\n \"Returns recent changes and decisions for a file path — the 'why' behind recent code changes. \" +\n \"Like `git log --follow <path>` — shows the evolution of understanding anchored to a specific file. \" +\n \"Searches beliefs and evidence updated recently, sorted by most recent first.\",\n parameters: {\n filePath: { type: \"string\", description: \"File path to get history for\" },\n topicId: { type: \"string\", description: \"Topic scope (optional)\" },\n limit: { type: \"number\", description: \"Max results (default: 10)\" },\n },\n required: [\"filePath\"],\n response: {\n description: \"Recent code-anchored changes sorted by recency\",\n fields: {\n filePath: \"string — queried path\",\n changes:\n \"array — nodes with coding view (nodeId, beliefType, canonicalText, codeAnchors, timestamps)\",\n totalFound: \"number\",\n showing: \"number\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"belief\",\n tier: \"workhorse\",\n};\n\nexport const RECORD_ATTEMPT: McpToolContract = {\n name: \"record_attempt\",\n description:\n \"Log a failed approach as evidence linked to a belief. \" +\n \"Like `git stash` for failed experiments — preserves what was tried so the same mistake isn't repeated. \" +\n \"Creates evidence with metadata.failedApproach=true and metadata.codeAnchors. \" +\n \"The key anti-repetition mechanism: future agents check the failure log before trying new approaches.\",\n parameters: {\n description: {\n type: \"string\",\n description: \"What was attempted and why it failed\",\n },\n filePaths: {\n type: \"array\",\n description: \"File paths involved in the attempt\",\n },\n errorMessage: {\n type: \"string\",\n description: \"Error message or failure reason\",\n },\n linkedBeliefId: {\n type: \"string\",\n description:\n \"Belief this attempt was targeting (creates -0.5 weight edge)\",\n },\n topicId: { type: \"string\", description: \"Topic scope (optional)\" },\n },\n required: [\"description\"],\n response: {\n description: \"The recorded failed attempt evidence node\",\n fields: {\n nodeId: \"string — evidence node ID\",\n edgeId: \"string | null — edge to linked belief\",\n recorded: \"boolean — true\",\n filePaths: \"array — anchored file paths\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\nexport const GET_FAILURE_LOG: McpToolContract = {\n name: \"get_failure_log\",\n description:\n \"Search past failed attempts matching a task description. \" +\n \"Like `git log --grep='FAILED'` — finds evidence of what was tried before and didn't work. \" +\n \"Before trying a new approach, check this log to avoid repeating the same mistake. \" +\n \"Filters to evidence with metadata.failedApproach=true, sorted by recency.\",\n parameters: {\n query: {\n type: \"string\",\n description: \"Description of the task or approach to search for\",\n },\n filePath: {\n type: \"string\",\n description: \"Optional file path to narrow results\",\n },\n topicId: { type: \"string\", description: \"Topic scope (optional)\" },\n limit: { type: \"number\", description: \"Max results (default: 5)\" },\n },\n required: [\"query\"],\n response: {\n description: \"Failed attempts matching the query\",\n fields: {\n query: \"string — search query\",\n failures: \"array — failed attempt evidence with coding view\",\n totalFound: \"number\",\n showing: \"number\",\n },\n },\n ownerModule: \"coding-intelligence\",\n ontologyPrimitive: \"evidence\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// GRAPH SELF-INTELLIGENCE TOOLS\n// =============================================================================\n\nexport const GET_TOPIC_COVERAGE: McpToolContract = {\n name: \"get_topic_coverage\",\n description:\n \"Returns per-topic belief/question/evidence counts across the topic tree. \" +\n \"Like `git diff --stat` for the knowledge graph — shows coverage density \" +\n \"and empty spots across the topic hierarchy. Use to identify which topics \" +\n \"need more beliefs, which lack questions, and overall graph health.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope ID (optional, uses default if not provided)\",\n },\n includeDescendants: {\n type: \"boolean\",\n description:\n \"Whether to include descendant topics in the coverage report (default: true)\",\n },\n maxDepth: {\n type: \"number\",\n description:\n \"Maximum descendant topic depth for neighborhood expansion. \" +\n \"Defaults to 4 for root/theme scopes, 2 for deeper scopes.\",\n },\n },\n required: [],\n response: {\n description: \"Per-topic coverage metrics and aggregate summary\",\n fields: {\n topics:\n \"array — per-topic { topicId, name, type, depth, beliefs, questions, evidence, coverage }\",\n summary:\n \"object — { totalTopics, coveredTopics, emptyTopics, coveragePercent, totalBeliefs, totalQuestions, totalEvidence }\",\n scopeTopicId: \"string — the root topic used for scoping\",\n },\n },\n ownerModule: \"coverage-intelligence\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\nexport const GET_GRAPH_GAPS: McpToolContract = {\n name: \"get_graph_gaps\",\n description:\n \"Identify structural gaps in the knowledge graph — empty topics, beliefs \" +\n \"without questions, beliefs without evidence, and orphan edges. \" +\n \"Like `git fsck` for reasoning coverage — surfaces holes that weaken \" +\n \"the epistemic foundation. Returns prioritized gap list.\",\n parameters: {\n topicId: {\n type: \"string\",\n description: \"Topic scope ID (optional, uses default if not provided)\",\n },\n maxDepth: {\n type: \"number\",\n description:\n \"Maximum descendant topic depth for neighborhood expansion (default: 4)\",\n },\n },\n required: [\"topicId\"],\n response: {\n description: \"Prioritized list of graph gaps by category\",\n fields: {\n emptyTopics:\n \"array — topics with zero beliefs { topicId, name, type, depth }\",\n beliefsWithoutQuestions:\n \"array — beliefs that have no testing questions { nodeId, canonicalText, topicId }\",\n beliefsWithoutEvidence:\n \"array — beliefs that have no supporting evidence { nodeId, canonicalText, topicId }\",\n summary:\n \"object — { totalGaps, emptyTopicCount, untestedBeliefCount, unsupportedBeliefCount }\",\n scopeTopicId: \"string — the root topic used for scoping\",\n },\n },\n ownerModule: \"coverage-intelligence\",\n ontologyPrimitive: \"graph\",\n tier: \"showcase\",\n};\n\n// =============================================================================\n// SESSION INITIALIZATION\n// =============================================================================\n\n// =============================================================================\n// WRITE POLICY (S2-13K Graph Compounding)\n// =============================================================================\n\nexport const MANAGE_WRITE_POLICY: McpToolContract = {\n name: \"manage_write_policy\",\n description:\n \"Manage write policies for MCP mutation tools. \" +\n \"Like `git config` for write permissions — sets per-topic or global \" +\n \"policies that control which roles can mutate the graph.\",\n parameters: {\n action: {\n type: \"string\",\n description:\n \"Action to perform: 'get' (read policies) or 'set' (upsert a policy)\",\n enum: [\"get\", \"set\"],\n },\n topicId: {\n type: \"string\",\n description: \"Topic scope for the policy. Omit for global policies.\",\n },\n role: {\n type: \"string\",\n description:\n \"Role to set policy for (required for 'set'). E.g. 'agent:internal', 'user:analyst'.\",\n },\n permission: {\n type: \"string\",\n description: \"Permission level (required for 'set').\",\n enum: [\"allow\", \"deny\", \"read_only\"],\n },\n maxWritesPerSession: {\n type: \"number\",\n description: \"Optional per-session write limit for this role+scope.\",\n },\n rationale: {\n type: \"string\",\n description: \"Why this policy is being set (audit trail).\",\n },\n },\n required: [\"action\"],\n response: {\n description: \"Policy operation result\",\n fields: {\n action: \"string — get | set\",\n topicId: \"string|null — topic scope or null for global\",\n policies: \"array — (for get) list of matching policies\",\n role: \"string — (for set) role that was updated\",\n permission: \"string — (for set) new permission level\",\n maxWritesPerSession: \"number|null — (for set) session write cap\",\n },\n },\n ownerModule: \"access-control\",\n ontologyPrimitive: \"policy\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// ONTOLOGY TOOLS (ontology lifecycle, version management)\n// =============================================================================\n\nexport const LIST_ONTOLOGIES: McpToolContract = {\n name: \"list_ontologies\",\n description:\n \"List ontology definitions with optional filters. \" +\n \"Like `git remote -v` for ontologies — shows all registered ontology definitions \" +\n \"with their tier, status, and tenant scope.\",\n parameters: {\n tenantId: {\n type: \"string\",\n description: \"Filter by tenant ID. Omit for platform-level ontologies.\",\n },\n tier: {\n type: \"string\",\n description: \"Filter by tier\",\n enum: [\"platform\", \"pack\", \"tenant\"],\n },\n status: {\n type: \"string\",\n description: \"Filter by status\",\n enum: [\"draft\", \"active\", \"deprecated\", \"archived\"],\n },\n },\n required: [],\n response: {\n description: \"Array of ontology definitions\",\n fields: {\n ontologies:\n \"array — ontology definitions with id, ontologyKey, name, tier, status\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const GET_ONTOLOGY: McpToolContract = {\n name: \"get_ontology\",\n description:\n \"Get a single ontology definition by ID or ontologyKey. \" +\n \"Like `git show` for an ontology — returns the definition metadata plus the latest \" +\n \"published version with entity types and edge types.\",\n parameters: {\n id: {\n type: \"string\",\n description: \"Ontology definition ID (Convex document ID)\",\n },\n ontologyKey: {\n type: \"string\",\n description:\n \"Ontology key (e.g., 'investment-ontology'). Alternative to id.\",\n },\n tenantId: {\n type: \"string\",\n description: \"Tenant scope for key lookup. Omit for platform-level.\",\n },\n },\n required: [],\n response: {\n description: \"Ontology definition with latest published version\",\n fields: {\n id: \"string — definition ID\",\n ontologyKey: \"string — unique key\",\n name: \"string — display name\",\n publishedVersion:\n \"object|null — latest published version with entityTypes and edgeTypes\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const APPLY_ONTOLOGY: McpToolContract = {\n name: \"apply_ontology\",\n description:\n \"Bind an ontology definition directly to a topic. \" +\n \"Like `git checkout` for a domain vocabulary — applies an ontology to a topic so the topic \" +\n \"and its descendants inherit the configured entity and edge schema.\",\n parameters: {\n ontologyId: {\n type: \"string\",\n description: \"Canonical ontology identifier to bind\",\n },\n topicId: {\n type: \"string\",\n description: \"Canonical topic identifier to receive the binding\",\n },\n },\n required: [\"ontologyId\", \"topicId\"],\n response: {\n description: \"Ontology binding summary\",\n fields: {\n applied: \"boolean — true when the binding was written\",\n source: \"string — always 'direct' for an explicit bind\",\n ontologyId: \"string — canonical ontology ID\",\n ontologyKey: \"string — ontology key\",\n topicId: \"string — canonical topic ID\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const MATCH_ENTITY_TYPE: McpToolContract = {\n name: \"match_entity_type\",\n description:\n \"Classify free text against the effective ontology vocabulary. \" +\n \"Like `git grep` for ontology types — ranks the most likely entity types for the supplied text \" +\n \"using the topic-bound or explicitly selected ontology.\",\n parameters: {\n text: {\n type: \"string\",\n description: \"Free text to classify against ontology entity types\",\n },\n topicId: {\n type: \"string\",\n description:\n \"Canonical topic ID used to resolve the effective ontology when ontologyId is omitted\",\n },\n ontologyId: {\n type: \"string\",\n description:\n \"Optional ontology definition ID to match against instead of the topic-bound ontology\",\n },\n minScore: {\n type: \"number\",\n description: \"Optional lower similarity bound for returned matches\",\n },\n limit: {\n type: \"number\",\n description: \"Optional maximum number of ranked matches to return\",\n },\n },\n required: [\"text\"],\n response: {\n description: \"Ranked ontology entity type matches\",\n fields: {\n matches:\n \"array — ranked entity type matches with score, entityType, label, and optional description\",\n ontologyId: \"string|null — ontology used for matching\",\n topicId: \"string|null — topic scope used for ontology resolution\",\n },\n },\n ownerModule: \"schema-management\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const CREATE_ONTOLOGY: McpToolContract = {\n name: \"create_ontology\",\n description:\n \"Create a new ontology definition. \" +\n \"Like `git init` for a domain vocabulary — creates a named, versioned container for \" +\n \"entity types and edge types. Starts in 'draft' status.\",\n parameters: {\n ontologyKey: {\n type: \"string\",\n description:\n \"Unique key (lowercase, hyphens, e.g., 'investment-ontology')\",\n },\n name: { type: \"string\", description: \"Human-readable name\" },\n description: { type: \"string\", description: \"What this ontology covers\" },\n tenantId: {\n type: \"string\",\n description: \"Tenant scope. Omit for platform-level.\",\n },\n tier: {\n type: \"string\",\n description: \"Ontology tier\",\n enum: [\"platform\", \"pack\", \"tenant\"],\n },\n parentOntologyId: {\n type: \"string\",\n description: \"Parent ontology ID for layered composition\",\n },\n },\n required: [\"ontologyKey\", \"name\", \"tier\"],\n response: {\n description: \"Created ontology definition\",\n fields: {\n id: \"string — new definition ID\",\n ontologyKey: \"string — normalized key\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const UPDATE_ONTOLOGY: McpToolContract = {\n name: \"update_ontology\",\n description:\n \"Update an ontology definition's metadata (name, description, status). \" +\n \"Like `git config` for an ontology — updates mutable fields on the definition. \" +\n \"Only allowed while the ontology is in draft or active status.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology definition ID\" },\n name: { type: \"string\", description: \"New display name\" },\n description: { type: \"string\", description: \"New description\" },\n status: {\n type: \"string\",\n description: \"New status\",\n enum: [\"draft\", \"active\", \"deprecated\"],\n },\n },\n required: [\"id\"],\n response: {\n description: \"Update confirmation\",\n fields: { success: \"boolean\" },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\nexport const ARCHIVE_ONTOLOGY: McpToolContract = {\n name: \"archive_ontology\",\n description:\n \"Archive an ontology definition. \" +\n \"Like `git rm` for an ontology — soft-deletes the definition. \" +\n \"Archived ontologies are preserved in history but no longer active.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology definition ID to archive\" },\n },\n required: [\"id\"],\n response: {\n description: \"Archive confirmation\",\n fields: { success: \"boolean\" },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\nexport const CREATE_ONTOLOGY_VERSION: McpToolContract = {\n name: \"create_ontology_version\",\n description:\n \"Create a new version snapshot for an ontology definition. \" +\n \"Like `git commit` for ontology content — captures entity types and edge types \" +\n \"in a versioned snapshot. Starts in 'draft' status. Publish to freeze.\",\n parameters: {\n ontologyId: {\n type: \"string\",\n description: \"Parent ontology definition ID\",\n },\n version: {\n type: \"string\",\n description: \"Semantic version string (X.Y.Z format)\",\n },\n entityTypes: {\n type: \"array\",\n description:\n \"Array of entity type definitions: [{ value, label, description?, schema?, subtypes? }]\",\n },\n edgeTypes: {\n type: \"array\",\n description:\n \"Array of edge type definitions: [{ value, label, description?, sourceTypes?, targetTypes?, constraintSeverity? }]\",\n },\n releaseNotes: {\n type: \"string\",\n description: \"Optional release notes for this version\",\n },\n },\n required: [\"ontologyId\", \"version\", \"entityTypes\", \"edgeTypes\"],\n response: {\n description: \"Created version\",\n fields: {\n id: \"string — new version ID\",\n version: \"string — version string\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const PUBLISH_ONTOLOGY_VERSION: McpToolContract = {\n name: \"publish_ontology_version\",\n description:\n \"Publish a draft ontology version — freezes it permanently. \" +\n \"Like `git tag` for an ontology release — the version becomes immutable after publish. \" +\n \"If the parent definition is still in 'draft', promotes it to 'active'.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology version ID to publish\" },\n },\n required: [\"id\"],\n response: {\n description: \"Publish confirmation\",\n fields: {\n success: \"boolean\",\n publishedAt: \"number — timestamp\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"showcase\",\n};\n\nexport const DEPRECATE_ONTOLOGY_VERSION: McpToolContract = {\n name: \"deprecate_ontology_version\",\n description:\n \"Deprecate a published ontology version. \" +\n \"Like `git tag -d` for an ontology release — marks the version as deprecated. \" +\n \"Only published versions can be deprecated.\",\n parameters: {\n id: { type: \"string\", description: \"Ontology version ID to deprecate\" },\n },\n required: [\"id\"],\n response: {\n description: \"Deprecation confirmation\",\n fields: { success: \"boolean\" },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\nexport const RESOLVE_EFFECTIVE_ONTOLOGY: McpToolContract = {\n name: \"resolve_effective_ontology\",\n description:\n \"Resolve the effective ontology by composing the parent chain. \" +\n \"Like `git merge --squash` for ontology layers — walks parentOntologyId chain \" +\n \"(max depth 3) and merges entity/edge types additively from root (platform) to leaf (tenant).\",\n parameters: {\n ontologyId: {\n type: \"string\",\n description: \"Ontology definition ID to resolve from\",\n },\n },\n required: [\"ontologyId\"],\n response: {\n description: \"Merged ontology with composed entity and edge types\",\n fields: {\n entityTypes: \"array — merged entity types from all layers\",\n edgeTypes: \"array — merged edge types from all layers\",\n layers: \"array — ontology keys in composition order\",\n },\n },\n ownerModule: \"graph-primitives\",\n ontologyPrimitive: \"ontology\",\n tier: \"workhorse\",\n};\n\n// =============================================================================\n// TOOL REGISTRY\n// =============================================================================\n\n/** All MCP tool contracts, indexed by name */\nexport const MCP_TOOL_CONTRACTS: Record<string, McpToolContract> = {\n // Belief lifecycle (commit, amend, fork, archive)\n create_belief: CREATE_BELIEF,\n get_belief: GET_BELIEF,\n refine_belief: REFINE_BELIEF,\n modulate_confidence: MODULATE_CONFIDENCE,\n fork_belief: FORK_BELIEF,\n archive_belief: ARCHIVE_BELIEF,\n create_epistemic_contract: CREATE_EPISTEMIC_CONTRACT,\n // Evidence (commit)\n create_evidence: CREATE_EVIDENCE,\n get_evidence: GET_EVIDENCE,\n list_evidence: LIST_EVIDENCE,\n link_evidence: LINK_EVIDENCE,\n add_evidence: ADD_EVIDENCE,\n // Contradictions (merge conflict)\n flag_contradiction: FLAG_CONTRADICTION,\n // Lens lifecycle (workspace-scoped operational frames)\n create_lens: CREATE_LENS,\n list_lenses: LIST_LENSES,\n apply_lens_to_topic: APPLY_LENS_TO_TOPIC,\n remove_lens_from_topic: REMOVE_LENS_FROM_TOPIC,\n // Worktree lifecycle (git worktree add → merge → push → pull request)\n add_worktree: ADD_WORKTREE,\n merge: MERGE,\n push: PUSH,\n open_pull_request: OPEN_PULL_REQUEST,\n // Lineage and audit (log, blame)\n query_lineage: QUERY_LINEAGE,\n get_confidence_history: GET_CONFIDENCE_HISTORY,\n get_audit_trail: GET_AUDIT_TRAIL,\n // Graph queries (traverse, search, bisect, entity impact)\n traverse_graph: TRAVERSE_GRAPH,\n get_graph_neighborhood: GET_GRAPH_NEIGHBORHOOD,\n trace_entity_impact: TRACE_ENTITY_IMPACT,\n search_beliefs: SEARCH_BELIEFS,\n search_resources: SEARCH_RESOURCES,\n find_contradictions: FIND_CONTRADICTIONS,\n bisect_confidence: BISECT_CONFIDENCE,\n // Edges (commit)\n create_edge: CREATE_EDGE,\n // Judgments (tag)\n record_judgment: RECORD_JUDGMENT,\n // Graph intelligence (showcase)\n detect_confirmation_bias: DETECT_CONFIRMATION_BIAS,\n get_graph_structure_analysis: GET_GRAPH_STRUCTURE_ANALYSIS,\n get_falsification_questions: GET_FALSIFICATION_QUESTIONS,\n // Sources & research (showcase)\n search_sources: SEARCH_SOURCES,\n execute_deep_research: EXECUTE_DEEP_RESEARCH,\n // Evidence operations (workhorse)\n search_evidence: SEARCH_EVIDENCE,\n link_evidence_to_belief: LINK_EVIDENCE_TO_BELIEF,\n // Answer lifecycle (L2 question responses)\n create_answer: CREATE_ANSWER,\n get_answer: GET_ANSWER,\n // Question operations (workhorse)\n create_question: CREATE_QUESTION,\n get_question: GET_QUESTION,\n refine_question: REFINE_QUESTION,\n list_questions: LIST_QUESTIONS,\n answer_question: ANSWER_QUESTION,\n update_question_status: UPDATE_QUESTION_STATUS,\n archive_question: ARCHIVE_QUESTION,\n link_evidence_to_question: LINK_EVIDENCE_TO_QUESTION,\n get_high_priority_questions: GET_HIGH_PRIORITY_QUESTIONS,\n find_missing_questions: FIND_MISSING_QUESTIONS,\n // Listing & query (workhorse)\n list_beliefs: LIST_BELIEFS,\n list_worktrees: LIST_WORKTREES,\n list_all_worktrees: LIST_ALL_WORKTREES,\n activate_worktree: ACTIVATE_WORKTREE,\n update_worktree_targets: UPDATE_WORKTREE_TARGETS,\n update_worktree_metadata: UPDATE_WORKTREE_METADATA,\n identity_whoami: IDENTITY_WHOAMI,\n compile_context: COMPILE_CONTEXT,\n // Policy / ACL (workhorse)\n check_permission: CHECK_PERMISSION,\n filter_by_permission: FILTER_BY_PERMISSION,\n // Write policy (S2-13K Graph Compounding)\n manage_write_policy: MANAGE_WRITE_POLICY,\n // Observation context (workhorse)\n ingest_observation: INGEST_OBSERVATION,\n get_observation_context: GET_OBSERVATION_CONTEXT,\n // Task lifecycle (workhorse)\n create_task: CREATE_TASK,\n complete_task: COMPLETE_TASK,\n update_task: UPDATE_TASK,\n list_tasks: LIST_TASKS,\n // Topic lifecycle (init, remote)\n create_topic: CREATE_TOPIC,\n list_topics: LIST_TOPICS,\n get_topic: GET_TOPIC,\n update_topic: UPDATE_TOPIC,\n get_topic_tree: GET_TOPIC_TREE,\n // Coding intelligence (code-grounded knowledge)\n get_code_context: GET_CODE_CONTEXT,\n get_change_history: GET_CHANGE_HISTORY,\n record_attempt: RECORD_ATTEMPT,\n get_failure_log: GET_FAILURE_LOG,\n // Graph self-intelligence (coverage, gaps)\n get_topic_coverage: GET_TOPIC_COVERAGE,\n get_graph_gaps: GET_GRAPH_GAPS,\n // Ontology lifecycle (definition CRUD, version management)\n list_ontologies: LIST_ONTOLOGIES,\n get_ontology: GET_ONTOLOGY,\n apply_ontology: APPLY_ONTOLOGY,\n match_entity_type: MATCH_ENTITY_TYPE,\n create_ontology: CREATE_ONTOLOGY,\n update_ontology: UPDATE_ONTOLOGY,\n archive_ontology: ARCHIVE_ONTOLOGY,\n create_ontology_version: CREATE_ONTOLOGY_VERSION,\n publish_ontology_version: PUBLISH_ONTOLOGY_VERSION,\n deprecate_ontology_version: DEPRECATE_ONTOLOGY_VERSION,\n resolve_effective_ontology: RESOLVE_EFFECTIVE_ONTOLOGY,\n};\n\n/** Tool names that MUST include git-semantic language in descriptions */\nexport const GIT_SEMANTIC_REQUIRED_TOOLS = Object.keys(MCP_TOOL_CONTRACTS);\n\n/**\n * Lint validation: every tool description must contain \"Like `git\" or \"Like a `git\"\n * or reference a git operation in the first sentence.\n */\nexport function validateGitSemantics(tool: McpToolContract): {\n valid: boolean;\n reason?: string;\n} {\n const desc = tool.description;\n const hasGitReference =\n /Like (`git |a `git |a merge conflict|opening a `git)/.test(desc);\n if (!hasGitReference) {\n return {\n valid: false,\n reason: `Tool \"${tool.name}\" description missing git-semantic reference`,\n };\n }\n return { valid: true };\n}\n","/** Descriptor mapping an MCP tool name to its SDK method path and read/mutation classification. */\nexport type McpParityMethod = {\n toolName: string;\n methodPath: string;\n kind: \"read\" | \"mutation\";\n};\n\n/** Complete registry of MCP tools with SDK parity, mapping tool names to SDK method paths. */\nexport const SDK_MCP_PARITY_METHODS: readonly McpParityMethod[] = [\n { toolName: \"activate_worktree\", methodPath: \"worktrees.activate\", kind: \"mutation\" },\n { toolName: \"update_worktree_metadata\", methodPath: \"worktrees.updateMetadata\", kind: \"mutation\" },\n { toolName: \"update_worktree_targets\", methodPath: \"worktrees.updateTargets\", kind: \"mutation\" },\n { toolName: \"list_all_worktrees\", methodPath: \"worktrees.listAll\", kind: \"read\" },\n { toolName: \"pipeline_snapshot\", methodPath: \"worktrees.pipelineSnapshot\", kind: \"read\" },\n { toolName: \"record_scope_learning\", methodPath: \"context.recordScopeLearning\", kind: \"mutation\" },\n { toolName: \"discover\", methodPath: \"context.discover\", kind: \"read\" },\n { toolName: \"analyze_topic_density\", methodPath: \"context.analyzeTopicDensity\", kind: \"read\" },\n { toolName: \"apply_auto_branching\", methodPath: \"context.applyAutoBranching\", kind: \"mutation\" },\n { toolName: \"seed_belief_lattice\", methodPath: \"context.seedBeliefLattice\", kind: \"mutation\" },\n { toolName: \"get_lattice_coverage\", methodPath: \"context.getLatticeCoverage\", kind: \"read\" },\n { toolName: \"match_entity_type\", methodPath: \"context.matchEntityType\", kind: \"read\" },\n { toolName: \"discover_entity_connections\", methodPath: \"context.discoverEntityConnections\", kind: \"read\" },\n { toolName: \"trigger_belief_review\", methodPath: \"context.triggerBeliefReview\", kind: \"mutation\" },\n { toolName: \"list_ontologies\", methodPath: \"ontologies.list\", kind: \"read\" },\n { toolName: \"get_ontology\", methodPath: \"ontologies.get\", kind: \"read\" },\n { toolName: \"apply_ontology\", methodPath: \"ontologies.bind\", kind: \"mutation\" },\n { toolName: \"create_ontology\", methodPath: \"ontologies.create\", kind: \"mutation\" },\n { toolName: \"update_ontology\", methodPath: \"ontologies.update\", kind: \"mutation\" },\n { toolName: \"archive_ontology\", methodPath: \"ontologies.archive\", kind: \"mutation\" },\n { toolName: \"create_ontology_version\", methodPath: \"ontologies.createVersion\", kind: \"mutation\" },\n { toolName: \"publish_ontology_version\", methodPath: \"ontologies.publishVersion\", kind: \"mutation\" },\n { toolName: \"deprecate_ontology_version\", methodPath: \"ontologies.deprecateVersion\", kind: \"mutation\" },\n { toolName: \"resolve_effective_ontology\", methodPath: \"ontologies.resolveEffective\", kind: \"read\" },\n { toolName: \"register_session\", methodPath: \"coordination.registerSession\", kind: \"mutation\" },\n { toolName: \"heartbeat_session\", methodPath: \"coordination.heartbeatSession\", kind: \"mutation\" },\n { toolName: \"end_session\", methodPath: \"coordination.endSession\", kind: \"mutation\" },\n { toolName: \"list_active_sessions\", methodPath: \"coordination.listActiveSessions\", kind: \"read\" },\n { toolName: \"send_agent_message\", methodPath: \"coordination.sendAgentMessage\", kind: \"mutation\" },\n { toolName: \"broadcast_message\", methodPath: \"coordination.broadcastMessage\", kind: \"mutation\" },\n { toolName: \"get_agent_inbox\", methodPath: \"coordination.getInbox\", kind: \"read\" },\n { toolName: \"claim_files\", methodPath: \"coordination.claimFiles\", kind: \"mutation\" },\n { toolName: \"create_topic\", methodPath: \"topics.create\", kind: \"mutation\" },\n { toolName: \"get_topic\", methodPath: \"topics.get\", kind: \"read\" },\n { toolName: \"get_topic_tree\", methodPath: \"topics.getTree\", kind: \"read\" },\n { toolName: \"list_tasks\", methodPath: \"tasks.list\", kind: \"read\" },\n { toolName: \"create_answer\", methodPath: \"answers.create\", kind: \"mutation\" },\n { toolName: \"get_answer\", methodPath: \"answers.get\", kind: \"read\" },\n { toolName: \"flag_contradiction\", methodPath: \"contradictions.flag\", kind: \"mutation\" },\n { toolName: \"ingest_observation\", methodPath: \"observations.ingest\", kind: \"mutation\" },\n { toolName: \"get_observation_context\", methodPath: \"observations.getContext\", kind: \"read\" },\n { toolName: \"get_code_context\", methodPath: \"coding.getCodeContext\", kind: \"read\" },\n { toolName: \"get_change_history\", methodPath: \"coding.getChangeHistory\", kind: \"read\" },\n { toolName: \"record_attempt\", methodPath: \"coding.recordAttempt\", kind: \"mutation\" },\n { toolName: \"get_failure_log\", methodPath: \"coding.getFailureLog\", kind: \"read\" },\n { toolName: \"create_epistemic_contract\", methodPath: \"contracts.create\", kind: \"mutation\" },\n { toolName: \"evaluate_contract\", methodPath: \"contracts.evaluate\", kind: \"mutation\" },\n { toolName: \"get_contract_status\", methodPath: \"contracts.getStatus\", kind: \"read\" },\n { toolName: \"check_permission\", methodPath: \"policy.checkPermission\", kind: \"read\" },\n { toolName: \"filter_by_permission\", methodPath: \"policy.filterByPermission\", kind: \"read\" },\n { toolName: \"manage_write_policy\", methodPath: \"policy.manageWritePolicy\", kind: \"mutation\" },\n { toolName: \"generate_session_handoff\", methodPath: \"bootstrap.generateSessionHandoff\", kind: \"read\" },\n];\n\nexport const SDK_MCP_PARITY_METHOD_PATHS = SDK_MCP_PARITY_METHODS.map(\n (entry) => entry.methodPath\n);\n\nexport const SDK_MCP_PARITY_TOOL_NAMES = SDK_MCP_PARITY_METHODS.map(\n (entry) => entry.toolName\n);\n","import type { GatewayClientConfig, McpToolContract } from \"@lucern/sdk\";\nimport type { McpObservationStore } from \"./observation-store\";\n\nexport type McpToolName =\n keyof typeof import(\"@lucern/sdk\").MCP_TOOL_CONTRACTS;\n\nexport type McpTextContent = {\n type: \"text\";\n text: string;\n};\n\nexport type McpToolResult = {\n content: McpTextContent[];\n isError?: boolean;\n};\n\nexport type McpToolHandler = (\n params: Record<string, unknown>,\n contract: McpToolContract\n) => Promise<McpToolResult>;\n\nexport type McpHandlerContext = {\n sdkConfig: GatewayClientConfig;\n observationStore?: McpObservationStore;\n onObservationIngested?: (topicId: string) => Promise<void> | void;\n};\n\nexport class McpHandlerError extends Error {\n readonly code: string;\n readonly status: number;\n\n constructor(message: string, code = \"INVALID_REQUEST\", status = 400) {\n super(message);\n this.name = \"McpHandlerError\";\n this.code = code;\n this.status = status;\n }\n}\n","import type { McpToolContract } from \"@lucern/sdk\";\nimport { LucernApiError } from \"@lucern/sdk\";\nimport {\n McpHandlerError,\n type McpToolHandler,\n type McpToolResult,\n} from \"./types\";\n\nfunction isMissing(value: unknown): boolean {\n if (value === undefined || value === null) {\n return true;\n }\n if (typeof value === \"string\") {\n return value.trim().length === 0;\n }\n if (Array.isArray(value)) {\n return value.length === 0;\n }\n return false;\n}\n\nexport function readString(\n params: Record<string, unknown>,\n key: string,\n options: { required: true }\n): string;\nexport function readString(\n params: Record<string, unknown>,\n key: string,\n options?: { required?: boolean }\n): string | undefined;\nexport function readString(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean } = {}\n): string | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return;\n }\n if (typeof value !== \"string\") {\n throw new McpHandlerError(`Expected string parameter: ${key}`);\n }\n const trimmed = value.trim();\n if (!trimmed && options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return trimmed || undefined;\n}\n\nexport function readNumber(\n params: Record<string, unknown>,\n key: string,\n options: { required: true }\n): number;\nexport function readNumber(\n params: Record<string, unknown>,\n key: string,\n options?: { required?: boolean }\n): number | undefined;\nexport function readNumber(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean } = {}\n): number | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return;\n }\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n throw new McpHandlerError(`Expected numeric parameter: ${key}`);\n }\n return value;\n}\n\nexport function readBoolean(\n params: Record<string, unknown>,\n key: string,\n options: { required?: boolean } = {}\n): boolean | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n return;\n }\n if (typeof value !== \"boolean\") {\n throw new McpHandlerError(`Expected boolean parameter: ${key}`);\n }\n return value;\n}\n\nexport function readStringArray(\n params: Record<string, unknown>,\n key: string\n): string[] | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n return;\n }\n if (!Array.isArray(value)) {\n throw new McpHandlerError(`Expected array parameter: ${key}`);\n }\n const values = value\n .map((entry) => (typeof entry === \"string\" ? entry.trim() : \"\"))\n .filter((entry) => entry.length > 0);\n return values.length > 0 ? values : undefined;\n}\n\nexport function readTopicId(\n params: Record<string, unknown>,\n options: { required: true }\n): string;\nexport function readTopicId(\n params: Record<string, unknown>,\n options?: { required?: boolean }\n): string | undefined;\nexport function readTopicId(\n params: Record<string, unknown>,\n options: { required?: boolean } = {}\n): string | undefined {\n const value = params.topicId;\n if (value === undefined || value === null) {\n if (options.required) {\n throw new McpHandlerError(\"Missing required parameter: topicId\");\n }\n return;\n }\n if (typeof value !== \"string\") {\n throw new McpHandlerError(\"Expected string parameter: topicId\");\n }\n const trimmed = value.trim();\n if (!trimmed && options.required) {\n throw new McpHandlerError(\"Missing required parameter: topicId\");\n }\n return trimmed || undefined;\n}\n\nexport function toMcpResult(payload: unknown): McpToolResult {\n return {\n content: [{ type: \"text\", text: JSON.stringify(payload) }],\n };\n}\n\nexport function toMcpError(error: unknown): McpToolResult {\n if (error instanceof McpHandlerError) {\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n code: error.code,\n status: error.status,\n message: error.message,\n }),\n },\n ],\n };\n }\n\n if (error instanceof LucernApiError) {\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n code: error.code,\n status: error.status,\n message: error.message,\n invariant: error.invariant ?? null,\n suggestion: error.suggestion ?? null,\n correlationId: error.correlationId,\n policyTraceId: error.policyTraceId,\n }),\n },\n ],\n };\n }\n\n const message =\n error instanceof Error ? error.message : \"Tool execution failed.\";\n return {\n isError: true,\n content: [\n {\n type: \"text\",\n text: JSON.stringify({\n code: \"INTERNAL_ERROR\",\n status: 500,\n message,\n }),\n },\n ],\n };\n}\n\nexport function createNotImplementedHandler(name: string): McpToolHandler {\n return async () =>\n toMcpError(\n new McpHandlerError(\n `Tool not implemented yet: ${name}`,\n \"NOT_IMPLEMENTED\",\n 501\n )\n );\n}\n\nfunction validateRequired(\n params: Record<string, unknown>,\n contract: McpToolContract\n): void {\n for (const key of contract.required) {\n if (isMissing(params[key])) {\n throw new McpHandlerError(`Missing required parameter: ${key}`);\n }\n }\n}\n\nexport function contractToHandler(\n contract: McpToolContract,\n executor: (params: Record<string, unknown>) => Promise<unknown>\n): McpToolHandler {\n return async (params) => {\n try {\n validateRequired(params, contract);\n const payload = await executor(params);\n return toMcpResult(payload);\n } catch (error) {\n return toMcpError(error);\n }\n };\n}\n","import {\n createBeliefsClient,\n createGraphClient,\n MCP_TOOL_CONTRACTS,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createBeliefHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const beliefs = createBeliefsClient(context.sdkConfig);\n const graph = createGraphClient(context.sdkConfig);\n\n return {\n create_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.create_belief,\n async (params) => {\n const result = await beliefs.createBelief({\n canonicalText: readString(params, \"canonicalText\", {\n required: true,\n })!,\n topicId: readTopicId(params, { required: true })!,\n layer: readString(params, \"layer\") as\n | \"L1\"\n | \"L2\"\n | \"L3\"\n | \"L4\"\n | undefined,\n domain: readString(params, \"domain\"),\n subtype: readString(params, \"nodeType\"),\n });\n return {\n nodeId: result.data.nodeId,\n globalId: result.data.globalId,\n status: result.data.status ?? \"unscored\",\n };\n }\n ),\n\n refine_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.refine_belief,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const canonicalText = readString(params, \"canonicalText\", {\n required: true,\n })!;\n const rationale = readString(params, \"rationale\");\n const result = await graph.updateNode({\n nodeId,\n canonicalText,\n metadata: rationale\n ? {\n lastRefinementRationale: rationale,\n }\n : undefined,\n });\n return {\n nodeId: (result.data as { nodeId?: string }).nodeId ?? nodeId,\n canonicalText:\n (result.data as { canonicalText?: string }).canonicalText ??\n canonicalText,\n updatedAt: Date.now(),\n };\n }\n ),\n\n modulate_confidence: contractToHandler(\n MCP_TOOL_CONTRACTS.modulate_confidence,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const result = await beliefs.modulateConfidence(nodeId, {\n confidence: readNumber(params, \"confidence\", { required: true })!,\n trigger: readString(params, \"trigger\", { required: true }) as\n | \"evidence_added\"\n | \"contradiction_detected\"\n | \"merge_outcome\"\n | \"manual\"\n | \"decay\",\n rationale: readString(params, \"rationale\", { required: true })!,\n });\n return {\n nodeId,\n newConfidence:\n (result.data as { newConfidence?: number; confidence?: number })\n .newConfidence ??\n (result.data as { confidence?: number }).confidence ??\n readNumber(params, \"confidence\", { required: true }),\n previousConfidence:\n (result.data as { previousConfidence?: number | null })\n .previousConfidence ?? null,\n trigger: readString(params, \"trigger\", { required: true }),\n };\n }\n ),\n\n fork_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.fork_belief,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const forkReason = readString(params, \"forkReason\", {\n required: true,\n }) as\n | \"refinement\"\n | \"contradiction_response\"\n | \"scope_change\"\n | \"confidence_collapse\"\n | \"manual\";\n const result = await beliefs.forkBelief(nodeId, {\n newFormulation: readString(params, \"newFormulation\", {\n required: true,\n })!,\n forkReason,\n });\n return {\n nodeId: result.data.nodeId,\n parentNodeId: result.data.parentNodeId ?? nodeId,\n forkReason: result.data.forkReason ?? forkReason,\n };\n }\n ),\n\n archive_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.archive_belief,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const rationale = readString(params, \"rationale\");\n const result = await graph.updateNode({\n nodeId,\n status: \"archived\",\n metadata: rationale\n ? {\n archiveRationale: rationale,\n }\n : undefined,\n });\n return {\n nodeId: (result.data as { nodeId?: string }).nodeId ?? nodeId,\n status: \"archived\",\n };\n }\n ),\n };\n}\n","import { createContextClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readNumber,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createContextHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const compiler = createContextClient(context.sdkConfig);\n\n return {\n compile_context: contractToHandler(\n MCP_TOOL_CONTRACTS.compile_context,\n async (params) => {\n const response = await compiler.compile(\n readTopicId(params, { required: true })!,\n {\n ...(readString(params, \"query\")\n ? { query: readString(params, \"query\") }\n : {}),\n ...(readNumber(params, \"budget\") !== undefined\n ? { budget: readNumber(params, \"budget\") }\n : {}),\n ...(readString(params, \"ranking\")\n ? {\n ranking: readString(params, \"ranking\") as\n | \"hybrid_v1\"\n | \"weighted_v1\"\n | undefined,\n }\n : {}),\n ...(readNumber(params, \"limit\") !== undefined\n ? { limit: readNumber(params, \"limit\") }\n : {}),\n ...(readNumber(params, \"maxDepth\") !== undefined\n ? { maxDepth: readNumber(params, \"maxDepth\") }\n : {}),\n ...(readBoolean(params, \"includeEntities\") !== undefined\n ? { includeEntities: readBoolean(params, \"includeEntities\") }\n : {}),\n }\n );\n\n return response.data;\n }\n ),\n };\n}\n","import { createLucernClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport { contractToHandler, readString, readTopicId } from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createContradictionHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n flag_contradiction: contractToHandler(\n MCP_TOOL_CONTRACTS.flag_contradiction,\n async (params) => {\n const beliefA = readString(params, \"beliefA\", { required: true })!;\n const beliefB = readString(params, \"beliefB\", { required: true })!;\n const description = readString(params, \"description\", {\n required: true,\n })!;\n const topicId = readTopicId(params, { required: true })!;\n const severity = readString(params, \"severity\") ?? \"medium\";\n const defeatType = readString(params, \"defeatType\") ?? \"rebuts\";\n\n const contradiction = await lucern.contradictions.flag({\n beliefA,\n beliefB,\n description,\n topicId,\n severity,\n defeatType,\n });\n\n return {\n contradictionId: contradiction.contradictionId,\n status: contradiction.status,\n beliefA: contradiction.beliefA,\n beliefB: contradiction.beliefB,\n };\n }\n ),\n };\n}\n","import { createLucernClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport { contractToHandler, readNumber, readString } from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createEdgeHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n create_edge: contractToHandler(\n MCP_TOOL_CONTRACTS.create_edge,\n async (params) => {\n const sourceId = readString(params, \"sourceId\", { required: true })!;\n const targetId = readString(params, \"targetId\", { required: true })!;\n const edgeType = readString(params, \"edgeType\", { required: true })!;\n const confidence = readNumber(params, \"confidence\");\n const weight = readNumber(params, \"weight\");\n const contextText =\n readString(params, \"context\") ?? readString(params, \"reasoning\");\n\n const edge = await lucern.edges.create({\n sourceId,\n targetId,\n edgeType,\n confidence,\n weight,\n context: contextText,\n });\n\n return {\n globalId: edge.globalId ?? edge.edgeId ?? \"\",\n edgeType: edge.edgeType ?? edgeType,\n fromLayer: edge.fromLayer ?? \"unknown\",\n toLayer: edge.toLayer ?? \"unknown\",\n };\n }\n ),\n };\n}\n","import {\n createLucernClient,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nfunction readMetadata(\n params: Record<string, unknown>\n): JsonObject | undefined {\n const metadata = params.metadata;\n return metadata && typeof metadata === \"object\" && !Array.isArray(metadata)\n ? (metadata as JsonObject)\n : undefined;\n}\n\nexport function createEvidenceHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n create_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.create_evidence,\n async (params) => {\n const response = await lucern.evidence.create({\n topicId: readTopicId(params, { required: true }),\n text: readString(params, \"text\", { required: true }),\n source: readString(params, \"source\"),\n targetId: readString(params, \"targetId\"),\n weight: readNumber(params, \"weight\"),\n metadata: readMetadata(params),\n title: readString(params, \"title\"),\n content: readString(params, \"content\"),\n contentType: readString(params, \"contentType\"),\n kind: readString(params, \"kind\"),\n });\n return response.data;\n }\n ),\n\n get_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.get_evidence,\n async (params) => {\n const response = await lucern.evidence.get(\n readString(params, \"id\", { required: true })\n );\n return response.data;\n }\n ),\n\n list_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.list_evidence,\n async (params) => {\n const response = await lucern.evidence.list({\n topicId: readTopicId(params),\n targetId: readString(params, \"targetId\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n return response.data;\n }\n ),\n\n link_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.link_evidence,\n async (params) => {\n const response = await lucern.evidence.link({\n evidenceId: readString(params, \"evidenceId\", { required: true }),\n targetId: readString(params, \"targetId\", { required: true }),\n weight: readNumber(params, \"weight\"),\n rationale: readString(params, \"rationale\"),\n });\n return response.data;\n }\n ),\n\n search_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.search_evidence,\n async (params) => {\n const response = await lucern.evidence.search({\n q:\n readString(params, \"q\") ??\n readString(params, \"query\", { required: true }),\n topicId: readTopicId(params),\n targetId: readString(params, \"targetId\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n return response.data;\n }\n ),\n\n add_evidence: contractToHandler(\n MCP_TOOL_CONTRACTS.add_evidence,\n async (params) => {\n return lucern.evidence.add({\n canonicalText: readString(params, \"canonicalText\", { required: true }),\n topicId: readTopicId(params, { required: true }),\n sourceUrl: readString(params, \"sourceUrl\"),\n supports: {\n nodeId: readString(params, \"targetNodeId\", { required: true }),\n weight: readNumber(params, \"weight\") ?? 1,\n reasoning: readString(params, \"reasoning\"),\n },\n title: readString(params, \"title\"),\n content: readString(params, \"content\"),\n contentType: readString(params, \"contentType\"),\n metadata: readMetadata(params),\n });\n }\n ),\n\n link_evidence_to_belief: contractToHandler(\n MCP_TOOL_CONTRACTS.link_evidence_to_belief,\n async (params) => {\n return lucern.evidence.linkToBelief({\n evidenceId: readString(params, \"evidenceId\", { required: true }),\n beliefId: readString(params, \"beliefId\", { required: true }),\n weight: readNumber(params, \"weight\", { required: true }),\n rationale: readString(params, \"rationale\"),\n });\n }\n ),\n };\n}\n","import {\n createAuditClient,\n createGraphClient,\n createLucernClient,\n createPolicyClient,\n MCP_TOOL_CONTRACTS,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\ntype NodeLike = {\n nodeId?: string;\n canonicalText?: string;\n status?: string;\n confidence?: number | null;\n contradictionCount?: number;\n metadata?: Record<string, unknown> | null;\n [key: string]: unknown;\n};\n\ntype EdgeLike = {\n edgeId?: string;\n fromNodeId?: string;\n toNodeId?: string;\n edgeType?: string;\n [key: string]: unknown;\n};\n\ntype AuditEntry = {\n action?: string;\n actor?: string;\n timestamp?: number;\n before?: unknown;\n after?: unknown;\n rationale?: string;\n details?: unknown;\n [key: string]: unknown;\n};\n\nfunction asNodeArray(data: unknown): NodeLike[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is NodeLike => Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as NodeLike];\n }\n return [];\n}\n\nfunction asEdgeArray(data: unknown): EdgeLike[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is EdgeLike => Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as EdgeLike];\n }\n return [];\n}\n\nfunction asAuditArray(data: unknown): AuditEntry[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is AuditEntry =>\n Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as AuditEntry];\n }\n return [];\n}\n\nconst AUDIT_NODE_REFERENCE_KEY_PATTERN =\n /(^|_)(id|nodeid|beliefid|resourceid|targetid|sourceid|subjectid|globalid|entityid|recordid|fromnodeid|tonodeid|linkednodeid|linkedbeliefid|nodeids|beliefids|resourceids)$/i;\n\nfunction matchesAuditNodeReference(value: unknown, nodeId: string): boolean {\n if (Array.isArray(value)) {\n return value.some((entry) => matchesAuditNodeReference(entry, nodeId));\n }\n\n if (!value || typeof value !== \"object\") {\n return false;\n }\n\n return Object.entries(value as Record<string, unknown>).some(([key, entry]) => {\n if (\n typeof entry === \"string\" &&\n entry === nodeId &&\n AUDIT_NODE_REFERENCE_KEY_PATTERN.test(key)\n ) {\n return true;\n }\n\n if (\n Array.isArray(entry) &&\n AUDIT_NODE_REFERENCE_KEY_PATTERN.test(key) &&\n entry.some((item) => item === nodeId)\n ) {\n return true;\n }\n\n return matchesAuditNodeReference(entry, nodeId);\n });\n}\n\nfunction normalizeBeliefStatus(status: string | undefined): string {\n if (!status) {\n return \"unscored\";\n }\n if (status === \"unscored\" || status === \"scored\" || status === \"archived\") {\n return status;\n }\n if (status === \"active\" || status === \"in_evaluation\") {\n return \"unscored\";\n }\n if (status === \"challenged\" || status === \"validated\") {\n return \"scored\";\n }\n return \"unscored\";\n}\n\nfunction confidenceFromNode(node: NodeLike): number {\n if (typeof node.confidence === \"number\") {\n return node.confidence;\n }\n if (typeof node.metadata?.confidence === \"number\") {\n return node.metadata.confidence;\n }\n return 0;\n}\n\nexport function createGraphHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const graph = createGraphClient(context.sdkConfig);\n const lucern = createLucernClient(context.sdkConfig);\n const audit = createAuditClient(context.sdkConfig);\n const policy = createPolicyClient(context.sdkConfig);\n\n const isTopicReadable = async (topicId: string): Promise<boolean> => {\n const check = await policy.checkPermission({\n topicId,\n permission: \"read\",\n });\n return check.data?.allowed === true;\n };\n\n const getConfidenceEntries = async (nodeId: string) => {\n const events = await audit.listEvents({\n action: \"modulate_confidence\",\n limit: 500,\n });\n const entries = asAuditArray(events.data).filter((entry) => {\n return matchesAuditNodeReference(entry, nodeId);\n });\n return entries.map((entry) => ({\n confidence:\n typeof (entry.after as { confidence?: unknown })?.confidence ===\n \"number\"\n ? ((entry.after as { confidence: number }).confidence as number)\n : null,\n trigger:\n typeof (entry.details as { trigger?: unknown })?.trigger === \"string\"\n ? ((entry.details as { trigger: string }).trigger as string)\n : \"manual\",\n rationale:\n typeof entry.rationale === \"string\"\n ? entry.rationale\n : \"No rationale recorded.\",\n timestamp:\n typeof entry.timestamp === \"number\" ? entry.timestamp : Date.now(),\n userId: typeof entry.actor === \"string\" ? entry.actor : \"unknown\",\n }));\n };\n\n return {\n query_lineage: contractToHandler(\n MCP_TOOL_CONTRACTS.query_lineage,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const depth = readNumber(params, \"depth\") ?? 5;\n const [parentEdgesResponse, childEdgesResponse] = await Promise.all([\n graph.queryEdges({\n toNodeId: nodeId,\n edgeType: \"supersedes\",\n limit: depth * 4,\n }),\n graph.queryEdges({\n fromNodeId: nodeId,\n edgeType: \"supersedes\",\n limit: depth * 4,\n }),\n ]);\n const parentEdges = asEdgeArray(parentEdgesResponse.data);\n const childEdges = asEdgeArray(childEdgesResponse.data);\n const chain = [\n { nodeId, relation: \"self\" },\n ...parentEdges.map((edge) => ({\n nodeId: edge.fromNodeId ?? \"\",\n relation: \"ancestor\",\n })),\n ];\n return {\n chain: chain.slice(0, depth + 1),\n forkTree: {\n nodeId,\n parentCount: parentEdges.length,\n childCount: childEdges.length,\n children: childEdges.map((edge) => edge.toNodeId ?? \"\"),\n },\n depth,\n };\n }\n ),\n\n get_confidence_history: contractToHandler(\n MCP_TOOL_CONTRACTS.get_confidence_history,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const entries = await getConfidenceEntries(nodeId);\n return { entries };\n }\n ),\n\n get_audit_trail: contractToHandler(\n MCP_TOOL_CONTRACTS.get_audit_trail,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const limit = readNumber(params, \"limit\") ?? 50;\n const events = await audit.listEvents({ limit: Math.max(1, limit) });\n const entries = asAuditArray(events.data)\n .filter((entry) => matchesAuditNodeReference(entry, nodeId))\n .slice(0, limit)\n .map((entry) => ({\n action: entry.action ?? \"unknown\",\n actor: entry.actor ?? \"unknown\",\n timestamp:\n typeof entry.timestamp === \"number\"\n ? entry.timestamp\n : Date.now(),\n before: entry.before ?? null,\n after: entry.after ?? null,\n rationale:\n typeof entry.rationale === \"string\"\n ? entry.rationale\n : \"No rationale recorded.\",\n }));\n return { entries };\n }\n ),\n\n traverse_graph: contractToHandler(\n MCP_TOOL_CONTRACTS.traverse_graph,\n async (params) => {\n const response = await graph.traverse({\n startNode: readString(params, \"startNode\", { required: true })!,\n direction: readString(params, \"direction\"),\n maxDepth: readNumber(params, \"maxDepth\"),\n topicId: readTopicId(params),\n });\n return response.data;\n }\n ),\n\n get_graph_neighborhood: contractToHandler(\n MCP_TOOL_CONTRACTS.get_graph_neighborhood,\n async (params) => {\n const globalIds = readStringArray(params, \"globalIds\");\n const response = await graph.neighborhood({\n globalId: readString(params, \"globalId\"),\n globalIds: globalIds ? globalIds.join(\",\") : undefined,\n maxDepth: readNumber(params, \"maxDepth\"),\n });\n return response.data;\n }\n ),\n\n search_beliefs: contractToHandler(\n MCP_TOOL_CONTRACTS.search_beliefs,\n async (params) => {\n const query = readString(params, \"query\", { required: true })!;\n const topicId = readTopicId(params);\n const status = readString(params, \"status\");\n const minConfidence = readNumber(params, \"minConfidence\");\n const limit = readNumber(params, \"limit\") ?? 10;\n if (!topicId) {\n return { results: [] };\n }\n if (!(await isTopicReadable(topicId))) {\n return { results: [] };\n }\n\n const response = await graph.search({\n q: query,\n topicId,\n types: [\"belief\"],\n status,\n minConfidence,\n limit,\n });\n const data = response.data;\n const groupedBeliefs = Array.isArray(data.beliefs)\n ? (data.beliefs as Record<string, unknown>[])\n : [];\n const mergedResults = Array.isArray(data.results)\n ? (data.results as Record<string, unknown>[])\n : [];\n const results =\n groupedBeliefs.length > 0\n ? groupedBeliefs\n : mergedResults.filter((result) => result.type === \"belief\");\n return { results };\n }\n ),\n\n find_contradictions: contractToHandler(\n MCP_TOOL_CONTRACTS.find_contradictions,\n async (params) => {\n const topicId = readTopicId(params);\n const nodeId = readString(params, \"nodeId\");\n const status = readString(params, \"status\");\n if (!topicId && !nodeId) {\n return { contradictions: [] };\n }\n if (topicId && !(await isTopicReadable(topicId))) {\n return { contradictions: [] };\n }\n\n if (!topicId) {\n return { contradictions: [] };\n }\n\n const payload = await lucern.contradictions.list({\n topicId,\n status: status ?? undefined,\n });\n const contradictions = payload.contradictions ?? [];\n\n if (!nodeId) {\n return {\n ...payload,\n contradictions,\n };\n }\n\n return {\n ...payload,\n contradictions: contradictions.filter(\n (entry) => entry.beliefA === nodeId || entry.beliefB === nodeId\n ),\n };\n }\n ),\n\n bisect_confidence: contractToHandler(\n MCP_TOOL_CONTRACTS.bisect_confidence,\n async (params) => {\n const nodeId = readString(params, \"nodeId\", { required: true })!;\n const expectedDirection = readString(params, \"expectedDirection\", {\n required: true,\n })!;\n const entries = await getConfidenceEntries(nodeId);\n const sorted = [...entries].sort((a, b) => a.timestamp - b.timestamp);\n const index =\n sorted.length === 0\n ? -1\n : Math.max(0, Math.floor(sorted.length / 2) - 1);\n const inflection = index >= 0 ? sorted[index] : null;\n return {\n inflectionEntry: inflection,\n triggerEvent: inflection?.trigger ?? \"unknown\",\n confidenceBefore:\n index > 0 &&\n sorted[index - 1] &&\n sorted[index - 1].confidence != null\n ? sorted[index - 1].confidence\n : null,\n confidenceAfter: inflection?.confidence ?? null,\n expectedDirection,\n };\n }\n ),\n\n detect_confirmation_bias: contractToHandler(\n MCP_TOOL_CONTRACTS.detect_confirmation_bias,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { topicId, beliefs: [] };\n }\n const threshold = readNumber(params, \"threshold\") ?? 0.7;\n const analytics = await graph.bias({\n topicId,\n threshold,\n limit: 200,\n });\n const payload = analytics.data.payload;\n const candidates =\n Array.isArray(analytics.data.beliefs)\n ? (analytics.data.beliefs as Record<string, unknown>[])\n : payload &&\n typeof payload === \"object\" &&\n Array.isArray((payload as { beliefs?: unknown[] }).beliefs)\n ? ((payload as { beliefs: unknown[] }).beliefs as Record<\n string,\n unknown\n >[])\n : [];\n const beliefs = candidates.map((belief) => ({\n nodeId: typeof belief.nodeId === \"string\" ? belief.nodeId : \"\",\n biasScore:\n typeof belief.biasScore === \"number\" ? belief.biasScore : threshold,\n riskLevel:\n typeof belief.riskLevel === \"string\"\n ? belief.riskLevel\n : \"moderate\",\n supportingCount:\n typeof belief.supportingCount === \"number\"\n ? belief.supportingCount\n : 0,\n challengingCount:\n typeof belief.challengingCount === \"number\"\n ? belief.challengingCount\n : 0,\n }));\n return { topicId, beliefs };\n }\n ),\n\n get_graph_structure_analysis: contractToHandler(\n MCP_TOOL_CONTRACTS.get_graph_structure_analysis,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return {\n topicId,\n metric: \"structure_analysis\",\n payload: {},\n };\n }\n const analytics = await graph.analyze({\n topicId,\n limit: 200,\n });\n return analytics.data;\n }\n ),\n\n get_falsification_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.get_falsification_questions,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { questions: [] };\n }\n const beliefIds = new Set(\n Array.isArray(params.beliefIds)\n ? params.beliefIds\n .filter((value): value is string => typeof value === \"string\")\n .map((value) => value.trim())\n : []\n );\n const gaps = await lucern.graph.gaps({\n topicId,\n });\n const questions = (Array.isArray(gaps.gaps)\n ? (gaps.gaps as Record<string, unknown>[])\n : [])\n .filter((gap) => {\n if (beliefIds.size === 0) {\n return true;\n }\n return beliefIds.has(String(gap.beliefId ?? \"\"));\n })\n .flatMap((gap) =>\n (Array.isArray(gap.suggestedQuestions)\n ? gap.suggestedQuestions\n : []\n ).map((questionText) => ({\n questionText: String(questionText),\n falsificationPotential: 0.5,\n targetBeliefId: String(gap.beliefId ?? \"\"),\n targetBeliefText: String(gap.canonicalText ?? \"\"),\n }))\n )\n .slice(0, 20);\n return { questions };\n }\n ),\n\n get_graph_gaps: contractToHandler(\n MCP_TOOL_CONTRACTS.get_graph_gaps,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { topicId, gaps: [], totalGaps: 0 };\n }\n return lucern.graph.gaps({\n topicId,\n minConfidence: readNumber(params, \"minConfidence\"),\n });\n }\n ),\n\n list_beliefs: contractToHandler(\n MCP_TOOL_CONTRACTS.list_beliefs,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n if (!(await isTopicReadable(topicId))) {\n return { beliefs: [] };\n }\n const status = readString(params, \"status\");\n const minConfidence = readNumber(params, \"minConfidence\");\n const worktreeId = readString(params, \"worktreeId\");\n const response = await graph.queryNodes({\n topicId,\n nodeType: \"belief\",\n limit: 500,\n });\n const beliefs = asNodeArray(response.data)\n .filter((belief) => {\n const normalizedStatus = normalizeBeliefStatus(\n typeof belief.status === \"string\" ? belief.status : undefined\n );\n if (status && normalizedStatus !== status) {\n return false;\n }\n if (\n typeof minConfidence === \"number\" &&\n Number.isFinite(minConfidence) &&\n confidenceFromNode(belief) < minConfidence\n ) {\n return false;\n }\n if (worktreeId) {\n const linkedWorktreeId =\n typeof belief.metadata?.worktreeId === \"string\"\n ? belief.metadata.worktreeId\n : undefined;\n if (linkedWorktreeId !== worktreeId) {\n return false;\n }\n }\n return true;\n })\n .map((belief) => ({\n nodeId: belief.nodeId ?? \"\",\n canonicalText: belief.canonicalText ?? \"\",\n confidence: confidenceFromNode(belief),\n status: normalizeBeliefStatus(\n typeof belief.status === \"string\" ? belief.status : undefined\n ),\n scoringState:\n normalizeBeliefStatus(\n typeof belief.status === \"string\" ? belief.status : undefined\n ) === \"scored\"\n ? \"scored\"\n : \"unscored\",\n }));\n return { beliefs };\n }\n ),\n };\n}\n","import { createDecisionsClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createJudgmentHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const decisions = createDecisionsClient(context.sdkConfig);\n\n return {\n record_judgment: contractToHandler(\n MCP_TOOL_CONTRACTS.record_judgment,\n async (params) => {\n const title = readString(params, \"title\", { required: true })!;\n const rationale = readString(params, \"rationale\", { required: true })!;\n const topicId = readTopicId(params, { required: true })!;\n const confidence = readNumber(params, \"confidence\");\n const beliefIds = readStringArray(params, \"beliefIds\");\n\n const result = await decisions.recordJudgment({\n title,\n summary: title,\n rationale,\n topicId,\n confidence: confidence ?? 0.5,\n beliefIds,\n });\n\n return {\n judgmentId:\n result.data.judgmentId ??\n result.data.nodeId ??\n result.data.globalId ??\n \"\",\n title,\n status: \"issued\",\n };\n }\n ),\n };\n}\n","import { GET_OBSERVATION_CONTEXT, INGEST_OBSERVATION } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport {\n type McpHandlerContext,\n McpHandlerError,\n type McpToolHandler,\n} from \"../types\";\n\nfunction readObject(\n params: Record<string, unknown>,\n key: string\n): Record<string, unknown> | undefined {\n const value = params[key];\n if (value === undefined || value === null) {\n return;\n }\n if (typeof value !== \"object\" || Array.isArray(value)) {\n throw new McpHandlerError(`Expected object parameter: ${key}`);\n }\n return value as Record<string, unknown>;\n}\n\nexport function createObservationHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const observationStore = context.observationStore;\n\n return {\n ingest_observation: contractToHandler(\n INGEST_OBSERVATION,\n async (params) => {\n if (!observationStore) {\n throw new McpHandlerError(\n \"Observation store not configured.\",\n \"INTERNAL_ERROR\",\n 500\n );\n }\n\n const topicId = readTopicId(params, {\n required: true,\n }) as string;\n const observationType = readString(params, \"observationType\", {\n required: true,\n }) as string;\n const summary = readString(params, \"summary\", {\n required: true,\n }) as string;\n const source = readString(params, \"source\");\n const confidence = readNumber(params, \"confidence\");\n const tags = readStringArray(params, \"tags\");\n const metadata = readObject(params, \"metadata\");\n\n const allowedTypes = [\n \"claim\",\n \"evidence\",\n \"question\",\n \"contradiction\",\n \"judgment\",\n \"note\",\n ] as const;\n if (\n !allowedTypes.includes(\n observationType as (typeof allowedTypes)[number]\n )\n ) {\n throw new McpHandlerError(\n `Invalid observationType: ${observationType}`,\n \"INVALID_REQUEST\",\n 400\n );\n }\n\n if (confidence !== undefined && (confidence < 0 || confidence > 1)) {\n throw new McpHandlerError(\n \"confidence must be in [0,1]\",\n \"INVALID_REQUEST\",\n 400\n );\n }\n\n const record = observationStore.ingest({\n topicId,\n observationType: observationType as (typeof allowedTypes)[number],\n summary,\n source,\n confidence,\n tags,\n metadata,\n });\n\n await context.onObservationIngested?.(topicId);\n\n return {\n observationId: record.observationId,\n topicId: record.topicId,\n observationType: record.observationType,\n createdAt: record.createdAt,\n contextResourceUri: `lucern://context/topic/${encodeURIComponent(topicId)}`,\n };\n }\n ),\n\n get_observation_context: contractToHandler(\n GET_OBSERVATION_CONTEXT,\n async (params) => {\n if (!observationStore) {\n throw new McpHandlerError(\n \"Observation store not configured.\",\n \"INTERNAL_ERROR\",\n 500\n );\n }\n\n const topicId = readTopicId(params, {\n required: true,\n }) as string;\n const query = readString(params, \"query\");\n const limit = readNumber(params, \"limit\");\n\n return observationStore.getContext({\n topicId,\n query,\n limit,\n });\n }\n ),\n };\n}\n","import { createPolicyClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\ntype TopicLike = {\n topicId?: string;\n name?: string;\n type?: string;\n isOwner?: boolean;\n [key: string]: unknown;\n};\n\nfunction asTopicArray(data: unknown): TopicLike[] {\n if (!Array.isArray(data)) {\n return [];\n }\n return data.filter(\n (row): row is TopicLike => Boolean(row) && typeof row === \"object\"\n );\n}\n\nexport function createPolicyHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const policy = createPolicyClient(context.sdkConfig);\n\n return {\n check_permission: contractToHandler(\n MCP_TOOL_CONTRACTS.check_permission,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const permission =\n (readString(params, \"permission\", { required: true }) as\n | \"read\"\n | \"write\"\n | undefined) ?? \"read\";\n const principal = readString(params, \"principal\");\n const beliefClusterId = readString(params, \"beliefClusterId\");\n\n const result = await policy.checkPermission({\n topicId,\n permission,\n principal,\n beliefClusterId,\n });\n\n return {\n allowed: result.data?.allowed === true,\n decision:\n typeof result.data?.decision === \"string\"\n ? result.data.decision\n : result.data?.allowed\n ? \"allow\"\n : \"deny\",\n reasonCode:\n typeof result.data?.reasonCode === \"string\"\n ? result.data.reasonCode\n : \"ACCESS_NOT_GRANTED\",\n principalId:\n typeof result.data?.principalId === \"string\"\n ? result.data.principalId\n : (principal ?? \"\"),\n topicId:\n typeof result.data?.topicId === \"string\"\n ? result.data.topicId\n : topicId,\n permission:\n typeof result.data?.permission === \"string\"\n ? result.data.permission\n : permission,\n explanation:\n result.data?.explanation && typeof result.data.explanation === \"object\"\n ? result.data.explanation\n : undefined,\n };\n }\n ),\n filter_by_permission: contractToHandler(\n MCP_TOOL_CONTRACTS.filter_by_permission,\n async (params) => {\n const topicIds = readStringArray(params, \"topicIds\") ?? [];\n const permission =\n (readString(params, \"permission\", {\n required: true,\n }) as \"read\" | \"write\" | undefined) ?? \"read\";\n const principal = readString(params, \"principal\");\n\n const result = await policy.filterByPermission({\n topicIds,\n permission,\n principal,\n });\n\n const allowedTopicIds = Array.isArray(result.data?.allowedTopicIds)\n ? (result.data.allowedTopicIds as string[])\n : [];\n const deniedTopics = Array.isArray(result.data?.deniedTopics)\n ? result.data.deniedTopics\n : [];\n\n return {\n permission,\n allowedTopicIds,\n deniedTopics,\n count:\n typeof result.data?.count === \"number\"\n ? result.data.count\n : allowedTopicIds.length,\n };\n }\n ),\n };\n}\n","import {\n createLucernClient,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n} from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nfunction readMetadata(\n params: Record<string, unknown>\n): JsonObject | undefined {\n const metadata = params.metadata;\n return metadata && typeof metadata === \"object\" && !Array.isArray(metadata)\n ? (metadata as JsonObject)\n : undefined;\n}\n\nexport function createQuestionHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n create_question: contractToHandler(\n MCP_TOOL_CONTRACTS.create_question,\n async (params) => {\n const response = await lucern.questions.create({\n text: readString(params, \"text\", { required: true }),\n topicId: readTopicId(params, { required: true }),\n priority: readString(params, \"priority\"),\n linkedBeliefId: readString(params, \"linkedBeliefId\"),\n metadata: readMetadata(params),\n });\n return response.data;\n }\n ),\n\n get_question: contractToHandler(\n MCP_TOOL_CONTRACTS.get_question,\n async (params) => {\n const response = await lucern.questions.get(\n readString(params, \"id\", { required: true })\n );\n return response.data;\n }\n ),\n\n list_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.list_questions,\n async (params) => {\n const response = await lucern.questions.list({\n topicId: readTopicId(params, { required: true }),\n status: readString(params, \"status\"),\n priority: readString(params, \"priority\"),\n worktreeId: readString(params, \"worktreeId\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n return response.data;\n }\n ),\n\n answer_question: contractToHandler(\n MCP_TOOL_CONTRACTS.answer_question,\n async (params) => {\n const response = await lucern.questions.answer(\n readString(params, \"id\", { required: true }),\n {\n text: readString(params, \"text\", { required: true }),\n confidence: readString(params, \"confidence\"),\n evidenceIds: readStringArray(params, \"evidenceIds\"),\n rationale: readString(params, \"rationale\"),\n }\n );\n return response.data;\n }\n ),\n\n refine_question: contractToHandler(\n MCP_TOOL_CONTRACTS.refine_question,\n async (params) => {\n const response = await lucern.questions.refine(\n readString(params, \"id\") ??\n readString(params, \"questionId\", { required: true }),\n readString(params, \"text\", { required: true }),\n readString(params, \"rationale\") ?? readString(params, \"refinementReason\")\n );\n return response.data;\n }\n ),\n\n update_question_status: contractToHandler(\n MCP_TOOL_CONTRACTS.update_question_status,\n async (params) => {\n const response = await lucern.questions.updateStatus(\n readString(params, \"id\") ??\n readString(params, \"questionId\", { required: true }),\n readString(params, \"status\", { required: true }),\n readString(params, \"rationale\")\n );\n return response.data;\n }\n ),\n\n archive_question: contractToHandler(\n MCP_TOOL_CONTRACTS.archive_question,\n async (params) => {\n return lucern.questions.archive(\n readString(params, \"questionId\", { required: true }),\n readString(params, \"reason\")\n );\n }\n ),\n\n link_evidence_to_question: contractToHandler(\n MCP_TOOL_CONTRACTS.link_evidence_to_question,\n async (params) => {\n return lucern.questions.linkEvidence({\n evidenceId: readString(params, \"evidenceId\", { required: true }),\n questionId: readString(params, \"questionId\", { required: true }),\n relevance: readNumber(params, \"relevance\") ?? 1,\n rationale: readString(params, \"rationale\"),\n });\n }\n ),\n\n get_high_priority_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.get_high_priority_questions,\n async (params) => {\n return lucern.questions.getHighPriority({\n topicId: readTopicId(params, { required: true }),\n limit: readNumber(params, \"limit\"),\n includeAnswered: readBoolean(params, \"includeAnswered\"),\n });\n }\n ),\n\n find_missing_questions: contractToHandler(\n MCP_TOOL_CONTRACTS.find_missing_questions,\n async (params) => {\n return lucern.questions.findMissing({\n topicId: readTopicId(params, { required: true }),\n minConfidence: readNumber(params, \"minConfidence\"),\n });\n }\n ),\n };\n}\n","import { createGraphClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\ntype SourceLike = {\n nodeId?: string;\n canonicalText?: string;\n title?: string;\n url?: string;\n sourceUrl?: string;\n snippet?: string;\n metadata?: Record<string, unknown>;\n [key: string]: unknown;\n};\n\nfunction asSourceArray(data: unknown): SourceLike[] {\n if (Array.isArray(data)) {\n return data.filter(\n (entry): entry is SourceLike =>\n Boolean(entry) && typeof entry === \"object\"\n );\n }\n if (data && typeof data === \"object\") {\n return [data as SourceLike];\n }\n return [];\n}\n\nexport function createResearchHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const graph = createGraphClient(context.sdkConfig);\n\n const searchSources = async (params: Record<string, unknown>) => {\n const query = readString(params, \"query\", { required: true })!;\n const topicId = readTopicId(params);\n const sourceTypes = readStringArray(params, \"sources\") ?? [];\n if (!topicId) {\n return { results: [] as Record<string, unknown>[] };\n }\n\n const response = await graph.queryNodes({\n topicId,\n nodeType: \"source\",\n limit: 100,\n });\n\n const loweredQuery = query.toLowerCase();\n const results = asSourceArray(response.data)\n .filter((source) => {\n const text = `${source.title ?? \"\"} ${source.canonicalText ?? \"\"} ${\n source.snippet ?? \"\"\n }`.toLowerCase();\n if (!text.includes(loweredQuery)) {\n return false;\n }\n if (sourceTypes.length === 0) {\n return true;\n }\n const kind =\n typeof source.metadata?.sourceType === \"string\"\n ? source.metadata.sourceType.toLowerCase()\n : \"\";\n return sourceTypes.some((type) => kind.includes(type.toLowerCase()));\n })\n .slice(0, 20)\n .map((source) => ({\n title:\n (typeof source.title === \"string\" && source.title) ||\n (typeof source.canonicalText === \"string\"\n ? source.canonicalText\n : \"Untitled source\"),\n url:\n (typeof source.sourceUrl === \"string\" && source.sourceUrl) ||\n (typeof source.url === \"string\" ? source.url : \"\"),\n snippet:\n (typeof source.snippet === \"string\" && source.snippet) ||\n (typeof source.canonicalText === \"string\"\n ? source.canonicalText\n : \"\"),\n relevanceScore: 1,\n suggestedEvidence:\n typeof source.canonicalText === \"string\" ? source.canonicalText : \"\",\n }));\n\n return { results };\n };\n\n return {\n search_sources: contractToHandler(\n MCP_TOOL_CONTRACTS.search_sources,\n async (params) => searchSources(params)\n ),\n\n execute_deep_research: contractToHandler(\n MCP_TOOL_CONTRACTS.execute_deep_research,\n async (params) => {\n const query = readString(params, \"query\", { required: true })!;\n const topicId = readTopicId(params, { required: true })!;\n const depth = readString(params, \"depth\") ?? \"standard\";\n const sources = await searchSources({\n query,\n topicId,\n sources: [\"web\"],\n });\n\n const topSources = sources.results.slice(0, depth === \"deep\" ? 10 : 5);\n const findings = topSources.map((source) => ({\n title: source.title,\n summary: source.snippet,\n sourceUrl: source.url,\n }));\n\n return {\n report: {\n summary:\n findings.length > 0\n ? `Deep research completed for \"${query}\" with ${findings.length} source findings.`\n : `No matching sources found for \"${query}\".`,\n findings,\n sources: topSources.map((source) => ({\n title: source.title,\n url: source.url,\n })),\n linkedEvidence: [],\n linkedQuestions: [],\n },\n };\n }\n ),\n };\n}\n","import { createLucernClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readNumber,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createSearchHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const lucern = createLucernClient(context.sdkConfig);\n\n return {\n search_resources: contractToHandler(\n MCP_TOOL_CONTRACTS.search_resources,\n async (params) => {\n return lucern.search(readString(params, \"q\", { required: true }), {\n topicId: readTopicId(params, { required: true }),\n types: readStringArray(params, \"types\"),\n status: readString(params, \"status\"),\n minConfidence: readNumber(params, \"minConfidence\"),\n limit: readNumber(params, \"limit\"),\n cursor: readString(params, \"cursor\"),\n });\n }\n ),\n };\n}\n","import { createWorkflowClient, MCP_TOOL_CONTRACTS } from \"@lucern/sdk\";\nimport {\n contractToHandler,\n readBoolean,\n readString,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nexport function createTaskHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const workflow = createWorkflowClient(context.sdkConfig);\n\n return {\n create_task: contractToHandler(\n MCP_TOOL_CONTRACTS.create_task,\n async (params) => {\n const title = readString(params, \"title\", { required: true })!;\n const topicId = readTopicId(params, { required: true })!;\n const taskType = readString(params, \"taskType\");\n const linkedQuestionId = readString(params, \"linkedQuestionId\");\n const linkedWorktreeId = readString(params, \"linkedWorktreeId\");\n\n const result = await workflow.createTask({\n title,\n topicId,\n taskType:\n taskType === \"research\" ||\n taskType === \"interview\" ||\n taskType === \"analysis\" ||\n taskType === \"data_collection\"\n ? taskType\n : undefined,\n linkedQuestionId,\n linkedWorktreeId,\n });\n\n return {\n taskId: result.data.taskId,\n status: result.data.status ?? \"pending\",\n createdAt: result.data.createdAt ?? Date.now(),\n };\n }\n ),\n\n complete_task: contractToHandler(\n MCP_TOOL_CONTRACTS.complete_task,\n async (params) => {\n const taskId = readString(params, \"taskId\", { required: true })!;\n const outputSummary = readString(params, \"outputSummary\", {\n required: true,\n })!;\n const evidenceCreated = readBoolean(params, \"evidenceCreated\");\n\n const result = await workflow.completeTask(taskId, {\n outputSummary,\n evidenceCreated,\n });\n\n return {\n taskId: result.data.taskId ?? taskId,\n completedAt: result.data.completedAt ?? Date.now(),\n outputSummary: result.data.outputSummary ?? outputSummary,\n };\n }\n ),\n\n update_task: contractToHandler(\n MCP_TOOL_CONTRACTS.update_task,\n async (params) => {\n const taskId = readString(params, \"taskId\", { required: true })!;\n const title = readString(params, \"title\");\n const description = readString(params, \"description\");\n const linkedBeliefId = readString(params, \"linkedBeliefId\");\n const linkedQuestionId = readString(params, \"linkedQuestionId\");\n const linkedWorktreeId = readString(params, \"linkedWorktreeId\");\n const rawPriority = readString(params, \"priority\");\n const priority =\n rawPriority === \"critical\" ||\n rawPriority === \"high\" ||\n rawPriority === \"medium\" ||\n rawPriority === \"low\"\n ? rawPriority\n : undefined;\n const rawStatus = readString(params, \"status\");\n const status =\n rawStatus === \"todo\" ||\n rawStatus === \"in_progress\" ||\n rawStatus === \"blocked\" ||\n rawStatus === \"done\"\n ? rawStatus\n : undefined;\n\n const result = await workflow.updateTask(taskId, {\n title,\n description,\n linkedBeliefId,\n linkedQuestionId,\n linkedWorktreeId,\n priority,\n status,\n });\n\n return {\n taskId: result.data.taskId ?? taskId,\n updatedAt: result.data.updatedAt ?? Date.now(),\n };\n }\n ),\n };\n}\n","import {\n createWorkflowClient,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n} from \"@lucern/sdk\";\nimport type {\n LensPerspectiveType,\n LensPromptTemplateReference,\n LensTaskTemplate,\n LensWorkflowTemplate,\n} from \"@lucern/sdk/contracts/lensWorkflow\";\nimport {\n contractToHandler,\n readBoolean,\n readString,\n readStringArray,\n readTopicId,\n} from \"../handler-factory\";\nimport type { McpHandlerContext, McpToolHandler } from \"../types\";\n\nfunction mapWorktreeStatus(\n status?: string\n):\n | \"planning\"\n | \"active\"\n | \"paused\"\n | \"completed\"\n | \"merged\"\n | \"failed\"\n | \"archived\"\n | undefined {\n if (!status) {\n return;\n }\n if (status === \"abandoned\") {\n return \"archived\";\n }\n if (\n status === \"planning\" ||\n status === \"active\" ||\n status === \"paused\" ||\n status === \"completed\" ||\n status === \"merged\" ||\n status === \"failed\" ||\n status === \"archived\"\n ) {\n return status;\n }\n return;\n}\n\nexport function createWorktreeHandlers(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n const workflow = createWorkflowClient(context.sdkConfig);\n\n return {\n create_lens: contractToHandler(MCP_TOOL_CONTRACTS.create_lens, async (params) => {\n const result = await workflow.createLens({\n name: readString(params, \"name\", { required: true })!,\n workspaceId: readString(params, \"workspaceId\"),\n topicId: readTopicId(params),\n description: readString(params, \"description\"),\n perspectiveType: readString(params, \"perspectiveType\", {\n required: true,\n }) as LensPerspectiveType,\n promptTemplates: Array.isArray(params.promptTemplates)\n ? (params.promptTemplates as LensPromptTemplateReference[])\n : undefined,\n workflowTemplates: Array.isArray(params.workflowTemplates)\n ? (params.workflowTemplates as LensWorkflowTemplate[])\n : undefined,\n taskTemplates: Array.isArray(params.taskTemplates)\n ? (params.taskTemplates as LensTaskTemplate[])\n : undefined,\n filterCriteria:\n params.filterCriteria && typeof params.filterCriteria === \"object\"\n ? (params.filterCriteria as JsonObject)\n : undefined,\n });\n return {\n lensId: result.data.lensId ?? \"\",\n name:\n result.data.name ?? readString(params, \"name\", { required: true }),\n workspaceId:\n result.data.workspaceId ??\n readString(params, \"workspaceId\") ??\n null,\n status: result.data.status ?? \"active\",\n };\n }),\n\n list_lenses: contractToHandler(MCP_TOOL_CONTRACTS.list_lenses, async (params) => {\n const result = await workflow.listLenses({\n workspaceId: readString(params, \"workspaceId\"),\n topicId: readTopicId(params),\n status: readString(params, \"status\") as\n | \"draft\"\n | \"active\"\n | \"archived\"\n | undefined,\n perspectiveType: readString(params, \"perspectiveType\") as\n | LensPerspectiveType\n | undefined,\n });\n return {\n lenses:\n result.data.items ??\n (\"lenses\" in result.data && Array.isArray(result.data.lenses)\n ? result.data.lenses\n : []),\n };\n }),\n\n apply_lens_to_topic: contractToHandler(\n MCP_TOOL_CONTRACTS.apply_lens_to_topic,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const lensId = readString(params, \"lensId\", { required: true })!;\n const result = await workflow.applyLensToTopic({\n lensId,\n topicId,\n metadata:\n params.metadata && typeof params.metadata === \"object\"\n ? (params.metadata as JsonObject)\n : undefined,\n });\n return {\n bindingId: result.data.bindingId ?? \"\",\n lensId: result.data.lensId ?? lensId,\n topicId: result.data.topicId ?? topicId,\n status: result.data.status ?? \"active\",\n };\n }\n ),\n\n remove_lens_from_topic: contractToHandler(\n MCP_TOOL_CONTRACTS.remove_lens_from_topic,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const lensId = readString(params, \"lensId\", { required: true })!;\n const result = await workflow.removeLensFromTopic({\n lensId,\n topicId,\n });\n return {\n bindingId: result.data.bindingId ?? \"\",\n lensId: result.data.lensId ?? lensId,\n topicId: result.data.topicId ?? topicId,\n status: result.data.status ?? \"removed\",\n };\n }\n ),\n\n add_worktree: contractToHandler(\n MCP_TOOL_CONTRACTS.add_worktree,\n async (params) => {\n const topicId = readTopicId(params);\n if (!topicId) {\n throw new Error(\"add_worktree requires topicId\");\n }\n\n const result = await workflow.addWorktree({\n title: readString(params, \"title\", { required: true })!,\n topicId,\n branchId: readString(params, \"branchId\"),\n objective: readString(params, \"objective\"),\n hypothesis: readString(params, \"hypothesis\"),\n beliefIds: readStringArray(params, \"beliefIds\"),\n autoShape: readBoolean(params, \"autoShape\"),\n domainPackId: readString(params, \"domainPackId\"),\n executionOrder:\n typeof params.executionOrder === \"number\"\n ? params.executionOrder\n : undefined,\n dependsOn: readStringArray(params, \"dependsOn\"),\n blocks: readStringArray(params, \"blocks\"),\n gate: readString(params, \"gate\"),\n });\n return {\n worktreeId: result.data.worktreeId,\n branchId: result.data.branchId ?? null,\n status: result.data.status ?? \"planning\",\n title: result.data.title,\n hypothesis: result.data.hypothesis ?? null,\n questionCount: result.data.questionCount ?? 0,\n taskCount: result.data.taskCount ?? 0,\n autoShapeApplied: result.data.autoShapeApplied ?? false,\n frameworkSuggestions: result.data.frameworkSuggestions ?? [],\n dependencySuggestions: result.data.dependencySuggestions ?? [],\n };\n }\n ),\n\n merge: contractToHandler(MCP_TOOL_CONTRACTS.merge, async (params) => {\n const worktreeId = readString(params, \"worktreeId\", { required: true })!;\n const outcomes = Array.isArray(params.outcomes)\n ? (params.outcomes as Array<{\n beliefId: string;\n confidence: number;\n rationale: string;\n }>)\n : [];\n const result = await workflow.merge(worktreeId, {\n outcomes,\n summary: readString(params, \"summary\"),\n });\n return {\n worktreeId: result.data.worktreeId ?? worktreeId,\n status: result.data.status ?? \"merged\",\n beliefsScored: result.data.beliefsScored ?? outcomes.length,\n };\n }),\n\n push: contractToHandler(MCP_TOOL_CONTRACTS.push, async (params) => {\n const worktreeId = readString(params, \"worktreeId\", { required: true })!;\n const targetContext = readString(params, \"targetContext\", {\n required: true,\n })!;\n const result = await workflow.push(worktreeId, {\n targetContext,\n beliefIds: readStringArray(params, \"beliefIds\"),\n });\n return {\n pushedCount: result.data.pushedCount ?? 0,\n targetContext: result.data.targetContext ?? targetContext,\n pushedAt: Date.now(),\n };\n }),\n\n open_pull_request: contractToHandler(\n MCP_TOOL_CONTRACTS.open_pull_request,\n async (params) => {\n const worktreeId = readString(params, \"worktreeId\", {\n required: true,\n })!;\n const summary = readString(params, \"summary\", { required: true })!;\n const reviewers = readStringArray(params, \"reviewers\");\n const result = await workflow.openPullRequest(worktreeId, {\n summary,\n reviewers,\n });\n return {\n pullRequestId: result.data.pullRequestId,\n worktreeId: result.data.worktreeId ?? worktreeId,\n status: result.data.status ?? \"pending_review\",\n };\n }\n ),\n\n list_worktrees: contractToHandler(\n MCP_TOOL_CONTRACTS.list_worktrees,\n async (params) => {\n const topicId = readTopicId(params, { required: true })!;\n const status = mapWorktreeStatus(readString(params, \"status\"));\n const result = await workflow.listWorktrees({\n topicId,\n status,\n });\n const worktrees = Array.isArray(result.data)\n ? result.data\n : result.data == null\n ? []\n : [result.data];\n\n return {\n worktrees: worktrees.map((worktree) => ({\n worktreeId: worktree.worktreeId,\n title: worktree.title,\n phase: (worktree as { phase?: string }).phase ?? null,\n status: worktree.status,\n beliefCount:\n (worktree as { beliefCount?: number }).beliefCount ?? 0,\n createdAt: (worktree as { createdAt?: number }).createdAt ?? null,\n })),\n };\n }\n ),\n };\n}\n","import type { McpHandlerContext, McpToolHandler } from \"../types\";\nimport { createBeliefHandlers } from \"./beliefs\";\nimport { createContextHandlers } from \"./context\";\nimport { createContradictionHandlers } from \"./contradictions\";\nimport { createEdgeHandlers } from \"./edges\";\nimport { createEvidenceHandlers } from \"./evidence\";\nimport { createGraphHandlers } from \"./graph\";\nimport { createJudgmentHandlers } from \"./judgments\";\nimport { createObservationHandlers } from \"./observations\";\nimport { createPolicyHandlers } from \"./policy\";\nimport { createQuestionHandlers } from \"./questions\";\nimport { createResearchHandlers } from \"./research\";\nimport { createSearchHandlers } from \"./search\";\nimport { createTaskHandlers } from \"./tasks\";\nimport { createWorktreeHandlers } from \"./worktrees\";\n\nexport function createMcpHandlerRegistry(\n context: McpHandlerContext\n): Record<string, McpToolHandler> {\n return {\n ...createBeliefHandlers(context),\n ...createEvidenceHandlers(context),\n ...createContradictionHandlers(context),\n ...createEdgeHandlers(context),\n ...createContextHandlers(context),\n ...createWorktreeHandlers(context),\n\n // Placeholder families wired in Block 6.\n ...createQuestionHandlers(context),\n ...createSearchHandlers(context),\n ...createJudgmentHandlers(context),\n ...createGraphHandlers(context),\n ...createResearchHandlers(context),\n ...createObservationHandlers(context),\n ...createTaskHandlers(context),\n ...createPolicyHandlers(context),\n };\n}\n","import {\n invokeRegisteredCustomTool,\n listRegisteredCustomTools,\n MCP_TOOL_CONTRACTS,\n type JsonObject,\n type McpToolContract,\n type RegisteredCustomTool,\n} from \"@lucern/sdk\";\nimport {\n createToolExecutionEnvelope,\n executeToolWithEnvelope,\n normalizeToolExecutionParams,\n type ToolExecutionAuditEvent,\n type ToolExecutionAuthMode,\n type ToolExecutionEnvelope,\n type ToolExecutionTransportKind,\n} from \"./execution\";\nimport {\n contractToHandler,\n createNotImplementedHandler,\n toMcpResult,\n toMcpError,\n} from \"./handler-factory\";\nimport { isServicePrincipalKey, isTenantApiKey } from \"./credentials\";\nimport { createMcpHandlerRegistry } from \"./handlers/index\";\nimport { McpObservationStore } from \"./observation-store\";\nimport type { McpHandlerContext, McpToolHandler, McpToolResult } from \"./types\";\n\ntype ResourceUri = (typeof LUCERN_MCP_RESOURCE_URIS)[number];\ntype BuiltinToolName = keyof typeof MCP_TOOL_CONTRACTS;\ntype ToolName = string;\n\ntype McpToolExecutor = (\n toolName: ToolName,\n params: Record<string, unknown>,\n contract: McpToolContract\n) => Promise<unknown>;\n\ntype McpServerRuntime = {\n registerResource?: (\n uri: string,\n handler: (params: Record<string, unknown>) => Promise<unknown>\n ) => void;\n registerTool?: (\n name: string,\n handler: (params: Record<string, unknown>) => Promise<unknown>\n ) => void;\n};\n\ntype McpResourceDescriptor = {\n uri: ResourceUri;\n requiredScopes: readonly string[];\n};\n\ntype McpToolDescriptor = {\n name: ToolName;\n requiredScopes: readonly string[];\n contract: McpToolContract;\n implemented: boolean;\n source: \"platform\" | \"custom\";\n};\n\nexport type AdditionalMcpTool = {\n name: ToolName;\n requiredScopes: readonly string[];\n contract: McpToolContract;\n handler: McpToolHandler;\n implemented?: boolean;\n source?: \"platform\" | \"custom\";\n};\n\nfunction loadMcpSdk(): Record<string, unknown> {\n try {\n const dynamicRequire = eval(\"require\") as (moduleName: string) => unknown;\n return (dynamicRequire(\"@modelcontextprotocol/sdk\") ?? {}) as Record<\n string,\n unknown\n >;\n } catch {\n return {};\n }\n}\n\nexport const LUCERN_MCP_RESOURCE_URIS = [\n \"lucern://schema/kernel\",\n \"lucern://schema/packs/{packId}\",\n \"lucern://schema/extensions\",\n \"lucern://graph/sample\",\n \"lucern://api/openapi\",\n \"lucern://sdk/examples\",\n \"lucern://docs/invariants\",\n] as const;\n\nexport const MCP_AUTH_ERROR_CODES = [\n \"AUTHENTICATION_REQUIRED\",\n \"SCOPE_INSUFFICIENT\",\n \"ENVIRONMENT_MISMATCH\",\n] as const;\n\nexport const MCP_RATE_LIMIT_SIGNALS = [\n \"RATE_LIMIT_EXCEEDED\",\n \"Retry-After\",\n] as const;\n\nexport const LUCERN_MCP_TOOL_NAMES = Object.keys(\n MCP_TOOL_CONTRACTS\n) as BuiltinToolName[];\n\nconst MCP_RESOURCE_SCOPES: readonly McpResourceDescriptor[] = [\n { uri: \"lucern://schema/kernel\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://schema/packs/{packId}\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://schema/extensions\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://graph/sample\", requiredScopes: [\"graph:read\"] },\n { uri: \"lucern://api/openapi\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://sdk/examples\", requiredScopes: [\"schema:read\"] },\n { uri: \"lucern://docs/invariants\", requiredScopes: [\"schema:read\"] },\n];\n\nconst SCOPE_BY_PRIMITIVE: Record<\n McpToolContract[\"ontologyPrimitive\"],\n readonly string[]\n> = {\n belief: [\"graph:read\", \"graph:write\"],\n evidence: [\"graph:read\", \"graph:write\"],\n source: [\"graph:read\", \"graph:write\", \"source:read\"],\n question: [\"graph:read\", \"graph:write\"],\n judgment: [\"decision:write\", \"graph:read\"],\n worktree: [\"workflow:write\", \"graph:read\"],\n branch: [\"workflow:write\"],\n lens: [\"workflow:write\"],\n edge: [\"graph:write\"],\n graph: [\"graph:read\"],\n task: [\"task:write\", \"task:read\"],\n policy: [\"policy:read\"],\n ontology: [\"graph:read\", \"graph:write\"],\n identity: [\"identity:read\"],\n};\n\nconst TOOL_SCOPE_OVERRIDES: Partial<\n Record<BuiltinToolName, readonly string[]>\n> = {\n merge: [\"workflow:write\", \"graph:write\", \"decision:write\"],\n open_pull_request: [\"workflow:write\", \"review:write\"],\n push: [\"workflow:write\", \"publish:write\"],\n compile_context: [\"graph:read\"],\n check_permission: [\"policy:read\"],\n filter_by_permission: [\"policy:read\"],\n execute_deep_research: [\"source:read\", \"research:execute\", \"graph:write\"],\n search_sources: [\"source:read\"],\n ingest_observation: [\"graph:write\", \"graph:read\"],\n get_observation_context: [\"graph:read\"],\n detect_confirmation_bias: [\"intelligence:read\", \"graph:read\"],\n get_graph_structure_analysis: [\"intelligence:read\", \"graph:read\"],\n get_falsification_questions: [\"intelligence:read\", \"graph:read\"],\n get_high_priority_questions: [\"graph:read\"],\n find_missing_questions: [\"graph:read\"],\n};\n\nfunction uniqueScopes(scopes: readonly string[]): readonly string[] {\n return [...new Set(scopes)];\n}\n\nfunction deriveToolScopes(contract: McpToolContract): readonly string[] {\n const override = TOOL_SCOPE_OVERRIDES[contract.name as BuiltinToolName];\n if (override) {\n return uniqueScopes(override);\n }\n return uniqueScopes(SCOPE_BY_PRIMITIVE[contract.ontologyPrimitive]);\n}\n\nfunction deriveCustomToolScopes(\n customTool: RegisteredCustomTool\n): readonly string[] {\n return uniqueScopes(customTool.metadata.requiredScopes ?? [\"custom:execute\"]);\n}\n\nfunction createFallbackRuntime(): McpServerRuntime {\n return {\n registerResource: () => {},\n registerTool: () => {},\n };\n}\n\nfunction createMcpRuntime(): McpServerRuntime {\n const sdk = loadMcpSdk();\n const Server = (sdk as Record<string, unknown>).Server as\n | (new (\n ...args: unknown[]\n ) => McpServerRuntime)\n | undefined;\n if (!Server) {\n return createFallbackRuntime();\n }\n try {\n return new Server(\n { name: \"lucern-platform-mcp\", version: \"1.2.0\" },\n { capabilities: { resources: {}, tools: {} } }\n );\n } catch {\n return createFallbackRuntime();\n }\n}\n\nfunction createSdkConfig(options?: {\n apiKey?: string;\n sessionToken?: string;\n baseUrl?: string;\n fetchImpl?: typeof fetch;\n}) {\n const sessionHeaders = (\n token: string\n ): Record<string, string> => ({\n Authorization: `Bearer ${token}`,\n });\n const apiKeyHeaders = (\n apiKey: string\n ): Record<string, string> =>\n apiKey.startsWith(\"luc_\") || apiKey.startsWith(\"stk_\")\n ? { \"x-lucern-key\": apiKey }\n : { Authorization: `Bearer ${apiKey}` };\n const getAuthHeaders = options?.sessionToken\n ? async () => sessionHeaders(options.sessionToken as string)\n : options?.apiKey\n ? async () => apiKeyHeaders(options.apiKey as string)\n : undefined;\n return {\n baseUrl: options?.baseUrl,\n fetchImpl: options?.fetchImpl,\n getAuthHeaders,\n };\n}\n\nfunction executeWithHandler(\n _name: ToolName,\n handler: McpToolHandler,\n contract: McpToolContract,\n params: Record<string, unknown>\n): Promise<McpToolResult> {\n try {\n return handler(params, contract);\n } catch (error) {\n return Promise.resolve(toMcpError(error));\n }\n}\n\nfunction isMcpToolResult(value: unknown): value is McpToolResult {\n if (!value || typeof value !== \"object\") {\n return false;\n }\n const candidate = value as Record<string, unknown>;\n if (!Array.isArray(candidate.content)) {\n return false;\n }\n return candidate.content.every((entry) => {\n if (!entry || typeof entry !== \"object\") {\n return false;\n }\n return typeof (entry as Record<string, unknown>).text === \"string\";\n });\n}\n\nfunction normalizeExecutorResult(value: unknown): McpToolResult {\n return isMcpToolResult(value) ? value : toMcpResult(value);\n}\n\nfunction detectAuthMode(options?: {\n apiKey?: string;\n sessionToken?: string;\n authMode?: ToolExecutionAuthMode;\n}): ToolExecutionAuthMode {\n if (options?.authMode) {\n return options.authMode;\n }\n if (options?.sessionToken) {\n return \"session_token\";\n }\n if (!options?.apiKey) {\n return \"unknown\";\n }\n if (isTenantApiKey(options.apiKey)) {\n return \"tenant_api_key\";\n }\n if (isServicePrincipalKey(options.apiKey)) {\n return \"service_principal\";\n }\n return \"unknown\";\n}\n\nfunction createCustomMcpHandlerRegistry(\n customTools: readonly RegisteredCustomTool[]\n): Record<string, McpToolHandler> {\n const handlers: Record<string, McpToolHandler> = {};\n for (const customTool of customTools) {\n handlers[customTool.fullName] = contractToHandler(\n customTool.contract,\n async (params) =>\n invokeRegisteredCustomTool(customTool.fullName, params as JsonObject, {\n source: \"mcp\",\n })\n );\n }\n return handlers;\n}\n\nexport function createLucernMcpServer(options?: {\n apiKey?: string;\n sessionToken?: string;\n baseUrl?: string;\n fetchImpl?: typeof fetch;\n toolExecutor?: McpToolExecutor;\n observationStore?: McpObservationStore;\n onObservationIngested?: (topicId: string) => Promise<void> | void;\n transportKind?: ToolExecutionTransportKind;\n authMode?: ToolExecutionAuthMode;\n onEnvelope?: (envelope: ToolExecutionEnvelope) => Promise<void> | void;\n onAuditEvent?: (\n event: ToolExecutionAuditEvent\n ) => Promise<void> | void;\n additionalTools?: readonly AdditionalMcpTool[];\n}): {\n server: McpServerRuntime;\n resources: readonly McpResourceDescriptor[];\n tools: readonly McpToolDescriptor[];\n authErrorCodes: readonly string[];\n rateLimitSignals: readonly string[];\n handlers: Record<string, McpToolHandler>;\n implementedToolNames: ToolName[];\n unimplementedToolNames: ToolName[];\n} {\n const server = createMcpRuntime();\n const handlerContext: McpHandlerContext = {\n sdkConfig: createSdkConfig(options),\n observationStore: options?.observationStore ?? new McpObservationStore(),\n onObservationIngested: options?.onObservationIngested,\n };\n\n const platformHandlers = createMcpHandlerRegistry(handlerContext);\n const registeredCustomTools = listRegisteredCustomTools();\n const customHandlers = createCustomMcpHandlerRegistry(registeredCustomTools);\n const additionalTools = options?.additionalTools ?? [];\n const additionalHandlers = Object.fromEntries(\n additionalTools.map((tool) => [tool.name, tool.handler])\n );\n const baseHandlers = {\n ...platformHandlers,\n ...customHandlers,\n ...additionalHandlers,\n };\n\n const platformTools: McpToolDescriptor[] = LUCERN_MCP_TOOL_NAMES.map(\n (toolName) => {\n const contract = MCP_TOOL_CONTRACTS[toolName];\n return {\n name: toolName,\n requiredScopes: deriveToolScopes(contract),\n contract,\n implemented: Boolean(platformHandlers[toolName]),\n source: \"platform\",\n };\n }\n );\n\n const customTools: McpToolDescriptor[] = registeredCustomTools.map(\n (customTool) => ({\n name: customTool.fullName,\n requiredScopes: deriveCustomToolScopes(customTool),\n contract: customTool.contract,\n implemented: true,\n source: \"custom\",\n })\n );\n\n const injectedTools: McpToolDescriptor[] = additionalTools.map((tool) => ({\n name: tool.name,\n requiredScopes: tool.requiredScopes,\n contract: tool.contract,\n implemented: tool.implemented ?? true,\n source: tool.source ?? \"custom\",\n }));\n\n const toolMap = new Map<ToolName, McpToolDescriptor>();\n for (const tool of [...platformTools, ...customTools, ...injectedTools]) {\n toolMap.set(tool.name, tool);\n }\n const tools = [...toolMap.values()];\n const transportKind = options?.transportKind ?? \"stdio\";\n const authMode = detectAuthMode(options);\n const handlers = Object.fromEntries(\n tools.map((tool) => {\n const baseHandler =\n baseHandlers[tool.name] ?? createNotImplementedHandler(tool.name);\n\n const wrappedHandler: McpToolHandler = async (params, contract) => {\n const normalizedParams = normalizeToolExecutionParams(params);\n const envelope = createToolExecutionEnvelope({\n toolName: tool.name,\n params: normalizedParams,\n contract,\n transportKind,\n authMode,\n requiredScopes: tool.requiredScopes,\n });\n\n return executeToolWithEnvelope({\n envelope,\n execute: async () => {\n if (options?.toolExecutor) {\n try {\n const execution = await options.toolExecutor(\n tool.name,\n normalizedParams,\n contract\n );\n return normalizeExecutorResult(execution);\n } catch (error) {\n return toMcpError(error);\n }\n }\n\n return executeWithHandler(\n tool.name,\n baseHandler,\n contract,\n normalizedParams\n );\n },\n hooks: {\n onEnvelope: options?.onEnvelope,\n onAuditEvent: options?.onAuditEvent,\n },\n });\n };\n\n return [tool.name, wrappedHandler];\n })\n ) as Record<string, McpToolHandler>;\n\n const implementedToolNames = tools\n .filter((tool) => tool.implemented)\n .map((tool) => tool.name);\n const unimplementedToolNames = tools\n .filter((tool) => !tool.implemented)\n .map((tool) => tool.name);\n\n for (const resource of MCP_RESOURCE_SCOPES) {\n server.registerResource?.(resource.uri, async () => ({\n uri: resource.uri,\n requiredScopes: resource.requiredScopes,\n errors: MCP_AUTH_ERROR_CODES,\n }));\n }\n\n for (const tool of tools) {\n const handler = handlers[tool.name] ?? createNotImplementedHandler(tool.name);\n server.registerTool?.(tool.name, async (params) => {\n return handler(params, tool.contract);\n });\n }\n\n return {\n server,\n resources: MCP_RESOURCE_SCOPES,\n tools,\n authErrorCodes: MCP_AUTH_ERROR_CODES,\n rateLimitSignals: MCP_RATE_LIMIT_SIGNALS,\n handlers,\n implementedToolNames,\n unimplementedToolNames,\n };\n}\n","import type { McpParameterDef, McpToolContract } from \"@lucern/sdk\";\nimport {\n McpServer,\n ResourceTemplate,\n} from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { z } from \"zod\";\nimport {\n buildLucernObserverPrompt,\n LUCERN_AGENT_MD,\n LUCERN_OBSERVER_PROMPT_NAME,\n} from \"./agentInstructions\";\nimport type {\n ToolExecutionAuditEvent,\n ToolExecutionAuthMode,\n ToolExecutionEnvelope,\n ToolExecutionTransportKind,\n} from \"./execution\";\nimport { McpObservationStore } from \"./observation-store\";\nimport {\n type AdditionalMcpTool,\n createLucernMcpServer,\n type LUCERN_MCP_RESOURCE_URIS,\n} from \"./server\";\n\ntype ResourceUri = (typeof LUCERN_MCP_RESOURCE_URIS)[number];\ntype StandaloneRuntime = ReturnType<typeof createLucernMcpServer>;\n\nconst OBSERVATION_RESOURCE_TEMPLATE =\n \"lucern://observations/topic/{topicId}\";\nconst OBSERVATION_SEARCH_RESOURCE_TEMPLATE =\n \"lucern://observations/search/{topicId}/{query}\";\nconst OBSERVATION_CONTEXT_RESOURCE_TEMPLATE =\n \"lucern://context/topic/{topicId}\";\nconst OBSERVATION_CONTEXT_SEARCH_RESOURCE_TEMPLATE =\n \"lucern://context/search/{topicId}/{query}\";\n\nexport type StandaloneMcpServerOptions = {\n apiKey?: string;\n sessionToken?: string;\n baseUrl?: string;\n fetchImpl?: typeof fetch;\n transportKind?: ToolExecutionTransportKind;\n authMode?: ToolExecutionAuthMode;\n onEnvelope?: (envelope: ToolExecutionEnvelope) => Promise<void> | void;\n onAuditEvent?: (\n event: ToolExecutionAuditEvent\n ) => Promise<void> | void;\n additionalTools?: readonly AdditionalMcpTool[];\n};\n\nfunction buildToolInputShape(\n contract: McpToolContract\n): Record<string, z.ZodTypeAny> {\n const required = new Set(contract.required);\n const shape: Record<string, z.ZodTypeAny> = {};\n\n for (const [key, definition] of Object.entries(contract.parameters)) {\n const isRequired = required.has(key);\n let schema: z.ZodTypeAny = toZodSchema(definition);\n if (!isRequired) {\n schema = schema.optional();\n }\n shape[key] = schema;\n }\n\n return shape;\n}\n\nfunction toZodSchema(parameter: McpParameterDef): z.ZodTypeAny {\n if (parameter.type === \"string\") {\n if (parameter.enum && parameter.enum.length > 0) {\n return z.enum(parameter.enum as [string, ...string[]]);\n }\n return z.string();\n }\n if (parameter.type === \"number\") {\n return z.number();\n }\n if (parameter.type === \"boolean\") {\n return z.boolean();\n }\n if (parameter.type === \"array\") {\n return z.array(z.unknown());\n }\n return z.record(z.string(), z.unknown());\n}\n\nfunction resourceName(uri: string): string {\n return uri\n .replace(\"lucern://\", \"lucern-\")\n .replace(/[{}]/g, \"\")\n .replace(/[^a-zA-Z0-9]+/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n}\n\nfunction readTemplateVar(\n variables: Record<string, unknown>,\n key: string\n): string | undefined {\n const value = variables[key];\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value) && typeof value[0] === \"string\") {\n return value[0];\n }\n return;\n}\n\nasync function notifyResourceUpdated(\n server: McpServer,\n uri: string\n): Promise<void> {\n try {\n await server.server.sendResourceUpdated({ uri });\n } catch {\n // Notification is best-effort for disconnected clients.\n }\n}\n\nfunction registerResources(\n server: McpServer,\n runtime: StandaloneRuntime,\n observationStore: McpObservationStore\n): {\n resourceUris: string[];\n notifyObservationChanged: (topicId: string) => Promise<void>;\n} {\n const resourceUris: string[] = [];\n\n for (const resource of runtime.resources) {\n resourceUris.push(resource.uri);\n server.registerResource(\n resourceName(resource.uri),\n resource.uri as ResourceUri,\n {\n description: `Lucern resource: ${resource.uri}`,\n mimeType: \"application/json\",\n },\n async () => ({\n contents: [\n {\n uri: resource.uri,\n mimeType: \"application/json\",\n text: JSON.stringify(\n {\n uri: resource.uri,\n requiredScopes: resource.requiredScopes,\n authErrorCodes: runtime.authErrorCodes,\n rateLimitSignals: runtime.rateLimitSignals,\n },\n null,\n 2\n ),\n },\n ],\n })\n );\n }\n\n resourceUris.push(\"lucern://instructions\");\n server.registerResource(\n \"lucern-instructions\",\n \"lucern://instructions\",\n {\n description: \"Lucern MCP behavioral instructions\",\n mimeType: \"text/markdown\",\n },\n async () => ({\n contents: [\n {\n uri: \"lucern://instructions\",\n mimeType: \"text/markdown\",\n text: LUCERN_AGENT_MD,\n },\n ],\n })\n );\n\n resourceUris.push(OBSERVATION_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-observations-topic\",\n new ResourceTemplate(OBSERVATION_RESOURCE_TEMPLATE, { list: undefined }),\n {\n description: \"Observation stream for a topic, sorted by recency.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const topicId = readTemplateVar(\n variables as Record<string, unknown>,\n \"topicId\"\n );\n const records = topicId ? observationStore.list(topicId, 25) : [];\n return {\n contents: [\n {\n uri: `lucern://observations/topic/${topicId ?? \"unknown\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(\n {\n topicId: topicId ?? null,\n observations: records,\n total: records.length,\n requiredScopes: [\"graph:read\"],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n\n resourceUris.push(OBSERVATION_SEARCH_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-observations-search\",\n new ResourceTemplate(OBSERVATION_SEARCH_RESOURCE_TEMPLATE, {\n list: undefined,\n }),\n {\n description:\n \"Semantic-style search over observation stream for topic context recovery.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const values = variables as Record<string, unknown>;\n const topicId = readTemplateVar(values, \"topicId\");\n const query = readTemplateVar(values, \"query\");\n const matches =\n topicId && query ? observationStore.search(topicId, query, 25) : [];\n return {\n contents: [\n {\n uri: `lucern://observations/search/${topicId ?? \"unknown\"}/${query ?? \"none\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(\n {\n topicId: topicId ?? null,\n query: query ?? null,\n matches,\n requiredScopes: [\"graph:read\"],\n },\n null,\n 2\n ),\n },\n ],\n };\n }\n );\n\n resourceUris.push(OBSERVATION_CONTEXT_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-context-topic\",\n new ResourceTemplate(OBSERVATION_CONTEXT_RESOURCE_TEMPLATE, {\n list: undefined,\n }),\n {\n description:\n \"Context injection payload for a topic using recent observations.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const topicId = readTemplateVar(\n variables as Record<string, unknown>,\n \"topicId\"\n );\n const context = topicId\n ? observationStore.getContext({ topicId, limit: 12 })\n : observationStore.getContext({ topicId: \"unknown\", limit: 12 });\n return {\n contents: [\n {\n uri: `lucern://context/topic/${topicId ?? \"unknown\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(context, null, 2),\n },\n ],\n };\n }\n );\n\n resourceUris.push(OBSERVATION_CONTEXT_SEARCH_RESOURCE_TEMPLATE);\n server.registerResource(\n \"lucern-context-search\",\n new ResourceTemplate(OBSERVATION_CONTEXT_SEARCH_RESOURCE_TEMPLATE, {\n list: undefined,\n }),\n {\n description:\n \"Context injection payload with semantic matches for a query.\",\n mimeType: \"application/json\",\n },\n async (_uri, variables) => {\n const values = variables as Record<string, unknown>;\n const topicId = readTemplateVar(values, \"topicId\");\n const query = readTemplateVar(values, \"query\");\n const context = observationStore.getContext({\n topicId: topicId ?? \"unknown\",\n query,\n limit: 12,\n });\n return {\n contents: [\n {\n uri: `lucern://context/search/${topicId ?? \"unknown\"}/${query ?? \"none\"}`,\n mimeType: \"application/json\",\n text: JSON.stringify(context, null, 2),\n },\n ],\n };\n }\n );\n\n const notifyObservationChanged = async (topicId: string): Promise<void> => {\n const encoded = encodeURIComponent(topicId);\n await notifyResourceUpdated(\n server,\n `lucern://observations/topic/${encoded}`\n );\n await notifyResourceUpdated(server, `lucern://context/topic/${encoded}`);\n try {\n await server.server.sendResourceListChanged();\n } catch {\n // Best-effort only.\n }\n };\n\n return { resourceUris, notifyObservationChanged };\n}\n\nfunction registerPrompts(server: McpServer): string[] {\n server.registerPrompt(\n LUCERN_OBSERVER_PROMPT_NAME,\n {\n description:\n \"Observer instructions for identifying and proposing epistemic graph updates.\",\n argsSchema: {\n topicId: z.string().optional(),\n },\n },\n async (args) => ({\n description:\n \"Guidance prompt for reasoning-trace observation and confirmation-first mutations.\",\n messages: [\n {\n role: \"assistant\",\n content: {\n type: \"text\",\n text: buildLucernObserverPrompt(args.topicId),\n },\n },\n ],\n })\n );\n\n return [LUCERN_OBSERVER_PROMPT_NAME];\n}\n\nfunction registerTools(server: McpServer, runtime: StandaloneRuntime): void {\n for (const tool of runtime.tools) {\n const shape = buildToolInputShape(tool.contract);\n const handler = runtime.handlers[tool.name];\n\n server.registerTool(\n tool.name,\n {\n description: tool.contract.description,\n inputSchema: shape,\n },\n async (args) => {\n return handler(args as Record<string, unknown>, tool.contract);\n }\n );\n }\n}\n\nexport function createLucernStandaloneMcpServer(\n options?: StandaloneMcpServerOptions\n): {\n server: McpServer;\n runtime: StandaloneRuntime;\n resourceUris: string[];\n promptNames: string[];\n} {\n const observationStore = new McpObservationStore();\n let notifyObservationChanged: (topicId: string) => Promise<void> =\n async () => {};\n const runtime = createLucernMcpServer({\n ...options,\n observationStore,\n onObservationIngested: async (topicId) => {\n await notifyObservationChanged(topicId);\n },\n });\n const server = new McpServer({\n name: \"lucern-mcp\",\n version: \"0.2.0-alpha.2\",\n });\n\n registerTools(server, runtime);\n const resources = registerResources(server, runtime, observationStore);\n notifyObservationChanged = resources.notifyObservationChanged;\n const resourceUris = resources.resourceUris;\n const promptNames = registerPrompts(server);\n\n return {\n server,\n runtime,\n resourceUris,\n promptNames,\n };\n}\n\nexport async function startLucernMcpStdioServer(\n options?: StandaloneMcpServerOptions\n): Promise<{\n server: McpServer;\n runtime: StandaloneRuntime;\n resourceUris: string[];\n promptNames: string[];\n}> {\n const packageServer = createLucernStandaloneMcpServer({\n ...options,\n transportKind: options?.transportKind ?? \"stdio\",\n });\n const transport = new StdioServerTransport();\n await packageServer.server.connect(transport);\n return packageServer;\n}\n","import {\n createServer,\n type IncomingMessage,\n type ServerResponse,\n} from \"node:http\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { isServicePrincipalKey, isTenantApiKey } from \"./credentials\";\nimport {\n createLucernStandaloneMcpServer,\n type StandaloneMcpServerOptions,\n} from \"./standalone\";\n\nexport type RemoteMcpAuthHeaders = {\n apiKey?: string;\n serverToken?: string;\n};\n\nexport type RemoteMcpServerOptions = StandaloneMcpServerOptions & {\n host?: string;\n port?: number;\n path?: string;\n healthPath?: string;\n serverAuthToken?: string;\n allowApiKeyPassthrough?: boolean;\n};\n\nfunction resolveAuthMode(auth: RemoteMcpAuthHeaders):\n | \"tenant_api_key\"\n | \"service_principal\"\n | \"unknown\" {\n if (!auth.apiKey) {\n return \"unknown\";\n }\n if (isTenantApiKey(auth.apiKey)) {\n return \"tenant_api_key\";\n }\n if (isServicePrincipalKey(auth.apiKey)) {\n return \"service_principal\";\n }\n return \"unknown\";\n}\n\nfunction readHeaderValue(\n req: IncomingMessage,\n key: string\n): string | undefined {\n const value = req.headers[key.toLowerCase()];\n if (typeof value === \"string\") {\n return value;\n }\n if (Array.isArray(value) && value.length > 0) {\n return value[0];\n }\n return;\n}\n\nfunction readBearerToken(req: IncomingMessage): string | undefined {\n const authorization = readHeaderValue(req, \"authorization\");\n if (!authorization) {\n return;\n }\n const [scheme, token] = authorization.split(/\\s+/, 2);\n if (!scheme || !token) {\n return;\n }\n return scheme.toLowerCase() === \"bearer\" ? token : undefined;\n}\n\nfunction normalizePath(input: string): string {\n if (input === \"/\") {\n return input;\n }\n return input.endsWith(\"/\") ? input.slice(0, -1) : input;\n}\n\nfunction requestPath(req: IncomingMessage): string {\n const value = req.url ?? \"/\";\n try {\n return new URL(value, \"http://localhost\").pathname;\n } catch {\n return \"/\";\n }\n}\n\nfunction jsonResponse(\n res: ServerResponse,\n statusCode: number,\n payload: unknown\n): void {\n res.statusCode = statusCode;\n res.setHeader(\"content-type\", \"application/json\");\n res.end(JSON.stringify(payload));\n}\n\nasync function readJsonBody(req: IncomingMessage): Promise<unknown> {\n const chunks: Buffer[] = [];\n for await (const chunk of req) {\n chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));\n }\n if (chunks.length === 0) {\n return;\n }\n const raw = Buffer.concat(chunks).toString(\"utf8\").trim();\n if (!raw) {\n return;\n }\n return JSON.parse(raw) as unknown;\n}\n\nfunction resolveAuthHeaders(\n req: IncomingMessage,\n options: RemoteMcpServerOptions\n): RemoteMcpAuthHeaders {\n const serverTokenHeader = readHeaderValue(req, \"x-lucern-mcp-token\");\n const bearer = readBearerToken(req);\n\n const authHeaders: RemoteMcpAuthHeaders = {};\n authHeaders.serverToken = serverTokenHeader ?? bearer;\n\n if (options.apiKey) {\n authHeaders.apiKey = options.apiKey;\n return authHeaders;\n }\n\n if (options.allowApiKeyPassthrough === false) {\n return authHeaders;\n }\n\n const directKey = readHeaderValue(req, \"x-lucern-key\");\n if (directKey?.trim()) {\n authHeaders.apiKey = directKey.trim();\n return authHeaders;\n }\n\n if (bearer?.startsWith(\"luc_\")) {\n authHeaders.apiKey = bearer;\n }\n\n return authHeaders;\n}\n\nexport function createLucernMcpHttpRequestHandler(\n options?: RemoteMcpServerOptions\n): (req: IncomingMessage, res: ServerResponse) => Promise<void> {\n const path = normalizePath(options?.path ?? \"/mcp\");\n const healthPath = normalizePath(options?.healthPath ?? \"/health\");\n\n return async (req, res) => {\n const currentPath = normalizePath(requestPath(req));\n const method = (req.method ?? \"GET\").toUpperCase();\n\n if (currentPath === healthPath) {\n jsonResponse(res, 200, { status: \"ok\", service: \"lucern-mcp-http\" });\n return;\n }\n\n if (currentPath !== path) {\n jsonResponse(res, 404, {\n jsonrpc: \"2.0\",\n error: { code: -32_004, message: \"Not found.\" },\n id: null,\n });\n return;\n }\n\n const auth = resolveAuthHeaders(req, options ?? {});\n if (\n options?.serverAuthToken &&\n auth.serverToken !== options.serverAuthToken\n ) {\n jsonResponse(res, 401, {\n jsonrpc: \"2.0\",\n error: { code: -32_001, message: \"Unauthorized.\" },\n id: null,\n });\n return;\n }\n\n if (!auth.apiKey) {\n jsonResponse(res, 401, {\n jsonrpc: \"2.0\",\n error: {\n code: -32_001,\n message:\n \"Missing Lucern API key. Provide x-lucern-key or Bearer luc_ token.\",\n },\n id: null,\n });\n return;\n }\n\n let parsedBody: unknown;\n if (method === \"POST\" || method === \"DELETE\") {\n try {\n parsedBody = await readJsonBody(req);\n } catch {\n jsonResponse(res, 400, {\n jsonrpc: \"2.0\",\n error: { code: -32_700, message: \"Invalid JSON body.\" },\n id: null,\n });\n return;\n }\n }\n\n const packageServer = createLucernStandaloneMcpServer({\n apiKey: auth.apiKey,\n baseUrl: options?.baseUrl,\n fetchImpl: options?.fetchImpl,\n transportKind: \"remote\",\n authMode: resolveAuthMode(auth),\n });\n\n try {\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n enableJsonResponse: true,\n });\n await packageServer.server.connect(transport);\n await transport.handleRequest(req, res, parsedBody);\n await transport.close();\n await packageServer.server.close();\n } catch (error) {\n if (!res.headersSent) {\n jsonResponse(res, 500, {\n jsonrpc: \"2.0\",\n error: {\n code: -32_603,\n message:\n error instanceof Error ? error.message : \"Internal server error.\",\n },\n id: null,\n });\n }\n }\n };\n}\n\nexport async function startLucernMcpHttpServer(\n options?: RemoteMcpServerOptions\n): Promise<{\n host: string;\n port: number;\n path: string;\n healthPath: string;\n close: () => Promise<void>;\n}> {\n const host = options?.host ?? \"127.0.0.1\";\n const port = options?.port ?? 8080;\n const path = normalizePath(options?.path ?? \"/mcp\");\n const healthPath = normalizePath(options?.healthPath ?? \"/health\");\n const handler = createLucernMcpHttpRequestHandler(options);\n const server = createServer((req, res) => {\n handler(req, res).catch((error) => {\n if (!res.headersSent) {\n jsonResponse(res, 500, {\n jsonrpc: \"2.0\",\n error: {\n code: -32_603,\n message:\n error instanceof Error ? error.message : \"Internal server error.\",\n },\n id: null,\n });\n }\n });\n });\n\n await new Promise<void>((resolve, reject) => {\n server.once(\"error\", reject);\n server.listen(port, host, () => {\n server.off(\"error\", reject);\n resolve();\n });\n });\n\n const address = server.address();\n const listeningPort =\n typeof address === \"object\" && address && typeof address.port === \"number\"\n ? address.port\n : port;\n\n return {\n host,\n port: listeningPort,\n path,\n healthPath,\n close: async () => {\n await new Promise<void>((resolve, reject) => {\n server.close((error) => {\n if (error) {\n reject(error);\n return;\n }\n resolve();\n });\n });\n },\n };\n}\n","import { startLucernMcpHttpServer } from \"./remote\";\nimport { startLucernMcpStdioServer } from \"./standalone\";\n\ntype CliConfig = {\n transport?: \"stdio\" | \"http\";\n apiKey?: string;\n baseUrl?: string;\n topicId?: string;\n host?: string;\n port?: number;\n path?: string;\n healthPath?: string;\n serverAuthToken?: string;\n allowApiKeyPassthrough?: boolean;\n};\n\nfunction parseArgs(args: readonly string[]): CliConfig {\n const config: CliConfig = {};\n for (let index = 0; index < args.length; index += 1) {\n const arg = args[index];\n const next = args[index + 1];\n if (arg === \"--api-key\" && next) {\n config.apiKey = next;\n index += 1;\n continue;\n }\n if (arg === \"--transport\" && next) {\n if (next === \"stdio\" || next === \"http\") {\n config.transport = next;\n }\n index += 1;\n continue;\n }\n if (arg === \"--base-url\" && next) {\n config.baseUrl = next;\n index += 1;\n continue;\n }\n if (arg === \"--topic-id\" && next) {\n config.topicId = next;\n index += 1;\n continue;\n }\n if (arg === \"--host\" && next) {\n config.host = next;\n index += 1;\n continue;\n }\n if (arg === \"--port\" && next) {\n const parsed = Number.parseInt(next, 10);\n if (Number.isFinite(parsed) && parsed > 0) {\n config.port = parsed;\n }\n index += 1;\n continue;\n }\n if (arg === \"--path\" && next) {\n config.path = next;\n index += 1;\n continue;\n }\n if (arg === \"--health-path\" && next) {\n config.healthPath = next;\n index += 1;\n continue;\n }\n if (arg === \"--server-auth-token\" && next) {\n config.serverAuthToken = next;\n index += 1;\n continue;\n }\n if (arg === \"--allow-api-key-passthrough\") {\n config.allowApiKeyPassthrough = true;\n continue;\n }\n if (arg === \"--no-api-key-passthrough\") {\n config.allowApiKeyPassthrough = false;\n }\n }\n return config;\n}\n\nfunction printUsage(): void {\n console.error(\n [\n \"Usage:\",\n \" lucern-mcp [--transport stdio|http] [options]\",\n \"\",\n \"Env fallbacks:\",\n \" LUCERN_MCP_TRANSPORT\",\n \" LUCERN_API_KEY\",\n \" LUCERN_BASE_URL\",\n \" LUCERN_TOPIC_ID\",\n \" LUCERN_MCP_HOST\",\n \" LUCERN_MCP_PORT\",\n \" LUCERN_MCP_PATH\",\n \" LUCERN_MCP_HEALTH_PATH\",\n \" LUCERN_MCP_SERVER_AUTH_TOKEN\",\n \" LUCERN_MCP_ALLOW_API_KEY_PASSTHROUGH\",\n \"\",\n \"Options:\",\n \" --transport <stdio|http> Transport mode (default: stdio)\",\n \" --api-key <key> Static Lucern API key for upstream calls\",\n \" --base-url <url> Lucern platform API base URL\",\n \" --host <host> HTTP host (default: 127.0.0.1)\",\n \" --port <port> HTTP port (default: 8080)\",\n \" --path <path> MCP HTTP route (default: /mcp)\",\n \" --health-path <path> Health route (default: /health)\",\n \" --server-auth-token <token> Optional bearer/shared token to protect hosted MCP\",\n \" --allow-api-key-passthrough Allow inbound x-lucern-key/Bearer luc_* pass-through\",\n \" --no-api-key-passthrough Disable inbound API key pass-through\",\n \" --topic-id <id> Optional topic hint for logging only\",\n ].join(\"\\n\")\n );\n}\n\nexport async function runLucernMcpCli(\n argv: readonly string[] = process.argv.slice(2)\n): Promise<void> {\n if (argv.includes(\"--help\") || argv.includes(\"-h\")) {\n printUsage();\n return;\n }\n\n const parsed = parseArgs(argv);\n const transport = (\n parsed.transport ??\n process.env.LUCERN_MCP_TRANSPORT ??\n \"stdio\"\n ).toLowerCase();\n const apiKey = parsed.apiKey ?? process.env.LUCERN_API_KEY;\n const baseUrl = parsed.baseUrl ?? process.env.LUCERN_BASE_URL;\n const topicId = parsed.topicId ?? process.env.LUCERN_TOPIC_ID;\n const host = parsed.host ?? process.env.LUCERN_MCP_HOST;\n const path = parsed.path ?? process.env.LUCERN_MCP_PATH;\n const healthPath = parsed.healthPath ?? process.env.LUCERN_MCP_HEALTH_PATH;\n const serverAuthToken =\n parsed.serverAuthToken ?? process.env.LUCERN_MCP_SERVER_AUTH_TOKEN;\n const allowApiKeyPassthrough =\n parsed.allowApiKeyPassthrough ??\n (process.env.LUCERN_MCP_ALLOW_API_KEY_PASSTHROUGH\n ? process.env.LUCERN_MCP_ALLOW_API_KEY_PASSTHROUGH.toLowerCase() !==\n \"false\"\n : true);\n const portValue = parsed.port ?? process.env.LUCERN_MCP_PORT;\n const parsedPort =\n typeof portValue === \"number\"\n ? portValue\n : portValue\n ? Number.parseInt(portValue, 10)\n : undefined;\n const port =\n parsedPort && Number.isFinite(parsedPort) && parsedPort > 0\n ? parsedPort\n : undefined;\n\n if (transport !== \"stdio\" && transport !== \"http\") {\n console.error(`Unsupported transport: ${transport}`);\n printUsage();\n process.exitCode = 1;\n return;\n }\n\n if (transport === \"stdio\" && !apiKey) {\n console.error(\"LUCERN_API_KEY is required.\");\n printUsage();\n process.exitCode = 1;\n return;\n }\n\n if (transport === \"stdio\") {\n await startLucernMcpStdioServer({\n apiKey,\n baseUrl,\n });\n\n if (topicId) {\n console.error(`lucern-mcp started (stdio) for topicId=${topicId}`);\n } else {\n console.error(\"lucern-mcp started (stdio)\");\n }\n return;\n }\n\n const hosted = await startLucernMcpHttpServer({\n apiKey,\n baseUrl,\n host,\n port,\n path,\n healthPath,\n serverAuthToken,\n allowApiKeyPassthrough,\n });\n\n const base = `http://${hosted.host}:${hosted.port}`;\n console.error(`lucern-mcp started (http): ${base}${hosted.path}`);\n console.error(`lucern-mcp health: ${base}${hosted.healthPath}`);\n if (topicId) {\n console.error(`lucern-mcp topic hint: ${topicId}`);\n }\n}\n","import { MCP_TOOL_CONTRACTS, type McpToolContract } from \"@lucern/sdk\";\n\nfunction pickToolContracts(\n names: readonly string[]\n): Record<string, McpToolContract> {\n return Object.fromEntries(\n names.flatMap((name) => {\n const contract = MCP_TOOL_CONTRACTS[name];\n return contract ? [[name, contract]] : [];\n })\n );\n}\n\nexport const BOOTSTRAP_MCP_TOOLS = pickToolContracts([\n \"generate_session_handoff\",\n \"begin_build_session\",\n]);\n\nexport const COORDINATION_MCP_TOOLS = pickToolContracts([\n \"register_session\",\n \"heartbeat_session\",\n \"end_session\",\n \"list_active_sessions\",\n \"send_agent_message\",\n \"broadcast_message\",\n \"get_agent_inbox\",\n \"claim_files\",\n]);\n\nexport const EPISTEMIC_CONTRACT_MCP_TOOLS = pickToolContracts([\n \"create_epistemic_contract\",\n \"evaluate_contract\",\n \"get_contract_status\",\n]);\n\nexport const SCOPE_MCP_TOOLS = pickToolContracts([\n \"compile_context\",\n \"record_scope_learning\",\n \"get_thesis_artifacts\",\n \"pipeline_snapshot\",\n \"discover\",\n \"analyze_topic_density\",\n \"apply_auto_branching\",\n \"seed_belief_lattice\",\n \"get_lattice_coverage\",\n \"match_entity_type\",\n \"discover_entity_connections\",\n \"trigger_belief_review\",\n]);\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n type JsonObject,\n} from \"@lucern/sdk\";\nimport type { LegacyAuthContext } from \"./legacyDiscovery\";\nimport {\n BOOTSTRAP_MCP_TOOLS,\n COORDINATION_MCP_TOOLS,\n EPISTEMIC_CONTRACT_MCP_TOOLS,\n SCOPE_MCP_TOOLS,\n} from \"./legacyToolContracts\";\n\nexport type LegacyAuthenticatedHandler = (\n args: Record<string, unknown>,\n ctx: LegacyAuthContext\n) => Promise<Record<string, unknown>>;\n\nconst LEGACY_HANDLER_TOOL_NAMES = [\n ...Object.keys(SCOPE_MCP_TOOLS),\n ...Object.keys(COORDINATION_MCP_TOOLS),\n ...Object.keys(EPISTEMIC_CONTRACT_MCP_TOOLS),\n ...Object.keys(BOOTSTRAP_MCP_TOOLS),\n];\n\nfunction buildLegacyGatewayClient(ctx: LegacyAuthContext) {\n if (!ctx.gatewayBaseUrl || !ctx.getAuthHeaders) {\n throw new Error(\"Legacy MCP bridge requires gateway auth headers.\");\n }\n\n return createGatewayRequestClient({\n baseUrl: ctx.gatewayBaseUrl,\n getAuthHeaders: ctx.getAuthHeaders,\n });\n}\n\nfunction withSessionId(\n args: Record<string, unknown>,\n ctx: LegacyAuthContext\n): Record<string, unknown> {\n return {\n ...args,\n __sdkSessionId: ctx.sessionId,\n };\n}\n\nexport async function buildLegacyAuthenticatedHandlerMap(): Promise<\n Record<string, LegacyAuthenticatedHandler>\n> {\n return Object.fromEntries(\n LEGACY_HANDLER_TOOL_NAMES.map((toolName) => [\n toolName,\n async (args, ctx) => {\n const gateway = buildLegacyGatewayClient(ctx);\n const response = await gateway.request<Record<string, unknown>>({\n path: `/api/platform/v1/mcp-tools/${encodeURIComponent(toolName)}`,\n method: \"POST\",\n body: withSessionId(args, ctx) as JsonObject,\n idempotencyKey: randomIdempotencyKey(),\n });\n return response.data;\n },\n ])\n );\n}\n","import { createHash } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\n\nexport type EnvCredentials = { url: string; key: string };\nexport type UnifiedPayload = { dev: EnvCredentials; prod?: EnvCredentials };\ntype LegacyPayload = { url: string; key: string };\n\nconst LUCERN_HOME = path.join(os.homedir(), \".lucern\");\nconst CREDENTIALS_FILE = path.join(LUCERN_HOME, \"credentials\");\n\nexport { CREDENTIALS_FILE, LUCERN_HOME };\n\nexport function decodeApiKey(\n apiKey: string,\n prefix: string\n): { unified: UnifiedPayload } | { legacy: LegacyPayload } | null {\n if (!apiKey.startsWith(prefix)) {\n return null;\n }\n\n try {\n const payload = apiKey.slice(prefix.length);\n const b64 = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const json = Buffer.from(b64, \"base64\").toString(\"utf-8\");\n const parsed = JSON.parse(json);\n\n if (\n parsed.dev &&\n typeof parsed.dev.url === \"string\" &&\n typeof parsed.dev.key === \"string\"\n ) {\n const result: UnifiedPayload = { dev: parsed.dev };\n if (\n parsed.prod &&\n typeof parsed.prod.url === \"string\" &&\n typeof parsed.prod.key === \"string\"\n ) {\n result.prod = parsed.prod;\n }\n return { unified: result };\n }\n\n if (typeof parsed.url === \"string\" && typeof parsed.key === \"string\") {\n return { legacy: { url: parsed.url, key: parsed.key } };\n }\n\n return null;\n } catch {\n return null;\n }\n}\n\nexport function selectEnvironment(payload: UnifiedPayload): EnvCredentials {\n const env = (process.env.LUCERN_ENV || \"development\").toLowerCase();\n if (env === \"production\" && payload.prod) {\n return payload.prod;\n }\n return payload.dev;\n}\n\nexport function hashApiKey(apiKey: string): string {\n return createHash(\"sha256\").update(apiKey).digest(\"hex\");\n}\n\nfunction parseCredentialsFile(filePath: string): Record<string, string> {\n if (!fs.existsSync(filePath)) {\n return {};\n }\n\n const result: Record<string, string> = {};\n const lines = fs.readFileSync(filePath, \"utf-8\").split(\"\\n\");\n for (const line of lines) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) {\n continue;\n }\n const eqIdx = trimmed.indexOf(\"=\");\n if (eqIdx < 1) {\n continue;\n }\n const key = trimmed.slice(0, eqIdx).trim();\n let value = trimmed.slice(eqIdx + 1).trim();\n if (\n (value.startsWith('\"') && value.endsWith('\"')) ||\n (value.startsWith(\"'\") && value.endsWith(\"'\"))\n ) {\n value = value.slice(1, -1);\n }\n result[key] = value;\n }\n return result;\n}\n\nexport function writeCredentials(creds: Record<string, string>): void {\n if (!fs.existsSync(LUCERN_HOME)) {\n fs.mkdirSync(LUCERN_HOME, { recursive: true, mode: 0o700 });\n }\n\n const existing = parseCredentialsFile(CREDENTIALS_FILE);\n const merged = { ...existing, ...creds };\n const lines = [\n \"# Lucern credentials - managed by `lucern init`\",\n \"# This file is outside any git repo. Git operations cannot destroy it.\",\n \"\",\n ];\n\n for (const [key, value] of Object.entries(merged)) {\n lines.push(`${key}=${value}`);\n }\n\n fs.writeFileSync(CREDENTIALS_FILE, `${lines.join(\"\\n\")}\\n`, {\n mode: 0o600,\n });\n}\n\nexport function resolveCredentials(): {\n lucernResolved: boolean;\n stackResolved: boolean;\n mcResolved: boolean;\n source: string;\n rawLucernApiKey?: string;\n rawStackApiKey?: string;\n rawUserToken?: string;\n} {\n if (process.env.LUCERN_CONVEX_URL && process.env.LUCERN_DEPLOY_KEY) {\n return {\n lucernResolved: true,\n stackResolved: Boolean(process.env.STACK_CONVEX_URL),\n mcResolved: Boolean(\n process.env.MC_CONVEX_URL && process.env.MC_DEPLOY_KEY\n ),\n source: \"env\",\n rawLucernApiKey: process.env.LUCERN_API_KEY,\n rawStackApiKey: process.env.STACK_API_KEY,\n rawUserToken: process.env.LUCERN_USER_TOKEN,\n };\n }\n\n let source = \"none\";\n let lucernApiKey = process.env.LUCERN_API_KEY;\n let stackApiKey = process.env.STACK_API_KEY;\n let userToken = process.env.LUCERN_USER_TOKEN;\n\n if (lucernApiKey) {\n source = \"env\";\n }\n\n const creds = parseCredentialsFile(CREDENTIALS_FILE);\n\n if (lucernApiKey) {\n if (creds.LUCERN_USER_TOKEN && !userToken) {\n userToken = creds.LUCERN_USER_TOKEN;\n process.env.LUCERN_USER_TOKEN = userToken;\n }\n } else if (creds.LUCERN_API_KEY) {\n lucernApiKey = creds.LUCERN_API_KEY;\n stackApiKey = stackApiKey ?? creds.STACK_API_KEY;\n userToken = userToken ?? creds.LUCERN_USER_TOKEN;\n source = \"credentials\";\n }\n\n if (\n !lucernApiKey &&\n process.env.LUCERN_CONVEX_URL &&\n process.env.LUCERN_DEPLOY_KEY\n ) {\n source = \"direct\";\n return {\n lucernResolved: true,\n stackResolved: Boolean(process.env.STACK_CONVEX_URL),\n mcResolved: Boolean(\n process.env.MC_CONVEX_URL && process.env.MC_DEPLOY_KEY\n ),\n source,\n rawUserToken: userToken,\n };\n }\n\n let lucernResolved = false;\n let stackResolved = false;\n\n if (lucernApiKey) {\n const decoded = decodeApiKey(lucernApiKey, \"luc_\");\n if (decoded && \"legacy\" in decoded) {\n process.env.LUCERN_CONVEX_URL = decoded.legacy.url;\n process.env.LUCERN_DEPLOY_KEY = decoded.legacy.key;\n lucernResolved = true;\n } else if (decoded && \"unified\" in decoded) {\n const selected = selectEnvironment(decoded.unified);\n process.env.LUCERN_CONVEX_URL = selected.url;\n process.env.LUCERN_DEPLOY_KEY = selected.key;\n lucernResolved = true;\n }\n }\n\n if (stackApiKey) {\n const decoded = decodeApiKey(stackApiKey, \"stk_\");\n if (decoded && \"legacy\" in decoded) {\n process.env.STACK_CONVEX_URL = decoded.legacy.url;\n process.env.STACK_DEPLOY_KEY = decoded.legacy.key;\n stackResolved = true;\n } else if (decoded && \"unified\" in decoded) {\n const selected = selectEnvironment(decoded.unified);\n process.env.STACK_CONVEX_URL = selected.url;\n process.env.STACK_DEPLOY_KEY = selected.key;\n stackResolved = true;\n }\n }\n\n if (userToken) {\n process.env.LUCERN_USER_TOKEN = userToken;\n }\n\n return {\n lucernResolved,\n stackResolved,\n mcResolved: Boolean(process.env.MC_CONVEX_URL && process.env.MC_DEPLOY_KEY),\n source,\n rawLucernApiKey: lucernApiKey,\n rawStackApiKey: stackApiKey,\n rawUserToken: userToken,\n };\n}\n","import { existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport { createIdentityClient } from \"@lucern/sdk\";\nimport { ConvexHttpClient } from \"convex/browser\";\nimport { config as loadDotenv } from \"dotenv\";\nimport { resolveCredentials } from \"./legacyCredentialResolution\";\n\nexport type JsonRecord = Record<string, unknown>;\n\nlet lucernScriptEnvInitialized = false;\n\nfunction candidateEnvPaths(fileName: string): string[] {\n const roots = [\n process.cwd(),\n resolve(process.cwd(), \"..\"),\n resolve(process.cwd(), \"..\", \"..\"),\n resolve(process.cwd(), \"..\", \"..\", \"..\"),\n resolve(process.cwd(), \"..\", \"..\", \"..\", \"..\"),\n ];\n\n const seen = new Set<string>();\n const paths: string[] = [];\n for (const root of roots) {\n const candidate = resolve(root, fileName);\n if (seen.has(candidate)) {\n continue;\n }\n seen.add(candidate);\n paths.push(candidate);\n }\n\n return paths;\n}\n\nexport function initializeLucernScriptEnv(): void {\n if (lucernScriptEnvInitialized) {\n return;\n }\n\n for (const envFile of [\".env.local\", \".env.lucern\"]) {\n for (const candidate of candidateEnvPaths(envFile)) {\n if (existsSync(candidate)) {\n loadDotenv({ path: candidate, override: false });\n }\n }\n }\n\n resolveCredentials();\n lucernScriptEnvInitialized = true;\n}\n\nexport function readArg(name: string, fallback?: string): string | undefined {\n const index = process.argv.indexOf(name);\n if (index === -1) {\n return fallback;\n }\n return process.argv[index + 1] || fallback;\n}\n\nfunction requireEnv(name: string): string {\n initializeLucernScriptEnv();\n const value = process.env[name];\n if (!value || !value.trim()) {\n throw new Error(`${name} is required`);\n }\n return value;\n}\n\nfunction resolveScriptBaseUrl(): string {\n const explicit =\n process.env.LUCERN_BASE_URL ??\n process.env.NEXT_PUBLIC_APP_URL ??\n process.env.APP_URL;\n return explicit?.trim() || \"http://localhost:3000\";\n}\n\nfunction getScriptAuthHeaders(apiKey: string): Record<string, string> {\n return apiKey.startsWith(\"luc_\") || apiKey.startsWith(\"stk_\")\n ? { \"x-lucern-key\": apiKey }\n : { Authorization: `Bearer ${apiKey}` };\n}\n\nfunction parseToolJson(result: unknown): JsonRecord {\n const content = Array.isArray((result as { content?: unknown })?.content)\n ? (result as { content: Array<{ type?: string; text?: string }> }).content\n : [];\n const textBlock = content.find(\n (block) => block?.type === \"text\" && typeof block?.text === \"string\"\n );\n\n if (!textBlock?.text) {\n throw new Error(\"MCP tool returned no text payload\");\n }\n\n try {\n return JSON.parse(textBlock.text) as JsonRecord;\n } catch (error) {\n throw new Error(\n `Failed to parse MCP tool payload: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n}\n\nexport async function createLucernMcpClient(): Promise<Client> {\n initializeLucernScriptEnv();\n const convexUrl = requireEnv(\"LUCERN_CONVEX_URL\");\n const deployKey = requireEnv(\"LUCERN_DEPLOY_KEY\");\n\n const transport = new StdioClientTransport({\n command: \"npx\",\n args: [\"tsx\", \"lucern/apps/mcp-server/src/index.ts\"],\n env: {\n ...process.env,\n LUCERN_CONVEX_URL: convexUrl,\n LUCERN_DEPLOY_KEY: deployKey,\n },\n });\n\n const client = new Client(\n { name: \"lucern-mcp-script-client\", version: \"1.0.0\" },\n { capabilities: {} }\n );\n\n await client.connect(transport);\n return client;\n}\n\nexport function createLucernAdminClient(): ConvexHttpClient {\n initializeLucernScriptEnv();\n const client = new ConvexHttpClient(requireEnv(\"LUCERN_CONVEX_URL\"));\n (client as unknown as { setAdminAuth: (key: string) => void }).setAdminAuth(\n requireEnv(\"LUCERN_DEPLOY_KEY\")\n );\n return client;\n}\n\nexport async function resolveMcpSessionTenantId(): Promise<string | undefined> {\n initializeLucernScriptEnv();\n const apiKey = resolveCredentials().rawLucernApiKey;\n if (!apiKey) {\n return undefined;\n }\n\n try {\n const identity = createIdentityClient({\n baseUrl: resolveScriptBaseUrl(),\n getAuthHeaders: async () => getScriptAuthHeaders(apiKey),\n });\n const response = await identity.whoami();\n return typeof response.data?.tenantId === \"string\" &&\n response.data.tenantId.trim().length > 0\n ? response.data.tenantId.trim()\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport async function callMcpTool<T extends JsonRecord = JsonRecord>(\n client: Client,\n toolName: string,\n args: JsonRecord\n): Promise<T> {\n const result = await client.callTool({\n name: toolName,\n arguments: args,\n });\n\n if (result.isError) {\n throw new Error(`[${toolName}] ${JSON.stringify(result.content || [])}`);\n }\n\n return parseToolJson(result) as T;\n}\n\nexport async function closeMcpClient(client: Client): Promise<void> {\n await client.close();\n}\n","import { resolveCredentials as resolveLegacyMcpCredentials } from \"./legacyCredentialResolution\";\nimport {\n callMcpTool,\n closeMcpClient,\n createLucernMcpClient,\n} from \"./legacyScriptClient\";\n\nexport type LegacyAuthContext = {\n sessionType: \"agent\" | \"user\";\n userId: string;\n tenantId: string;\n role: string;\n allowedTopics: string[] | null;\n groupIds: string[];\n permittedPackKeys: string[];\n sessionId: string;\n principalId?: string;\n principalType?: string;\n workspaceId?: string;\n scopes?: string[];\n authMode?: string;\n roles?: string[];\n transportKind?: string;\n useSdk?: boolean;\n gatewayBaseUrl?: string;\n getAuthHeaders?: () => Promise<Record<string, string>>;\n lucernClient?: {\n context: {\n discover(input: {\n query: string;\n topK?: number;\n includeNeighborhood?: boolean;\n }): Promise<unknown>;\n };\n };\n};\n\nexport { resolveLegacyMcpCredentials };\n\nexport async function loadLegacyDiscoveryHandlers() {\n return {\n async discover(\n args: Record<string, unknown>,\n ctx: LegacyAuthContext\n ): Promise<Record<string, unknown>> {\n const query = typeof args.query === \"string\" ? args.query : \"\";\n const topK = typeof args.topK === \"number\" ? args.topK : undefined;\n const includeNeighborhood =\n typeof args.includeNeighborhood === \"boolean\"\n ? args.includeNeighborhood\n : undefined;\n\n if (ctx.useSdk && ctx.lucernClient?.context?.discover) {\n const result = await ctx.lucernClient.context.discover({\n query,\n topK,\n includeNeighborhood,\n });\n\n if (\n result &&\n typeof result === \"object\" &&\n \"data\" in result &&\n result.data &&\n typeof result.data === \"object\"\n ) {\n return result.data as Record<string, unknown>;\n }\n\n return result as Record<string, unknown>;\n }\n\n const client = await createLucernMcpClient();\n try {\n return await callMcpTool(client, \"discover\", {\n query,\n ...(topK !== undefined ? { topK } : {}),\n ...(includeNeighborhood !== undefined ? { includeNeighborhood } : {}),\n });\n } finally {\n await closeMcpClient(client);\n }\n },\n };\n}\n","export type ContextRankingProfile =\n | \"baseline_v1\"\n | \"hybrid_v1\"\n | \"weighted_v1\";\n\nconst CONTEXT_PACK_SCHEMA_VERSION = \"1.0.0\" as const;\nconst CONTEXT_PACK_SECTION_KEYS = [\n \"invariants\",\n \"activeBeliefs\",\n \"openQuestions\",\n \"recentEvidence\",\n \"contradictions\",\n] as const;\n\ntype ValidationResult = {\n valid: boolean;\n errors: string[];\n};\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nfunction isNumber(value: unknown): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nfunction isNullableNumber(value: unknown): boolean {\n return value === null || isNumber(value);\n}\n\nfunction isStringArray(value: unknown): value is string[] {\n return Array.isArray(value) && value.every((entry) => isString(entry));\n}\n\nfunction requireObject(\n parent: Record<string, unknown>,\n key: string,\n errors: string[]\n): Record<string, unknown> | null {\n const value = parent[key];\n if (!isObject(value)) {\n errors.push(`Expected '${key}' to be an object`);\n return null;\n }\n return value;\n}\n\nfunction validateBeliefArray(\n key: string,\n value: unknown,\n errors: string[]\n): void {\n if (!Array.isArray(value)) {\n errors.push(`Expected '${key}' to be an array`);\n return;\n }\n for (let index = 0; index < value.length; index += 1) {\n const row = value[index];\n if (!isObject(row)) {\n errors.push(`Expected '${key}[${index}]' to be an object`);\n continue;\n }\n if (!isString(row.nodeId)) {\n errors.push(`Expected '${key}[${index}].nodeId' to be a string`);\n }\n if (!isString(row.canonicalText)) {\n errors.push(`Expected '${key}[${index}].canonicalText' to be a string`);\n }\n if (!isNullableNumber(row.confidence)) {\n errors.push(`Expected '${key}[${index}].confidence' to be number|null`);\n }\n }\n}\n\nfunction validateQuestionArray(\n key: string,\n value: unknown,\n errors: string[]\n): void {\n if (!Array.isArray(value)) {\n errors.push(`Expected '${key}' to be an array`);\n return;\n }\n for (let index = 0; index < value.length; index += 1) {\n const row = value[index];\n if (!isObject(row)) {\n errors.push(`Expected '${key}[${index}]' to be an object`);\n continue;\n }\n if (!isString(row.questionId)) {\n errors.push(`Expected '${key}[${index}].questionId' to be a string`);\n }\n if (!isString(row.text)) {\n errors.push(`Expected '${key}[${index}].text' to be a string`);\n }\n if (!isString(row.status)) {\n errors.push(`Expected '${key}[${index}].status' to be a string`);\n }\n }\n}\n\nfunction validateEvidenceArray(\n key: string,\n value: unknown,\n errors: string[]\n): void {\n if (!Array.isArray(value)) {\n errors.push(`Expected '${key}' to be an array`);\n return;\n }\n for (let index = 0; index < value.length; index += 1) {\n const row = value[index];\n if (!isObject(row)) {\n errors.push(`Expected '${key}[${index}]' to be an object`);\n continue;\n }\n if (!isString(row.nodeId)) {\n errors.push(`Expected '${key}[${index}].nodeId' to be a string`);\n }\n if (!isString(row.canonicalText)) {\n errors.push(`Expected '${key}[${index}].canonicalText' to be a string`);\n }\n }\n}\n\nfunction validateEntityArray(\n key: string,\n value: unknown,\n errors: string[]\n): void {\n if (!Array.isArray(value)) {\n errors.push(`Expected '${key}' to be an array`);\n return;\n }\n for (let index = 0; index < value.length; index += 1) {\n const row = value[index];\n if (!isObject(row)) {\n errors.push(`Expected '${key}[${index}]' to be an object`);\n continue;\n }\n if (!isString(row.nodeId)) {\n errors.push(`Expected '${key}[${index}].nodeId' to be a string`);\n }\n if (!isString(row.entityType)) {\n errors.push(`Expected '${key}[${index}].entityType' to be a string`);\n }\n if (!isString(row.title)) {\n errors.push(`Expected '${key}[${index}].title' to be a string`);\n }\n if (!isNumber(row.connectedBeliefCount)) {\n errors.push(\n `Expected '${key}[${index}].connectedBeliefCount' to be a number`\n );\n }\n if (!isNumber(row.connectedEvidenceCount)) {\n errors.push(\n `Expected '${key}[${index}].connectedEvidenceCount' to be a number`\n );\n }\n if (!isNumber(row.score)) {\n errors.push(`Expected '${key}[${index}].score' to be a number`);\n }\n }\n}\n\nfunction validateContradictionArray(\n key: string,\n value: unknown,\n errors: string[]\n): void {\n if (!Array.isArray(value)) {\n errors.push(`Expected '${key}' to be an array`);\n return;\n }\n for (let index = 0; index < value.length; index += 1) {\n const row = value[index];\n if (!isObject(row)) {\n errors.push(`Expected '${key}[${index}]' to be an object`);\n continue;\n }\n if (!isString(row.contradictionId)) {\n errors.push(`Expected '${key}[${index}].contradictionId' to be a string`);\n }\n if (!isString(row.status)) {\n errors.push(`Expected '${key}[${index}].status' to be a string`);\n }\n }\n}\n\nexport function validateContextPackSchema(payload: unknown): ValidationResult {\n const errors: string[] = [];\n\n if (!isObject(payload)) {\n return {\n valid: false,\n errors: [\"Expected context pack payload to be an object\"],\n };\n }\n\n if (payload.schemaVersion !== CONTEXT_PACK_SCHEMA_VERSION) {\n errors.push(\n `Expected schemaVersion='${CONTEXT_PACK_SCHEMA_VERSION}', received '${String(\n payload.schemaVersion\n )}'`\n );\n }\n\n if (!isString(payload.topicId)) {\n errors.push(\"Expected 'topicId' to be a string\");\n }\n if (!isString(payload.topicName)) {\n errors.push(\"Expected 'topicName' to be a string\");\n }\n if (!isStringArray(payload.scopedTopicIds)) {\n errors.push(\"Expected 'scopedTopicIds' to be string[]\");\n }\n if (!isNumber(payload.generatedAt)) {\n errors.push(\"Expected 'generatedAt' to be a number\");\n }\n\n if (\n payload.rankingProfile !== \"baseline_v1\" &&\n payload.rankingProfile !== \"hybrid_v1\" &&\n payload.rankingProfile !== \"weighted_v1\"\n ) {\n errors.push(\n \"Expected 'rankingProfile' to be 'baseline_v1', 'hybrid_v1', or 'weighted_v1'\"\n );\n }\n\n const summary = requireObject(payload, \"summary\", errors);\n if (summary) {\n const summaryKeys = [\n \"totalBeliefs\",\n \"invariants\",\n \"openQuestions\",\n \"evidenceItems\",\n \"contradictions\",\n \"scopedTopics\",\n ];\n for (const key of summaryKeys) {\n if (!isNumber(summary[key])) {\n errors.push(`Expected 'summary.${key}' to be a number`);\n }\n }\n }\n\n validateBeliefArray(\"invariants\", payload.invariants, errors);\n validateBeliefArray(\"activeBeliefs\", payload.activeBeliefs, errors);\n validateQuestionArray(\"openQuestions\", payload.openQuestions, errors);\n validateEvidenceArray(\"recentEvidence\", payload.recentEvidence, errors);\n validateContradictionArray(\"contradictions\", payload.contradictions, errors);\n\n if (payload.relatedEntities !== undefined) {\n validateEntityArray(\"relatedEntities\", payload.relatedEntities, errors);\n }\n\n if (\n payload.compilationMode !== undefined &&\n payload.compilationMode !== \"standard\" &&\n payload.compilationMode !== \"delta\"\n ) {\n errors.push(\n \"Expected optional 'compilationMode' to be 'standard' or 'delta'\"\n );\n }\n\n if (payload.failureContext !== undefined) {\n if (!isObject(payload.failureContext)) {\n errors.push(\"Expected 'failureContext' to be an object\");\n } else {\n const failureContext = payload.failureContext as Record<string, unknown>;\n if (!Array.isArray(failureContext.failures)) {\n errors.push(\"Expected 'failureContext.failures' to be an array\");\n }\n if (!Array.isArray(failureContext.suppressedIds)) {\n errors.push(\"Expected 'failureContext.suppressedIds' to be an array\");\n }\n }\n }\n\n if (payload.deltaReport !== undefined) {\n if (!isObject(payload.deltaReport)) {\n errors.push(\"Expected 'deltaReport' to be an object\");\n } else {\n const deltaReport = payload.deltaReport as Record<string, unknown>;\n if (!Array.isArray(deltaReport.changedItems)) {\n errors.push(\"Expected 'deltaReport.changedItems' to be an array\");\n }\n if (!Array.isArray(deltaReport.verificationObligations)) {\n errors.push(\n \"Expected 'deltaReport.verificationObligations' to be an array\"\n );\n }\n if (!isString(deltaReport.referencePoint)) {\n errors.push(\"Expected 'deltaReport.referencePoint' to be a string\");\n }\n }\n }\n\n if (!Array.isArray(payload.contextNarrative)) {\n errors.push(\"Expected 'contextNarrative' to be an array\");\n } else if (!payload.contextNarrative.every((entry) => isString(entry))) {\n errors.push(\"Expected each 'contextNarrative' entry to be a string\");\n }\n\n const injectionPolicy = requireObject(payload, \"injectionPolicy\", errors);\n if (injectionPolicy) {\n if (!isNumber(injectionPolicy.tokenBudget)) {\n errors.push(\"Expected 'injectionPolicy.tokenBudget' to be a number\");\n }\n if (!isNumber(injectionPolicy.estimatedTokens)) {\n errors.push(\"Expected 'injectionPolicy.estimatedTokens' to be a number\");\n }\n\n const selected = requireObject(injectionPolicy, \"selected\", errors);\n if (selected) {\n for (const key of CONTEXT_PACK_SECTION_KEYS) {\n if (!isStringArray(selected[key])) {\n errors.push(\n `Expected 'injectionPolicy.selected.${key}' to be string[]`\n );\n }\n }\n }\n\n const sectionUsage = requireObject(injectionPolicy, \"sectionUsage\", errors);\n if (sectionUsage) {\n for (const key of CONTEXT_PACK_SECTION_KEYS) {\n if (!isNumber(sectionUsage[key])) {\n errors.push(\n `Expected 'injectionPolicy.sectionUsage.${key}' to be a number`\n );\n }\n }\n }\n }\n\n const diagnostics = requireObject(payload, \"diagnostics\", errors);\n if (diagnostics) {\n if (!isNumber(diagnostics.itemsScored)) {\n errors.push(\"Expected 'diagnostics.itemsScored' to be a number\");\n }\n if (!isNumber(diagnostics.tokenBudgetUtilization)) {\n errors.push(\n \"Expected 'diagnostics.tokenBudgetUtilization' to be a number\"\n );\n }\n }\n\n return {\n valid: errors.length === 0,\n errors,\n };\n}\n"]}
|