@lucern/sdk 1.0.11 → 1.0.12
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/CHANGELOG.md +3 -0
- package/dist/.generated +2 -0
- package/dist/accessControl.d.ts +19 -26
- package/dist/accessControl.js +195 -1423
- package/dist/adminClient.d.ts +52 -59
- package/dist/adminClient.js +364 -1142
- package/dist/answersClient.d.ts +5 -14
- package/dist/answersClient.js +19 -737
- package/dist/audience/index.d.ts +18 -18
- package/dist/audience/index.js +87 -90
- package/dist/audiencesClient.d.ts +19 -27
- package/dist/audiencesClient.js +107 -868
- package/dist/auditClient.d.ts +8 -15
- package/dist/auditClient.js +18 -791
- package/dist/authContext.d.ts +11 -16
- package/dist/authContext.js +122 -154
- package/dist/authDeviceClient.d.ts +8 -17
- package/dist/authDeviceClient.js +113 -102
- package/dist/beliefs/index.d.ts +15 -67
- package/dist/beliefs/index.js +17 -10181
- package/dist/beliefs/lifecycle.d.ts +10 -11
- package/dist/beliefs/lifecycle.js +78 -80
- package/dist/beliefsClient.d.ts +26 -32
- package/dist/beliefsClient.js +250 -990
- package/dist/boundaryClientSurface.d.ts +11 -16
- package/dist/boundaryClientSurface.js +49 -68
- package/dist/client.d.ts +64 -112
- package/dist/client.js +232 -10155
- package/dist/clientAssemblyTypes.d.ts +3 -3
- package/dist/clientAssemblyTypes.js +1 -2
- package/dist/clientConfig.d.ts +45 -59
- package/dist/clientConfig.js +1 -2
- package/dist/clientEvidenceCompat.d.ts +7 -14
- package/dist/clientEvidenceCompat.js +50 -64
- package/dist/clientGraphNamespaces.d.ts +3 -5
- package/dist/clientGraphNamespaces.js +170 -245
- package/dist/clientHelpers.d.ts +20 -25
- package/dist/clientHelpers.js +104 -127
- package/dist/clientKnowledgeNamespaces.d.ts +6 -53
- package/dist/clientKnowledgeNamespaces.js +502 -506
- package/dist/clientLocalHelpers.d.ts +11 -56
- package/dist/clientLocalHelpers.js +503 -732
- package/dist/clientPlatformNamespaces.d.ts +5 -53
- package/dist/clientPlatformNamespaces.js +229 -323
- package/dist/clientRuntime.d.ts +5 -53
- package/dist/clientRuntime.js +26 -30
- package/dist/clientWorkflowNamespaces.d.ts +6 -15
- package/dist/clientWorkflowNamespaces.js +529 -596
- package/dist/contextClient.d.ts +9 -17
- package/dist/contextClient.js +92 -805
- package/dist/contextFacade.d.ts +11 -2
- package/dist/contextFacade.js +10 -81
- package/dist/contextPackCompiler.d.ts +10 -11
- package/dist/contextPackCompiler.js +494 -1040
- package/dist/contextPackPolicy.d.ts +14 -15
- package/dist/contextPackPolicy.js +227 -305
- package/dist/contextPackSchema.d.ts +3 -3
- package/dist/contextPackSchema.js +169 -176
- package/dist/contextTypes.d.ts +14 -15
- package/dist/contextTypes.js +1 -2
- package/dist/contracts/api-enums.contract.d.ts +29 -30
- package/dist/contracts/api-enums.contract.js +162 -88
- package/dist/contracts/auth-session.contract.d.ts +13 -14
- package/dist/contracts/auth-session.contract.js +55 -52
- package/dist/contracts/context-pack.contract.d.ts +54 -55
- package/dist/contracts/context-pack.contract.js +160 -88
- package/dist/contracts/contextPack.d.ts +2 -1
- package/dist/contracts/contextPack.js +1 -97
- package/dist/contracts/index.d.ts +11 -12
- package/dist/contracts/index.js +10 -854
- package/dist/contracts/lens-filter.contract.d.ts +9 -10
- package/dist/contracts/lens-filter.contract.js +82 -58
- package/dist/contracts/lens-workflow.contract.d.ts +21 -23
- package/dist/contracts/lens-workflow.contract.js +48 -117
- package/dist/contracts/lensFilter.d.ts +2 -1
- package/dist/contracts/lensFilter.js +1 -71
- package/dist/contracts/lensWorkflow.d.ts +2 -2
- package/dist/contracts/lensWorkflow.js +1 -123
- package/dist/contracts/mcpTools.d.ts +16 -18
- package/dist/contracts/mcpTools.js +89 -123
- package/dist/contracts/prompt.contract.d.ts +4 -5
- package/dist/contracts/prompt.contract.js +23 -10
- package/dist/contracts/prompt.d.ts +2 -1
- package/dist/contracts/prompt.js +1 -11
- package/dist/contracts/sdk-tools.contract.d.ts +2 -1
- package/dist/contracts/sdk-tools.contract.js +1 -2
- package/dist/contracts/sdkTools.d.ts +2 -1
- package/dist/contracts/sdkTools.js +1 -26
- package/dist/contracts/tool-contracts.d.ts +2 -1
- package/dist/contracts/tool-contracts.js +1 -2
- package/dist/contracts/workflow-runtime.contract.d.ts +45 -46
- package/dist/contracts/workflow-runtime.contract.js +241 -228
- package/dist/contracts/workflowRuntime.d.ts +2 -1
- package/dist/contracts/workflowRuntime.js +1 -244
- package/dist/contradictions/index.d.ts +8 -60
- package/dist/contradictions/index.js +11 -10175
- package/dist/control-plane.d.ts +17 -24
- package/dist/control-plane.js +124 -840
- package/dist/controlObjectOwnership.d.ts +19 -20
- package/dist/controlObjectOwnership.js +207 -201
- package/dist/coreClient.d.ts +23 -28
- package/dist/coreClient.js +567 -692
- package/dist/customTools.d.ts +17 -21
- package/dist/customTools.js +221 -221
- package/dist/decisions/index.d.ts +7 -58
- package/dist/decisions/index.js +14 -10177
- package/dist/decisionsClient.d.ts +25 -32
- package/dist/decisionsClient.js +113 -913
- package/dist/domainContext.d.ts +2 -1
- package/dist/domainContext.js +1 -2
- package/dist/edges/index.d.ts +21 -73
- package/dist/edges/index.js +12 -10176
- package/dist/embeddingsClient.d.ts +22 -30
- package/dist/embeddingsClient.js +73 -922
- package/dist/eventingClient.d.ts +23 -31
- package/dist/eventingClient.js +89 -918
- package/dist/events.d.ts +48 -49
- package/dist/events.js +257 -241
- package/dist/eventsCore.d.ts +20 -29
- package/dist/eventsCore.js +86 -830
- package/dist/evidence/index.d.ts +9 -60
- package/dist/evidence/index.js +13 -10176
- package/dist/evidenceClient.d.ts +13 -22
- package/dist/evidenceClient.js +34 -751
- package/dist/facade/context.d.ts +7 -8
- package/dist/facade/context.js +73 -72
- package/dist/functionSurface.d.ts +2 -156
- package/dist/functionSurface.js +1 -1460
- package/dist/functionSurfaceClient.d.ts +2 -9
- package/dist/functionSurfaceClient.js +1 -1460
- package/dist/gatewayFacades.d.ts +79 -296
- package/dist/gatewayFacades.factories.d.ts +209 -14
- package/dist/gatewayFacades.factories.js +561 -2227
- package/dist/gatewayFacades.js +284 -2627
- package/dist/generated/functionSurface.d.ts +149 -0
- package/dist/generated/functionSurface.js +749 -0
- package/dist/graphAnalysisClient.d.ts +41 -49
- package/dist/graphAnalysisClient.js +185 -974
- package/dist/graphClient.d.ts +53 -60
- package/dist/graphClient.js +219 -1090
- package/dist/graphIntel.d.ts +2 -4
- package/dist/graphIntel.js +1 -2
- package/dist/graphIntelligence.d.ts +4 -2
- package/dist/graphIntelligence.js +2 -46
- package/dist/graphRecommendationsClient.d.ts +15 -23
- package/dist/graphRecommendationsClient.js +70 -849
- package/dist/graphStateClassifierClient.d.ts +17 -25
- package/dist/graphStateClassifierClient.js +67 -908
- package/dist/harnessClient.d.ts +40 -47
- package/dist/harnessClient.js +198 -993
- package/dist/identityClient.d.ts +25 -33
- package/dist/identityClient.js +245 -1186
- package/dist/index.d.ts +73 -69
- package/dist/index.js +72 -13313
- package/dist/infisicalRuntime.d.ts +12 -14
- package/dist/infisicalRuntime.js +290 -297
- package/dist/jobsClient.d.ts +24 -32
- package/dist/jobsClient.js +101 -916
- package/dist/learningClient.d.ts +8 -16
- package/dist/learningClient.js +45 -809
- package/dist/lenses/index.d.ts +13 -65
- package/dist/lenses/index.js +11 -10175
- package/dist/mcpClient.d.ts +14 -23
- package/dist/mcpClient.js +115 -856
- package/dist/modelRuntimeClient.d.ts +18 -26
- package/dist/modelRuntimeClient.js +74 -894
- package/dist/nodes/index.d.ts +7 -58
- package/dist/nodes/index.js +14 -10177
- package/dist/ontologies/index.d.ts +21 -73
- package/dist/ontologies/index.js +14 -10178
- package/dist/ontologyClient.d.ts +23 -31
- package/dist/ontologyClient.js +138 -924
- package/dist/ontologyLinksClient.d.ts +16 -24
- package/dist/ontologyLinksClient.js +76 -886
- package/dist/opinion.d.ts +5 -6
- package/dist/opinion.js +21 -25
- package/dist/orgGraphSearchClient.d.ts +19 -27
- package/dist/orgGraphSearchClient.js +89 -857
- package/dist/packRuntime.d.ts +2 -2
- package/dist/packRuntime.js +1 -2
- package/dist/packsClient.d.ts +30 -37
- package/dist/packsClient.js +131 -906
- package/dist/policyClient.d.ts +21 -29
- package/dist/policyClient.js +267 -1026
- package/dist/proof-attestation.json +1 -1
- package/dist/questions/index.d.ts +9 -60
- package/dist/questions/index.js +15 -10178
- package/dist/realtime/index.d.ts +20 -16
- package/dist/realtime/index.js +30 -19
- package/dist/realtime/refs.d.ts +4 -6
- package/dist/realtime/refs.js +12 -7
- package/dist/realtime-refs.d.ts +1 -0
- package/dist/realtime-refs.js +1 -0
- package/dist/realtime.d.ts +1 -0
- package/dist/realtime.js +1 -0
- package/dist/reportsClient.d.ts +10 -19
- package/dist/reportsClient.js +48 -836
- package/dist/schemaClient.d.ts +16 -23
- package/dist/schemaClient.js +62 -832
- package/dist/sdkSurface.d.ts +18 -25
- package/dist/sdkSurface.js +135 -106
- package/dist/secrets.d.ts +2 -1
- package/dist/secrets.js +1 -2
- package/dist/sourcesClient.d.ts +11 -18
- package/dist/sourcesClient.js +18 -741
- package/dist/telemetryClient.d.ts +22 -30
- package/dist/telemetryClient.js +107 -931
- package/dist/toolRegistryClient.d.ts +27 -35
- package/dist/toolRegistryClient.js +116 -954
- package/dist/topics/index.d.ts +13 -64
- package/dist/topics/index.js +15 -10178
- package/dist/topicsClient.d.ts +19 -27
- package/dist/topicsClient.js +106 -894
- package/dist/types.d.ts +84 -87
- package/dist/types.js +1 -2
- package/dist/version.d.ts +2 -3
- package/dist/version.js +2 -5
- package/dist/workflowClient.d.ts +60 -65
- package/dist/workflowClient.js +343 -1219
- package/dist/worktrees/index.d.ts +16 -68
- package/dist/worktrees/index.js +14 -10178
- package/package.json +6 -6
- package/dist/accessControl.js.map +0 -1
- package/dist/adminClient.js.map +0 -1
- package/dist/answersClient.js.map +0 -1
- package/dist/audience/index.js.map +0 -1
- package/dist/audiencesClient.js.map +0 -1
- package/dist/auditClient.js.map +0 -1
- package/dist/authContext.js.map +0 -1
- package/dist/authDeviceClient.js.map +0 -1
- package/dist/beliefs/index.js.map +0 -1
- package/dist/beliefs/lifecycle.js.map +0 -1
- package/dist/beliefsClient.js.map +0 -1
- package/dist/boundaryClientSurface.js.map +0 -1
- package/dist/client.js.map +0 -1
- package/dist/clientAssemblyTypes.js.map +0 -1
- package/dist/clientConfig.js.map +0 -1
- package/dist/clientEvidenceCompat.js.map +0 -1
- package/dist/clientGraphNamespaces.js.map +0 -1
- package/dist/clientHelpers.js.map +0 -1
- package/dist/clientKnowledgeNamespaces.js.map +0 -1
- package/dist/clientLocalHelpers.js.map +0 -1
- package/dist/clientPlatformNamespaces.js.map +0 -1
- package/dist/clientRuntime.js.map +0 -1
- package/dist/clientWorkflowNamespaces.js.map +0 -1
- package/dist/contextClient.js.map +0 -1
- package/dist/contextFacade.js.map +0 -1
- package/dist/contextPackCompiler.js.map +0 -1
- package/dist/contextPackPolicy.js.map +0 -1
- package/dist/contextPackSchema.js.map +0 -1
- package/dist/contextTypes.js.map +0 -1
- package/dist/contracts/api-enums.contract.js.map +0 -1
- package/dist/contracts/auth-session.contract.js.map +0 -1
- package/dist/contracts/context-pack.contract.js.map +0 -1
- package/dist/contracts/contextPack.js.map +0 -1
- package/dist/contracts/index.js.map +0 -1
- package/dist/contracts/lens-filter.contract.js.map +0 -1
- package/dist/contracts/lens-workflow.contract.js.map +0 -1
- package/dist/contracts/lensFilter.js.map +0 -1
- package/dist/contracts/lensWorkflow.js.map +0 -1
- package/dist/contracts/mcpTools.js.map +0 -1
- package/dist/contracts/prompt.contract.js.map +0 -1
- package/dist/contracts/prompt.js.map +0 -1
- package/dist/contracts/sdk-tools.contract.js.map +0 -1
- package/dist/contracts/sdkTools.js.map +0 -1
- package/dist/contracts/tool-contracts.js.map +0 -1
- package/dist/contracts/workflow-runtime.contract.js.map +0 -1
- package/dist/contracts/workflowRuntime.js.map +0 -1
- package/dist/contradictions/index.js.map +0 -1
- package/dist/control-plane.js.map +0 -1
- package/dist/controlObjectOwnership.js.map +0 -1
- package/dist/coreClient.js.map +0 -1
- package/dist/customTools.js.map +0 -1
- package/dist/decisions/index.js.map +0 -1
- package/dist/decisionsClient.js.map +0 -1
- package/dist/domainContext.js.map +0 -1
- package/dist/edges/index.js.map +0 -1
- package/dist/embeddingsClient.js.map +0 -1
- package/dist/eventingClient.js.map +0 -1
- package/dist/events.js.map +0 -1
- package/dist/eventsCore.js.map +0 -1
- package/dist/evidence/index.js.map +0 -1
- package/dist/evidenceClient.js.map +0 -1
- package/dist/facade/context.js.map +0 -1
- package/dist/functionSurface.js.map +0 -1
- package/dist/functionSurfaceClient.js.map +0 -1
- package/dist/gatewayFacades.factories.js.map +0 -1
- package/dist/gatewayFacades.js.map +0 -1
- package/dist/graphAnalysisClient.js.map +0 -1
- package/dist/graphClient.js.map +0 -1
- package/dist/graphIntel.js.map +0 -1
- package/dist/graphIntelligence.js.map +0 -1
- package/dist/graphRecommendationsClient.js.map +0 -1
- package/dist/graphStateClassifierClient.js.map +0 -1
- package/dist/harnessClient.js.map +0 -1
- package/dist/identityClient.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/infisicalRuntime.js.map +0 -1
- package/dist/jobsClient.js.map +0 -1
- package/dist/learningClient.js.map +0 -1
- package/dist/lenses/index.js.map +0 -1
- package/dist/mcpClient.js.map +0 -1
- package/dist/modelRuntimeClient.js.map +0 -1
- package/dist/nodes/index.js.map +0 -1
- package/dist/ontologies/index.js.map +0 -1
- package/dist/ontologyClient.js.map +0 -1
- package/dist/ontologyLinksClient.js.map +0 -1
- package/dist/opinion.js.map +0 -1
- package/dist/orgGraphSearchClient.js.map +0 -1
- package/dist/packRuntime.js.map +0 -1
- package/dist/packsClient.js.map +0 -1
- package/dist/policyClient.js.map +0 -1
- package/dist/questions/index.js.map +0 -1
- package/dist/realtime/index.js.map +0 -1
- package/dist/realtime/refs.js.map +0 -1
- package/dist/reportsClient.js.map +0 -1
- package/dist/schemaClient.js.map +0 -1
- package/dist/sdk-tools.contract-B4c1Zr1o.d.ts +0 -22
- package/dist/sdkSurface.js.map +0 -1
- package/dist/secrets.js.map +0 -1
- package/dist/sourcesClient.js.map +0 -1
- package/dist/telemetryClient.js.map +0 -1
- package/dist/tool-contracts-BUiL9P6z.d.ts +0 -22
- package/dist/toolRegistryClient.js.map +0 -1
- package/dist/topics/index.js.map +0 -1
- package/dist/topicsClient.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/version.js.map +0 -1
- package/dist/workflowClient.js.map +0 -1
- package/dist/worktrees/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/authContext.ts","../src/coreClient.ts","../src/sdkSurface.ts","../src/graphClient.ts","../src/boundaryClientSurface.ts","../src/control-plane.ts","../src/identityClient.ts","../src/ontologyClient.ts","../src/gatewayFacades.factories.ts"],"names":["principalType","responseContext","isRecord","cleanString"],"mappings":"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","file":"gatewayFacades.factories.js","sourcesContent":["import type {\n SessionAuthMode,\n SessionDelegationHop,\n SessionPrincipalType,\n} from \"./contracts/auth-session.contract\";\nimport type { JsonObject } from \"./types\";\n\nexport type LucernSdkAuthFailureReason =\n | \"principal_missing\"\n | \"tenant_missing\"\n | \"membership_missing\"\n | \"workspace_missing\"\n | \"clerk_alias_missing\"\n | \"clerk_alias_unrecognized\"\n | \"policy_denied\"\n | \"policy_unavailable\"\n | \"policy_unknown\";\n\nexport type PermitReadyAuthContext = {\n subject: string;\n tenant: string;\n workspace: string;\n resource?: string;\n action?: string;\n relation?: string;\n context?: JsonObject;\n};\n\nexport type LucernSdkAuthPolicyDecision = \"allow\" | \"deny\" | \"unknown\";\n\nexport type LucernSdkAuthContextInput = {\n clerkId?: string;\n principalId?: string;\n tenantId?: string;\n workspaceId?: string | null;\n principalType?: SessionPrincipalType;\n authMode?: SessionAuthMode;\n roles?: readonly string[];\n scopes?: readonly string[];\n delegationChain?: readonly SessionDelegationHop[];\n policyTraceId?: string;\n correlationId?: string;\n membershipId?: string;\n policyDecision?: LucernSdkAuthPolicyDecision;\n permit?: Partial<PermitReadyAuthContext>;\n};\n\nexport type CanonicalLucernSdkAuthContext = {\n clerkId?: string;\n principalId: string;\n tenantId: string;\n workspaceId: string;\n principalType: SessionPrincipalType;\n authMode: SessionAuthMode;\n roles: string[];\n scopes: string[];\n delegationChain: SessionDelegationHop[];\n policyTraceId?: string;\n correlationId?: string;\n membershipId?: string;\n permit: PermitReadyAuthContext;\n};\n\nexport class LucernSdkAuthContextError extends Error {\n readonly reason: LucernSdkAuthFailureReason;\n\n constructor(reason: LucernSdkAuthFailureReason, message: string) {\n super(message);\n this.name = \"LucernSdkAuthContextError\";\n this.reason = reason;\n }\n}\n\nfunction cleanString(value: string | null | undefined): string | undefined {\n const normalized = value?.trim();\n return normalized ? normalized : undefined;\n}\n\nfunction cleanStringList(values: readonly string[] | undefined): string[] {\n if (!values) {\n return [];\n }\n return values\n .map((value) => value.trim())\n .filter(\n (value, index, list) =>\n value.length > 0 && list.indexOf(value) === index\n );\n}\n\nfunction requireString(\n value: string | null | undefined,\n reason: LucernSdkAuthFailureReason,\n label: string\n): string {\n const normalized = cleanString(value);\n if (!normalized) {\n throw new LucernSdkAuthContextError(\n reason,\n `Canonical Lucern SDK auth context is missing ${label}.`\n );\n }\n return normalized;\n}\n\nfunction requirePrincipalType(\n principalType: SessionPrincipalType | undefined\n): SessionPrincipalType {\n if (!principalType) {\n throw new LucernSdkAuthContextError(\n \"principal_missing\",\n \"Canonical Lucern SDK auth context is missing principalType.\"\n );\n }\n return principalType;\n}\n\nfunction requireAuthMode(authMode: SessionAuthMode | undefined): SessionAuthMode {\n if (!authMode) {\n throw new LucernSdkAuthContextError(\n \"principal_missing\",\n \"Canonical Lucern SDK auth context is missing authMode.\"\n );\n }\n return authMode;\n}\n\nfunction ensurePermitMatch(args: {\n field: keyof PermitReadyAuthContext;\n expected: string;\n actual?: string;\n}) {\n const actual = cleanString(args.actual);\n if (actual && actual !== args.expected) {\n throw new LucernSdkAuthContextError(\n \"policy_denied\",\n `Canonical Lucern SDK auth context has conflicting Permit ${args.field}.`\n );\n }\n}\n\nexport function normalizeCanonicalLucernAuthContext(\n input: LucernSdkAuthContextInput | undefined\n): CanonicalLucernSdkAuthContext {\n if (!input) {\n throw new LucernSdkAuthContextError(\n \"principal_missing\",\n \"Canonical Lucern SDK auth context is required.\"\n );\n }\n\n if (input.policyDecision === \"deny\") {\n throw new LucernSdkAuthContextError(\n \"policy_denied\",\n \"Canonical Lucern SDK auth context carries a denied policy decision.\"\n );\n }\n\n const principalId = requireString(\n input.principalId,\n \"principal_missing\",\n \"principalId\"\n );\n const tenantId = requireString(input.tenantId, \"tenant_missing\", \"tenantId\");\n const workspaceId = requireString(\n input.workspaceId,\n \"workspace_missing\",\n \"workspaceId\"\n );\n const roles = cleanStringList(input.roles);\n const scopes = cleanStringList(input.scopes);\n const principalType = requirePrincipalType(input.principalType);\n const authMode = requireAuthMode(input.authMode);\n const roleBasedInteractiveAuth =\n authMode === \"interactive_user\" && roles.length > 0;\n if (\n roles.length === 0 ||\n (scopes.length === 0 && !roleBasedInteractiveAuth)\n ) {\n throw new LucernSdkAuthContextError(\n \"membership_missing\",\n \"Canonical Lucern SDK auth context requires non-empty roles and scopes.\"\n );\n }\n\n const subject = cleanString(input.permit?.subject) ?? principalId;\n const tenant = cleanString(input.permit?.tenant) ?? tenantId;\n const workspace = cleanString(input.permit?.workspace) ?? workspaceId;\n\n ensurePermitMatch({\n field: \"subject\",\n expected: principalId,\n actual: subject,\n });\n ensurePermitMatch({ field: \"tenant\", expected: tenantId, actual: tenant });\n ensurePermitMatch({\n field: \"workspace\",\n expected: workspaceId,\n actual: workspace,\n });\n\n const context = input.permit?.context\n ? ({ ...input.permit.context } as JsonObject)\n : undefined;\n\n return {\n clerkId: cleanString(input.clerkId),\n principalId,\n tenantId,\n workspaceId,\n principalType,\n authMode,\n roles,\n scopes,\n delegationChain: input.delegationChain ? [...input.delegationChain] : [],\n policyTraceId: cleanString(input.policyTraceId),\n correlationId: cleanString(input.correlationId),\n membershipId: cleanString(input.membershipId),\n permit: {\n subject,\n tenant,\n workspace,\n resource: cleanString(input.permit?.resource),\n action: cleanString(input.permit?.action),\n relation: cleanString(input.permit?.relation),\n context,\n },\n };\n}\n\nexport function createCanonicalAuthHeaders(\n authContext: CanonicalLucernSdkAuthContext\n): Record<string, string> {\n const headers: Record<string, string> = {\n \"x-lucern-principal-id\": authContext.principalId,\n \"x-lucern-principal-type\": authContext.principalType,\n \"x-lucern-tenant\": authContext.tenantId,\n \"x-lucern-tenant-id\": authContext.tenantId,\n \"x-lucern-workspace\": authContext.workspaceId,\n \"x-lucern-workspace-id\": authContext.workspaceId,\n \"x-lucern-auth-mode\": authContext.authMode,\n \"x-lucern-roles\": authContext.roles.join(\",\"),\n \"x-lucern-scopes\": authContext.scopes.join(\",\"),\n \"x-lucern-permit-context\": JSON.stringify(authContext.permit),\n };\n\n if (authContext.clerkId) {\n headers[\"x-lucern-clerk-id\"] = authContext.clerkId;\n headers[\"x-lucern-user-id\"] = authContext.clerkId;\n }\n if (authContext.delegationChain.length > 0) {\n headers[\"x-lucern-delegation-chain\"] = JSON.stringify(\n authContext.delegationChain\n );\n }\n if (authContext.policyTraceId) {\n headers[\"x-lucern-policy-trace-id\"] = authContext.policyTraceId;\n }\n if (authContext.correlationId) {\n headers[\"x-correlation-id\"] = authContext.correlationId;\n headers[\"x-lucern-correlation-id\"] = authContext.correlationId;\n }\n if (authContext.membershipId) {\n headers[\"x-lucern-membership-id\"] = authContext.membershipId;\n }\n\n return headers;\n}\n","import {\n createTelemetryExporterFromEnv,\n emitTelemetrySignal,\n type LucernTelemetryExporter,\n} from \"@lucern/transport-core\";\nimport { redactDiagnosticValue } from \"@lucern/transport-core/redaction\";\nimport { classifyRetry } from \"@lucern/transport-core/transport\";\nimport { Cause, Effect, Exit } from \"effect\";\n\nimport {\n createCanonicalAuthHeaders,\n LucernSdkAuthContextError,\n normalizeCanonicalLucernAuthContext,\n type LucernSdkAuthContextInput,\n} from \"./authContext\";\nimport 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\ntype GatewayEnvironment = {\n get: (name: string) => string | undefined;\n};\n\ntype GatewayRequestProfile = {\n readonly maxRetries: number;\n readonly timeoutMs: number;\n readonly timeoutMsByMethod?: Partial<Record<GatewayHttpMethod, number>>;\n readonly requestIdFactory: () => string;\n};\n\ntype GatewayRuntimeServices = {\n fetch: FetchLike;\n now: () => number;\n sleep: (ms: number) => Promise<void>;\n env: GatewayEnvironment;\n redaction: <T>(value: T) => T;\n profile: GatewayRequestProfile;\n};\n\nconst DEFAULT_GATEWAY_TIMEOUT_MS = 15_000;\nconst DEFAULT_GATEWAY_MAX_RETRIES = 2;\nconst DEFAULT_ENV_TIMEOUT_MS = \"LUCERN_REQUEST_TIMEOUT_MS\";\nconst DEFAULT_ENV_MAX_RETRIES = \"LUCERN_GATEWAY_MAX_RETRIES\";\nconst ENV_TIMEOUT_BY_METHOD_PREFIX = \"LUCERN_REQUEST_TIMEOUT_MS_\";\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\nexport class GatewayTimeoutError extends Error {\n public readonly retryable = true;\n public readonly timeoutMs: number;\n\n constructor(timeoutMs: number) {\n super(`Request timed out after ${timeoutMs}ms`);\n this.name = \"AbortError\";\n this.timeoutMs = timeoutMs;\n }\n}\n\nexport class GatewayTransportError extends Error {\n public readonly retryable: boolean;\n public readonly cause?: unknown;\n\n constructor(message: string, options?: { cause?: unknown; retryable?: boolean }) {\n super(message);\n this.name = \"GatewayTransportError\";\n this.retryable = options?.retryable ?? true;\n this.cause = options?.cause;\n }\n}\n\nexport type GatewayRecoverableError =\n | GatewayTimeoutError\n | GatewayTransportError;\n\nexport function isGatewayRecoverableError(\n error: unknown,\n): error is GatewayRecoverableError {\n return error instanceof GatewayTimeoutError || error instanceof GatewayTransportError;\n}\n\nexport function isGatewayRetryableError(error: unknown): boolean {\n return (\n (error instanceof GatewayTimeoutError && error.retryable) ||\n (error instanceof GatewayTransportError && error.retryable) ||\n false\n );\n}\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\ntype JsonParseAttempt =\n | { ok: true; value: unknown }\n | { ok: false; reason: \"non-json\" | \"invalid-json\"; error?: SyntaxError };\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\nexport type GatewayClientEnvironment = \"sandbox\" | \"production\";\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 /** Lucern tenant API key or service API key. Sent as `x-lucern-key`. */\n apiKey?: string;\n /**\n * Lucern platform session token. This is not a Clerk JWT.\n * Server-side tenant proxies should normally send `apiKey` plus `clerkId`.\n */\n userToken?: string;\n /** Gateway environment label for legacy sandbox/production routing. */\n environment?: GatewayClientEnvironment;\n /** Clerk subject for the current end user. */\n clerkId?: string;\n /** Optional explicit user subject. Defaults to `clerkId` when omitted. */\n userId?: string;\n /** Optional deployment host hint for front-door routing. */\n deploymentHost?: string;\n getAuthHeaders?:\n | (() => Promise<Record<string, string>>)\n | (() => Record<string, string>);\n /**\n * Canonical Master Control identity tuple applied to every SDK request.\n * Use this for tenant/workspace-scoped graph and identity operations.\n */\n authContext?:\n | LucernSdkAuthContextInput\n | (() => Promise<LucernSdkAuthContextInput | undefined>)\n | (() => LucernSdkAuthContextInput | undefined);\n /** When true, requests fail before fetch if `authContext` is absent. */\n requireCanonicalAuthContext?: boolean;\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 /**\n * Optional operational telemetry sink. When omitted, the SDK resolves an\n * Axiom exporter from Infisical-injected environment variables if present.\n */\n telemetryExporter?: LucernTelemetryExporter | null;\n /** Set false to disable SDK operational telemetry even when env is present. */\n telemetryEnabled?: boolean;\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\nfunction resolveEnvironment(): GatewayEnvironment {\n const processEnv =\n typeof globalThis === \"object\" &&\n globalThis !== null &&\n \"process\" in globalThis\n ? (globalThis as { process?: { env?: Record<string, string> } }).process\n : undefined;\n const env =\n processEnv !== undefined &&\n typeof processEnv === \"object\" &&\n processEnv !== null &&\n typeof processEnv.env === \"object\"\n ? processEnv.env\n : undefined;\n\n return {\n get: (name) => {\n const value = env?.[name];\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n },\n };\n}\n\nfunction telemetryEnvironmentRecord(\n environment: GatewayEnvironment,\n): Record<string, string | undefined> {\n const names = [\n \"LUCERN_TELEMETRY_ENABLED\",\n \"AXIOM_TELEMETRY_ENABLED\",\n \"LUCERN_AXIOM_TOKEN\",\n \"AXIOM_TOKEN\",\n \"LUCERN_AXIOM_EVENTS_DATASET\",\n \"LUCERN_AXIOM_DATASET\",\n \"AXIOM_EVENTS_DATASET\",\n \"AXIOM_DATASET\",\n \"LUCERN_AXIOM_API_URL\",\n \"AXIOM_URL\",\n \"LUCERN_ENVIRONMENT\",\n \"NODE_ENV\",\n \"LUCERN_RELEASE\",\n \"SENTRY_RELEASE\",\n \"VERCEL_GIT_COMMIT_SHA\",\n ];\n return Object.fromEntries(\n names.map((name) => [name, environment.get(name)]),\n );\n}\n\nfunction resolveRequestProfile(\n config: Pick<\n GatewayClientConfig,\n \"maxRetries\" | \"timeoutMs\" | \"timeoutMsByMethod\" | \"requestIdFactory\"\n >,\n environment: GatewayEnvironment,\n): GatewayRequestProfile {\n const requestIdFactory = config.requestIdFactory ?? (() => generatePortableRequestId());\n const parsedMaxRetries = parseIntegerFromString(\n config.maxRetries,\n environment.get(DEFAULT_ENV_MAX_RETRIES),\n );\n const parsedTimeoutMs = parseIntegerFromString(\n config.timeoutMs,\n environment.get(DEFAULT_ENV_TIMEOUT_MS),\n );\n\n const methodTimeouts: Partial<Record<GatewayHttpMethod, number>> = {\n ...config.timeoutMsByMethod,\n };\n for (const method of [\"GET\", \"POST\", \"PUT\", \"PATCH\", \"DELETE\"] as const) {\n const envKey = `${ENV_TIMEOUT_BY_METHOD_PREFIX}${method}`;\n const raw = environment.get(envKey);\n if (!raw || methodTimeouts[method] !== undefined) {\n continue;\n }\n const parsed = parseIntegerFromString(undefined, raw);\n if (typeof parsed === \"number\") {\n methodTimeouts[method] = parsed;\n }\n }\n\n return {\n maxRetries: parsedMaxRetries ?? DEFAULT_GATEWAY_MAX_RETRIES,\n timeoutMs: parsedTimeoutMs ?? DEFAULT_GATEWAY_TIMEOUT_MS,\n timeoutMsByMethod: methodTimeouts,\n requestIdFactory,\n };\n}\n\nfunction createGatewayRuntime(\n config: GatewayClientConfig,\n environment: GatewayEnvironment,\n): GatewayRuntimeServices {\n return {\n fetch: config.fetchImpl ?? fetch,\n now: () => Date.now(),\n sleep: (ms) => delay(ms),\n env: environment,\n redaction: resolveRequestRedactionValue,\n profile: resolveRequestProfile(config, environment),\n };\n}\n\nfunction parseIntegerFromString(\n value?: number,\n rawValue?: string,\n): number | undefined {\n if (typeof value === \"number\" && Number.isInteger(value) && value >= 0) {\n return value;\n }\n\n if (typeof rawValue !== \"string\" || !rawValue.trim()) {\n return undefined;\n }\n\n const parsed = Number.parseInt(rawValue, 10);\n return Number.isInteger(parsed) && parsed >= 0 ? parsed : undefined;\n}\n\nfunction resolveRequestRedactionValue<T>(value: T): T {\n return redactDiagnosticValue(value) as T;\n}\n\nfunction resolveGatewayBaseUrl(\n configBaseUrl: string | undefined,\n environment: GatewayEnvironment,\n): string {\n const envBaseUrl =\n environment.get(\"LUCERN_API_URL\") ??\n environment.get(\"LUCERN_BASE_URL\") ??\n environment.get(\"LUCERN_GATEWAY_BASE_URL\");\n\n return (configBaseUrl ?? envBaseUrl ?? \"\").replace(/\\/+$/, \"\");\n}\n\nfunction normalizeGatewayEnvironment(value: GatewayClientEnvironment | undefined):\n | GatewayClientEnvironment\n | undefined {\n return value === \"sandbox\" || value === \"production\" ? value : undefined;\n}\n\n/**\n * Generate a random idempotency key for retry-safe writes.\n */\nexport const randomIdempotencyKey = generatePortableRequestId;\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 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 classifyGatewayErrorForRetry(error: unknown): boolean {\n return isGatewayRetryableError(error) || classifyRetry({ error }).retryable;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction readPolicySummaryFromDetails(details?: JsonValue): string | null {\n if (!isRecord(details)) {\n return null;\n }\n\n const directSummary = details.summary;\n if (typeof directSummary === \"string\" && directSummary.trim().length > 0) {\n return directSummary.trim();\n }\n\n const policy = details.policy;\n if (!isRecord(policy)) {\n return null;\n }\n\n const explanation = policy.explanation;\n if (!isRecord(explanation)) {\n return null;\n }\n\n const nestedSummary = explanation.summary;\n if (typeof nestedSummary === \"string\" && nestedSummary.trim().length > 0) {\n return nestedSummary.trim();\n }\n\n return null;\n}\n\nfunction redactJsonDiagnosticValue(value: JsonValue | undefined): JsonValue | undefined {\n return value === undefined\n ? undefined\n : (redactDiagnosticValue(value) as JsonValue);\n}\n\nasync function resolveConfiguredAuthContext(\n authContext: GatewayClientConfig[\"authContext\"]\n): Promise<LucernSdkAuthContextInput | undefined> {\n if (typeof authContext === \"function\") {\n return await authContext();\n }\n return authContext;\n}\n\nfunction mergeHeaderRecord(\n base: Record<string, string>,\n addition: Record<string, string>\n): Record<string, string> {\n const headers = new Headers(base);\n for (const [key, value] of Object.entries(addition)) {\n const existing = headers.get(key);\n if (existing !== null && existing !== value) {\n throw new LucernSdkAuthContextError(\n \"policy_denied\",\n `Canonical Lucern SDK auth context conflicts with existing ${key} header.`\n );\n }\n headers.set(key, value);\n }\n return Object.fromEntries(headers.entries());\n}\n\nfunction cleanHeaderValue(value: string | null | undefined): string | undefined {\n const normalized = value?.trim();\n return normalized ? normalized : undefined;\n}\n\n/**\n * Create the transport client used by all SDK modules.\n */\nexport function createGatewayRequestClient(config: GatewayClientConfig = {}) {\n const env = resolveEnvironment();\n const runtime = createGatewayRuntime(config, env);\n const baseUrl = resolveGatewayBaseUrl(config.baseUrl, env);\n const maxRetries = runtime.profile.maxRetries;\n const requestIdFactory = runtime.profile.requestIdFactory;\n const requestTimeoutByMethod = runtime.profile.timeoutMsByMethod;\n const defaultRequestTimeoutMs = runtime.profile.timeoutMs;\n const normalizedEnvironment = normalizeGatewayEnvironment(config.environment);\n const telemetryExporter =\n config.telemetryEnabled === false\n ? null\n : (config.telemetryExporter ??\n createTelemetryExporterFromEnv(telemetryEnvironmentRecord(env), {\n service: \"lucern-sdk\",\n environment: normalizedEnvironment,\n }));\n\n async function resolveAuthHeaders(): Promise<Record<string, string>> {\n const provided = config.getAuthHeaders ? await config.getAuthHeaders() : {};\n const headers = new Headers(provided);\n const setIfAbsent = (name: string, value: string | undefined) => {\n const normalized = cleanHeaderValue(value);\n if (normalized && !headers.has(name)) {\n headers.set(name, normalized);\n }\n };\n\n setIfAbsent(\"x-lucern-key\", config.apiKey);\n setIfAbsent(\"x-lucern-session-token\", config.userToken);\n setIfAbsent(\"x-lucern-environment\", normalizedEnvironment);\n setIfAbsent(\"x-lucern-clerk-id\", config.clerkId);\n setIfAbsent(\"x-lucern-user-id\", config.userId ?? config.clerkId);\n setIfAbsent(\"x-lucern-deployment-host\", config.deploymentHost);\n\n const base = Object.fromEntries(headers.entries());\n const authContextInput = await resolveConfiguredAuthContext(\n config.authContext\n );\n if (!authContextInput && !config.requireCanonicalAuthContext) {\n return base;\n }\n const authContext = normalizeCanonicalLucernAuthContext(authContextInput);\n return mergeHeaderRecord(base, createCanonicalAuthHeaders(authContext));\n }\n\n async function fetchWithTimeout(\n url: string,\n init: RequestInit,\n timeoutMs: number\n ): Promise<Response> {\n const normalizeTransportError = (\n error: unknown,\n isTimeout: boolean,\n ): GatewayRecoverableError => {\n if (isTimeout) {\n return new GatewayTimeoutError(timeoutMs);\n }\n return error instanceof GatewayTimeoutError ||\n error instanceof GatewayTransportError\n ? error\n : new GatewayTransportError(\n error instanceof Error ? error.message : \"Gateway transport error\",\n {\n cause: error,\n retryable: classifyGatewayErrorForRetry(error),\n }\n );\n };\n\n const controller = new AbortController();\n const timer = setTimeout(() => controller.abort(), timeoutMs);\n const requestEffect = Effect.tryPromise({\n try: () => runtime.fetch(url, { ...init, signal: controller.signal }),\n catch: (error) => normalizeTransportError(error, controller.signal.aborted),\n });\n try {\n const exit = await Effect.runPromiseExit(requestEffect);\n if (Exit.isSuccess(exit)) {\n return exit.value;\n }\n const failure = Array.from(Cause.failures(exit.cause))[0];\n if (failure !== undefined) {\n throw failure;\n }\n throw Cause.squash(exit.cause);\n } finally {\n clearTimeout(timer);\n }\n }\n\n async function emitSdkResponseTelemetry(\n context: GatewayResponseHookContext,\n ): Promise<void> {\n const retry = classifyRetry({\n status: context.status,\n error: context.error,\n retryAfter:\n context.retryAfterMs !== null && context.retryAfterMs !== undefined\n ? String(context.retryAfterMs / 1000)\n : undefined,\n });\n await emitTelemetrySignal(telemetryExporter, {\n signalType: \"trace\",\n surface: \"sdk-retry\",\n eventName: context.willRetry\n ? \"sdk.retry\"\n : context.error\n ? \"sdk.request.error\"\n : \"sdk.request.complete\",\n severity: context.error ? (context.willRetry ? \"warn\" : \"error\") : \"info\",\n durationMs: context.durationMs,\n metricName: \"sdk.request.duration_ms\",\n metricValue: context.durationMs,\n correlationId: context.correlationId ?? context.requestId,\n policyTraceId: context.policyTraceId ?? null,\n tenantId:\n context.headers.get(\"x-lucern-tenant-id\") ??\n context.headers.get(\"x-lucern-tenant\") ??\n undefined,\n workspaceId:\n context.headers.get(\"x-lucern-workspace-id\") ??\n context.headers.get(\"x-lucern-workspace\") ??\n undefined,\n attributes: {\n service: \"lucern-sdk\",\n operation: \"gateway.request\",\n path: context.path,\n httpMethod: context.method,\n httpStatus: context.status,\n attempt: context.attempt,\n maxRetries: context.maxRetries,\n retryReason: retry.reason,\n retryAfterMs: context.retryAfterMs ?? retry.retryAfterMs,\n willRetry: context.willRetry,\n retryable: retry.retryable,\n errorName:\n context.error instanceof Error ? context.error.name : undefined,\n errorMessage:\n context.error instanceof Error ? context.error.message : undefined,\n },\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 const parsed = tryParseGatewayEnvelopeJson(text);\n if (!parsed.ok) {\n return null;\n }\n return isRecord(parsed.value)\n ? (parsed.value as PlatformGatewayEnvelope<T>)\n : null;\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 = requestTimeoutByMethod?.[method];\n if (typeof methodTimeoutMs === \"number\") {\n return methodTimeoutMs;\n }\n return defaultRequestTimeoutMs;\n }\n\n function tryParseGatewayEnvelopeJson(text: string): JsonParseAttempt {\n const trimmed = text.trim();\n if (!trimmed.startsWith(\"{\") && !trimmed.startsWith(\"[\")) {\n return { ok: false, reason: \"non-json\" };\n }\n try {\n return { ok: true, value: JSON.parse(trimmed) };\n } catch (error) {\n if (error instanceof SyntaxError) {\n return { ok: false, reason: \"invalid-json\", error };\n }\n throw error;\n }\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 && isRecord(failure.error) ? failure.error : 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 = runtime.redaction(\n redactJsonDiagnosticValue(failure?.details ?? legacyError?.details)\n );\n const policySummary = readPolicySummaryFromDetails(details);\n const failureMessage =\n typeof failure?.error === \"string\"\n ? failure.error\n : legacyError?.message;\n\n return new LucernApiError({\n code:\n failure?.code ??\n legacyError?.code ??\n fallbackErrorCode(args.response.status),\n message:\n policySummary ??\n failureMessage ??\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 retry = classifyRetry({\n status: response.status,\n retryAfter: response.headers.get(\"Retry-After\"),\n });\n const retryAfterMs = retry.retryAfterMs ?? null;\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 && retry.retryable;\n const responseContext: GatewayResponseHookContext = {\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 await config.onResponse?.(responseContext);\n await emitSdkResponseTelemetry(responseContext);\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 const responseContext: GatewayResponseHookContext = {\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 await config.onResponse?.(responseContext);\n await emitSdkResponseTelemetry(responseContext);\n\n return successPayload;\n } catch (fetchError) {\n if (fetchError instanceof LucernApiError) {\n throw fetchError;\n }\n const willRetry =\n attempt < maxRetries && classifyGatewayErrorForRetry(fetchError);\n const responseContext: GatewayResponseHookContext = {\n ...hookRequestContext,\n durationMs: Date.now() - startedAt,\n error: fetchError,\n correlationId: requestId,\n policyTraceId: null,\n willRetry,\n };\n await config.onResponse?.(responseContext);\n await emitSdkResponseTelemetry(responseContext);\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\nexport function isRecord(value: unknown): value is AnyRecord {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function asRecord(value: unknown): AnyRecord {\n return isRecord(value) ? value : {};\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 const normalizeNodeVerificationStatus = normalizeVerificationStatus;\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;\n }\n\n const record = asRecord(data);\n if (Array.isArray(record.items)) {\n return record.items;\n }\n if (legacyKey && Array.isArray(record[legacyKey])) {\n return record[legacyKey];\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 return {\n ...result,\n [legacyKey]: items,\n } as ListResult<T, LegacyKey>;\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 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 reasoningMethod?: 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 const client = {\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 * 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 * 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 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 return Object.assign(client, {\n queryNodes: client.listNodes,\n queryEdges: client.listEdges,\n getNeighborhood: client.neighborhood,\n });\n}\n","import { createListResult } from \"./sdkSurface\";\nimport type { JsonObject, ListResult } from \"./types\";\n\nexport type TopicProjectAliasInput = {\n topicId?: string;\n /** @deprecated Use topicId. */\n projectId?: string;\n};\n\nexport function cleanOptionalString(value: string | undefined) {\n const normalized = value?.trim();\n return normalized ? normalized : undefined;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return Boolean(value) && typeof value === \"object\" && !Array.isArray(value);\n}\n\nexport function cleanRequiredString(\n value: string | undefined,\n label: string\n) {\n const normalized = cleanOptionalString(value);\n if (!normalized) {\n throw new Error(`${label} is required`);\n }\n return normalized;\n}\n\nexport function readTopicId(input: TopicProjectAliasInput) {\n return cleanOptionalString(input.topicId) ?? cleanOptionalString(input.projectId);\n}\n\nexport function requireTopicId(input: TopicProjectAliasInput) {\n const topicId = readTopicId(input);\n if (!topicId) {\n throw new Error(\"topicId is required\");\n }\n return topicId;\n}\n\nexport function assertKnownKeys<T extends string>(\n input: Record<string, unknown>,\n allowed: readonly T[],\n operation: string\n) {\n const allowedSet = new Set<string>(allowed);\n const unknownKeys = Object.keys(input).filter((key) => !allowedSet.has(key));\n if (unknownKeys.length > 0) {\n throw new Error(\n `${operation} received unsupported field(s): ${unknownKeys.join(\", \")}`\n );\n }\n}\n\nexport function knownPayload<T extends string>(\n input: Record<string, unknown>,\n allowed: readonly T[],\n operation: string\n) {\n assertKnownKeys(input, allowed, operation);\n return { ...input } as JsonObject;\n}\n\nexport function topicPayload<T extends string>(\n input: TopicProjectAliasInput & Record<string, unknown>,\n allowed: readonly T[],\n operation: string\n) {\n assertKnownKeys(input, allowed, operation);\n return {\n ...input,\n topicId: requireTopicId(input),\n projectId: undefined,\n } as JsonObject;\n}\n\nexport function listResultFromEnvelope<T, LegacyKey extends string>(\n data: unknown,\n legacyKey: LegacyKey\n): ListResult<T, LegacyKey> {\n const record = isRecord(data) ? data : {};\n const legacyItems = record[legacyKey];\n return createListResult(\n Array.isArray(legacyItems)\n ? legacyItems\n : Array.isArray(data)\n ? data\n : [],\n legacyKey\n );\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"./coreClient\";\nimport { mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject, SdkPrincipalContext } from \"./types\";\n\nexport type ControlPlanePrincipalType =\n | \"human\"\n | \"service\"\n | \"agent\"\n | \"group\"\n | \"external_viewer\";\n\nexport type ControlPlanePrincipalStatus =\n | \"active\"\n | \"invited\"\n | \"suspended\"\n | \"disabled\"\n | \"revoked\"\n | \"missing\";\n\nexport type ResolveInteractivePrincipalInput = {\n clerkId: string;\n tenantId?: string;\n workspaceId?: string;\n providerProjectId?: string;\n};\n\nexport type ControlPlanePermitSubject = {\n subject: string;\n tenant: string;\n workspace?: string;\n};\n\nexport type ResolvedInteractivePrincipalContext = SdkPrincipalContext & {\n principalType: ControlPlanePrincipalType;\n authMode: \"interactive_user\";\n clerkId: string;\n tenantId: string;\n workspaceId: string | null;\n groupIds: string[];\n permittedToolNames: string[];\n permittedPackKeys: string[];\n principalStatus: ControlPlanePrincipalStatus;\n tenantStatus: string;\n workspaceStatus: string;\n permit: ControlPlanePermitSubject;\n};\n\nexport type ResolveInteractivePrincipalFailureReason =\n | \"principal_missing\"\n | \"tenant_missing\"\n | \"workspace_missing\"\n | \"membership_missing\"\n | \"ambiguous_principal\"\n | \"ambiguous_workspace\"\n | \"alias_invited\"\n | \"alias_suspended\"\n | \"alias_disabled\"\n | \"alias_revoked\"\n | \"principal_invited\"\n | \"principal_suspended\"\n | \"principal_disabled\"\n | \"principal_revoked\"\n | \"tenant_disabled\"\n | \"workspace_disabled\"\n | \"resolver_unavailable\";\n\nexport type ResolveInteractivePrincipalFailure = {\n ok: false;\n reason: ResolveInteractivePrincipalFailureReason | (string & {});\n message: string;\n principalStatus?: ControlPlanePrincipalStatus | string;\n tenantStatus?: string;\n workspaceStatus?: string;\n details?: JsonObject;\n};\n\ntype ResolveInteractivePrincipalPayload =\n | (ResolvedInteractivePrincipalContext & { ok?: true })\n | ResolveInteractivePrincipalFailure;\n\nexport class LucernControlPlaneIdentityError extends Error {\n readonly reason: ResolveInteractivePrincipalFailure[\"reason\"];\n readonly principalStatus?: string;\n readonly tenantStatus?: string;\n readonly workspaceStatus?: string;\n readonly details?: JsonObject;\n\n constructor(failure: ResolveInteractivePrincipalFailure) {\n super(failure.message);\n this.name = \"LucernControlPlaneIdentityError\";\n this.reason = failure.reason;\n this.principalStatus = failure.principalStatus;\n this.tenantStatus = failure.tenantStatus;\n this.workspaceStatus = failure.workspaceStatus;\n this.details = failure.details;\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 stringList(value: unknown): string[] {\n if (!Array.isArray(value)) {\n return [];\n }\n return [\n ...new Set(\n value\n .filter((entry): entry is string => typeof entry === \"string\")\n .map((entry) => entry.trim())\n .filter(Boolean)\n ),\n ];\n}\n\nfunction principalType(value: unknown): ControlPlanePrincipalType {\n switch (value) {\n case \"service\":\n case \"service_principal\":\n return \"service\";\n case \"agent\":\n return \"agent\";\n case \"group\":\n return \"group\";\n case \"external_viewer\":\n case \"external_stakeholder\":\n return \"external_viewer\";\n default:\n return \"human\";\n }\n}\n\nfunction adminFlags(roles: string[]) {\n const normalized = roles.map((role) => role.toLowerCase());\n const isPlatformAdmin = normalized.includes(\"platform_admin\");\n const isTenantAdmin = isPlatformAdmin || normalized.includes(\"tenant_admin\");\n const isWorkspaceAdmin =\n isTenantAdmin ||\n normalized.includes(\"workspace_admin\") ||\n normalized.includes(\"workspace_owner\");\n return { isPlatformAdmin, isTenantAdmin, isWorkspaceAdmin };\n}\n\nexport function normalizeResolvedInteractivePrincipal(\n payload: ResolveInteractivePrincipalPayload\n): ResolvedInteractivePrincipalContext {\n if (\"ok\" in payload && payload.ok === false) {\n throw new LucernControlPlaneIdentityError(payload);\n }\n\n const principalId = cleanString(payload.principalId);\n const clerkId = cleanString(payload.clerkId);\n const tenantId = cleanString(payload.tenantId);\n if (!principalId || !clerkId || !tenantId) {\n throw new LucernControlPlaneIdentityError({\n ok: false,\n reason: \"resolver_unavailable\",\n message:\n \"Control-plane principal resolver returned an incomplete principal context.\",\n principalStatus: payload.principalStatus ?? \"missing\",\n tenantStatus: payload.tenantStatus,\n workspaceStatus: payload.workspaceStatus,\n });\n }\n\n const roles = stringList(payload.roles);\n const scopes = stringList(payload.scopes);\n const workspaceId = cleanString(payload.workspaceId) ?? null;\n const flags = adminFlags(roles);\n\n return {\n principalId,\n principalType: principalType(payload.principalType),\n clerkId,\n tenantId,\n workspaceId,\n roles,\n scopes,\n groupIds: stringList(payload.groupIds),\n permittedToolNames: stringList(payload.permittedToolNames),\n permittedPackKeys: stringList(payload.permittedPackKeys),\n principalStatus:\n (cleanString(payload.principalStatus) as ControlPlanePrincipalStatus) ??\n \"active\",\n tenantStatus: cleanString(payload.tenantStatus) ?? \"active\",\n workspaceStatus:\n cleanString(payload.workspaceStatus) ?? (workspaceId ? \"active\" : \"none\"),\n isPlatformAdmin:\n typeof payload.isPlatformAdmin === \"boolean\"\n ? payload.isPlatformAdmin\n : flags.isPlatformAdmin,\n isTenantAdmin:\n typeof payload.isTenantAdmin === \"boolean\"\n ? payload.isTenantAdmin\n : flags.isTenantAdmin,\n isWorkspaceAdmin:\n typeof payload.isWorkspaceAdmin === \"boolean\"\n ? payload.isWorkspaceAdmin\n : flags.isWorkspaceAdmin,\n permit: {\n subject: cleanString(payload.permit?.subject) ?? principalId,\n tenant: cleanString(payload.permit?.tenant) ?? tenantId,\n ...(workspaceId\n ? { workspace: cleanString(payload.permit?.workspace) ?? workspaceId }\n : {}),\n },\n authMode: \"interactive_user\",\n sessionId: payload.sessionId,\n delegatedBy: payload.delegatedBy,\n expiresAt: payload.expiresAt,\n };\n}\n\nexport type ResolveInteractivePrincipalResponse =\n PlatformGatewaySuccess<ResolvedInteractivePrincipalContext>;\n\nexport type ControlPlaneIdentityClientConfig = GatewayClientConfig;\n\nexport function createControlPlaneIdentityClient(\n config: ControlPlaneIdentityClientConfig = {}\n) {\n const gateway = createGatewayRequestClient(config);\n return {\n async resolveInteractivePrincipal(\n input: ResolveInteractivePrincipalInput\n ): Promise<ResolveInteractivePrincipalResponse> {\n return gateway\n .request<ResolveInteractivePrincipalPayload>({\n path: \"/api/platform/v1/control-plane/identity/resolve-interactive-principal\",\n method: \"POST\",\n body: input,\n })\n .then((response) =>\n mapGatewayData(response, normalizeResolvedInteractivePrincipal)\n );\n },\n };\n}\n\nexport function createControlPlaneClient(\n config: ControlPlaneIdentityClientConfig = {}\n) {\n return {\n identity: createControlPlaneIdentityClient(config),\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 {\n cleanRequiredString,\n knownPayload,\n listResultFromEnvelope,\n} from \"./boundaryClientSurface\";\nimport { createListResult, mapGatewayData } from \"./sdkSurface\";\nimport type { JsonObject, ListResult, SdkPrincipalContext } from \"./types\";\nimport {\n normalizeResolvedInteractivePrincipal,\n type ResolveInteractivePrincipalFailure,\n type ResolveInteractivePrincipalInput,\n type ResolvedInteractivePrincipalContext,\n} from \"./control-plane\";\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\nexport const TENANT_IDENTITY_FIELDS = [\n \"tenantId\",\n \"workspaceId\",\n \"principalId\",\n \"integrationKey\",\n \"secretRef\",\n \"policySubject\",\n \"policyAction\",\n \"policyResource\",\n \"decision\",\n \"config\",\n \"configKey\",\n \"configValue\",\n \"provider\",\n \"status\",\n \"metadata\",\n \"limit\",\n \"cursor\",\n] as const;\n\nexport type TenantIdentityConfigRecord = {\n tenantId: string;\n workspaceId?: string;\n config?: JsonObject | null;\n metadata?: JsonObject | null;\n updatedAt?: number;\n updatedBy?: string;\n};\n\nexport type TenantIntegrationRecord = {\n tenantId: string;\n workspaceId?: string;\n integrationKey: string;\n provider?: string;\n status?: string;\n metadata?: JsonObject | null;\n createdAt?: number;\n updatedAt?: number;\n};\n\nexport type TenantSecretReference = {\n tenantId: string;\n workspaceId?: string;\n integrationKey?: string;\n secretRef: string;\n status?: string;\n metadata?: JsonObject | null;\n updatedAt?: number;\n};\n\nexport type PolicyDecisionRecord = {\n tenantId: string;\n workspaceId?: string;\n principalId?: string;\n policySubject: string;\n policyAction: string;\n policyResource: string;\n decision: \"allow\" | \"deny\" | string;\n reason?: string;\n metadata?: JsonObject | null;\n createdAt?: number;\n};\n\nexport type TenantIdentityScope = {\n tenantId: string;\n workspaceId?: string;\n principalId?: string;\n limit?: number;\n cursor?: string;\n};\n\nexport type UpdateTenantConfigInput = TenantIdentityScope & {\n config?: JsonObject;\n configKey?: string;\n configValue?: JsonObject | string | number | boolean | null;\n metadata?: JsonObject;\n};\n\nexport type UpsertTenantIntegrationInput = TenantIdentityScope & {\n integrationKey: string;\n provider?: string;\n status?: string;\n metadata?: JsonObject;\n};\n\nexport type PutTenantSecretReferenceInput = TenantIdentityScope & {\n integrationKey?: string;\n secretRef: string;\n status?: string;\n metadata?: JsonObject;\n};\n\nexport type PolicyEvaluationInput = TenantIdentityScope & {\n policySubject: string;\n policyAction: string;\n policyResource: string;\n metadata?: JsonObject;\n};\n\nexport type RecordPolicyDecisionInput = PolicyEvaluationInput & {\n decision: \"allow\" | \"deny\" | string;\n};\n\nexport type TenantIntegrationsResponse = ListResult<\n TenantIntegrationRecord,\n \"integrations\"\n>;\nexport type TenantSecretsResponse = ListResult<TenantSecretReference, \"secrets\">;\n\nfunction tenantIdentityQuery(input: TenantIdentityScope) {\n return {\n tenantId: cleanRequiredString(input.tenantId, \"tenantId\"),\n workspaceId: input.workspaceId,\n principalId: input.principalId,\n limit: input.limit,\n cursor: input.cursor,\n };\n}\n\nfunction tenantIdentityBody(input: Record<string, unknown>, operation: string) {\n return knownPayload(input, TENANT_IDENTITY_FIELDS, operation);\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\" | \"invited\" | \"suspended\" | \"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 const 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\" | \"invited\" | \"suspended\" | \"disabled\" | \"revoked\";\n metadata?: JsonObject;\n },\n idempotencyKey?: string\n ) => requestPrincipalWrite(\"PATCH\", input, idempotencyKey);\n\n const deleteKey = (\n keyId: string,\n input: { reason?: string } = {},\n idempotencyKey?: string\n ) =>\n 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 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 clerkId: data.clerkId,\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 groupIds: Array.isArray(data.groupIds) ? data.groupIds : [],\n permittedToolNames: Array.isArray(data.permittedToolNames)\n ? data.permittedToolNames\n : [],\n permittedPackKeys: Array.isArray(data.permittedPackKeys)\n ? data.permittedPackKeys\n : [],\n principalStatus: data.principalStatus,\n tenantStatus: data.tenantStatus,\n workspaceStatus: data.workspaceStatus,\n isPlatformAdmin: data.isPlatformAdmin === true,\n isTenantAdmin: data.isTenantAdmin === true,\n isWorkspaceAdmin: data.isWorkspaceAdmin === true,\n permit:\n data.permit ??\n (data.tenantId\n ? {\n subject: data.principalId,\n tenant: data.tenantId,\n ...(data.workspaceId ? { workspace: data.workspaceId } : {}),\n }\n : undefined),\n authMode: data.authMode,\n sessionId: data.sessionId,\n delegatedBy: data.delegatedBy,\n expiresAt: data.expiresAt,\n }))\n );\n },\n\n /**\n * Resolve a Clerk subject through the tenant control-plane Permit projection.\n * @deprecated Prefer lucern.controlPlane.identity.resolveInteractivePrincipal().\n */\n async resolveInteractivePrincipal(input: ResolveInteractivePrincipalInput) {\n return gateway\n .request<\n | (ResolvedInteractivePrincipalContext & { ok?: true })\n | ResolveInteractivePrincipalFailure\n >({\n path: \"/api/platform/v1/control-plane/identity/resolve-interactive-principal\",\n method: \"POST\",\n body: input,\n })\n .then((response) =>\n mapGatewayData(response, normalizeResolvedInteractivePrincipal)\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\" | \"invited\" | \"suspended\" | \"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 updatePrincipal,\n\n /**\n * @deprecated Use createPrincipal or updatePrincipal.\n */\n upsertPrincipal: updatePrincipal,\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 deleteKey,\n\n /**\n * @deprecated Use deleteKey.\n */\n revokeKey: deleteKey,\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 async getTenantConfig(input: TenantIdentityScope) {\n return gateway.request<TenantIdentityConfigRecord>({\n path: `/api/platform/v1/identity/tenant-config${toQueryString(\n tenantIdentityQuery(input)\n )}`,\n });\n },\n\n async updateTenantConfig(\n input: UpdateTenantConfigInput,\n idempotencyKey?: string\n ) {\n cleanRequiredString(input.tenantId, \"tenantId\");\n return gateway.request<TenantIdentityConfigRecord>({\n path: \"/api/platform/v1/identity/tenant-config\",\n method: \"PATCH\",\n body: tenantIdentityBody(\n input as unknown as Record<string, unknown>,\n \"identity.updateTenantConfig\"\n ),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n async listIntegrations(input: TenantIdentityScope) {\n return gateway.request<TenantIntegrationsResponse>({\n path: `/api/platform/v1/identity/integrations${toQueryString(\n tenantIdentityQuery(input)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n listResultFromEnvelope<TenantIntegrationRecord, \"integrations\">(\n data,\n \"integrations\"\n )\n )\n );\n },\n\n async upsertIntegration(\n input: UpsertTenantIntegrationInput,\n idempotencyKey?: string\n ) {\n cleanRequiredString(input.tenantId, \"tenantId\");\n cleanRequiredString(input.integrationKey, \"integrationKey\");\n return gateway.request<TenantIntegrationRecord>({\n path: \"/api/platform/v1/identity/integrations\",\n method: \"PUT\",\n body: tenantIdentityBody(\n input as unknown as Record<string, unknown>,\n \"identity.upsertIntegration\"\n ),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n async listSecrets(input: TenantIdentityScope) {\n return gateway.request<TenantSecretsResponse>({\n path: `/api/platform/v1/identity/secrets${toQueryString(\n tenantIdentityQuery(input)\n )}`,\n }).then((response) =>\n mapGatewayData(response, (data) =>\n listResultFromEnvelope<TenantSecretReference, \"secrets\">(\n data,\n \"secrets\"\n )\n )\n );\n },\n\n async putSecretReference(\n input: PutTenantSecretReferenceInput,\n idempotencyKey?: string\n ) {\n cleanRequiredString(input.tenantId, \"tenantId\");\n cleanRequiredString(input.secretRef, \"secretRef\");\n return gateway.request<TenantSecretReference>({\n path: \"/api/platform/v1/identity/secrets\",\n method: \"PUT\",\n body: tenantIdentityBody(\n input as unknown as Record<string, unknown>,\n \"identity.putSecretReference\"\n ),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n async evaluatePolicy(\n input: PolicyEvaluationInput,\n idempotencyKey?: string\n ) {\n cleanRequiredString(input.tenantId, \"tenantId\");\n cleanRequiredString(input.policySubject, \"policySubject\");\n cleanRequiredString(input.policyAction, \"policyAction\");\n cleanRequiredString(input.policyResource, \"policyResource\");\n return gateway.request<PolicyDecisionRecord>({\n path: \"/api/platform/v1/identity/policy/evaluate\",\n method: \"POST\",\n body: tenantIdentityBody(\n input as unknown as Record<string, unknown>,\n \"identity.evaluatePolicy\"\n ),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n\n async recordPolicyDecision(\n input: RecordPolicyDecisionInput,\n idempotencyKey?: string\n ) {\n cleanRequiredString(input.tenantId, \"tenantId\");\n cleanRequiredString(input.decision, \"decision\");\n return gateway.request<PolicyDecisionRecord>({\n path: \"/api/platform/v1/identity/policy/decisions\",\n method: \"POST\",\n body: tenantIdentityBody(\n input as unknown as Record<string, unknown>,\n \"identity.recordPolicyDecision\"\n ),\n idempotencyKey: idempotencyKey ?? randomIdempotencyKey(),\n });\n },\n };\n}\n","import {\n createGatewayRequestClient,\n type GatewayClientConfig,\n type GatewayScope,\n randomIdempotencyKey,\n toQueryString,\n} from \"./coreClient\";\nimport { asListItems, asRecord, 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 const client = {\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 = asRecord(data);\n const ontologies = asListItems(data, \"ontologies\");\n const definitions =\n ontologies.length > 0 ? ontologies : asListItems(data, \"definitions\");\n const total =\n typeof record.total === \"number\" && Number.isFinite(record.total)\n ? record.total\n : definitions.length;\n return {\n ...record,\n ...createListResult(definitions, \"definitions\"),\n ontologies: definitions,\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 * 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(asListItems(data, \"versions\"), \"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 return Object.assign(client, {\n listDefinitions: client.list,\n getDefinition: client.get,\n listTopicsByOntology: client.listTopics,\n });\n}\n","import {\n createGatewayRequestClient,\n randomIdempotencyKey,\n toQueryString,\n type GatewayClientConfig,\n type PlatformGatewaySuccess,\n} from \"./coreClient\";\nimport { createGraphClient } from \"./graphClient\";\nimport { createIdentityClient } from \"./identityClient\";\nimport { createOntologyClient, type OntologyBindingInput } from \"./ontologyClient\";\nimport type {\n BeliefArchiveInput,\n BeliefBisectInput,\n BeliefConfidenceInput,\n BeliefContractInput,\n BeliefCreateInput,\n BeliefForkInput,\n BeliefRecord,\n BeliefsLineageResult,\n BeliefsListQuery,\n BeliefsListResult,\n BeliefRefineInput,\n ContradictionsListResult,\n EdgeCreateInput,\n EdgeListQuery,\n EdgeTraverseInput,\n EvidenceCreateInput,\n EvidenceCreateResult,\n EvidenceListQuery,\n EvidenceLinkInput,\n EvidenceLinkResult,\n EvidenceSearchInput,\n EventsListQuery,\n EventsListResult,\n GatewayList,\n GatewayRecord,\n GraphAnalyzeInput,\n GraphBiasInput,\n GraphFalsifyInput,\n GraphNeighborhoodInput,\n GraphTraverseInput,\n OntologyListInput,\n OntologyMatchInput,\n QuestionAnswerInput,\n QuestionArchiveInput,\n QuestionCreateInput,\n QuestionRefineInput,\n QuestionStatusInput,\n QuestionsListQuery,\n QuestionsListResult,\n SearchQueryInput,\n ReplayEventsInput,\n WebhookCreateInput,\n WebhookDeliveriesQuery,\n WebhookListQuery,\n WebhookTestInput,\n WebhookUpdateInput,\n WebhooksListResult\n} from \"./gatewayFacades\";\nimport type { JsonObject } from \"./types\";\n\nfunction normalizeBeliefConfidenceInput(\n input: BeliefConfidenceInput\n): JsonObject {\n const opinion = input.opinion;\n\n return {\n belief: opinion.b,\n disbelief: opinion.d,\n uncertainty: opinion.u,\n baseRate: opinion.a,\n trigger: input.trigger,\n rationale: input.rationale,\n triggeringEvidenceId: input.triggeringEvidenceId,\n triggeringQuestionId: input.triggeringQuestionId,\n triggeringAnswerId: input.triggeringAnswerId,\n triggeringContradictionId: input.triggeringContradictionId,\n triggeringWorktreeId: input.triggeringWorktreeId,\n maxInlinePropagationTargets: input.maxInlinePropagationTargets,\n };\n}\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: normalizeBeliefConfidenceInput(input),\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 opinionHistory(\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 const graphFacade = {\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 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 return Object.assign(graphFacade, {\n traverse: graphClient.traverse,\n analyze: graphClient.analyze,\n bias: graphClient.bias,\n gaps: graphClient.gaps,\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 const ontologyFacade = {\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 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 return Object.assign(ontologyFacade, {\n list: ontologyClient.list,\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"]}
|