@ultrst-armada/kloks 1.4.2 → 1.4.4

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 (79) hide show
  1. package/package.json +8 -20
  2. package/packages/audio-midi/dist/index.d.ts +23 -14
  3. package/packages/audio-midi/dist/index.js +170 -45
  4. package/packages/audio-midi/kloks.manifest.json +8 -8
  5. package/packages/audio-midi/package.json +1 -1
  6. package/packages/backend/dist/{WebSocketTransport-CxUzUfwl.d.ts → WebSocketTransport-CHmkJ0tj.d.ts} +109 -2
  7. package/packages/backend/dist/auth/index.js +6 -6
  8. package/packages/backend/dist/chunk-5336MTXD.js +597 -0
  9. package/packages/backend/dist/{chunk-T3NYNBDC.js → chunk-5E6JRFUH.js} +201 -3
  10. package/packages/backend/dist/{chunk-XTWHEZWS.js → chunk-7B24ZWB3.js} +16 -1
  11. package/packages/backend/dist/{chunk-DZ4ZGIZM.js → chunk-JXUSBKJ2.js} +91 -654
  12. package/packages/backend/dist/{chunk-FO6WYLW4.js → chunk-KI3LHMUN.js} +133 -46
  13. package/packages/backend/dist/{chunk-4ZFXEFOE.js → chunk-MPYASJ5A.js} +2 -87
  14. package/packages/backend/dist/{chunk-KX3OTBQ3.js → chunk-OZDYAEH4.js} +0 -114
  15. package/packages/backend/dist/chunk-TY32TUNI.js +376 -0
  16. package/packages/backend/dist/chunk-VDROUXFT.js +116 -0
  17. package/packages/backend/dist/chunk-ZDH4XI7W.js +140 -0
  18. package/packages/backend/dist/client/index.d.ts +2 -3
  19. package/packages/backend/dist/connectivity/index.d.ts +18 -6
  20. package/packages/backend/dist/connectivity/index.js +3 -7
  21. package/packages/backend/dist/index.d.ts +3 -6
  22. package/packages/backend/dist/index.js +101 -91
  23. package/packages/backend/dist/krnl-services.d.ts +84 -7
  24. package/packages/backend/dist/krnl-services.js +40 -12
  25. package/packages/backend/dist/services/index.d.ts +4 -6
  26. package/packages/backend/dist/services/index.js +2 -2
  27. package/packages/backend/dist/srkl/index.js +6 -4
  28. package/packages/backend/dist/storage/index.js +7 -7
  29. package/packages/backend/dist/workspace/index.js +2 -2
  30. package/packages/backend/kloks.manifest.json +47 -45
  31. package/packages/backend/package.json +3 -8
  32. package/packages/client/package.json +1 -1
  33. package/packages/contracts/dist/index.js +5 -10
  34. package/packages/contracts/package.json +1 -1
  35. package/packages/functions/dist/index.d.ts +12 -1
  36. package/packages/functions/dist/index.js +132 -24
  37. package/packages/functions/package.json +1 -1
  38. package/packages/orchestrations/dist/index.d.ts +33 -31
  39. package/packages/orchestrations/dist/index.js +81 -203
  40. package/packages/orchestrations/kloks.manifest.json +10 -2
  41. package/packages/orchestrations/package.json +2 -2
  42. package/packages/services/dist/index.d.ts +51 -1
  43. package/packages/services/dist/index.js +249 -51
  44. package/packages/services/kloks.manifest.json +69 -33
  45. package/packages/services/package.json +1 -1
  46. package/packages/state-graph/dist/{BaseGraph-BvkSYOTw.d.ts → BaseGraph-Bd5F1NMP.d.ts} +1 -1
  47. package/packages/state-graph/dist/{BaseNode-DTcd3K1B.d.ts → BaseNode-DKpGXMy8.d.ts} +6 -0
  48. package/packages/state-graph/dist/{CompatibilityMatrix-Dj-tCWUA.d.ts → CompatibilityMatrix-TiEJ3j3_.d.ts} +1 -1
  49. package/packages/state-graph/dist/domain/index.d.ts +3 -3
  50. package/packages/state-graph/dist/domain/index.js +0 -1
  51. package/packages/state-graph/dist/index.d.ts +40 -8
  52. package/packages/state-graph/dist/index.js +193 -44
  53. package/packages/state-graph/dist/rules/index.d.ts +3 -3
  54. package/packages/state-graph/dist/rules/index.js +0 -1
  55. package/packages/state-graph/dist/spatial/index.d.ts +4 -4
  56. package/packages/state-graph/dist/spatial/index.js +0 -1
  57. package/packages/state-graph/dist/state/index.js +1 -3
  58. package/packages/state-graph/dist/store/index.d.ts +4 -4
  59. package/packages/state-graph/dist/store/index.js +0 -1
  60. package/packages/state-graph/dist/{types-VDoc4FIc.d.ts → types-D5kQSa65.d.ts} +2 -2
  61. package/packages/state-graph/kloks.manifest.json +26 -10
  62. package/packages/state-graph/package.json +2 -8
  63. package/packages/backend/dist/IdempotencyManager-B5MjK871.d.ts +0 -16
  64. package/packages/backend/dist/chunk-25Y7AVTP.js +0 -55
  65. package/packages/backend/dist/chunk-3EPY34R6.js +0 -67
  66. package/packages/backend/dist/chunk-7KNGX522.js +0 -220
  67. package/packages/backend/dist/chunk-FZKBTF34.js +0 -15
  68. package/packages/backend/dist/chunk-QGHDJGYS.js +0 -92
  69. package/packages/backend/dist/chunk-UPFKBBQI.js +0 -138
  70. package/packages/backend/dist/chunk-VQEFULWT.js +0 -88
  71. package/packages/backend/dist/execution/index.d.ts +0 -124
  72. package/packages/backend/dist/execution/index.js +0 -20
  73. package/packages/backend/dist/types-BERZJ93O.d.ts +0 -110
  74. package/packages/state-graph/dist/chunk-3RG5ZIWI.js +0 -10
  75. package/packages/state-graph/dist/chunk-Q5I42UX7.js +0 -0
  76. package/packages/state-graph/dist/chunk-ZTHBPV24.js +0 -267
  77. package/packages/state-graph/dist/execution/index.d.ts +0 -152
  78. package/packages/state-graph/dist/execution/index.js +0 -16
  79. /package/packages/state-graph/dist/{chunk-SHIBCPGQ.js → chunk-EW4ACSZB.js} +0 -0
@@ -1,22 +1,33 @@
1
1
  import {
2
- createService,
3
- createServiceDefinition
4
- } from "./chunk-7KNGX522.js";
2
+ getSrklAccounts,
3
+ srklListBackblazeBuckets
4
+ } from "./chunk-VDROUXFT.js";
5
5
  import {
6
6
  StorageAdapterFactory
7
7
  } from "./chunk-J2J24JVC.js";
8
8
  import {
9
+ b2ListBuckets
10
+ } from "./chunk-4QEMALXF.js";
11
+ import {
12
+ createWorkspace,
13
+ deleteWorkspace,
14
+ findUserWorkspace,
9
15
  formatCanonicalWorkspaceFolderName,
10
- sanitizeWorkspaceName
11
- } from "./chunk-FZKBTF34.js";
16
+ getWorkspaces,
17
+ queryUnifiedDb,
18
+ sanitizeWorkspaceName,
19
+ updateWorkspace
20
+ } from "./chunk-JXUSBKJ2.js";
12
21
  import {
13
22
  RateLimiter,
14
- SessionManager
15
- } from "./chunk-25Y7AVTP.js";
23
+ SessionManager,
24
+ loginSystemUser,
25
+ resolveUserFromToken
26
+ } from "./chunk-ZDH4XI7W.js";
16
27
  import {
17
- ExecutableBackendFacade,
18
- WorkerExecutionBoundary
19
- } from "./chunk-QGHDJGYS.js";
28
+ createService,
29
+ createServiceDefinition
30
+ } from "./chunk-TY32TUNI.js";
20
31
 
21
32
  // src/krnl-services.ts
22
33
  var AuthServiceDefinition = createServiceDefinition({
@@ -35,6 +46,16 @@ var AuthServiceDefinition = createServiceDefinition({
35
46
  return sm.createSession(input.userId, input.role ?? "user");
36
47
  }
37
48
  },
49
+ login: {
50
+ id: "AuthService.login",
51
+ name: "login",
52
+ handler: async (input) => loginSystemUser(input.email, input.password, Boolean(input.isAdmin), (sql, params) => queryUnifiedDb(sql, params, input.env))
53
+ },
54
+ resolveUser: {
55
+ id: "AuthService.resolveUser",
56
+ name: "resolveUser",
57
+ handler: async (input) => resolveUserFromToken(input.tokenOrUserId, (sql, params) => queryUnifiedDb(sql, params, input.env))
58
+ },
38
59
  checkRateLimit: {
39
60
  id: "AuthService.checkRateLimit",
40
61
  name: "checkRateLimit",
@@ -65,6 +86,11 @@ var StorageServiceDefinition = createServiceDefinition({
65
86
  name: "StorageService",
66
87
  version: "1.0.0",
67
88
  operations: {
89
+ listBackblazeBuckets: {
90
+ id: "StorageService.listBackblazeBuckets",
91
+ name: "listBackblazeBuckets",
92
+ handler: async (input) => b2ListBuckets(input.keyId, input.applicationKey)
93
+ },
68
94
  resolveAdapterType: {
69
95
  id: "StorageService.resolveAdapterType",
70
96
  name: "resolveAdapterType",
@@ -101,6 +127,31 @@ var WorkspaceServiceDefinition = createServiceDefinition({
101
127
  name: "WorkspaceService",
102
128
  version: "1.0.0",
103
129
  operations: {
130
+ listWorkspaces: {
131
+ id: "WorkspaceService.listWorkspaces",
132
+ name: "listWorkspaces",
133
+ handler: async (input) => getWorkspaces(input.userId, input.env)
134
+ },
135
+ findWorkspace: {
136
+ id: "WorkspaceService.findWorkspace",
137
+ name: "findWorkspace",
138
+ handler: async (input) => findUserWorkspace(input.workspaceId, input.env)
139
+ },
140
+ createWorkspace: {
141
+ id: "WorkspaceService.createWorkspace",
142
+ name: "createWorkspace",
143
+ handler: async (input) => createWorkspace(input.userId, input.workspace, input.env)
144
+ },
145
+ updateWorkspace: {
146
+ id: "WorkspaceService.updateWorkspace",
147
+ name: "updateWorkspace",
148
+ handler: async (input) => updateWorkspace(input.userId, input.params, input.env)
149
+ },
150
+ deleteWorkspace: {
151
+ id: "WorkspaceService.deleteWorkspace",
152
+ name: "deleteWorkspace",
153
+ handler: async (input) => deleteWorkspace(input.userId, input.workspaceId, input.env)
154
+ },
104
155
  validateWorkspaceConfig: {
105
156
  id: "WorkspaceService.validateWorkspaceConfig",
106
157
  name: "validateWorkspaceConfig",
@@ -165,39 +216,6 @@ var ControlPlaneServiceFacade = {
165
216
  return controlPlaneServiceInstance.call(op, input);
166
217
  }
167
218
  };
168
- var ExecutionServiceDefinition = createServiceDefinition({
169
- id: "kloks.backend.execution",
170
- name: "ExecutionService",
171
- version: "1.0.0",
172
- operations: {
173
- createWorkerBoundary: {
174
- id: "ExecutionService.createWorkerBoundary",
175
- name: "createWorkerBoundary",
176
- handler: async (input) => {
177
- const facade = new ExecutableBackendFacade(input.name);
178
- const worker = new WorkerExecutionBoundary(`${input.name}Worker`, facade);
179
- return {
180
- facadeName: facade.name,
181
- workerReady: Boolean(worker)
182
- };
183
- }
184
- }
185
- }
186
- });
187
- var executionServiceInstance = createService(ExecutionServiceDefinition);
188
- var ExecutionServiceFacade = {
189
- id: ExecutionServiceDefinition.id,
190
- name: ExecutionServiceDefinition.name,
191
- version: ExecutionServiceDefinition.version,
192
- runtime: "server",
193
- deployment: "local",
194
- definition: ExecutionServiceDefinition,
195
- createInstance: () => createService(ExecutionServiceDefinition),
196
- execute: async (op, input) => {
197
- await executionServiceInstance.start();
198
- return executionServiceInstance.call(op, input);
199
- }
200
- };
201
219
  var DatabaseServiceDefinition = createServiceDefinition({
202
220
  id: "kloks.backend.database",
203
221
  name: "DatabaseService",
@@ -259,6 +277,61 @@ var GeminiServiceFacade = {
259
277
  return geminiServiceInstance.call(op, input);
260
278
  }
261
279
  };
280
+ var krnlAuthServiceDefinition = AuthServiceDefinition;
281
+ var krnlAuthServiceFacade = AuthServiceFacade;
282
+ var krnlStorageServiceDefinition = StorageServiceDefinition;
283
+ var krnlStorageServiceFacade = StorageServiceFacade;
284
+ var krnlWorkspaceServiceDefinition = WorkspaceServiceDefinition;
285
+ var krnlWorkspaceServiceFacade = WorkspaceServiceFacade;
286
+ var krnlControlPlaneServiceDefinition = ControlPlaneServiceDefinition;
287
+ var krnlControlPlaneServiceFacade = ControlPlaneServiceFacade;
288
+ var krnlDatabaseServiceDefinition = DatabaseServiceDefinition;
289
+ var krnlDatabaseServiceFacade = DatabaseServiceFacade;
290
+ var krnlGeminiServiceDefinition = GeminiServiceDefinition;
291
+ var krnlGeminiServiceFacade = GeminiServiceFacade;
292
+ var SrklServiceDefinition = createServiceDefinition({
293
+ id: "kloks.backend.srkl",
294
+ name: "SrklService",
295
+ version: "1.0.0",
296
+ operations: {
297
+ getAccounts: {
298
+ id: "SrklService.getAccounts",
299
+ name: "getAccounts",
300
+ handler: async (input) => getSrklAccounts(input.userId, input.service, (sql, params) => queryUnifiedDb(sql, params, input.env))
301
+ },
302
+ listBackblazeBuckets: {
303
+ id: "SrklService.listBackblazeBuckets",
304
+ name: "listBackblazeBuckets",
305
+ handler: async (input) => {
306
+ let keyId = input.keyId;
307
+ let applicationKey = input.applicationKey;
308
+ if ((!keyId || !applicationKey) && input.accountId && input.userId) {
309
+ const accounts = await getSrklAccounts(input.userId, "backblaze", (sql, params) => queryUnifiedDb(sql, params, input.env));
310
+ const account = accounts.accounts.find((item) => item.id === input.accountId);
311
+ keyId = account?.credentials?.keyId || account?.credentials?.b2KeyId;
312
+ applicationKey = account?.credentials?.applicationKey || account?.credentials?.b2ApplicationKey;
313
+ }
314
+ return srklListBackblazeBuckets(keyId, applicationKey, void 0, void 0, input.userId, (sql, params) => queryUnifiedDb(sql, params, input.env));
315
+ }
316
+ }
317
+ }
318
+ });
319
+ var srklServiceInstance = createService(SrklServiceDefinition);
320
+ var SrklServiceFacade = {
321
+ id: SrklServiceDefinition.id,
322
+ name: SrklServiceDefinition.name,
323
+ version: SrklServiceDefinition.version,
324
+ runtime: "server",
325
+ deployment: "remote",
326
+ definition: SrklServiceDefinition,
327
+ createInstance: () => createService(SrklServiceDefinition),
328
+ execute: async (op, input) => {
329
+ await srklServiceInstance.start();
330
+ return srklServiceInstance.call(op, input);
331
+ }
332
+ };
333
+ var krnlSrklServiceDefinition = SrklServiceDefinition;
334
+ var krnlSrklServiceFacade = SrklServiceFacade;
262
335
 
263
336
  export {
264
337
  AuthServiceDefinition,
@@ -269,10 +342,24 @@ export {
269
342
  WorkspaceServiceFacade,
270
343
  ControlPlaneServiceDefinition,
271
344
  ControlPlaneServiceFacade,
272
- ExecutionServiceDefinition,
273
- ExecutionServiceFacade,
274
345
  DatabaseServiceDefinition,
275
346
  DatabaseServiceFacade,
276
347
  GeminiServiceDefinition,
277
- GeminiServiceFacade
348
+ GeminiServiceFacade,
349
+ krnlAuthServiceDefinition,
350
+ krnlAuthServiceFacade,
351
+ krnlStorageServiceDefinition,
352
+ krnlStorageServiceFacade,
353
+ krnlWorkspaceServiceDefinition,
354
+ krnlWorkspaceServiceFacade,
355
+ krnlControlPlaneServiceDefinition,
356
+ krnlControlPlaneServiceFacade,
357
+ krnlDatabaseServiceDefinition,
358
+ krnlDatabaseServiceFacade,
359
+ krnlGeminiServiceDefinition,
360
+ krnlGeminiServiceFacade,
361
+ SrklServiceDefinition,
362
+ SrklServiceFacade,
363
+ krnlSrklServiceDefinition,
364
+ krnlSrklServiceFacade
278
365
  };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  RateLimiter,
3
3
  SessionManager
4
- } from "./chunk-25Y7AVTP.js";
4
+ } from "./chunk-ZDH4XI7W.js";
5
5
 
6
6
  // src/auth/PasswordHasher.ts
7
7
  var bcrypt = null;
@@ -172,94 +172,9 @@ var AdminGuard = class _AdminGuard extends SkipoBase2 {
172
172
  }
173
173
  };
174
174
 
175
- // src/auth/UnifiedAuthCore.ts
176
- import bcrypt2 from "bcryptjs";
177
- async function loginSystemUser(email, rawPass, isAdmin, queryDb) {
178
- const normEmail = (email || "").trim().toLowerCase();
179
- const password = (rawPass || "").trim();
180
- if (!normEmail || !password) {
181
- return { success: false, status: 400, error: "Email and password are required" };
182
- }
183
- try {
184
- if (isAdmin) {
185
- const credRes = await queryDb(`SELECT * FROM "ultrst-credentials" WHERE id = 'system' LIMIT 1`, []);
186
- if (credRes.rows.length > 0) {
187
- const cred = credRes.rows[0];
188
- const matchEmail = (cred.admin_email || "").toLowerCase() === normEmail;
189
- const matchPass = cred.admin_password === password || cred.admin_password && bcrypt2.compareSync(password, cred.admin_password);
190
- if (matchEmail && matchPass) {
191
- return {
192
- success: true,
193
- status: 200,
194
- token: `adm_${Date.now()}_${Math.random().toString(36).slice(2)}`,
195
- user: { id: "admin_sys", email: cred.admin_email, username: "System Admin", name: "System Admin", role: "admin", status: "ACTIVE" }
196
- };
197
- }
198
- }
199
- }
200
- const uRes = await queryDb(`SELECT * FROM "ultrst-users" WHERE LOWER(email) = $1 LIMIT 1`, [normEmail]);
201
- if (uRes.rows.length === 0) {
202
- return { success: false, status: 401, error: "Invalid email or password" };
203
- }
204
- const user = uRes.rows[0];
205
- const hash = user.password_hash || "";
206
- let isMatch = false;
207
- if (hash.startsWith("$2a$") || hash.startsWith("$2b$")) {
208
- isMatch = bcrypt2.compareSync(password, hash);
209
- } else {
210
- isMatch = hash === password;
211
- }
212
- if (!isMatch) {
213
- return { success: false, status: 401, error: "Invalid email or password" };
214
- }
215
- if (isAdmin && user.role !== "admin") {
216
- return { success: false, status: 403, error: "Insufficient administrative privileges" };
217
- }
218
- return {
219
- success: true,
220
- status: 200,
221
- token: `usr_${Date.now()}_${Math.random().toString(36).slice(2)}`,
222
- user: {
223
- id: user.id,
224
- email: user.email,
225
- username: user.username || user.name || user.email.split("@")[0],
226
- name: user.name || user.username || "Ecosystem User",
227
- role: user.role || "user",
228
- status: user.status || "ACTIVE",
229
- appProfiles: typeof user.app_profiles === "string" ? JSON.parse(user.app_profiles) : user.app_profiles || {}
230
- }
231
- };
232
- } catch (err) {
233
- return { success: false, status: 500, error: err.message };
234
- }
235
- }
236
- async function resolveUserFromToken(tokenOrUserId, queryDb) {
237
- if (!tokenOrUserId) return null;
238
- let targetId = tokenOrUserId;
239
- if (targetId.startsWith("Bearer ")) targetId = targetId.slice(7).trim();
240
- if (targetId.startsWith("sess::")) {
241
- const parts = targetId.split("::");
242
- if (parts[1]) targetId = parts[1];
243
- }
244
- const res = await queryDb(`SELECT * FROM "ultrst-users" WHERE id = $1 OR LOWER(email) = LOWER($1) LIMIT 1`, [targetId]);
245
- if (res.rows.length === 0) return null;
246
- const u = res.rows[0];
247
- return {
248
- id: u.id,
249
- email: u.email,
250
- username: u.username || u.name || u.email.split("@")[0],
251
- name: u.name || u.username || "Ecosystem User",
252
- role: u.role || "user",
253
- status: u.status || "ACTIVE",
254
- appProfiles: typeof u.app_profiles === "string" ? JSON.parse(u.app_profiles) : u.app_profiles || {}
255
- };
256
- }
257
-
258
175
  export {
259
176
  PasswordHasher,
260
177
  BaseAccountProvider,
261
178
  LocalAccountProvider,
262
- AdminGuard,
263
- loginSystemUser,
264
- resolveUserFromToken
179
+ AdminGuard
265
180
  };
@@ -1,7 +1,3 @@
1
- import {
2
- b2ListBuckets
3
- } from "./chunk-4QEMALXF.js";
4
-
5
1
  // src/srkl/SrklClient.ts
6
2
  var CANONICAL_SRKL_URL = "https://srkl-engine.vercel.app";
7
3
  var SrklClient = class {
@@ -144,113 +140,6 @@ function createSrklClient(options = {}) {
144
140
  return new SrklClient(options);
145
141
  }
146
142
 
147
- // src/srkl/SrklDiscoveryService.ts
148
- var cachedSrklUrl = null;
149
- async function getPrimarySrklDeploymentUrl(queryDb) {
150
- if (cachedSrklUrl && Date.now() < cachedSrklUrl.expiresAt) return cachedSrklUrl.url;
151
- if (queryDb) {
152
- try {
153
- const res = await queryDb(
154
- `SELECT url FROM "ultrst-srkl-deployments" WHERE is_active = true ORDER BY is_primary DESC, priority DESC, created_at ASC LIMIT 1`,
155
- []
156
- );
157
- if (res.rows.length > 0 && res.rows[0].url) {
158
- const url = res.rows[0].url.trim().replace(/\/+$/, "");
159
- cachedSrklUrl = { url, expiresAt: Date.now() + 10 * 60 * 1e3 };
160
- return url;
161
- }
162
- } catch {
163
- }
164
- }
165
- const fallback = "https://srkl-engine.vercel.app";
166
- cachedSrklUrl = { url: fallback, expiresAt: Date.now() + 10 * 60 * 1e3 };
167
- return fallback;
168
- }
169
- async function getSrklAccounts(userId, service2, queryDb) {
170
- const srklUrl = await getPrimarySrklDeploymentUrl(queryDb);
171
- const accounts = [];
172
- const seenKeys = /* @__PURE__ */ new Set();
173
- if (queryDb && userId) {
174
- try {
175
- const uRes = await queryDb(`SELECT app_profiles FROM "ultrst-users" WHERE id = $1 LIMIT 1`, [userId]);
176
- if (uRes.rows.length > 0) {
177
- const p = typeof uRes.rows[0].app_profiles === "string" ? JSON.parse(uRes.rows[0].app_profiles) : uRes.rows[0].app_profiles || {};
178
- const pool = [
179
- ...p.srkl?.storage_connections || [],
180
- ...p.depm?.storage_connections || [],
181
- ...p.qwnsr?.storage_connections || [],
182
- ...p.loky?.storage_connections || []
183
- ];
184
- for (const conn of pool) {
185
- if (service2 && !conn.provider?.toLowerCase().includes(service2.toLowerCase())) continue;
186
- const kId = (conn.b2KeyId || conn.keyId || conn.accessKeyId || "").trim();
187
- const key = kId ? `key:${kId}` : `id:${conn.id}`;
188
- if (!seenKeys.has(key)) {
189
- seenKeys.add(key);
190
- accounts.push({
191
- id: conn.id,
192
- name: conn.label || conn.id,
193
- provider: conn.provider,
194
- serviceId: conn.provider,
195
- credentials: {
196
- keyId: conn.b2KeyId || conn.keyId,
197
- applicationKey: conn.b2ApplicationKey || conn.appKey,
198
- bucketName: conn.b2BucketName || conn.bucketName,
199
- region: conn.b2Region || conn.region,
200
- endpoint: conn.b2Endpoint || conn.endpoint
201
- }
202
- });
203
- }
204
- }
205
- }
206
- } catch {
207
- }
208
- }
209
- try {
210
- const res = await fetch(`${srklUrl}/api/ecosystem/services`, {
211
- headers: { "x-user-id": userId, Accept: "application/json" },
212
- signal: AbortSignal.timeout(5e3)
213
- });
214
- if (res.ok) {
215
- const data = await res.json();
216
- const list = Array.isArray(data.services) ? data.services : [];
217
- for (const item of list) {
218
- const sId = String(item.serviceId || item.id || "").toLowerCase();
219
- if (service2 && !sId.includes(service2.toLowerCase())) continue;
220
- const kId = (item.credentials?.keyId || item.credentials?.b2KeyId || "").trim();
221
- const key = kId ? `key:${kId}` : `id:${item.id}`;
222
- if (!seenKeys.has(key)) {
223
- seenKeys.add(key);
224
- accounts.push(item);
225
- }
226
- }
227
- }
228
- } catch {
229
- }
230
- return { success: true, deploymentUrl: srklUrl, count: accounts.length, accounts };
231
- }
232
- async function srklListBackblazeBuckets(keyId, applicationKey, _bucketId, _bucketName, userId, queryDb) {
233
- let resolvedKeyId = (keyId || "").trim();
234
- let resolvedAppKey = (applicationKey || "").trim();
235
- if ((!resolvedKeyId || !resolvedAppKey) && userId && queryDb) {
236
- const accountsRes = await getSrklAccounts(userId, "backblaze", queryDb);
237
- const matched = accountsRes.accounts.find((a) => (a.credentials?.keyId || a.credentials?.b2KeyId) === resolvedKeyId) || accountsRes.accounts[0];
238
- if (matched) {
239
- resolvedKeyId = matched.credentials?.keyId || matched.credentials?.b2KeyId || resolvedKeyId;
240
- resolvedAppKey = matched.credentials?.applicationKey || matched.credentials?.b2ApplicationKey || resolvedAppKey;
241
- }
242
- }
243
- if (!resolvedKeyId || !resolvedAppKey) {
244
- return { success: false, buckets: [], error: "Backblaze B2 Key ID and Application Key are required" };
245
- }
246
- try {
247
- const buckets = await b2ListBuckets(resolvedKeyId, resolvedAppKey);
248
- return { success: true, buckets };
249
- } catch (err) {
250
- return { success: false, buckets: [], error: err.message };
251
- }
252
- }
253
-
254
143
  // src/srkl/useSrklServices.ts
255
144
  import { useState, useEffect, useCallback, useMemo, useRef } from "react";
256
145
  function useSrklServices(options) {
@@ -627,9 +516,6 @@ export {
627
516
  CANONICAL_SRKL_URL,
628
517
  SrklClient,
629
518
  createSrklClient,
630
- getPrimarySrklDeploymentUrl,
631
- getSrklAccounts,
632
- srklListBackblazeBuckets,
633
519
  useSrklServices,
634
520
  hexToBytes,
635
521
  decryptVaultBufferInBrowser,