@nekutima/biome-sdk 0.19.3 → 0.30.0

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/dist/admin/admin.model.d.ts +70 -0
  2. package/dist/admin/admin.model.d.ts.map +1 -1
  3. package/dist/admin/admin.schema.json +339 -0
  4. package/dist/admin/admin.service.d.ts +9 -1
  5. package/dist/admin/admin.service.d.ts.map +1 -1
  6. package/dist/admin/admin.service.js +79 -4
  7. package/dist/admin/admin.service.js.map +1 -1
  8. package/dist/agents/agent-identity.d.ts +19 -0
  9. package/dist/agents/agent-identity.d.ts.map +1 -0
  10. package/dist/agents/agent-identity.js +36 -0
  11. package/dist/agents/agent-identity.js.map +1 -0
  12. package/dist/agents/agent-resource.d.ts +0 -1
  13. package/dist/agents/agent-resource.d.ts.map +1 -1
  14. package/dist/agents/agent.model.d.ts +13 -40
  15. package/dist/agents/agent.model.d.ts.map +1 -1
  16. package/dist/agents/agent.service.d.ts +9 -3
  17. package/dist/agents/agent.service.d.ts.map +1 -1
  18. package/dist/agents/agent.service.js +37 -8
  19. package/dist/agents/agent.service.js.map +1 -1
  20. package/dist/ai/yuri.service.d.ts +39 -5
  21. package/dist/ai/yuri.service.d.ts.map +1 -1
  22. package/dist/ai/yuri.service.js +64 -34
  23. package/dist/ai/yuri.service.js.map +1 -1
  24. package/dist/alexandria/nugget.model.d.ts +77 -0
  25. package/dist/alexandria/nugget.model.d.ts.map +1 -0
  26. package/dist/alexandria/nugget.model.js +7 -0
  27. package/dist/alexandria/nugget.model.js.map +1 -0
  28. package/dist/alexandria/nugget.service.d.ts +21 -0
  29. package/dist/alexandria/nugget.service.d.ts.map +1 -0
  30. package/dist/alexandria/nugget.service.js +127 -0
  31. package/dist/alexandria/nugget.service.js.map +1 -0
  32. package/dist/alexandria/problem.model.d.ts +48 -0
  33. package/dist/alexandria/problem.model.d.ts.map +1 -0
  34. package/dist/alexandria/problem.model.js +7 -0
  35. package/dist/alexandria/problem.model.js.map +1 -0
  36. package/dist/alexandria/problem.service.d.ts +17 -0
  37. package/dist/alexandria/problem.service.d.ts.map +1 -0
  38. package/dist/alexandria/problem.service.js +98 -0
  39. package/dist/alexandria/problem.service.js.map +1 -0
  40. package/dist/alexandria/progress.model.d.ts +19 -0
  41. package/dist/alexandria/progress.model.d.ts.map +1 -0
  42. package/dist/alexandria/progress.model.js +3 -0
  43. package/dist/alexandria/progress.model.js.map +1 -0
  44. package/dist/alexandria/progress.service.d.ts +10 -0
  45. package/dist/alexandria/progress.service.d.ts.map +1 -0
  46. package/dist/alexandria/progress.service.js +38 -0
  47. package/dist/alexandria/progress.service.js.map +1 -0
  48. package/dist/api-keys/api-key.model.d.ts +30 -0
  49. package/dist/api-keys/api-key.model.d.ts.map +1 -0
  50. package/dist/api-keys/api-key.model.js +3 -0
  51. package/dist/api-keys/api-key.model.js.map +1 -0
  52. package/dist/api-keys/api-key.service.d.ts +16 -0
  53. package/dist/api-keys/api-key.service.d.ts.map +1 -0
  54. package/dist/api-keys/api-key.service.js +34 -0
  55. package/dist/api-keys/api-key.service.js.map +1 -0
  56. package/dist/auth/auth.schema.json +106 -0
  57. package/dist/auth/auth.service.d.ts +8 -1
  58. package/dist/auth/auth.service.d.ts.map +1 -1
  59. package/dist/auth/auth.service.js +23 -10
  60. package/dist/auth/auth.service.js.map +1 -1
  61. package/dist/chat/chat.service.d.ts.map +1 -1
  62. package/dist/chat/chat.service.js +60 -68
  63. package/dist/chat/chat.service.js.map +1 -1
  64. package/dist/circles/circle.model.d.ts +25 -0
  65. package/dist/circles/circle.model.d.ts.map +1 -0
  66. package/dist/circles/circle.model.js +3 -0
  67. package/dist/circles/circle.model.js.map +1 -0
  68. package/dist/circles/circle.schema.json +332 -0
  69. package/dist/circles/circle.service.d.ts +14 -0
  70. package/dist/circles/circle.service.d.ts.map +1 -0
  71. package/dist/circles/circle.service.js +50 -0
  72. package/dist/circles/circle.service.js.map +1 -0
  73. package/dist/communities/community.model.d.ts +72 -0
  74. package/dist/communities/community.model.d.ts.map +1 -0
  75. package/dist/communities/community.model.js +3 -0
  76. package/dist/communities/community.model.js.map +1 -0
  77. package/dist/communities/community.service.d.ts +26 -0
  78. package/dist/communities/community.service.d.ts.map +1 -0
  79. package/dist/communities/community.service.js +140 -0
  80. package/dist/communities/community.service.js.map +1 -0
  81. package/dist/contacts/contact.model.d.ts +97 -0
  82. package/dist/contacts/contact.model.d.ts.map +1 -0
  83. package/dist/contacts/contact.model.js +3 -0
  84. package/dist/contacts/contact.model.js.map +1 -0
  85. package/dist/contacts/contact.schema.json +312 -0
  86. package/dist/contacts/contact.service.d.ts +28 -0
  87. package/dist/contacts/contact.service.d.ts.map +1 -0
  88. package/dist/contacts/contact.service.js +109 -0
  89. package/dist/contacts/contact.service.js.map +1 -0
  90. package/dist/core/api-diagnostics.d.ts +91 -0
  91. package/dist/core/api-diagnostics.d.ts.map +1 -0
  92. package/dist/core/api-diagnostics.js +211 -0
  93. package/dist/core/api-diagnostics.js.map +1 -0
  94. package/dist/core/configuration.d.ts +12 -0
  95. package/dist/core/configuration.d.ts.map +1 -1
  96. package/dist/core/error-handler.d.ts +5 -1
  97. package/dist/core/error-handler.d.ts.map +1 -1
  98. package/dist/core/error-handler.js +45 -21
  99. package/dist/core/error-handler.js.map +1 -1
  100. package/dist/core/http-client.d.ts +33 -6
  101. package/dist/core/http-client.d.ts.map +1 -1
  102. package/dist/core/http-client.js +193 -31
  103. package/dist/core/http-client.js.map +1 -1
  104. package/dist/core/node-cookie-jar.d.ts +14 -0
  105. package/dist/core/node-cookie-jar.d.ts.map +1 -0
  106. package/dist/core/node-cookie-jar.js +58 -0
  107. package/dist/core/node-cookie-jar.js.map +1 -0
  108. package/dist/core/request-scheduler.d.ts +56 -0
  109. package/dist/core/request-scheduler.d.ts.map +1 -0
  110. package/dist/core/request-scheduler.js +176 -0
  111. package/dist/core/request-scheduler.js.map +1 -0
  112. package/dist/core/resilience.d.ts +10 -0
  113. package/dist/core/resilience.d.ts.map +1 -1
  114. package/dist/core/resilience.js +27 -0
  115. package/dist/core/resilience.js.map +1 -1
  116. package/dist/ecosystem/organization.model.d.ts +4 -4
  117. package/dist/ecosystem/organization.model.d.ts.map +1 -1
  118. package/dist/errors/error-codes.d.ts +3 -1
  119. package/dist/errors/error-codes.d.ts.map +1 -1
  120. package/dist/errors/error-codes.js +2 -0
  121. package/dist/errors/error-codes.js.map +1 -1
  122. package/dist/events/event-edition.model.d.ts +5 -0
  123. package/dist/events/event-edition.model.d.ts.map +1 -1
  124. package/dist/events/event.model.d.ts +5 -0
  125. package/dist/events/event.model.d.ts.map +1 -1
  126. package/dist/follows/follow.model.d.ts +1 -1
  127. package/dist/follows/follow.model.d.ts.map +1 -1
  128. package/dist/follows/follow.service.d.ts.map +1 -1
  129. package/dist/follows/follow.service.js +1 -0
  130. package/dist/follows/follow.service.js.map +1 -1
  131. package/dist/guilds/guild.model.d.ts +36 -0
  132. package/dist/guilds/guild.model.d.ts.map +1 -1
  133. package/dist/guilds/guild.service.d.ts +7 -1
  134. package/dist/guilds/guild.service.d.ts.map +1 -1
  135. package/dist/guilds/guild.service.js +52 -0
  136. package/dist/guilds/guild.service.js.map +1 -1
  137. package/dist/index.d.ts +54 -6
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +74 -4
  140. package/dist/index.js.map +1 -1
  141. package/dist/memberships/membership.model.d.ts +34 -0
  142. package/dist/memberships/membership.model.d.ts.map +1 -0
  143. package/dist/memberships/membership.model.js +3 -0
  144. package/dist/memberships/membership.model.js.map +1 -0
  145. package/dist/memberships/membership.service.d.ts +22 -0
  146. package/dist/memberships/membership.service.d.ts.map +1 -0
  147. package/dist/memberships/membership.service.js +111 -0
  148. package/dist/memberships/membership.service.js.map +1 -0
  149. package/dist/missions/mission.model.d.ts +4 -4
  150. package/dist/missions/mission.model.d.ts.map +1 -1
  151. package/dist/missions/mission.schema.json +204 -0
  152. package/dist/missions/mission.service.d.ts +2 -2
  153. package/dist/missions/mission.service.d.ts.map +1 -1
  154. package/dist/missions/mission.service.js.map +1 -1
  155. package/dist/models/chat.model.d.ts +11 -1
  156. package/dist/models/chat.model.d.ts.map +1 -1
  157. package/dist/models/chat.model.js +4 -0
  158. package/dist/models/chat.model.js.map +1 -1
  159. package/dist/notifications/notification.service.d.ts.map +1 -1
  160. package/dist/notifications/notification.service.js +10 -2
  161. package/dist/notifications/notification.service.js.map +1 -1
  162. package/dist/profiles/person.model.d.ts +26 -26
  163. package/dist/profiles/person.model.d.ts.map +1 -1
  164. package/dist/profiles/profile.schema.json +269 -0
  165. package/dist/project/schemas.js +2 -1
  166. package/dist/project/schemas.js.map +1 -1
  167. package/dist/projects/project.service.d.ts +1 -1
  168. package/dist/projects/project.service.d.ts.map +1 -1
  169. package/dist/projects/project.service.js +2 -2
  170. package/dist/projects/project.service.js.map +1 -1
  171. package/dist/rewards/reward.model.d.ts +2 -2
  172. package/dist/rewards/reward.model.d.ts.map +1 -1
  173. package/dist/rewards/reward.service.d.ts +9 -0
  174. package/dist/rewards/reward.service.d.ts.map +1 -1
  175. package/dist/rewards/reward.service.js +32 -0
  176. package/dist/rewards/reward.service.js.map +1 -1
  177. package/dist/river/river.model.d.ts +25 -0
  178. package/dist/river/river.model.d.ts.map +1 -0
  179. package/dist/river/river.model.js +4 -0
  180. package/dist/river/river.model.js.map +1 -0
  181. package/dist/river/river.service.d.ts +13 -0
  182. package/dist/river/river.service.d.ts.map +1 -0
  183. package/dist/river/river.service.js +25 -0
  184. package/dist/river/river.service.js.map +1 -0
  185. package/dist/support/support.model.d.ts +6 -0
  186. package/dist/support/support.model.d.ts.map +1 -0
  187. package/dist/support/support.model.js +3 -0
  188. package/dist/support/support.model.js.map +1 -0
  189. package/dist/support/support.schema.json +25 -0
  190. package/dist/support/support.service.d.ts +11 -0
  191. package/dist/support/support.service.d.ts.map +1 -0
  192. package/dist/support/support.service.js +22 -0
  193. package/dist/support/support.service.js.map +1 -0
  194. package/dist/tasks/schemas.js +4 -3
  195. package/dist/tasks/schemas.js.map +1 -1
  196. package/dist/tasks/task.model.d.ts +40 -15
  197. package/dist/tasks/task.model.d.ts.map +1 -1
  198. package/dist/tasks/task.model.js +1 -1
  199. package/dist/tasks/task.model.js.map +1 -1
  200. package/dist/tasks/task.schema.json +780 -0
  201. package/dist/tasks/task.service.d.ts +108 -9
  202. package/dist/tasks/task.service.d.ts.map +1 -1
  203. package/dist/tasks/task.service.js +184 -47
  204. package/dist/tasks/task.service.js.map +1 -1
  205. package/dist/timezone/time.helper.d.ts +9 -0
  206. package/dist/timezone/time.helper.d.ts.map +1 -1
  207. package/dist/timezone/time.helper.js +31 -2
  208. package/dist/timezone/time.helper.js.map +1 -1
  209. package/dist/users/user.model.d.ts +2 -1
  210. package/dist/users/user.model.d.ts.map +1 -1
  211. package/dist/users/user.model.js.map +1 -1
  212. package/dist/users/user.schema.json +429 -0
  213. package/dist/users/user.service.d.ts +2 -2
  214. package/dist/users/user.service.d.ts.map +1 -1
  215. package/dist/users/user.service.js +29 -35
  216. package/dist/users/user.service.js.map +1 -1
  217. package/dist/utils/validation.utils.d.ts +0 -4
  218. package/dist/utils/validation.utils.d.ts.map +1 -1
  219. package/dist/utils/validation.utils.js +1 -11
  220. package/dist/utils/validation.utils.js.map +1 -1
  221. package/dist/wallet/wallet.model.d.ts +5 -0
  222. package/dist/wallet/wallet.model.d.ts.map +1 -1
  223. package/dist/wallet/wallet.service.d.ts +2 -1
  224. package/dist/wallet/wallet.service.d.ts.map +1 -1
  225. package/dist/wallet/wallet.service.js +9 -0
  226. package/dist/wallet/wallet.service.js.map +1 -1
  227. package/package.json +19 -6
@@ -1,10 +1,20 @@
1
1
  "use strict";
2
+ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
+ return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
+ };
2
7
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
8
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
9
  };
10
+ var _BiomeHttpClient_instances, _BiomeHttpClient_shouldUseNodeCookieJar, _BiomeHttpClient_requestUrl, _BiomeHttpClient_ingestCookies, _BiomeHttpClient_initTaskNotifRefreshChannel, _BiomeHttpClient_scheduleTaskNotifRefresh, _BiomeHttpClient_normalizeEmptyBody, _BiomeHttpClient_withHighDefault;
5
11
  Object.defineProperty(exports, "__esModule", { value: true });
6
12
  exports.BiomeHttpClient = void 0;
7
13
  const axios_1 = __importDefault(require("axios"));
14
+ const api_diagnostics_1 = require("./api-diagnostics");
15
+ const error_codes_1 = require("../errors/error-codes");
16
+ const request_scheduler_1 = require("./request-scheduler");
17
+ const node_cookie_jar_1 = require("./node-cookie-jar");
8
18
  const DEFAULT_CSRF_HEADER_NAME = "X-XSRF-TOKEN";
9
19
  const DEFAULT_CSRF_COOKIE_NAME = "XSRF-TOKEN";
10
20
  const CSRF_METHODS = ["post", "put", "patch", "delete"];
@@ -19,9 +29,15 @@ class BiomeHttpClient {
19
29
  return this.config.apiBaseUrl;
20
30
  }
21
31
  constructor(config) {
32
+ _BiomeHttpClient_instances.add(this);
22
33
  this.config = config;
23
34
  this._csrfToken = null;
24
35
  this._csrfInitialized = false;
36
+ /** Debounce handle for task → notification badge refresh (mutations only). */
37
+ this._taskNotifRefreshTimer = null;
38
+ this._taskNotifBroadcast = null;
39
+ this.scheduler = (0, request_scheduler_1.getSharedRequestScheduler)(config.maxConcurrentRequests ?? 4);
40
+ this.nodeCookieJar = __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_shouldUseNodeCookieJar).call(this) ? new node_cookie_jar_1.NodeCookieJar() : null;
25
41
  this.axiosInstance = axios_1.default.create({
26
42
  baseURL: config.apiBaseUrl,
27
43
  timeout: config.timeout || 30000,
@@ -30,6 +46,7 @@ class BiomeHttpClient {
30
46
  },
31
47
  withCredentials: config.http?.withCredentials || false,
32
48
  });
49
+ __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_initTaskNotifRefreshChannel).call(this);
33
50
  this.setupInterceptors();
34
51
  this.initCsrf();
35
52
  }
@@ -52,9 +69,11 @@ class BiomeHttpClient {
52
69
  async fetchCsrfToken(url) {
53
70
  try {
54
71
  const response = await this.axiosInstance.get(url);
55
- /* istanbul ignore next */
56
- this._csrfToken =
57
- response.data.token || response.data;
72
+ if (typeof response.data?.token !== "string") {
73
+ this._csrfToken = null;
74
+ throw new Error("CSRF token response did not contain a string token");
75
+ }
76
+ this._csrfToken = response.data.token;
58
77
  return this._csrfToken;
59
78
  }
60
79
  catch {
@@ -63,10 +82,21 @@ class BiomeHttpClient {
63
82
  }
64
83
  }
65
84
  /**
66
- * Get CSRF token from stored value or cookie
85
+ * Get the current CSRF token.
86
+ *
87
+ * Browser context (no node cookie jar): always reads document.cookie live rather than
88
+ * serving a cached value. A cached value would go stale across a same-tab
89
+ * logout->login cycle, since the server rotates the CSRF cookie on login but nothing
90
+ * else would invalidate this client's in-memory copy - the first mutating request
91
+ * after re-login would then send a stale header, get a 403 CSRF_TOKEN_INVALID, and be
92
+ * misread as "session expired" even though the new session is perfectly valid.
93
+ *
94
+ * Node cookie jar context: no live document.cookie to read (or the caller explicitly
95
+ * opted into the node cookie jar via config), so the value ingested by
96
+ * #ingestCookies() from the most recent Set-Cookie response header is served instead.
67
97
  */
68
98
  getCsrfToken() {
69
- if (this._csrfToken) {
99
+ if (this.nodeCookieJar) {
70
100
  return this._csrfToken;
71
101
  }
72
102
  const cookieName = this.config.csrf?.cookieName || DEFAULT_CSRF_COOKIE_NAME;
@@ -74,13 +104,11 @@ class BiomeHttpClient {
74
104
  if (typeof document === "undefined") {
75
105
  return null;
76
106
  }
77
- /* istanbul ignore next */
78
107
  const cookies = document?.cookie?.split(";") || [];
79
108
  for (const cookie of cookies) {
80
109
  const [name, value] = cookie.trim().split("=");
81
110
  if (name === cookieName) {
82
- this._csrfToken = decodeURIComponent(value);
83
- return this._csrfToken;
111
+ return decodeURIComponent(value);
84
112
  }
85
113
  }
86
114
  return null;
@@ -114,29 +142,29 @@ class BiomeHttpClient {
114
142
  * Perform POST request
115
143
  */
116
144
  async post(url, data, config) {
117
- const response = await this.axiosInstance.post(url, data, config);
145
+ const response = await this.axiosInstance.post(url, data, __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_withHighDefault).call(this, config));
118
146
  return response.data;
119
147
  }
120
148
  /**
121
149
  * Perform PUT request
122
150
  */
123
151
  async put(url, data, config) {
124
- const response = await this.axiosInstance.put(url, data, config);
125
- return response.data;
152
+ const response = await this.axiosInstance.put(url, data, __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_withHighDefault).call(this, config));
153
+ return __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_normalizeEmptyBody).call(this, response);
126
154
  }
127
155
  /**
128
156
  * Perform PATCH request
129
157
  */
130
158
  async patch(url, data, config) {
131
- const response = await this.axiosInstance.patch(url, data, config);
132
- return response.data;
159
+ const response = await this.axiosInstance.patch(url, data, __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_withHighDefault).call(this, config));
160
+ return __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_normalizeEmptyBody).call(this, response);
133
161
  }
134
162
  /**
135
163
  * Perform DELETE request
136
164
  */
137
165
  async delete(url, config) {
138
- const response = await this.axiosInstance.delete(url, config);
139
- return response.data;
166
+ const response = await this.axiosInstance.delete(url, __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_withHighDefault).call(this, config));
167
+ return __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_normalizeEmptyBody).call(this, response);
140
168
  }
141
169
  /**
142
170
  * Set authentication token for subsequent requests
@@ -158,17 +186,64 @@ class BiomeHttpClient {
158
186
  */
159
187
  setupInterceptors() {
160
188
  const csrfHeaderName = this.config.csrf?.headerName || DEFAULT_CSRF_HEADER_NAME;
161
- // Request interceptor
162
- this.axiosInstance.interceptors.request.use((config) => {
189
+ const scheduler = this.scheduler;
190
+ // Request interceptor — schedule then annotate
191
+ this.axiosInstance.interceptors.request.use(async (config) => {
192
+ const priority = config.biomePriority ?? "normal";
193
+ const queueWait = config.biomeQueueWaitMs ??
194
+ (priority === "low" ? 8000 : priority === "high" ? 45000 : 30000);
195
+ try {
196
+ await scheduler.acquire(priority, queueWait);
197
+ config._biomeSlotHeld = true;
198
+ }
199
+ catch (err) {
200
+ // Surface queue wait as a distinct failure with scheduler pressure stats.
201
+ // Diagnostic rule: client timeout + no BE "Request started" ⇒ pool/queue,
202
+ // not handler latency. See sst/guidelines/http-concurrency.md.
203
+ const queueErr = err;
204
+ queueErr.config = {
205
+ method: config.method,
206
+ url: config.url,
207
+ timeout: config.timeout,
208
+ baseURL: config.baseURL,
209
+ _startTime: Date.now(),
210
+ biomePriority: priority,
211
+ };
212
+ if (!queueErr.scheduler) {
213
+ queueErr.scheduler = scheduler.snapshot();
214
+ }
215
+ if (queueErr.priority == null) {
216
+ queueErr.priority = priority;
217
+ }
218
+ if (queueErr.maxWaitMs == null) {
219
+ queueErr.maxWaitMs = queueWait;
220
+ }
221
+ (0, api_diagnostics_1.reportApiFailure)({
222
+ message: queueErr.message,
223
+ code: queueErr.code || "ERR_QUEUE_TIMEOUT",
224
+ isQueueTimeout: true,
225
+ priority: queueErr.priority,
226
+ maxWaitMs: queueErr.maxWaitMs,
227
+ scheduler: queueErr.scheduler,
228
+ config: queueErr.config,
229
+ }, queueErr.maxWaitMs ?? 0);
230
+ return Promise.reject(queueErr);
231
+ }
163
232
  config._startTime = Date.now();
164
233
  // Add auth token if available
165
234
  if (this.config.authToken) {
166
235
  config.headers.Authorization = `Bearer ${this.config.authToken}`;
167
236
  }
237
+ if (this.nodeCookieJar) {
238
+ const cookie = this.nodeCookieJar.cookieHeader(__classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_requestUrl).call(this, config));
239
+ if (cookie) {
240
+ config.headers.Cookie = cookie;
241
+ }
242
+ }
168
243
  // Set Content-Type to application/json only if data is not FormData
169
244
  // Axios automatically handles multipart/form-data for FormData objects
170
245
  if (config.data && !(config.data instanceof FormData)) {
171
- config.headers['Content-Type'] = 'application/json';
246
+ config.headers["Content-Type"] = "application/json";
172
247
  }
173
248
  // Add CSRF token for mutating requests
174
249
  if (this.isCsrfEnabled() && config.method) {
@@ -182,23 +257,38 @@ class BiomeHttpClient {
182
257
  }
183
258
  return config;
184
259
  }, (error) => Promise.reject(error));
185
- // Response interceptor for error handling
186
- this.axiosInstance.interceptors.response.use((response) => response, (error) => {
260
+ const releaseSlot = (config) => {
261
+ if (config?._biomeSlotHeld) {
262
+ config._biomeSlotHeld = false;
263
+ scheduler.release();
264
+ }
265
+ };
266
+ // Response interceptor for error handling + slot release
267
+ this.axiosInstance.interceptors.response.use((response) => {
268
+ releaseSlot(response.config);
269
+ __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_ingestCookies).call(this, response);
270
+ __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_scheduleTaskNotifRefresh).call(this, response.config);
271
+ return response;
272
+ }, (error) => {
273
+ releaseSlot(error.config);
274
+ if (error.response) {
275
+ __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_ingestCookies).call(this, error.response);
276
+ }
187
277
  const elapsed = Date.now() - (error.config?._startTime ?? Date.now());
188
- console.error('[BiomeSDK] request failed', {
189
- url: error.config?.url,
190
- method: error.config?.method,
191
- code: error.code,
192
- status: error.response?.status,
193
- elapsed: `${elapsed}ms`,
194
- timeout: error.config?.timeout,
195
- });
278
+ // Avoid double-reporting pure queue timeouts (already reported above)
279
+ if (!error.isQueueTimeout) {
280
+ (0, api_diagnostics_1.reportApiFailure)(error, elapsed);
281
+ }
196
282
  // Handle common error scenarios
197
- if (error.response?.status === 401) {
283
+ const isCsrfInvalidSession = error.response?.status === 403 &&
284
+ error.response?.data?.error?.details?.code ===
285
+ error_codes_1.ErrorCode.CSRF_TOKEN_INVALID;
286
+ if (error.response?.status === 401 || isCsrfInvalidSession) {
198
287
  this.clearAuthToken();
288
+ this.clearCsrfToken();
199
289
  // Notify consumers of session expiration
200
- if (typeof window !== 'undefined') {
201
- window.dispatchEvent(new CustomEvent('biome:session-expired'));
290
+ if (typeof window !== "undefined") {
291
+ window.dispatchEvent(new CustomEvent("biome:session-expired"));
202
292
  }
203
293
  }
204
294
  return Promise.reject(error);
@@ -206,4 +296,76 @@ class BiomeHttpClient {
206
296
  }
207
297
  }
208
298
  exports.BiomeHttpClient = BiomeHttpClient;
299
+ _BiomeHttpClient_instances = new WeakSet(), _BiomeHttpClient_shouldUseNodeCookieJar = function _BiomeHttpClient_shouldUseNodeCookieJar() {
300
+ if (this.config.http?.useNodeCookieJar === false)
301
+ return false;
302
+ if (this.config.http?.useNodeCookieJar === true)
303
+ return true;
304
+ return typeof document === "undefined";
305
+ }, _BiomeHttpClient_requestUrl = function _BiomeHttpClient_requestUrl(config) {
306
+ return (0, node_cookie_jar_1.resolveRequestUrl)(config.baseURL || this.config.apiBaseUrl, config.url);
307
+ }, _BiomeHttpClient_ingestCookies = function _BiomeHttpClient_ingestCookies(response) {
308
+ if (!this.nodeCookieJar)
309
+ return;
310
+ const url = __classPrivateFieldGet(this, _BiomeHttpClient_instances, "m", _BiomeHttpClient_requestUrl).call(this, response.config || {});
311
+ this.nodeCookieJar.ingest(url, (0, node_cookie_jar_1.readSetCookieHeader)(response.headers));
312
+ const cookieName = this.config.csrf?.cookieName || DEFAULT_CSRF_COOKIE_NAME;
313
+ const csrf = this.nodeCookieJar.getNamed(url, cookieName);
314
+ if (csrf)
315
+ this._csrfToken = csrf;
316
+ }, _BiomeHttpClient_initTaskNotifRefreshChannel = function _BiomeHttpClient_initTaskNotifRefreshChannel() {
317
+ const opts = this.config.http?.interceptors?.taskNotificationRefresh;
318
+ if (!opts?.broadcastChannel || typeof BroadcastChannel === "undefined") {
319
+ return;
320
+ }
321
+ try {
322
+ this._taskNotifBroadcast = new BroadcastChannel(opts.broadcastChannel);
323
+ }
324
+ catch {
325
+ this._taskNotifBroadcast = null;
326
+ }
327
+ }, _BiomeHttpClient_scheduleTaskNotifRefresh = function _BiomeHttpClient_scheduleTaskNotifRefresh(config) {
328
+ const opts = this.config.http?.interceptors?.taskNotificationRefresh;
329
+ if (!opts)
330
+ return;
331
+ const method = (config.method || "get").toLowerCase();
332
+ if (!CSRF_METHODS.includes(method))
333
+ return; // only mutating methods
334
+ const url = `${config.baseURL || ""}${config.url || ""}`;
335
+ if (!/\/tasks?(?:\/|$|\?)/.test(url))
336
+ return;
337
+ if (opts.ignoreUrls?.some((ignored) => url.includes(ignored)))
338
+ return;
339
+ if (this._taskNotifRefreshTimer) {
340
+ clearTimeout(this._taskNotifRefreshTimer);
341
+ }
342
+ this._taskNotifRefreshTimer = setTimeout(() => {
343
+ this._taskNotifRefreshTimer = null;
344
+ if (typeof window !== "undefined" && opts.customEvent) {
345
+ try {
346
+ window.dispatchEvent(new CustomEvent(opts.customEvent));
347
+ }
348
+ catch {
349
+ // ignore
350
+ }
351
+ }
352
+ try {
353
+ this._taskNotifBroadcast?.postMessage({ refreshNow: true });
354
+ }
355
+ catch {
356
+ // ignore
357
+ }
358
+ }, 1500);
359
+ }, _BiomeHttpClient_normalizeEmptyBody = function _BiomeHttpClient_normalizeEmptyBody(response) {
360
+ const body = response.data;
361
+ if (response.status === 204 || body === "" || body === null || body === undefined) {
362
+ return { result: "success", payload: undefined, message: "", isSuccess: true };
363
+ }
364
+ return response.data;
365
+ }, _BiomeHttpClient_withHighDefault = function _BiomeHttpClient_withHighDefault(config) {
366
+ return {
367
+ biomePriority: "high",
368
+ ...config,
369
+ };
370
+ };
209
371
  //# sourceMappingURL=http-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/core/http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../src/core/http-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { CookieJar } from "tough-cookie";
2
+ /**
3
+ * Node-only cookie store so axios can round-trip `Set-Cookie` (JWT session +
4
+ * `XSRF-TOKEN`). Browsers already persist cookies via `withCredentials`.
5
+ */
6
+ export declare class NodeCookieJar {
7
+ readonly jar: CookieJar;
8
+ ingest(url: string, setCookie: string | string[] | undefined): void;
9
+ cookieHeader(url: string): string;
10
+ getNamed(url: string, name: string): string | null;
11
+ }
12
+ export declare function resolveRequestUrl(baseURL: string | undefined, url: string | undefined): string;
13
+ export declare function readSetCookieHeader(headers: unknown): string[];
14
+ //# sourceMappingURL=node-cookie-jar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-cookie-jar.d.ts","sourceRoot":"","sources":["../../src/core/node-cookie-jar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC;;;GAGG;AACH,qBAAa,aAAa;IACtB,QAAQ,CAAC,GAAG,YAAmB;IAE/B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI;IASnE,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIjC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAIrD;AAED,wBAAgB,iBAAiB,CAC7B,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,GAAG,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAOR;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAa9D"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeCookieJar = void 0;
4
+ exports.resolveRequestUrl = resolveRequestUrl;
5
+ exports.readSetCookieHeader = readSetCookieHeader;
6
+ const tough_cookie_1 = require("tough-cookie");
7
+ /**
8
+ * Node-only cookie store so axios can round-trip `Set-Cookie` (JWT session +
9
+ * `XSRF-TOKEN`). Browsers already persist cookies via `withCredentials`.
10
+ */
11
+ class NodeCookieJar {
12
+ constructor() {
13
+ this.jar = new tough_cookie_1.CookieJar();
14
+ }
15
+ ingest(url, setCookie) {
16
+ if (!setCookie)
17
+ return;
18
+ const list = Array.isArray(setCookie) ? setCookie : [setCookie];
19
+ for (const cookie of list) {
20
+ if (!cookie)
21
+ continue;
22
+ this.jar.setCookieSync(cookie, url);
23
+ }
24
+ }
25
+ cookieHeader(url) {
26
+ return this.jar.getCookieStringSync(url);
27
+ }
28
+ getNamed(url, name) {
29
+ const cookies = this.jar.getCookiesSync(url);
30
+ return cookies.find((c) => c.key === name)?.value ?? null;
31
+ }
32
+ }
33
+ exports.NodeCookieJar = NodeCookieJar;
34
+ function resolveRequestUrl(baseURL, url) {
35
+ const base = (baseURL || "http://localhost").replace(/\/?$/, "/");
36
+ try {
37
+ return new URL(url || "", base).toString();
38
+ }
39
+ catch {
40
+ return `${base.replace(/\/$/, "")}${url || ""}`;
41
+ }
42
+ }
43
+ function readSetCookieHeader(headers) {
44
+ if (!headers || typeof headers !== "object")
45
+ return [];
46
+ const record = headers;
47
+ const raw = typeof record.get === "function"
48
+ ? record.get("set-cookie")
49
+ : record["set-cookie"];
50
+ if (!raw)
51
+ return [];
52
+ if (Array.isArray(raw))
53
+ return raw.filter((c) => typeof c === "string");
54
+ if (typeof raw === "string")
55
+ return [raw];
56
+ return [];
57
+ }
58
+ //# sourceMappingURL=node-cookie-jar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-cookie-jar.js","sourceRoot":"","sources":["../../src/core/node-cookie-jar.ts"],"names":[],"mappings":";;;AA4BA,8CAUC;AAED,kDAaC;AArDD,+CAAyC;AAEzC;;;GAGG;AACH,MAAa,aAAa;IAA1B;QACa,QAAG,GAAG,IAAI,wBAAS,EAAE,CAAC;IAmBnC,CAAC;IAjBG,MAAM,CAAC,GAAW,EAAE,SAAwC;QACxD,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChE,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,GAAW;QACpB,OAAO,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,IAAY;QAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QAC7C,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC9D,CAAC;CACJ;AApBD,sCAoBC;AAED,SAAgB,iBAAiB,CAC7B,OAA2B,EAC3B,GAAuB;IAEvB,MAAM,IAAI,GAAG,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,EAAE,CAAC;IACpD,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAAC,OAAgB;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,MAAM,GAAG,OAEd,CAAC;IACF,MAAM,GAAG,GACL,OAAO,MAAM,CAAC,GAAG,KAAK,UAAU;QAC5B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1B,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;IACrF,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC;AACd,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Priority-aware concurrency limiter for browser HTTP/1.1.
3
+ *
4
+ * Browsers allow ~6 connections per origin. Chat SSE holds one permanently.
5
+ * Without a client-side cap, task detail storms + polls + mutations all race
6
+ * and low-priority work (unread count) times out while never leaving the queue.
7
+ *
8
+ * Default maxConcurrent=4 leaves ~1–2 slots free for EventSource and bursts.
9
+ * Default reservedForHigh=1 keeps one slot that normal/low cannot fill so
10
+ * mutations and user-opened panels (high) can still start under GET storms.
11
+ *
12
+ * See `sst/guidelines/http-concurrency.md` for the system-wide policy.
13
+ */
14
+ export type RequestPriority = "high" | "normal" | "low";
15
+ /** Point-in-time view of scheduler pressure (attached to queue-timeout errors). */
16
+ export interface RequestSchedulerSnapshot {
17
+ active: number;
18
+ queued: number;
19
+ maxConcurrent: number;
20
+ reservedForHigh: number;
21
+ /** How many waiters of each priority are currently in the queue. */
22
+ queuedByPriority: Record<RequestPriority, number>;
23
+ }
24
+ export declare class RequestScheduler {
25
+ #private;
26
+ private readonly maxConcurrent;
27
+ private active;
28
+ private readonly queue;
29
+ private readonly reservedForHigh;
30
+ /**
31
+ * @param maxConcurrent total in-flight slots (default 4)
32
+ * @param reservedForHigh slots only high priority may use (default 1).
33
+ * Clamped so at least one slot remains available to normal/low.
34
+ */
35
+ constructor(maxConcurrent?: number, reservedForHigh?: number);
36
+ get activeCount(): number;
37
+ get queuedCount(): number;
38
+ get maxConcurrentSlots(): number;
39
+ get reservedHighSlots(): number;
40
+ /** Snapshot for diagnostics when a waiter times out or for FE overlays. */
41
+ snapshot(): RequestSchedulerSnapshot;
42
+ /**
43
+ * Reserve a connection slot. Resolves when the caller may start an HTTP request.
44
+ * @param priority high jumps the queue and may use reserved capacity; low yields to normal/high
45
+ * @param maxWaitMs reject if still waiting this long (background polls should fail fast)
46
+ */
47
+ acquire(priority?: RequestPriority, maxWaitMs?: number): Promise<void>;
48
+ /** Release a slot after the HTTP call finishes (success or error). */
49
+ release(): void;
50
+ /** Test helper — drain queue without running requests. */
51
+ reset(): void;
52
+ }
53
+ export declare function getSharedRequestScheduler(maxConcurrent?: number): RequestScheduler;
54
+ /** Test-only: drop shared instance. */
55
+ export declare function resetSharedRequestScheduler(): void;
56
+ //# sourceMappingURL=request-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-scheduler.d.ts","sourceRoot":"","sources":["../../src/core/request-scheduler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;CACnD;AAiBD,qBAAa,gBAAgB;;IAWzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAVhC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC;;;;OAIG;gBAEgB,aAAa,GAAE,MAAU,EAC1C,eAAe,SAAI;IAWrB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAQD,2EAA2E;IAC3E,QAAQ,IAAI,wBAAwB;IAkBpC;;;;OAIG;IACH,OAAO,CAAC,QAAQ,GAAE,eAA0B,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAmDhF,sEAAsE;IACtE,OAAO,IAAI,IAAI;IAmBf,0DAA0D;IAC1D,KAAK,IAAI,IAAI;CAQd;AAKD,wBAAgB,yBAAyB,CAAC,aAAa,SAAI,GAAG,gBAAgB,CAK7E;AAED,uCAAuC;AACvC,wBAAgB,2BAA2B,IAAI,IAAI,CAGlD"}