@lastbrain/ai-ui-core 1.0.48 → 1.0.49

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.
@@ -1 +1 @@
1
- {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../src/client/createClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,QAAQ,EACR,qBAAqB,EACtB,MAAM,UAAU,CAAC;AA4GlB,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAezB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;qBAoBnB,OAAO,CAAC,QAAQ,EAAE,CAAC;iCA0KP,OAAO,CAAC,qBAAqB,CAAC;wBApIrC,aAAa,KAAG,OAAO,CAAC,cAAc,CAAC;yBAqCtC,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;iBAsDjD,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;qBAmBvC,OAAO,CAAC,QAAQ,CAAC;EAmD9C"}
1
+ {"version":3,"file":"createClient.d.ts","sourceRoot":"","sources":["../../src/client/createClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,EACf,QAAQ,EACR,qBAAqB,EACtB,MAAM,UAAU,CAAC;AA4GlB,wBAAgB,cAAc,CAAC,MAAM,EAAE;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBzB;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY;qBAoBnB,OAAO,CAAC,QAAQ,EAAE,CAAC;iCA0KP,OAAO,CAAC,qBAAqB,CAAC;wBApIrC,aAAa,KAAG,OAAO,CAAC,cAAc,CAAC;yBAqCtC,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;iBAsDjD,cAAc,KAAG,OAAO,CAAC,eAAe,CAAC;qBAmBvC,OAAO,CAAC,QAAQ,CAAC;EAmD9C"}
@@ -77,10 +77,13 @@ function buildUrl(baseUrl, endpoint) {
77
77
  return `${normalized}${v1Path}`;
78
78
  }
79
79
  export function getAuthHeaders(config) {
80
- if (config.apiKeyId) {
80
+ const token = config.apiKeyId?.trim();
81
+ const looksLikeApiKey = Boolean(token && token.startsWith("lb_"));
82
+ const looksLikeJwt = Boolean(token && token.split(".").length === 3);
83
+ if (token && (looksLikeApiKey || looksLikeJwt)) {
81
84
  return {
82
- "x-lb-api-key": config.apiKeyId,
83
- Authorization: `Bearer ${config.apiKeyId}`,
85
+ ...(looksLikeApiKey ? { "x-lb-api-key": token } : {}),
86
+ Authorization: `Bearer ${token}`,
84
87
  };
85
88
  }
86
89
  if (config.sessionToken) {
@@ -1 +1 @@
1
- {"version":3,"file":"lb-proxy.d.ts","sourceRoot":"","sources":["../../../src/route-handlers/nextjs/lb-proxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,aAAkB;mBA4BlD,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;oBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;mBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;sBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;qBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;EAyIzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,MAAe,GACzB,YAAY,CAYd;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CAGzE"}
1
+ {"version":3,"file":"lb-proxy.d.ts","sourceRoot":"","sources":["../../../src/route-handlers/nextjs/lb-proxy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,qCAAqC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,aAAkB;mBA4BlD,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;oBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;mBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;sBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;qBAFb,WAAW,YACV;QAAE,MAAM,EAAE,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;SAAE,CAAC,CAAA;KAAE,KACjD,OAAO,CAAC,YAAY,CAAC;EA6IzB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,EACpB,SAAS,GAAE,MAAe,GACzB,YAAY,CAYd;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,YAAY,CAGzE"}
@@ -76,12 +76,18 @@ export function createLBProxyHandler(config = {}) {
76
76
  }
77
77
  const authorization = request.headers.get("authorization");
78
78
  const explicitApiKeyHeader = request.headers.get("x-lb-api-key");
79
+ const sessionToken = request.cookies.get(sessionCookieName)?.value;
79
80
  if (authorization) {
80
81
  headers["Authorization"] = authorization;
81
82
  }
82
83
  if (explicitApiKeyHeader) {
83
84
  headers["x-lb-api-key"] = explicitApiKeyHeader;
84
85
  }
86
+ if (sessionToken) {
87
+ // Always forward lb_session cookie to allow backend fallback auth,
88
+ // even when an Authorization header is present.
89
+ headers["Cookie"] = `${sessionCookieName}=${sessionToken}`;
90
+ }
85
91
  // Authentification : LB_API_KEY ou session cookie
86
92
  if (!authorization && !explicitApiKeyHeader) {
87
93
  if (apiKey) {
@@ -90,11 +96,9 @@ export function createLBProxyHandler(config = {}) {
90
96
  }
91
97
  else {
92
98
  // Lire le cookie de session
93
- const sessionToken = request.cookies.get(sessionCookieName)?.value;
94
99
  if (sessionToken) {
95
100
  // Envoyer le cookie à la fois comme Authorization ET comme Cookie
96
101
  headers["Authorization"] = `Bearer ${sessionToken}`;
97
- headers["Cookie"] = `${sessionCookieName}=${sessionToken}`;
98
102
  console.log("[LB Proxy] Forwarding session cookie:", {
99
103
  name: sessionCookieName,
100
104
  hasValue: !!sessionToken,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lastbrain/ai-ui-core",
3
- "version": "1.0.48",
3
+ "version": "1.0.49",
4
4
  "description": "Framework-agnostic core library for LastBrain AI UI Kit",
5
5
  "private": false,
6
6
  "type": "module",
@@ -121,10 +121,14 @@ export function getAuthHeaders(config: {
121
121
  apiKeyId?: string;
122
122
  sessionToken?: string;
123
123
  }): Record<string, string> {
124
- if (config.apiKeyId) {
124
+ const token = config.apiKeyId?.trim();
125
+ const looksLikeApiKey = Boolean(token && token.startsWith("lb_"));
126
+ const looksLikeJwt = Boolean(token && token.split(".").length === 3);
127
+
128
+ if (token && (looksLikeApiKey || looksLikeJwt)) {
125
129
  return {
126
- "x-lb-api-key": config.apiKeyId,
127
- Authorization: `Bearer ${config.apiKeyId}`,
130
+ ...(looksLikeApiKey ? { "x-lb-api-key": token } : {}),
131
+ Authorization: `Bearer ${token}`,
128
132
  };
129
133
  }
130
134
 
@@ -106,12 +106,18 @@ export function createLBProxyHandler(config: LBProxyConfig = {}) {
106
106
 
107
107
  const authorization = request.headers.get("authorization");
108
108
  const explicitApiKeyHeader = request.headers.get("x-lb-api-key");
109
+ const sessionToken = request.cookies.get(sessionCookieName)?.value;
109
110
  if (authorization) {
110
111
  headers["Authorization"] = authorization;
111
112
  }
112
113
  if (explicitApiKeyHeader) {
113
114
  headers["x-lb-api-key"] = explicitApiKeyHeader;
114
115
  }
116
+ if (sessionToken) {
117
+ // Always forward lb_session cookie to allow backend fallback auth,
118
+ // even when an Authorization header is present.
119
+ headers["Cookie"] = `${sessionCookieName}=${sessionToken}`;
120
+ }
115
121
 
116
122
  // Authentification : LB_API_KEY ou session cookie
117
123
  if (!authorization && !explicitApiKeyHeader) {
@@ -120,11 +126,9 @@ export function createLBProxyHandler(config: LBProxyConfig = {}) {
120
126
  headers["Authorization"] = `Bearer ${apiKey}`;
121
127
  } else {
122
128
  // Lire le cookie de session
123
- const sessionToken = request.cookies.get(sessionCookieName)?.value;
124
129
  if (sessionToken) {
125
130
  // Envoyer le cookie à la fois comme Authorization ET comme Cookie
126
131
  headers["Authorization"] = `Bearer ${sessionToken}`;
127
- headers["Cookie"] = `${sessionCookieName}=${sessionToken}`;
128
132
  console.log("[LB Proxy] Forwarding session cookie:", {
129
133
  name: sessionCookieName,
130
134
  hasValue: !!sessionToken,