@lucern/sdk 0.3.0-alpha.16 → 0.3.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/CHANGELOG.md +0 -8
  2. package/README.md +4 -110
  3. package/dist/adminClient.d.ts +8 -10
  4. package/dist/adminClient.js +39 -260
  5. package/dist/adminClient.js.map +1 -1
  6. package/dist/answersClient.d.ts +0 -2
  7. package/dist/answersClient.js +11 -239
  8. package/dist/answersClient.js.map +1 -1
  9. package/dist/audience/index.d.ts +1 -2
  10. package/dist/audience/index.js +3 -1
  11. package/dist/audience/index.js.map +1 -1
  12. package/dist/audiencesClient.d.ts +16 -18
  13. package/dist/audiencesClient.js +90 -315
  14. package/dist/audiencesClient.js.map +1 -1
  15. package/dist/auditClient.d.ts +0 -2
  16. package/dist/auditClient.js +15 -245
  17. package/dist/auditClient.js.map +1 -1
  18. package/dist/beliefs/index.d.ts +5 -27
  19. package/dist/beliefs/index.js +1177 -3842
  20. package/dist/beliefs/index.js.map +1 -1
  21. package/dist/beliefsClient.d.ts +2 -4
  22. package/dist/beliefsClient.js +26 -248
  23. package/dist/beliefsClient.js.map +1 -1
  24. package/dist/client-B6aWUUwp.d.ts +2552 -0
  25. package/dist/client.d.ts +27 -3041
  26. package/dist/client.js +1177 -3842
  27. package/dist/client.js.map +1 -1
  28. package/dist/contextClient.d.ts +3 -6
  29. package/dist/contextClient.js +30 -270
  30. package/dist/contextClient.js.map +1 -1
  31. package/dist/contextFacade.js +16 -25
  32. package/dist/contextFacade.js.map +1 -1
  33. package/dist/contextPackCompiler.js +30 -19
  34. package/dist/contextPackCompiler.js.map +1 -1
  35. package/dist/contextPackPolicy.js +17 -7
  36. package/dist/contextPackPolicy.js.map +1 -1
  37. package/dist/contextTypes.d.ts +0 -2
  38. package/dist/contracts/api-enums.contract.d.ts +2 -2
  39. package/dist/contracts/api-enums.contract.js +1 -6
  40. package/dist/contracts/api-enums.contract.js.map +1 -1
  41. package/dist/contracts/auth-session.contract.d.ts +1 -1
  42. package/dist/contracts/auth-session.contract.js +1 -13
  43. package/dist/contracts/auth-session.contract.js.map +1 -1
  44. package/dist/contracts/index.d.ts +0 -1
  45. package/dist/contracts/index.js +6 -133
  46. package/dist/contracts/index.js.map +1 -1
  47. package/dist/contracts/lens-filter.contract.js +3 -4
  48. package/dist/contracts/lens-filter.contract.js.map +1 -1
  49. package/dist/contracts/lens-workflow.contract.js +3 -4
  50. package/dist/contracts/lens-workflow.contract.js.map +1 -1
  51. package/dist/contracts/lensFilter.js +3 -4
  52. package/dist/contracts/lensFilter.js.map +1 -1
  53. package/dist/contracts/lensWorkflow.js +3 -4
  54. package/dist/contracts/lensWorkflow.js.map +1 -1
  55. package/dist/contracts/mcpTools.d.ts +1 -46
  56. package/dist/contracts/mcpTools.js +0 -108
  57. package/dist/contracts/mcpTools.js.map +1 -1
  58. package/dist/contradictions/index.d.ts +4 -26
  59. package/dist/contradictions/index.js +1177 -3842
  60. package/dist/contradictions/index.js.map +1 -1
  61. package/dist/coreClient.d.ts +2 -28
  62. package/dist/coreClient.js +14 -240
  63. package/dist/coreClient.js.map +1 -1
  64. package/dist/decisions/index.d.ts +14 -36
  65. package/dist/decisions/index.js +1177 -3842
  66. package/dist/decisions/index.js.map +1 -1
  67. package/dist/decisionsClient.d.ts +12 -6
  68. package/dist/decisionsClient.js +37 -253
  69. package/dist/decisionsClient.js.map +1 -1
  70. package/dist/edges/index.d.ts +87 -49
  71. package/dist/edges/index.js +1177 -3842
  72. package/dist/edges/index.js.map +1 -1
  73. package/dist/events.js +3 -6
  74. package/dist/events.js.map +1 -1
  75. package/dist/eventsCore.d.ts +1 -3
  76. package/dist/eventsCore.js +14 -240
  77. package/dist/eventsCore.js.map +1 -1
  78. package/dist/evidence/index.d.ts +4 -26
  79. package/dist/evidence/index.js +1177 -3842
  80. package/dist/evidence/index.js.map +1 -1
  81. package/dist/evidenceClient.d.ts +0 -2
  82. package/dist/evidenceClient.js +14 -240
  83. package/dist/evidenceClient.js.map +1 -1
  84. package/dist/facade/context.d.ts +1 -2
  85. package/dist/facade/context.js +16 -25
  86. package/dist/facade/context.js.map +1 -1
  87. package/dist/gatewayFacades.d.ts +46 -90
  88. package/dist/gatewayFacades.js +128 -609
  89. package/dist/gatewayFacades.js.map +1 -1
  90. package/dist/graphClient.d.ts +13 -8
  91. package/dist/graphClient.js +45 -262
  92. package/dist/graphClient.js.map +1 -1
  93. package/dist/harnessClient.d.ts +24 -15
  94. package/dist/harnessClient.js +42 -253
  95. package/dist/harnessClient.js.map +1 -1
  96. package/dist/identityClient.d.ts +11 -115
  97. package/dist/identityClient.js +33 -555
  98. package/dist/identityClient.js.map +1 -1
  99. package/dist/index.d.ts +6 -32
  100. package/dist/index.js +2580 -5825
  101. package/dist/index.js.map +1 -1
  102. package/dist/learningClient.d.ts +6 -8
  103. package/dist/learningClient.js +44 -270
  104. package/dist/learningClient.js.map +1 -1
  105. package/dist/lenses/index.d.ts +38 -78
  106. package/dist/lenses/index.js +1177 -3842
  107. package/dist/lenses/index.js.map +1 -1
  108. package/dist/nodes/index.d.ts +21 -65
  109. package/dist/nodes/index.js +1177 -3842
  110. package/dist/nodes/index.js.map +1 -1
  111. package/dist/ontologies/index.d.ts +32 -55
  112. package/dist/ontologies/index.js +1177 -3842
  113. package/dist/ontologies/index.js.map +1 -1
  114. package/dist/ontologyClient.d.ts +25 -19
  115. package/dist/ontologyClient.js +40 -276
  116. package/dist/ontologyClient.js.map +1 -1
  117. package/dist/packsClient.d.ts +23 -11
  118. package/dist/packsClient.js +46 -252
  119. package/dist/packsClient.js.map +1 -1
  120. package/dist/policyClient.d.ts +10 -13
  121. package/dist/policyClient.js +25 -261
  122. package/dist/policyClient.js.map +1 -1
  123. package/dist/questions/index.d.ts +4 -26
  124. package/dist/questions/index.js +1177 -3842
  125. package/dist/questions/index.js.map +1 -1
  126. package/dist/realtime/index.d.ts +1 -1
  127. package/dist/reportsClient.d.ts +7 -9
  128. package/dist/reportsClient.js +53 -299
  129. package/dist/reportsClient.js.map +1 -1
  130. package/dist/schemaClient.d.ts +3 -5
  131. package/dist/schemaClient.js +29 -253
  132. package/dist/schemaClient.js.map +1 -1
  133. package/dist/sdkSurface.d.ts +3 -8
  134. package/dist/sdkSurface.js +6 -10
  135. package/dist/sdkSurface.js.map +1 -1
  136. package/dist/sourcesClient.d.ts +0 -2
  137. package/dist/sourcesClient.js +14 -240
  138. package/dist/sourcesClient.js.map +1 -1
  139. package/dist/topics/index.d.ts +9 -37
  140. package/dist/topics/index.js +1177 -3844
  141. package/dist/topics/index.js.map +1 -1
  142. package/dist/topicsClient.d.ts +0 -4
  143. package/dist/topicsClient.js +24 -255
  144. package/dist/topicsClient.js.map +1 -1
  145. package/dist/types.d.ts +0 -17
  146. package/dist/version.d.ts +1 -1
  147. package/dist/version.js +1 -1
  148. package/dist/version.js.map +1 -1
  149. package/dist/workflowClient.d.ts +40 -60
  150. package/dist/workflowClient.js +58 -261
  151. package/dist/workflowClient.js.map +1 -1
  152. package/dist/worktrees/index.d.ts +33 -71
  153. package/dist/worktrees/index.js +1177 -3842
  154. package/dist/worktrees/index.js.map +1 -1
  155. package/package.json +3 -17
  156. package/dist/accessControl.d.ts +0 -79
  157. package/dist/accessControl.js +0 -1270
  158. package/dist/accessControl.js.map +0 -1
  159. package/dist/authContext.d.ts +0 -56
  160. package/dist/authContext.js +0 -170
  161. package/dist/authContext.js.map +0 -1
  162. package/dist/authDeviceClient.d.ts +0 -49
  163. package/dist/authDeviceClient.js +0 -121
  164. package/dist/authDeviceClient.js.map +0 -1
  165. package/dist/boundaryClientSurface.d.ts +0 -20
  166. package/dist/boundaryClientSurface.js +0 -73
  167. package/dist/boundaryClientSurface.js.map +0 -1
  168. package/dist/clientHelpers.d.ts +0 -48
  169. package/dist/clientHelpers.js +0 -137
  170. package/dist/clientHelpers.js.map +0 -1
  171. package/dist/control-plane.d.ts +0 -69
  172. package/dist/control-plane.js +0 -674
  173. package/dist/control-plane.js.map +0 -1
  174. package/dist/embeddingsClient.d.ts +0 -106
  175. package/dist/embeddingsClient.js +0 -749
  176. package/dist/embeddingsClient.js.map +0 -1
  177. package/dist/eventingClient.d.ts +0 -96
  178. package/dist/eventingClient.js +0 -746
  179. package/dist/eventingClient.js.map +0 -1
  180. package/dist/functionSurface.d.ts +0 -144
  181. package/dist/functionSurface.js +0 -1227
  182. package/dist/functionSurface.js.map +0 -1
  183. package/dist/functionSurfaceClient.d.ts +0 -8
  184. package/dist/functionSurfaceClient.js +0 -1227
  185. package/dist/functionSurfaceClient.js.map +0 -1
  186. package/dist/graphAnalysisClient.d.ts +0 -192
  187. package/dist/graphAnalysisClient.js +0 -817
  188. package/dist/graphAnalysisClient.js.map +0 -1
  189. package/dist/graphIntel.d.ts +0 -4
  190. package/dist/graphIntel.js +0 -3
  191. package/dist/graphIntel.js.map +0 -1
  192. package/dist/graphIntelligence.d.ts +0 -2
  193. package/dist/graphIntelligence.js +0 -47
  194. package/dist/graphIntelligence.js.map +0 -1
  195. package/dist/graphRecommendationsClient.d.ts +0 -56
  196. package/dist/graphRecommendationsClient.js +0 -682
  197. package/dist/graphRecommendationsClient.js.map +0 -1
  198. package/dist/graphStateClassifierClient.d.ts +0 -73
  199. package/dist/graphStateClassifierClient.js +0 -734
  200. package/dist/graphStateClassifierClient.js.map +0 -1
  201. package/dist/infisicalRuntime.d.ts +0 -43
  202. package/dist/infisicalRuntime.js +0 -346
  203. package/dist/infisicalRuntime.js.map +0 -1
  204. package/dist/jobsClient.d.ts +0 -98
  205. package/dist/jobsClient.js +0 -744
  206. package/dist/jobsClient.js.map +0 -1
  207. package/dist/mcpClient.d.ts +0 -28
  208. package/dist/mcpClient.js +0 -687
  209. package/dist/mcpClient.js.map +0 -1
  210. package/dist/modelRuntimeClient.d.ts +0 -72
  211. package/dist/modelRuntimeClient.js +0 -722
  212. package/dist/modelRuntimeClient.js.map +0 -1
  213. package/dist/ontologyLinksClient.d.ts +0 -71
  214. package/dist/ontologyLinksClient.js +0 -715
  215. package/dist/ontologyLinksClient.js.map +0 -1
  216. package/dist/orgGraphSearchClient.d.ts +0 -85
  217. package/dist/orgGraphSearchClient.js +0 -690
  218. package/dist/orgGraphSearchClient.js.map +0 -1
  219. package/dist/secrets.d.ts +0 -1
  220. package/dist/secrets.js +0 -3
  221. package/dist/secrets.js.map +0 -1
  222. package/dist/telemetryClient.d.ts +0 -94
  223. package/dist/telemetryClient.js +0 -759
  224. package/dist/telemetryClient.js.map +0 -1
  225. package/dist/toolRegistryClient.d.ts +0 -115
  226. package/dist/toolRegistryClient.js +0 -785
  227. package/dist/toolRegistryClient.js.map +0 -1
@@ -6,8 +6,6 @@ import { Opinion } from './opinion.js';
6
6
  import './contracts/workflow-runtime.contract.js';
7
7
  import './contracts/lens-workflow.contract.js';
8
8
  import './contracts/lens-filter.contract.js';
9
- import './authContext.js';
10
- import './contracts/auth-session.contract.js';
11
9
 
12
10
  /** Configuration for the beliefs client. Inherits gateway transport settings. */
13
11
  type BeliefsClientConfig = GatewayClientConfig;
@@ -188,9 +186,9 @@ declare function createBeliefsClient(config?: BeliefsClientConfig): {
188
186
  * trigger = cause of the score change
189
187
  * triggeringRef = optional pointer to the evidence or worktree that drove the change
190
188
  */
191
- getOpinionHistory: (beliefId: string) => Promise<OpinionHistoryEntry[]>;
189
+ getOpinionHistory(beliefId: string): Promise<OpinionHistoryEntry[]>;
192
190
  /** @deprecated Use getOpinionHistory(). */
193
- getConfidenceHistory: (beliefId: string) => Promise<OpinionHistoryEntry[]>;
191
+ getConfidenceHistory(beliefId: string): Promise<OpinionHistoryEntry[]>;
194
192
  /**
195
193
  * Fork a scored belief into a new formulation.
196
194
  */
@@ -1,170 +1,3 @@
1
- // src/authContext.ts
2
- var LucernSdkAuthContextError = class extends Error {
3
- reason;
4
- constructor(reason, message) {
5
- super(message);
6
- this.name = "LucernSdkAuthContextError";
7
- this.reason = reason;
8
- }
9
- };
10
- function cleanString(value) {
11
- const normalized = value?.trim();
12
- return normalized ? normalized : void 0;
13
- }
14
- function cleanStringList(values) {
15
- if (!values) {
16
- return [];
17
- }
18
- return values.map((value) => value.trim()).filter(
19
- (value, index, list) => value.length > 0 && list.indexOf(value) === index
20
- );
21
- }
22
- function requireString(value, reason, label) {
23
- const normalized = cleanString(value);
24
- if (!normalized) {
25
- throw new LucernSdkAuthContextError(
26
- reason,
27
- `Canonical Lucern SDK auth context is missing ${label}.`
28
- );
29
- }
30
- return normalized;
31
- }
32
- function requirePrincipalType(principalType) {
33
- if (!principalType) {
34
- throw new LucernSdkAuthContextError(
35
- "principal_missing",
36
- "Canonical Lucern SDK auth context is missing principalType."
37
- );
38
- }
39
- return principalType;
40
- }
41
- function requireAuthMode(authMode) {
42
- if (!authMode) {
43
- throw new LucernSdkAuthContextError(
44
- "principal_missing",
45
- "Canonical Lucern SDK auth context is missing authMode."
46
- );
47
- }
48
- return authMode;
49
- }
50
- function ensurePermitMatch(args) {
51
- const actual = cleanString(args.actual);
52
- if (actual && actual !== args.expected) {
53
- throw new LucernSdkAuthContextError(
54
- "policy_denied",
55
- `Canonical Lucern SDK auth context has conflicting Permit ${args.field}.`
56
- );
57
- }
58
- }
59
- function normalizeCanonicalLucernAuthContext(input) {
60
- if (!input) {
61
- throw new LucernSdkAuthContextError(
62
- "principal_missing",
63
- "Canonical Lucern SDK auth context is required."
64
- );
65
- }
66
- if (input.policyDecision === "deny") {
67
- throw new LucernSdkAuthContextError(
68
- "policy_denied",
69
- "Canonical Lucern SDK auth context carries a denied policy decision."
70
- );
71
- }
72
- const principalId = requireString(
73
- input.principalId,
74
- "principal_missing",
75
- "principalId"
76
- );
77
- const tenantId = requireString(input.tenantId, "tenant_missing", "tenantId");
78
- const workspaceId = requireString(
79
- input.workspaceId,
80
- "workspace_missing",
81
- "workspaceId"
82
- );
83
- const roles = cleanStringList(input.roles);
84
- const scopes = cleanStringList(input.scopes);
85
- const principalType = requirePrincipalType(input.principalType);
86
- const authMode = requireAuthMode(input.authMode);
87
- const roleBasedInteractiveAuth = authMode === "interactive_user" && roles.length > 0;
88
- if (roles.length === 0 || scopes.length === 0 && !roleBasedInteractiveAuth) {
89
- throw new LucernSdkAuthContextError(
90
- "membership_missing",
91
- "Canonical Lucern SDK auth context requires non-empty roles and scopes."
92
- );
93
- }
94
- const subject = cleanString(input.permit?.subject) ?? principalId;
95
- const tenant = cleanString(input.permit?.tenant) ?? tenantId;
96
- const workspace = cleanString(input.permit?.workspace) ?? workspaceId;
97
- ensurePermitMatch({
98
- field: "subject",
99
- expected: principalId,
100
- actual: subject
101
- });
102
- ensurePermitMatch({ field: "tenant", expected: tenantId, actual: tenant });
103
- ensurePermitMatch({
104
- field: "workspace",
105
- expected: workspaceId,
106
- actual: workspace
107
- });
108
- const context = input.permit?.context ? { ...input.permit.context } : void 0;
109
- return {
110
- clerkId: cleanString(input.clerkId),
111
- principalId,
112
- tenantId,
113
- workspaceId,
114
- principalType,
115
- authMode,
116
- roles,
117
- scopes,
118
- delegationChain: input.delegationChain ? [...input.delegationChain] : [],
119
- policyTraceId: cleanString(input.policyTraceId),
120
- correlationId: cleanString(input.correlationId),
121
- membershipId: cleanString(input.membershipId),
122
- permit: {
123
- subject,
124
- tenant,
125
- workspace,
126
- resource: cleanString(input.permit?.resource),
127
- action: cleanString(input.permit?.action),
128
- relation: cleanString(input.permit?.relation),
129
- context
130
- }
131
- };
132
- }
133
- function createCanonicalAuthHeaders(authContext) {
134
- const headers = {
135
- "x-lucern-principal-id": authContext.principalId,
136
- "x-lucern-principal-type": authContext.principalType,
137
- "x-lucern-tenant": authContext.tenantId,
138
- "x-lucern-tenant-id": authContext.tenantId,
139
- "x-lucern-workspace": authContext.workspaceId,
140
- "x-lucern-workspace-id": authContext.workspaceId,
141
- "x-lucern-auth-mode": authContext.authMode,
142
- "x-lucern-roles": authContext.roles.join(","),
143
- "x-lucern-scopes": authContext.scopes.join(","),
144
- "x-lucern-permit-context": JSON.stringify(authContext.permit)
145
- };
146
- if (authContext.clerkId) {
147
- headers["x-lucern-clerk-id"] = authContext.clerkId;
148
- headers["x-lucern-user-id"] = authContext.clerkId;
149
- }
150
- if (authContext.delegationChain.length > 0) {
151
- headers["x-lucern-delegation-chain"] = JSON.stringify(
152
- authContext.delegationChain
153
- );
154
- }
155
- if (authContext.policyTraceId) {
156
- headers["x-lucern-policy-trace-id"] = authContext.policyTraceId;
157
- }
158
- if (authContext.correlationId) {
159
- headers["x-correlation-id"] = authContext.correlationId;
160
- headers["x-lucern-correlation-id"] = authContext.correlationId;
161
- }
162
- if (authContext.membershipId) {
163
- headers["x-lucern-membership-id"] = authContext.membershipId;
164
- }
165
- return headers;
166
- }
167
-
168
1
  // src/coreClient.ts
169
2
  var LucernApiError = class extends Error {
170
3
  code;
@@ -212,7 +45,9 @@ function generatePortableRequestId() {
212
45
  8
213
46
  ).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10).join("")}`;
214
47
  }
215
- var randomIdempotencyKey = generatePortableRequestId;
48
+ function randomIdempotencyKey() {
49
+ return generatePortableRequestId();
50
+ }
216
51
  function isRetryableStatus(status) {
217
52
  return status >= 500 || status === 408 || status === 429;
218
53
  }
@@ -277,11 +112,8 @@ function timeoutError(timeoutMs) {
277
112
  error.name = "AbortError";
278
113
  return error;
279
114
  }
280
- function isRecord(value) {
281
- return value !== null && typeof value === "object" && !Array.isArray(value);
282
- }
283
115
  function readPolicySummaryFromDetails(details) {
284
- if (!isRecord(details)) {
116
+ if (!details || typeof details !== "object" || Array.isArray(details)) {
285
117
  return null;
286
118
  }
287
119
  const directSummary = details.summary;
@@ -289,11 +121,11 @@ function readPolicySummaryFromDetails(details) {
289
121
  return directSummary.trim();
290
122
  }
291
123
  const policy = details.policy;
292
- if (!isRecord(policy)) {
124
+ if (!policy || typeof policy !== "object" || Array.isArray(policy)) {
293
125
  return null;
294
126
  }
295
127
  const explanation = policy.explanation;
296
- if (!isRecord(explanation)) {
128
+ if (!explanation || typeof explanation !== "object" || Array.isArray(explanation)) {
297
129
  return null;
298
130
  }
299
131
  const nestedSummary = explanation.summary;
@@ -302,59 +134,16 @@ function readPolicySummaryFromDetails(details) {
302
134
  }
303
135
  return null;
304
136
  }
305
- async function resolveConfiguredAuthContext(authContext) {
306
- if (typeof authContext === "function") {
307
- return await authContext();
308
- }
309
- return authContext;
310
- }
311
- function mergeHeaderRecord(base, addition) {
312
- const headers = new Headers(base);
313
- for (const [key, value] of Object.entries(addition)) {
314
- const existing = headers.get(key);
315
- if (existing !== null && existing !== value) {
316
- throw new LucernSdkAuthContextError(
317
- "policy_denied",
318
- `Canonical Lucern SDK auth context conflicts with existing ${key} header.`
319
- );
320
- }
321
- headers.set(key, value);
322
- }
323
- return Object.fromEntries(headers.entries());
324
- }
325
- function cleanHeaderValue(value) {
326
- const normalized = value?.trim();
327
- return normalized ? normalized : void 0;
328
- }
329
137
  function createGatewayRequestClient(config = {}) {
330
138
  const fetchImpl = config.fetchImpl ?? fetch;
331
139
  const baseUrl = config.baseUrl?.replace(/\/+$/, "") ?? "";
332
140
  const maxRetries = config.maxRetries ?? 2;
333
141
  const requestIdFactory = config.requestIdFactory ?? (() => generatePortableRequestId());
334
142
  async function resolveAuthHeaders() {
335
- const provided = config.getAuthHeaders ? await config.getAuthHeaders() : {};
336
- const headers = new Headers(provided);
337
- const setIfAbsent = (name, value) => {
338
- const normalized = cleanHeaderValue(value);
339
- if (normalized && !headers.has(name)) {
340
- headers.set(name, normalized);
341
- }
342
- };
343
- setIfAbsent("x-lucern-key", config.apiKey);
344
- setIfAbsent("x-lucern-session-token", config.userToken);
345
- setIfAbsent("x-lucern-environment", config.environment);
346
- setIfAbsent("x-lucern-clerk-id", config.clerkId);
347
- setIfAbsent("x-lucern-user-id", config.userId ?? config.clerkId);
348
- setIfAbsent("x-lucern-deployment-host", config.deploymentHost);
349
- const base = Object.fromEntries(headers.entries());
350
- const authContextInput = await resolveConfiguredAuthContext(
351
- config.authContext
352
- );
353
- if (!authContextInput && !config.requireCanonicalAuthContext) {
354
- return base;
143
+ if (!config.getAuthHeaders) {
144
+ return {};
355
145
  }
356
- const authContext = normalizeCanonicalLucernAuthContext(authContextInput);
357
- return mergeHeaderRecord(base, createCanonicalAuthHeaders(authContext));
146
+ return await config.getAuthHeaders();
358
147
  }
359
148
  async function fetchWithTimeout(url, init, timeoutMs) {
360
149
  const controller = new AbortController();
@@ -375,11 +164,11 @@ function createGatewayRequestClient(config = {}) {
375
164
  if (!text) {
376
165
  return null;
377
166
  }
378
- const parsed = tryParseGatewayEnvelopeJson(text);
379
- if (!parsed.ok) {
167
+ try {
168
+ return JSON.parse(text);
169
+ } catch {
380
170
  return null;
381
171
  }
382
- return isRecord(parsed.value) ? parsed.value : null;
383
172
  }
384
173
  function resolveTimeoutMs(method, requestTimeoutMs) {
385
174
  if (typeof requestTimeoutMs === "number") {
@@ -391,31 +180,16 @@ function createGatewayRequestClient(config = {}) {
391
180
  }
392
181
  return config.timeoutMs ?? 15e3;
393
182
  }
394
- function tryParseGatewayEnvelopeJson(text) {
395
- const trimmed = text.trim();
396
- if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) {
397
- return { ok: false, reason: "non-json" };
398
- }
399
- try {
400
- return { ok: true, value: JSON.parse(trimmed) };
401
- } catch (error) {
402
- if (error instanceof SyntaxError) {
403
- return { ok: false, reason: "invalid-json", error };
404
- }
405
- throw error;
406
- }
407
- }
408
183
  function buildApiError(args) {
409
184
  const failure = args.failure;
410
- const legacyError = failure && isRecord(failure.error) ? failure.error : failure?.legacyError;
185
+ const legacyError = failure && typeof failure.error === "object" && failure.error !== null ? failure.error : failure?.legacyError;
411
186
  const correlationId = failure?.correlationId ?? args.response.headers.get("x-lucern-correlation-id")?.trim() ?? args.requestId;
412
187
  const policyTraceId = failure?.policyTraceId ?? args.response.headers.get("x-lucern-policy-trace-id")?.trim() ?? null;
413
188
  const details = failure?.details ?? legacyError?.details;
414
189
  const policySummary = readPolicySummaryFromDetails(details);
415
- const failureMessage = typeof failure?.error === "string" ? failure.error : legacyError?.message;
416
190
  return new LucernApiError({
417
191
  code: failure?.code ?? legacyError?.code ?? fallbackErrorCode(args.response.status),
418
- message: policySummary ?? failureMessage ?? (args.response.ok ? "Platform API returned an invalid success payload." : "Platform API request failed."),
192
+ message: policySummary ?? (typeof failure?.error === "string" ? failure.error : legacyError?.message ?? (args.response.ok ? "Platform API returned an invalid success payload." : "Platform API request failed.")),
419
193
  status: args.response.status,
420
194
  invariant: failure?.invariant,
421
195
  suggestion: failure?.suggestion,
@@ -541,11 +315,11 @@ function createGatewayRequestClient(config = {}) {
541
315
  }
542
316
 
543
317
  // src/sdkSurface.ts
544
- function cleanString2(value) {
318
+ function cleanString(value) {
545
319
  return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
546
320
  }
547
321
  function normalizeVerificationStatus(value) {
548
- const status = cleanString2(value);
322
+ const status = cleanString(value);
549
323
  if (!status) {
550
324
  return void 0;
551
325
  }
@@ -558,10 +332,10 @@ function normalizeVerificationStatus(value) {
558
332
  return status;
559
333
  }
560
334
  function resolveTopicId(value) {
561
- return cleanString2(value.topicId);
335
+ return cleanString(value.topicId);
562
336
  }
563
337
  function resolveText(value) {
564
- return cleanString2(value.text) ?? cleanString2(value.canonicalText);
338
+ return cleanString(value.text) ?? cleanString(value.canonicalText);
565
339
  }
566
340
  function normalizeNodeWriteInput(value) {
567
341
  const topicId = resolveTopicId(value);
@@ -682,12 +456,12 @@ function createBeliefsClient(config = {}) {
682
456
  body: normalizeModulateConfidenceInput(input),
683
457
  idempotencyKey: idempotencyKey ?? randomIdempotencyKey()
684
458
  });
685
- const getOpinionHistory = async (beliefId) => {
459
+ async function getOpinionHistory(beliefId) {
686
460
  const response = await gateway.request({
687
461
  path: `/api/platform/v1/beliefs/${encodeURIComponent(beliefId)}/confidence-history`
688
462
  });
689
463
  return mapOpinionHistoryEntriesFromGatewayData(response.data);
690
- };
464
+ }
691
465
  return {
692
466
  /**
693
467
  * Create a belief within a topic scope.
@@ -732,9 +506,13 @@ function createBeliefsClient(config = {}) {
732
506
  * trigger = cause of the score change
733
507
  * triggeringRef = optional pointer to the evidence or worktree that drove the change
734
508
  */
735
- getOpinionHistory,
509
+ async getOpinionHistory(beliefId) {
510
+ return getOpinionHistory(beliefId);
511
+ },
736
512
  /** @deprecated Use getOpinionHistory(). */
737
- getConfidenceHistory: getOpinionHistory,
513
+ async getConfidenceHistory(beliefId) {
514
+ return getOpinionHistory(beliefId);
515
+ },
738
516
  /**
739
517
  * Fork a scored belief into a new formulation.
740
518
  */