@lucern/sdk 0.3.0-alpha.5 → 0.3.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/adminClient.d.ts +8 -8
  3. package/dist/adminClient.js +47 -36
  4. package/dist/adminClient.js.map +1 -1
  5. package/dist/answersClient.js +26 -8
  6. package/dist/answersClient.js.map +1 -1
  7. package/dist/audience/index.d.ts +2 -1
  8. package/dist/audience/index.js +1 -3
  9. package/dist/audience/index.js.map +1 -1
  10. package/dist/audiencesClient.d.ts +16 -16
  11. package/dist/audiencesClient.js +102 -87
  12. package/dist/audiencesClient.js.map +1 -1
  13. package/dist/auditClient.js +30 -10
  14. package/dist/auditClient.js.map +1 -1
  15. package/dist/authDeviceClient.js +16 -3
  16. package/dist/authDeviceClient.js.map +1 -1
  17. package/dist/beliefs/index.d.ts +3 -3
  18. package/dist/beliefs/index.js +513 -758
  19. package/dist/beliefs/index.js.map +1 -1
  20. package/dist/beliefsClient.d.ts +2 -2
  21. package/dist/beliefsClient.js +31 -19
  22. package/dist/beliefsClient.js.map +1 -1
  23. package/dist/boundaryClientSurface.js +10 -3
  24. package/dist/boundaryClientSurface.js.map +1 -1
  25. package/dist/client.d.ts +247 -270
  26. package/dist/client.js +513 -758
  27. package/dist/client.js.map +1 -1
  28. package/dist/clientHelpers.d.ts +29 -0
  29. package/dist/clientHelpers.js +122 -0
  30. package/dist/clientHelpers.js.map +1 -0
  31. package/dist/contextClient.js +26 -8
  32. package/dist/contextClient.js.map +1 -1
  33. package/dist/contextPackCompiler.js +19 -30
  34. package/dist/contextPackCompiler.js.map +1 -1
  35. package/dist/contextPackPolicy.js +7 -17
  36. package/dist/contextPackPolicy.js.map +1 -1
  37. package/dist/contracts/index.js +4 -3
  38. package/dist/contracts/index.js.map +1 -1
  39. package/dist/contracts/lens-filter.contract.js +4 -3
  40. package/dist/contracts/lens-filter.contract.js.map +1 -1
  41. package/dist/contracts/lens-workflow.contract.js +4 -3
  42. package/dist/contracts/lens-workflow.contract.js.map +1 -1
  43. package/dist/contracts/lensFilter.js +4 -3
  44. package/dist/contracts/lensFilter.js.map +1 -1
  45. package/dist/contracts/lensWorkflow.js +4 -3
  46. package/dist/contracts/lensWorkflow.js.map +1 -1
  47. package/dist/contradictions/index.d.ts +2 -2
  48. package/dist/contradictions/index.js +513 -758
  49. package/dist/contradictions/index.js.map +1 -1
  50. package/dist/coreClient.d.ts +2 -1
  51. package/dist/coreClient.js +27 -11
  52. package/dist/coreClient.js.map +1 -1
  53. package/dist/decisions/index.d.ts +12 -12
  54. package/dist/decisions/index.js +513 -758
  55. package/dist/decisions/index.js.map +1 -1
  56. package/dist/decisionsClient.d.ts +4 -12
  57. package/dist/decisionsClient.js +37 -31
  58. package/dist/decisionsClient.js.map +1 -1
  59. package/dist/edges/index.d.ts +2 -2
  60. package/dist/edges/index.js +513 -758
  61. package/dist/edges/index.js.map +1 -1
  62. package/dist/embeddingsClient.js +37 -14
  63. package/dist/embeddingsClient.js.map +1 -1
  64. package/dist/eventingClient.js +37 -14
  65. package/dist/eventingClient.js.map +1 -1
  66. package/dist/events.js +6 -3
  67. package/dist/events.js.map +1 -1
  68. package/dist/eventsCore.d.ts +1 -1
  69. package/dist/eventsCore.js +27 -11
  70. package/dist/eventsCore.js.map +1 -1
  71. package/dist/evidence/index.d.ts +2 -2
  72. package/dist/evidence/index.js +513 -758
  73. package/dist/evidence/index.js.map +1 -1
  74. package/dist/evidenceClient.js +27 -11
  75. package/dist/evidenceClient.js.map +1 -1
  76. package/dist/functionSurface.js +27 -11
  77. package/dist/functionSurface.js.map +1 -1
  78. package/dist/functionSurfaceClient.js +27 -11
  79. package/dist/functionSurfaceClient.js.map +1 -1
  80. package/dist/gatewayFacades.d.ts +27 -45
  81. package/dist/gatewayFacades.js +92 -118
  82. package/dist/gatewayFacades.js.map +1 -1
  83. package/dist/graphAnalysisClient.js +31 -12
  84. package/dist/graphAnalysisClient.js.map +1 -1
  85. package/dist/graphClient.d.ts +5 -13
  86. package/dist/graphClient.js +42 -35
  87. package/dist/graphClient.js.map +1 -1
  88. package/dist/graphRecommendationsClient.js +31 -13
  89. package/dist/graphRecommendationsClient.js.map +1 -1
  90. package/dist/graphStateClassifierClient.js +37 -15
  91. package/dist/graphStateClassifierClient.js.map +1 -1
  92. package/dist/harnessClient.d.ts +13 -24
  93. package/dist/harnessClient.js +38 -37
  94. package/dist/harnessClient.js.map +1 -1
  95. package/dist/identityClient.d.ts +8 -8
  96. package/dist/identityClient.js +48 -31
  97. package/dist/identityClient.js.map +1 -1
  98. package/dist/index.d.ts +2 -2
  99. package/dist/index.js +592 -819
  100. package/dist/index.js.map +1 -1
  101. package/dist/infisicalRuntime.js +47 -24
  102. package/dist/infisicalRuntime.js.map +1 -1
  103. package/dist/jobsClient.js +37 -15
  104. package/dist/jobsClient.js.map +1 -1
  105. package/dist/learningClient.d.ts +6 -6
  106. package/dist/learningClient.js +55 -39
  107. package/dist/learningClient.js.map +1 -1
  108. package/dist/lenses/index.d.ts +29 -35
  109. package/dist/lenses/index.js +513 -758
  110. package/dist/lenses/index.js.map +1 -1
  111. package/dist/mcpClient.js +26 -8
  112. package/dist/mcpClient.js.map +1 -1
  113. package/dist/modelRuntimeClient.js +37 -14
  114. package/dist/modelRuntimeClient.js.map +1 -1
  115. package/dist/nodes/index.d.ts +17 -17
  116. package/dist/nodes/index.js +513 -758
  117. package/dist/nodes/index.js.map +1 -1
  118. package/dist/ontologies/index.d.ts +31 -30
  119. package/dist/ontologies/index.js +513 -758
  120. package/dist/ontologies/index.js.map +1 -1
  121. package/dist/ontologyClient.d.ts +17 -25
  122. package/dist/ontologyClient.js +63 -37
  123. package/dist/ontologyClient.js.map +1 -1
  124. package/dist/ontologyLinksClient.js +37 -15
  125. package/dist/ontologyLinksClient.js.map +1 -1
  126. package/dist/orgGraphSearchClient.js +30 -10
  127. package/dist/orgGraphSearchClient.js.map +1 -1
  128. package/dist/packsClient.d.ts +9 -23
  129. package/dist/packsClient.js +39 -43
  130. package/dist/packsClient.js.map +1 -1
  131. package/dist/policyClient.d.ts +11 -10
  132. package/dist/policyClient.js +48 -22
  133. package/dist/policyClient.js.map +1 -1
  134. package/dist/questions/index.d.ts +2 -2
  135. package/dist/questions/index.js +513 -758
  136. package/dist/questions/index.js.map +1 -1
  137. package/dist/realtime/index.d.ts +1 -1
  138. package/dist/reportsClient.d.ts +7 -7
  139. package/dist/reportsClient.js +84 -48
  140. package/dist/reportsClient.js.map +1 -1
  141. package/dist/schemaClient.d.ts +3 -3
  142. package/dist/schemaClient.js +40 -26
  143. package/dist/schemaClient.js.map +1 -1
  144. package/dist/sdkSurface.d.ts +6 -3
  145. package/dist/sdkSurface.js +10 -6
  146. package/dist/sdkSurface.js.map +1 -1
  147. package/dist/sourcesClient.js +27 -11
  148. package/dist/sourcesClient.js.map +1 -1
  149. package/dist/telemetryClient.js +37 -15
  150. package/dist/telemetryClient.js.map +1 -1
  151. package/dist/toolRegistryClient.d.ts +10 -2
  152. package/dist/toolRegistryClient.js +50 -16
  153. package/dist/toolRegistryClient.js.map +1 -1
  154. package/dist/topics/index.d.ts +5 -5
  155. package/dist/topics/index.js +513 -758
  156. package/dist/topics/index.js.map +1 -1
  157. package/dist/topicsClient.js +37 -16
  158. package/dist/topicsClient.js.map +1 -1
  159. package/dist/version.d.ts +1 -1
  160. package/dist/version.js +1 -1
  161. package/dist/version.js.map +1 -1
  162. package/dist/workflowClient.d.ts +15 -33
  163. package/dist/workflowClient.js +43 -50
  164. package/dist/workflowClient.js.map +1 -1
  165. package/dist/worktrees/index.d.ts +22 -30
  166. package/dist/worktrees/index.js +513 -758
  167. package/dist/worktrees/index.js.map +1 -1
  168. package/package.json +4 -4
@@ -46,10 +46,18 @@ function isInfisicalRuntimeDisabled(env = {}) {
46
46
  }
47
47
  async function hydrateInfisicalRuntimeEnv(options) {
48
48
  const env = options.env ?? {};
49
- const bootstrap = mergeBootstrap(
50
- readInfisicalRuntimeBootstrap(env, options.bootstrap),
51
- options.bootstrap
52
- );
49
+ const baseBootstrap = readInfisicalRuntimeBootstrap(env, options.bootstrap);
50
+ const bootstrap = baseBootstrap ? {
51
+ ...baseBootstrap,
52
+ ...Object.fromEntries(
53
+ Object.entries(options.bootstrap ?? {}).filter(
54
+ ([, value]) => value !== void 0
55
+ )
56
+ ),
57
+ apiUrl: trimTrailingSlash(
58
+ options.bootstrap?.apiUrl ?? baseBootstrap.apiUrl
59
+ )
60
+ } : null;
53
61
  if (!bootstrap) {
54
62
  return {
55
63
  status: "disabled",
@@ -145,16 +153,6 @@ function normalizeInfisicalEnvironment(value) {
145
153
  }
146
154
  return "prod";
147
155
  }
148
- function mergeBootstrap(base, overrides) {
149
- if (!base) {
150
- return null;
151
- }
152
- return {
153
- ...base,
154
- ...compact(overrides ?? {}),
155
- apiUrl: trimTrailingSlash(overrides?.apiUrl ?? base.apiUrl)
156
- };
157
- }
158
156
  async function loginWithUniversalAuth(bootstrap, fetchImpl) {
159
157
  const response = await fetchImpl(
160
158
  `${trimTrailingSlash(bootstrap.apiUrl)}/api/v1/auth/universal-auth/login`,
@@ -239,14 +237,18 @@ async function readSecretValue(args) {
239
237
  async function readJson(response) {
240
238
  try {
241
239
  return await response.json();
242
- } catch {
240
+ } catch (error) {
241
+ debugInfisicalRuntimeFallback("response.json", error);
243
242
  return void 0;
244
243
  }
245
244
  }
245
+ function isRecord(value) {
246
+ return value !== null && typeof value === "object" && !Array.isArray(value);
247
+ }
246
248
  function readNestedString(value, path) {
247
249
  let current = value;
248
250
  for (const key of path) {
249
- if (!current || typeof current !== "object" || !(key in current)) {
251
+ if (!isRecord(current) || !(key in current)) {
250
252
  return null;
251
253
  }
252
254
  current = current[key];
@@ -254,13 +256,12 @@ function readNestedString(value, path) {
254
256
  return typeof current === "string" && current.length > 0 ? current : null;
255
257
  }
256
258
  function messageFromBody(body) {
257
- if (!body || typeof body !== "object") {
259
+ if (!isRecord(body)) {
258
260
  return "no response body";
259
261
  }
260
- const record = body;
261
262
  for (const key of ["message", "error", "errorMessage"]) {
262
- if (typeof record[key] === "string") {
263
- return record[key];
263
+ if (typeof body[key] === "string") {
264
+ return body[key];
264
265
  }
265
266
  }
266
267
  return JSON.stringify(body);
@@ -280,10 +281,32 @@ function isTruthyEnv(value) {
280
281
  function trimTrailingSlash(value) {
281
282
  return value.replace(/\/+$/u, "");
282
283
  }
283
- function compact(value) {
284
- return Object.fromEntries(
285
- Object.entries(value).filter(([, entry]) => entry !== void 0)
286
- );
284
+ function debugInfisicalRuntimeFallback(message, error) {
285
+ const env = globalThis.process?.env;
286
+ if (env?.LUCERN_COMPAT_FALLBACK_DEBUG !== "1" && env?.LUCERN_INFISICAL_RUNTIME_DEBUG !== "1") {
287
+ return;
288
+ }
289
+ console.debug(`[infisical-runtime] ${message}`, {
290
+ error: formatInfisicalRuntimeError(error)
291
+ });
292
+ }
293
+ function formatInfisicalRuntimeError(error) {
294
+ if (error instanceof Error) {
295
+ return `${error.name}: ${error.message}`;
296
+ }
297
+ if (typeof error === "string") {
298
+ return error;
299
+ }
300
+ if (typeof error === "number" || typeof error === "boolean") {
301
+ return String(error);
302
+ }
303
+ if (error && typeof error === "object") {
304
+ const keys = Object.keys(error).slice(0, 5);
305
+ if (keys.length > 0) {
306
+ return `Unknown Infisical runtime error object with keys: ${keys.join(", ")}`;
307
+ }
308
+ }
309
+ return "Unknown Infisical runtime error shape";
287
310
  }
288
311
 
289
312
  export { InfisicalRuntimeError, applyInfisicalRuntimeEnv, hydrateInfisicalRuntimeEnv, isInfisicalRuntimeDisabled, readInfisicalRuntimeBootstrap };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/infisicalRuntime.ts"],"names":[],"mappings":"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","file":"infisicalRuntime.js","sourcesContent":["import {\n INFISICAL_RUNTIME_DEFAULT_API_URL,\n INFISICAL_RUNTIME_DEFAULT_PROJECT_ID,\n INFISICAL_RUNTIME_MANIFEST,\n findInfisicalRuntimePath,\n findInfisicalRuntimeSurface,\n type InfisicalRuntimeEnvironment,\n type InfisicalRuntimeSurfaceId,\n type InfisicalRuntimeVariable,\n} from \"@lucern/contracts\";\n\nexport type InfisicalRuntimeEnv = Record<string, string | undefined>;\n\nexport type InfisicalRuntimeFetch = (\n input: string | URL,\n init?: RequestInit\n) => Promise<Response>;\n\nexport type InfisicalRuntimeBootstrapConfig = {\n apiUrl: string;\n projectId: string;\n clientId: string;\n clientSecret: string;\n environment: InfisicalRuntimeEnvironment;\n organizationSlug?: string;\n};\n\nexport type InfisicalRuntimeHydrateOptions = {\n surfaceId: InfisicalRuntimeSurfaceId;\n env?: InfisicalRuntimeEnv;\n fetchImpl?: InfisicalRuntimeFetch;\n bootstrap?: Partial<InfisicalRuntimeBootstrapConfig>;\n};\n\nexport type InfisicalRuntimeHydrationResult = {\n status: \"disabled\" | \"hydrated\";\n surfaceId: InfisicalRuntimeSurfaceId;\n environment?: InfisicalRuntimeEnvironment;\n values: Record<string, string>;\n sourcePaths: string[];\n};\n\nexport class InfisicalRuntimeError extends Error {\n readonly code: string;\n readonly status?: number;\n\n constructor(args: { code: string; message: string; status?: number }) {\n super(args.message);\n this.name = \"InfisicalRuntimeError\";\n this.code = args.code;\n this.status = args.status;\n }\n}\n\nexport function readInfisicalRuntimeBootstrap(\n env: InfisicalRuntimeEnv = {},\n overrides: Partial<InfisicalRuntimeBootstrapConfig> = {}\n): InfisicalRuntimeBootstrapConfig | null {\n if (isInfisicalRuntimeDisabled(env)) {\n return null;\n }\n\n const bootstrapEnv = INFISICAL_RUNTIME_MANIFEST.bootstrapEnv;\n const clientId = overrides.clientId ?? readFirst(env, bootstrapEnv.clientId);\n const clientSecret =\n overrides.clientSecret ?? readFirst(env, bootstrapEnv.clientSecret);\n const hasAuthSignal = Boolean(clientId || clientSecret);\n\n if (!hasAuthSignal) {\n return null;\n }\n\n if (!clientId || !clientSecret) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_BOOTSTRAP_INCOMPLETE\",\n message:\n \"Infisical runtime bootstrap requires both INFISICAL_CLIENT_ID and INFISICAL_CLIENT_SECRET.\",\n });\n }\n\n return {\n apiUrl:\n overrides.apiUrl ??\n readFirst(env, bootstrapEnv.apiUrl) ??\n INFISICAL_RUNTIME_DEFAULT_API_URL,\n projectId:\n overrides.projectId ??\n readFirst(env, bootstrapEnv.projectId) ??\n INFISICAL_RUNTIME_DEFAULT_PROJECT_ID,\n clientId,\n clientSecret,\n environment: normalizeInfisicalEnvironment(\n overrides.environment ?? readFirst(env, bootstrapEnv.environment)\n ),\n organizationSlug:\n overrides.organizationSlug ??\n readFirst(env, bootstrapEnv.organizationSlug),\n };\n}\n\nexport function isInfisicalRuntimeDisabled(\n env: InfisicalRuntimeEnv = {}\n): boolean {\n return INFISICAL_RUNTIME_MANIFEST.bootstrapEnv.disabled.some((name) =>\n isTruthyEnv(env[name])\n );\n}\n\nexport async function hydrateInfisicalRuntimeEnv(\n options: InfisicalRuntimeHydrateOptions\n): Promise<InfisicalRuntimeHydrationResult> {\n const env = options.env ?? {};\n const bootstrap = mergeBootstrap(\n readInfisicalRuntimeBootstrap(env, options.bootstrap),\n options.bootstrap\n );\n if (!bootstrap) {\n return {\n status: \"disabled\",\n surfaceId: options.surfaceId,\n values: {},\n sourcePaths: [],\n };\n }\n\n const surface = findInfisicalRuntimeSurface(options.surfaceId);\n if (!surface) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNKNOWN_SURFACE\",\n message: `Unknown Lucern Infisical runtime surface: ${options.surfaceId}.`,\n });\n }\n if (surface.delivery !== \"runtime_fetch\") {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNSUPPORTED_SURFACE_DELIVERY\",\n message: `${surface.id} uses ${surface.delivery}; runtime fetch is only valid for runtime_fetch surfaces.`,\n });\n }\n\n const fetchImpl = options.fetchImpl ?? globalThis.fetch;\n if (typeof fetchImpl !== \"function\") {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_FETCH_UNAVAILABLE\",\n message:\n \"No fetch implementation is available for Infisical runtime hydration.\",\n });\n }\n\n const token = await loginWithUniversalAuth(bootstrap, fetchImpl);\n const values: Record<string, string> = {};\n const missingRequired: string[] = [];\n const sourcePaths: string[] = [];\n\n for (const pathId of surface.sourcePathIds) {\n const path = findInfisicalRuntimePath(pathId);\n if (!path) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNKNOWN_PATH\",\n message: `Unknown Lucern Infisical runtime path: ${pathId}.`,\n });\n }\n sourcePaths.push(path.secretPath);\n\n for (const variable of path.variables) {\n const runtimeVariable: InfisicalRuntimeVariable = variable;\n const secretValue = await readVariableSecret({\n bootstrap,\n fetchImpl,\n token,\n secretPath: path.secretPath,\n variable: runtimeVariable,\n });\n\n if (!secretValue) {\n if (runtimeVariable.required) {\n missingRequired.push(runtimeVariable.name);\n }\n continue;\n }\n\n values[runtimeVariable.name] = secretValue.value;\n for (const alias of runtimeVariable.aliases ?? []) {\n values[alias] = secretValue.value;\n }\n }\n }\n\n if (missingRequired.length > 0) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_REQUIRED_SECRETS_MISSING\",\n message: `Missing required Infisical runtime secrets: ${missingRequired.join(\", \")}.`,\n });\n }\n\n return {\n status: \"hydrated\",\n surfaceId: options.surfaceId,\n environment: bootstrap.environment,\n values,\n sourcePaths,\n };\n}\n\nexport function applyInfisicalRuntimeEnv(\n result: Pick<InfisicalRuntimeHydrationResult, \"values\">,\n targetEnv: InfisicalRuntimeEnv,\n options: { overrideExisting?: boolean } = {}\n): void {\n for (const [key, value] of Object.entries(result.values)) {\n if (options.overrideExisting || !targetEnv[key]) {\n targetEnv[key] = value;\n }\n }\n}\n\nfunction normalizeInfisicalEnvironment(\n value: string | undefined\n): InfisicalRuntimeEnvironment {\n if (value === \"dev\" || value === \"staging\" || value === \"prod\") {\n return value;\n }\n if (value === \"development\") {\n return \"dev\";\n }\n if (value === \"production\") {\n return \"prod\";\n }\n return \"prod\";\n}\n\nfunction mergeBootstrap(\n base: InfisicalRuntimeBootstrapConfig | null,\n overrides: Partial<InfisicalRuntimeBootstrapConfig> | undefined\n): InfisicalRuntimeBootstrapConfig | null {\n if (!base) {\n return null;\n }\n return {\n ...base,\n ...compact(overrides ?? {}),\n apiUrl: trimTrailingSlash(overrides?.apiUrl ?? base.apiUrl),\n };\n}\n\nasync function loginWithUniversalAuth(\n bootstrap: InfisicalRuntimeBootstrapConfig,\n fetchImpl: InfisicalRuntimeFetch\n): Promise<string> {\n const response = await fetchImpl(\n `${trimTrailingSlash(bootstrap.apiUrl)}/api/v1/auth/universal-auth/login`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n clientId: bootstrap.clientId,\n clientSecret: bootstrap.clientSecret,\n ...(bootstrap.organizationSlug\n ? { organizationSlug: bootstrap.organizationSlug }\n : {}),\n }),\n }\n );\n\n const body = await readJson(response);\n if (!response.ok) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNIVERSAL_AUTH_FAILED\",\n status: response.status,\n message: `Infisical Universal Auth failed with HTTP ${response.status}: ${messageFromBody(body)}`,\n });\n }\n\n const accessToken = readNestedString(body, [\"accessToken\"]);\n if (!accessToken) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNIVERSAL_AUTH_INVALID_RESPONSE\",\n message: \"Infisical Universal Auth response did not include accessToken.\",\n });\n }\n return accessToken;\n}\n\nasync function readVariableSecret(args: {\n bootstrap: InfisicalRuntimeBootstrapConfig;\n fetchImpl: InfisicalRuntimeFetch;\n token: string;\n secretPath: string;\n variable: InfisicalRuntimeVariable;\n}): Promise<{ name: string; value: string } | null> {\n const names = [args.variable.name, ...(args.variable.aliases ?? [])];\n for (const name of names) {\n const value = await readSecretValue({\n bootstrap: args.bootstrap,\n fetchImpl: args.fetchImpl,\n token: args.token,\n secretPath: args.secretPath,\n name,\n optional: true,\n });\n if (value) {\n return { name, value };\n }\n }\n return null;\n}\n\nasync function readSecretValue(args: {\n bootstrap: InfisicalRuntimeBootstrapConfig;\n fetchImpl: InfisicalRuntimeFetch;\n token: string;\n secretPath: string;\n name: string;\n optional: boolean;\n}): Promise<string | null> {\n const params = new URLSearchParams({\n projectId: args.bootstrap.projectId,\n environment: args.bootstrap.environment,\n secretPath: args.secretPath,\n type: \"shared\",\n viewSecretValue: \"true\",\n expandSecretReferences: \"true\",\n includeImports: \"true\",\n });\n const response = await args.fetchImpl(\n `${trimTrailingSlash(args.bootstrap.apiUrl)}/api/v4/secrets/${encodeURIComponent(args.name)}?${params.toString()}`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${args.token}`,\n },\n }\n );\n\n const body = await readJson(response);\n if (response.status === 404 && args.optional) {\n return null;\n }\n if (!response.ok) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_SECRET_READ_FAILED\",\n status: response.status,\n message: `Infisical secret ${args.name} read failed with HTTP ${response.status}: ${messageFromBody(body)}`,\n });\n }\n\n return readNestedString(body, [\"secret\", \"secretValue\"]);\n}\n\nasync function readJson(response: Response): Promise<unknown> {\n try {\n return await response.json();\n } catch {\n return undefined;\n }\n}\n\nfunction readNestedString(value: unknown, path: readonly string[]): string | null {\n let current: unknown = value;\n for (const key of path) {\n if (!current || typeof current !== \"object\" || !(key in current)) {\n return null;\n }\n current = (current as Record<string, unknown>)[key];\n }\n return typeof current === \"string\" && current.length > 0 ? current : null;\n}\n\nfunction messageFromBody(body: unknown): string {\n if (!body || typeof body !== \"object\") {\n return \"no response body\";\n }\n const record = body as Record<string, unknown>;\n for (const key of [\"message\", \"error\", \"errorMessage\"]) {\n if (typeof record[key] === \"string\") {\n return record[key];\n }\n }\n return JSON.stringify(body);\n}\n\nfunction readFirst(\n env: InfisicalRuntimeEnv,\n names: readonly string[]\n): string | undefined {\n for (const name of names) {\n const value = env[name]?.trim();\n if (value) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction isTruthyEnv(value: string | undefined): boolean {\n return [\"1\", \"true\", \"yes\", \"on\"].includes(value?.toLowerCase() ?? \"\");\n}\n\nfunction trimTrailingSlash(value: string): string {\n return value.replace(/\\/+$/u, \"\");\n}\n\nfunction compact<T extends Record<string, unknown>>(value: T): Partial<T> {\n return Object.fromEntries(\n Object.entries(value).filter(([, entry]) => entry !== undefined)\n ) as Partial<T>;\n}\n"]}
1
+ {"version":3,"sources":["../src/infisicalRuntime.ts"],"names":[],"mappings":"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","file":"infisicalRuntime.js","sourcesContent":["import {\n INFISICAL_RUNTIME_DEFAULT_API_URL,\n INFISICAL_RUNTIME_DEFAULT_PROJECT_ID,\n INFISICAL_RUNTIME_MANIFEST,\n findInfisicalRuntimePath,\n findInfisicalRuntimeSurface,\n type InfisicalRuntimeEnvironment,\n type InfisicalRuntimeSurfaceId,\n type InfisicalRuntimeVariable,\n} from \"@lucern/contracts\";\n\nexport type InfisicalRuntimeEnv = Record<string, string | undefined>;\n\nexport type InfisicalRuntimeFetch = (\n input: string | URL,\n init?: RequestInit\n) => Promise<Response>;\n\nexport type InfisicalRuntimeBootstrapConfig = {\n apiUrl: string;\n projectId: string;\n clientId: string;\n clientSecret: string;\n environment: InfisicalRuntimeEnvironment;\n organizationSlug?: string;\n};\n\nexport type InfisicalRuntimeHydrateOptions = {\n surfaceId: InfisicalRuntimeSurfaceId;\n env?: InfisicalRuntimeEnv;\n fetchImpl?: InfisicalRuntimeFetch;\n bootstrap?: Partial<InfisicalRuntimeBootstrapConfig>;\n};\n\nexport type InfisicalRuntimeHydrationResult = {\n status: \"disabled\" | \"hydrated\";\n surfaceId: InfisicalRuntimeSurfaceId;\n environment?: InfisicalRuntimeEnvironment;\n values: Record<string, string>;\n sourcePaths: string[];\n};\n\nexport class InfisicalRuntimeError extends Error {\n readonly code: string;\n readonly status?: number;\n\n constructor(args: { code: string; message: string; status?: number }) {\n super(args.message);\n this.name = \"InfisicalRuntimeError\";\n this.code = args.code;\n this.status = args.status;\n }\n}\n\nexport function readInfisicalRuntimeBootstrap(\n env: InfisicalRuntimeEnv = {},\n overrides: Partial<InfisicalRuntimeBootstrapConfig> = {}\n): InfisicalRuntimeBootstrapConfig | null {\n if (isInfisicalRuntimeDisabled(env)) {\n return null;\n }\n\n const bootstrapEnv = INFISICAL_RUNTIME_MANIFEST.bootstrapEnv;\n const clientId = overrides.clientId ?? readFirst(env, bootstrapEnv.clientId);\n const clientSecret =\n overrides.clientSecret ?? readFirst(env, bootstrapEnv.clientSecret);\n const hasAuthSignal = Boolean(clientId || clientSecret);\n\n if (!hasAuthSignal) {\n return null;\n }\n\n if (!clientId || !clientSecret) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_BOOTSTRAP_INCOMPLETE\",\n message:\n \"Infisical runtime bootstrap requires both INFISICAL_CLIENT_ID and INFISICAL_CLIENT_SECRET.\",\n });\n }\n\n return {\n apiUrl:\n overrides.apiUrl ??\n readFirst(env, bootstrapEnv.apiUrl) ??\n INFISICAL_RUNTIME_DEFAULT_API_URL,\n projectId:\n overrides.projectId ??\n readFirst(env, bootstrapEnv.projectId) ??\n INFISICAL_RUNTIME_DEFAULT_PROJECT_ID,\n clientId,\n clientSecret,\n environment: normalizeInfisicalEnvironment(\n overrides.environment ?? readFirst(env, bootstrapEnv.environment)\n ),\n organizationSlug:\n overrides.organizationSlug ??\n readFirst(env, bootstrapEnv.organizationSlug),\n };\n}\n\nexport function isInfisicalRuntimeDisabled(\n env: InfisicalRuntimeEnv = {}\n): boolean {\n return INFISICAL_RUNTIME_MANIFEST.bootstrapEnv.disabled.some((name) =>\n isTruthyEnv(env[name])\n );\n}\n\nexport async function hydrateInfisicalRuntimeEnv(\n options: InfisicalRuntimeHydrateOptions\n): Promise<InfisicalRuntimeHydrationResult> {\n const env = options.env ?? {};\n const baseBootstrap = readInfisicalRuntimeBootstrap(env, options.bootstrap);\n const bootstrap = baseBootstrap\n ? {\n ...baseBootstrap,\n ...Object.fromEntries(\n Object.entries(options.bootstrap ?? {}).filter(\n ([, value]) => value !== undefined\n )\n ),\n apiUrl: trimTrailingSlash(\n options.bootstrap?.apiUrl ?? baseBootstrap.apiUrl\n ),\n }\n : null;\n if (!bootstrap) {\n return {\n status: \"disabled\",\n surfaceId: options.surfaceId,\n values: {},\n sourcePaths: [],\n };\n }\n\n const surface = findInfisicalRuntimeSurface(options.surfaceId);\n if (!surface) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNKNOWN_SURFACE\",\n message: `Unknown Lucern Infisical runtime surface: ${options.surfaceId}.`,\n });\n }\n if (surface.delivery !== \"runtime_fetch\") {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNSUPPORTED_SURFACE_DELIVERY\",\n message: `${surface.id} uses ${surface.delivery}; runtime fetch is only valid for runtime_fetch surfaces.`,\n });\n }\n\n const fetchImpl = options.fetchImpl ?? globalThis.fetch;\n if (typeof fetchImpl !== \"function\") {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_FETCH_UNAVAILABLE\",\n message:\n \"No fetch implementation is available for Infisical runtime hydration.\",\n });\n }\n\n const token = await loginWithUniversalAuth(bootstrap, fetchImpl);\n const values: Record<string, string> = {};\n const missingRequired: string[] = [];\n const sourcePaths: string[] = [];\n\n for (const pathId of surface.sourcePathIds) {\n const path = findInfisicalRuntimePath(pathId);\n if (!path) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNKNOWN_PATH\",\n message: `Unknown Lucern Infisical runtime path: ${pathId}.`,\n });\n }\n sourcePaths.push(path.secretPath);\n\n for (const variable of path.variables) {\n const runtimeVariable: InfisicalRuntimeVariable = variable;\n const secretValue = await readVariableSecret({\n bootstrap,\n fetchImpl,\n token,\n secretPath: path.secretPath,\n variable: runtimeVariable,\n });\n\n if (!secretValue) {\n if (runtimeVariable.required) {\n missingRequired.push(runtimeVariable.name);\n }\n continue;\n }\n\n values[runtimeVariable.name] = secretValue.value;\n for (const alias of runtimeVariable.aliases ?? []) {\n values[alias] = secretValue.value;\n }\n }\n }\n\n if (missingRequired.length > 0) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_REQUIRED_SECRETS_MISSING\",\n message: `Missing required Infisical runtime secrets: ${missingRequired.join(\", \")}.`,\n });\n }\n\n return {\n status: \"hydrated\",\n surfaceId: options.surfaceId,\n environment: bootstrap.environment,\n values,\n sourcePaths,\n };\n}\n\nexport function applyInfisicalRuntimeEnv(\n result: Pick<InfisicalRuntimeHydrationResult, \"values\">,\n targetEnv: InfisicalRuntimeEnv,\n options: { overrideExisting?: boolean } = {}\n): void {\n for (const [key, value] of Object.entries(result.values)) {\n if (options.overrideExisting || !targetEnv[key]) {\n targetEnv[key] = value;\n }\n }\n}\n\nfunction normalizeInfisicalEnvironment(\n value: string | undefined\n): InfisicalRuntimeEnvironment {\n if (value === \"dev\" || value === \"staging\" || value === \"prod\") {\n return value;\n }\n if (value === \"development\") {\n return \"dev\";\n }\n if (value === \"production\") {\n return \"prod\";\n }\n return \"prod\";\n}\n\nasync function loginWithUniversalAuth(\n bootstrap: InfisicalRuntimeBootstrapConfig,\n fetchImpl: InfisicalRuntimeFetch\n): Promise<string> {\n const response = await fetchImpl(\n `${trimTrailingSlash(bootstrap.apiUrl)}/api/v1/auth/universal-auth/login`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n clientId: bootstrap.clientId,\n clientSecret: bootstrap.clientSecret,\n ...(bootstrap.organizationSlug\n ? { organizationSlug: bootstrap.organizationSlug }\n : {}),\n }),\n }\n );\n\n const body = await readJson(response);\n if (!response.ok) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNIVERSAL_AUTH_FAILED\",\n status: response.status,\n message: `Infisical Universal Auth failed with HTTP ${response.status}: ${messageFromBody(body)}`,\n });\n }\n\n const accessToken = readNestedString(body, [\"accessToken\"]);\n if (!accessToken) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_UNIVERSAL_AUTH_INVALID_RESPONSE\",\n message: \"Infisical Universal Auth response did not include accessToken.\",\n });\n }\n return accessToken;\n}\n\nasync function readVariableSecret(args: {\n bootstrap: InfisicalRuntimeBootstrapConfig;\n fetchImpl: InfisicalRuntimeFetch;\n token: string;\n secretPath: string;\n variable: InfisicalRuntimeVariable;\n}): Promise<{ name: string; value: string } | null> {\n const names = [args.variable.name, ...(args.variable.aliases ?? [])];\n for (const name of names) {\n const value = await readSecretValue({\n bootstrap: args.bootstrap,\n fetchImpl: args.fetchImpl,\n token: args.token,\n secretPath: args.secretPath,\n name,\n optional: true,\n });\n if (value) {\n return { name, value };\n }\n }\n return null;\n}\n\nasync function readSecretValue(args: {\n bootstrap: InfisicalRuntimeBootstrapConfig;\n fetchImpl: InfisicalRuntimeFetch;\n token: string;\n secretPath: string;\n name: string;\n optional: boolean;\n}): Promise<string | null> {\n const params = new URLSearchParams({\n projectId: args.bootstrap.projectId,\n environment: args.bootstrap.environment,\n secretPath: args.secretPath,\n type: \"shared\",\n viewSecretValue: \"true\",\n expandSecretReferences: \"true\",\n includeImports: \"true\",\n });\n const response = await args.fetchImpl(\n `${trimTrailingSlash(args.bootstrap.apiUrl)}/api/v4/secrets/${encodeURIComponent(args.name)}?${params.toString()}`,\n {\n method: \"GET\",\n headers: {\n Authorization: `Bearer ${args.token}`,\n },\n }\n );\n\n const body = await readJson(response);\n if (response.status === 404 && args.optional) {\n return null;\n }\n if (!response.ok) {\n throw new InfisicalRuntimeError({\n code: \"INFISICAL_SECRET_READ_FAILED\",\n status: response.status,\n message: `Infisical secret ${args.name} read failed with HTTP ${response.status}: ${messageFromBody(body)}`,\n });\n }\n\n return readNestedString(body, [\"secret\", \"secretValue\"]);\n}\n\nasync function readJson(response: Response): Promise<unknown> {\n try {\n return await response.json();\n } catch (error) {\n debugInfisicalRuntimeFallback(\"response.json\", error);\n return undefined;\n }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction readNestedString(value: unknown, path: readonly string[]): string | null {\n let current: unknown = value;\n for (const key of path) {\n if (!isRecord(current) || !(key in current)) {\n return null;\n }\n current = current[key];\n }\n return typeof current === \"string\" && current.length > 0 ? current : null;\n}\n\nfunction messageFromBody(body: unknown): string {\n if (!isRecord(body)) {\n return \"no response body\";\n }\n for (const key of [\"message\", \"error\", \"errorMessage\"]) {\n if (typeof body[key] === \"string\") {\n return body[key];\n }\n }\n return JSON.stringify(body);\n}\n\nfunction readFirst(\n env: InfisicalRuntimeEnv,\n names: readonly string[]\n): string | undefined {\n for (const name of names) {\n const value = env[name]?.trim();\n if (value) {\n return value;\n }\n }\n return undefined;\n}\n\nfunction isTruthyEnv(value: string | undefined): boolean {\n return [\"1\", \"true\", \"yes\", \"on\"].includes(value?.toLowerCase() ?? \"\");\n}\n\nfunction trimTrailingSlash(value: string): string {\n return value.replace(/\\/+$/u, \"\");\n}\n\nfunction debugInfisicalRuntimeFallback(message: string, error: unknown): void {\n const env = (\n globalThis as {\n process?: { env?: Record<string, string | undefined> };\n }\n ).process?.env;\n if (\n env?.LUCERN_COMPAT_FALLBACK_DEBUG !== \"1\" &&\n env?.LUCERN_INFISICAL_RUNTIME_DEBUG !== \"1\"\n ) {\n return;\n }\n console.debug(`[infisical-runtime] ${message}`, {\n error: formatInfisicalRuntimeError(error),\n });\n}\n\nfunction formatInfisicalRuntimeError(error: unknown): string {\n if (error instanceof Error) {\n return `${error.name}: ${error.message}`;\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (typeof error === \"number\" || typeof error === \"boolean\") {\n return String(error);\n }\n if (error && typeof error === \"object\") {\n const keys = Object.keys(error).slice(0, 5);\n if (keys.length > 0) {\n return `Unknown Infisical runtime error object with keys: ${keys.join(\", \")}`;\n }\n }\n return \"Unknown Infisical runtime error shape\";\n}\n"]}
@@ -232,9 +232,7 @@ function generatePortableRequestId() {
232
232
  8
233
233
  ).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10).join("")}`;
234
234
  }
235
- function randomIdempotencyKey() {
236
- return generatePortableRequestId();
237
- }
235
+ var randomIdempotencyKey = generatePortableRequestId;
238
236
  function isRetryableStatus(status) {
239
237
  return status >= 500 || status === 408 || status === 429;
240
238
  }
@@ -299,8 +297,11 @@ function timeoutError(timeoutMs) {
299
297
  error.name = "AbortError";
300
298
  return error;
301
299
  }
300
+ function isRecord(value) {
301
+ return value !== null && typeof value === "object" && !Array.isArray(value);
302
+ }
302
303
  function readPolicySummaryFromDetails(details) {
303
- if (!details || typeof details !== "object" || Array.isArray(details)) {
304
+ if (!isRecord(details)) {
304
305
  return null;
305
306
  }
306
307
  const directSummary = details.summary;
@@ -308,11 +309,11 @@ function readPolicySummaryFromDetails(details) {
308
309
  return directSummary.trim();
309
310
  }
310
311
  const policy = details.policy;
311
- if (!policy || typeof policy !== "object" || Array.isArray(policy)) {
312
+ if (!isRecord(policy)) {
312
313
  return null;
313
314
  }
314
315
  const explanation = policy.explanation;
315
- if (!explanation || typeof explanation !== "object" || Array.isArray(explanation)) {
316
+ if (!isRecord(explanation)) {
316
317
  return null;
317
318
  }
318
319
  const nestedSummary = explanation.summary;
@@ -376,11 +377,11 @@ function createGatewayRequestClient(config = {}) {
376
377
  if (!text) {
377
378
  return null;
378
379
  }
379
- try {
380
- return JSON.parse(text);
381
- } catch {
380
+ const parsed = tryParseGatewayEnvelopeJson(text);
381
+ if (!parsed.ok) {
382
382
  return null;
383
383
  }
384
+ return isRecord(parsed.value) ? parsed.value : null;
384
385
  }
385
386
  function resolveTimeoutMs(method, requestTimeoutMs) {
386
387
  if (typeof requestTimeoutMs === "number") {
@@ -392,16 +393,31 @@ function createGatewayRequestClient(config = {}) {
392
393
  }
393
394
  return config.timeoutMs ?? 15e3;
394
395
  }
396
+ function tryParseGatewayEnvelopeJson(text) {
397
+ const trimmed = text.trim();
398
+ if (!trimmed.startsWith("{") && !trimmed.startsWith("[")) {
399
+ return { ok: false, reason: "non-json" };
400
+ }
401
+ try {
402
+ return { ok: true, value: JSON.parse(trimmed) };
403
+ } catch (error) {
404
+ if (error instanceof SyntaxError) {
405
+ return { ok: false, reason: "invalid-json", error };
406
+ }
407
+ throw error;
408
+ }
409
+ }
395
410
  function buildApiError(args) {
396
411
  const failure = args.failure;
397
- const legacyError = failure && typeof failure.error === "object" && failure.error !== null ? failure.error : failure?.legacyError;
412
+ const legacyError = failure && isRecord(failure.error) ? failure.error : failure?.legacyError;
398
413
  const correlationId = failure?.correlationId ?? args.response.headers.get("x-lucern-correlation-id")?.trim() ?? args.requestId;
399
414
  const policyTraceId = failure?.policyTraceId ?? args.response.headers.get("x-lucern-policy-trace-id")?.trim() ?? null;
400
415
  const details = failure?.details ?? legacyError?.details;
401
416
  const policySummary = readPolicySummaryFromDetails(details);
417
+ const failureMessage = typeof failure?.error === "string" ? failure.error : legacyError?.message;
402
418
  return new LucernApiError({
403
419
  code: failure?.code ?? legacyError?.code ?? fallbackErrorCode(args.response.status),
404
- message: policySummary ?? (typeof failure?.error === "string" ? failure.error : legacyError?.message ?? (args.response.ok ? "Platform API returned an invalid success payload." : "Platform API request failed.")),
420
+ message: policySummary ?? failureMessage ?? (args.response.ok ? "Platform API returned an invalid success payload." : "Platform API request failed."),
405
421
  status: args.response.status,
406
422
  invariant: failure?.invariant,
407
423
  suggestion: failure?.suggestion,
@@ -533,9 +549,11 @@ function createListResult(items, legacyKey) {
533
549
  total: items.length
534
550
  };
535
551
  {
536
- result[legacyKey] = items;
552
+ return {
553
+ ...result,
554
+ [legacyKey]: items
555
+ };
537
556
  }
538
- return result;
539
557
  }
540
558
  function mapGatewayData(response, mapper) {
541
559
  return {
@@ -549,6 +567,9 @@ function cleanOptionalString(value) {
549
567
  const normalized = value?.trim();
550
568
  return normalized ? normalized : void 0;
551
569
  }
570
+ function isRecord2(value) {
571
+ return Boolean(value) && typeof value === "object" && !Array.isArray(value);
572
+ }
552
573
  function cleanRequiredString(value, label) {
553
574
  const normalized = cleanOptionalString(value);
554
575
  if (!normalized) {
@@ -570,9 +591,10 @@ function knownPayload(input, allowed, operation) {
570
591
  return { ...input };
571
592
  }
572
593
  function listResultFromEnvelope(data, legacyKey) {
573
- const record = data && typeof data === "object" ? data : {};
594
+ const record = isRecord2(data) ? data : {};
595
+ const legacyItems = record[legacyKey];
574
596
  return createListResult(
575
- Array.isArray(record[legacyKey]) ? record[legacyKey] : Array.isArray(data) ? data : [],
597
+ Array.isArray(legacyItems) ? legacyItems : Array.isArray(data) ? data : [],
576
598
  legacyKey
577
599
  );
578
600
  }