@standardagents/builder 0.41.16 → 0.41.17

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.
@@ -9948,6 +9948,24 @@ var init_platform_handoff_jtis = __esm({
9948
9948
  }
9949
9949
  });
9950
9950
 
9951
+ // src/durable-objects/agentbuilder-migrations/0022_application_roles.ts
9952
+ var migration60;
9953
+ var init_application_roles = __esm({
9954
+ "src/durable-objects/agentbuilder-migrations/0022_application_roles.ts"() {
9955
+ migration60 = {
9956
+ version: 22,
9957
+ async up(sql) {
9958
+ sql.exec(`CREATE TABLE platform_application_roles (
9959
+ platform_user_id TEXT PRIMARY KEY,
9960
+ roles TEXT NOT NULL DEFAULT '[]',
9961
+ roles_version INTEGER NOT NULL DEFAULT 0
9962
+ )`);
9963
+ sql.exec(`INSERT OR REPLACE INTO _metadata (key, value) VALUES ('schema_version', '22')`);
9964
+ }
9965
+ };
9966
+ }
9967
+ });
9968
+
9951
9969
  // src/durable-objects/agentbuilder-migrations/index.ts
9952
9970
  var migrations2;
9953
9971
  var init_agentbuilder_migrations = __esm({
@@ -9973,9 +9991,10 @@ var init_agentbuilder_migrations = __esm({
9973
9991
  init_scope_skills();
9974
9992
  init_websocket_tickets();
9975
9993
  init_platform_handoff_jtis();
9976
- migrations2 = [migration39, migration40, migration41, migration42, migration43, migration44, migration45, migration46, migration47, migration48, migration49, migration50, migration51, migration52, migration53, migration54, migration55, migration56, migration57, migration58, migration59];
9994
+ init_application_roles();
9995
+ migrations2 = [migration39, migration40, migration41, migration42, migration43, migration44, migration45, migration46, migration47, migration48, migration49, migration50, migration51, migration52, migration53, migration54, migration55, migration56, migration57, migration58, migration59, migration60];
9977
9996
  migrations2.reduce(
9978
- (max, migration60) => Math.max(max, migration60.version),
9997
+ (max, migration61) => Math.max(max, migration61.version),
9979
9998
  0
9980
9999
  );
9981
10000
  }
@@ -13781,9 +13800,9 @@ var init_DurableThread = __esm({
13781
13800
  * Each migration is run in order, starting from the current version + 1.
13782
13801
  */
13783
13802
  async runMigrations(fromVersion) {
13784
- for (const migration60 of migrations) {
13785
- if (migration60.version > fromVersion) {
13786
- await migration60.up(this.ctx.storage.sql);
13803
+ for (const migration61 of migrations) {
13804
+ if (migration61.version > fromVersion) {
13805
+ await migration61.up(this.ctx.storage.sql);
13787
13806
  }
13788
13807
  }
13789
13808
  }
@@ -25378,6 +25397,7 @@ var init_ThreadStateImpl = __esm({
25378
25397
  username: user.username,
25379
25398
  role: user.role,
25380
25399
  permissions: user.permissions ?? null,
25400
+ roles: user.roles ?? [],
25381
25401
  email: user.email ?? null,
25382
25402
  display_name: user.display_name ?? null,
25383
25403
  avatar_url: user.avatar_url ?? null
@@ -78945,6 +78965,8 @@ function parseWebSocketTicketAuth(authJson) {
78945
78965
  if (typeof user.id !== "string" || typeof user.username !== "string" || typeof user.role !== "string" || record24.authType !== "super_admin" && record24.authType !== "session" && record24.authType !== "api_key") {
78946
78966
  return null;
78947
78967
  }
78968
+ const roles = user.roles;
78969
+ if (roles !== void 0 && (!Array.isArray(roles) || !roles.every((role) => typeof role === "string"))) return null;
78948
78970
  const permissions = user.permissions;
78949
78971
  if (permissions !== void 0 && permissions !== null && (!Array.isArray(permissions) || !permissions.every((permission) => typeof permission === "string"))) {
78950
78972
  return null;
@@ -78956,6 +78978,7 @@ function parseWebSocketTicketAuth(authJson) {
78956
78978
  username: user.username,
78957
78979
  role: user.role,
78958
78980
  permissions,
78981
+ roles: Array.isArray(roles) ? roles : [],
78959
78982
  platform_user_id: typeof user.platform_user_id === "string" ? user.platform_user_id : null,
78960
78983
  email: typeof user.email === "string" ? user.email : null,
78961
78984
  display_name: typeof user.display_name === "string" ? user.display_name : null,
@@ -78979,7 +79002,19 @@ async function consumeWebSocketTicket(request, env2) {
78979
79002
  ticket_hash: await hashToken(ticket),
78980
79003
  pathname: url.pathname
78981
79004
  });
78982
- return typeof authJson === "string" ? parseWebSocketTicketAuth(authJson) : null;
79005
+ const context = typeof authJson === "string" ? parseWebSocketTicketAuth(authJson) : null;
79006
+ if (!context || context.authType === "super_admin") return context;
79007
+ const user = await getAgentBuilder(env2).getUserById(context.user.id);
79008
+ if (!user) return null;
79009
+ return {
79010
+ ...context,
79011
+ user: {
79012
+ ...context.user,
79013
+ role: user.role,
79014
+ permissions: parsePermissions(user.permissions),
79015
+ roles: user.roles ?? []
79016
+ }
79017
+ };
78983
79018
  }
78984
79019
  function isWebSocketTicketPath(pathname) {
78985
79020
  if (!pathname.startsWith("/api/") || pathname.includes("?") || pathname.includes("#")) return false;
@@ -79010,7 +79045,8 @@ async function authenticate(request, env2) {
79010
79045
  user: {
79011
79046
  id: "super_admin",
79012
79047
  username: "admin",
79013
- role: "admin"
79048
+ role: "admin",
79049
+ roles: []
79014
79050
  },
79015
79051
  authType: "super_admin"
79016
79052
  };
@@ -79031,6 +79067,7 @@ async function authenticate(request, env2) {
79031
79067
  username: user.username,
79032
79068
  role: user.role,
79033
79069
  permissions: parsePermissions(user.permissions),
79070
+ roles: user.roles ?? [],
79034
79071
  platform_user_id: user.platform_user_id ?? null,
79035
79072
  email: user.email ?? null,
79036
79073
  display_name: user.display_name ?? null,
@@ -79054,6 +79091,7 @@ async function authenticate(request, env2) {
79054
79091
  username: user.username,
79055
79092
  role: user.role,
79056
79093
  permissions: parsePermissions(user.permissions),
79094
+ roles: user.roles ?? [],
79057
79095
  platform_user_id: user.platform_user_id ?? null,
79058
79096
  email: user.email ?? null,
79059
79097
  display_name: user.display_name ?? null,
@@ -79332,6 +79370,8 @@ function normalizeLocalBootstrap(payload, endpoint) {
79332
79370
  id: platformUserId,
79333
79371
  username,
79334
79372
  role,
79373
+ roles: Array.isArray(payload.user?.roles) && payload.user.roles.every((role2) => typeof role2 === "string") ? payload.user.roles : [],
79374
+ roles_version: typeof payload.user?.roles_version === "number" ? payload.user.roles_version : 0,
79335
79375
  email: typeof payload.user?.email === "string" ? payload.user.email : null,
79336
79376
  display_name: typeof payload.user?.display_name === "string" ? payload.user.display_name : null,
79337
79377
  avatar_url: typeof payload.user?.avatar_url === "string" ? payload.user.avatar_url : null,
@@ -79389,7 +79429,9 @@ async function upsertReplicaUserForPlatformProfile(env2, profile) {
79389
79429
  email: profile.email ?? null,
79390
79430
  avatar_url: profile.avatar_url ?? null,
79391
79431
  role: profile.role ?? "admin",
79392
- permissions: profile.permissions ?? null
79432
+ permissions: profile.permissions ?? null,
79433
+ roles: profile.roles ?? [],
79434
+ roles_version: profile.roles_version
79393
79435
  });
79394
79436
  }
79395
79437
  async function mintLocalSessionForPlatformUser(env2, platformUser) {
@@ -79403,7 +79445,7 @@ async function mintLocalSessionForPlatformUser(env2, platformUser) {
79403
79445
  const tokenHash = await hashToken(token);
79404
79446
  const expiresAt = Math.floor(Date.now() / 1e3) + SESSION_TTL_SECONDS;
79405
79447
  await agentBuilder.createSession({ user_id: user.id, token_hash: tokenHash, expires_at: expiresAt });
79406
- return { token, user: { id: user.id, username: user.username, role: user.role } };
79448
+ return { token, user: { id: user.id, username: user.username, role: user.role, roles: user.roles ?? [] } };
79407
79449
  }
79408
79450
  async function consumePlatformHandoffJti(env2, jti, expiresAt) {
79409
79451
  return agentBuilderAuthStub(env2).consumePlatformHandoffJti({
@@ -79431,7 +79473,9 @@ async function createPlatformLocalSession(request, env2) {
79431
79473
  display_name: identity.user.display_name ?? null,
79432
79474
  email: identity.user.email ?? null,
79433
79475
  avatar_url: identity.user.avatar_url ?? null,
79434
- role: identity.user.role
79476
+ role: identity.user.role,
79477
+ roles: identity.user.roles ?? [],
79478
+ roles_version: identity.user.roles_version
79435
79479
  });
79436
79480
  const token = generateUserToken();
79437
79481
  const tokenHash = await hashToken(token);
@@ -79446,7 +79490,8 @@ async function createPlatformLocalSession(request, env2) {
79446
79490
  user: {
79447
79491
  id: user.id,
79448
79492
  username: user.username,
79449
- role: user.role
79493
+ role: user.role,
79494
+ roles: user.roles ?? []
79450
79495
  },
79451
79496
  authType: "platform_token",
79452
79497
  platform: identity
@@ -79698,7 +79743,7 @@ var config_get_default = defineController2(async ({ config, env: env2, req }) =>
79698
79743
  });
79699
79744
 
79700
79745
  // src/version.ts
79701
- var BUILDER_VERSION = "0.41.16".length > 0 ? "0.41.16" : "dev";
79746
+ var BUILDER_VERSION = "0.41.17".length > 0 ? "0.41.17" : "dev";
79702
79747
 
79703
79748
  // src/api/diagnostics.get.ts
79704
79749
  init_LLMRequest();
@@ -82466,6 +82511,7 @@ var platform_replica_post_default = defineController2(async ({ req, env: env2 })
82466
82511
  const agentBuilder = env2.AGENT_BUILDER.get(env2.AGENT_BUILDER.idFromName("singleton"));
82467
82512
  const result = await agentBuilder.applyPlatformReplicaSnapshot({
82468
82513
  users: payload.users,
82514
+ role_revocations: payload.role_revocations,
82469
82515
  api_keys: payload.api_keys ?? []
82470
82516
  });
82471
82517
  return Response.json({ ok: true, ...result });
@@ -86320,7 +86366,9 @@ var callback_get_default = defineController2(async ({ req, env: env2 }) => {
86320
86366
  email: payload.email ?? null,
86321
86367
  avatar_url: payload.avatar_url ?? null,
86322
86368
  role: payload.role,
86323
- permissions: payload.permissions ?? null
86369
+ permissions: payload.permissions ?? null,
86370
+ roles: payload.roles ?? [],
86371
+ roles_version: payload.roles_version
86324
86372
  });
86325
86373
  const returnTo = failReturnTo;
86326
86374
  const headers = new Headers({
@@ -86774,7 +86822,9 @@ async function resolveDeviceApprovalIdentity(req, env2) {
86774
86822
  email: payload.email ?? null,
86775
86823
  avatar_url: payload.avatar_url ?? null,
86776
86824
  role: payload.role,
86777
- permissions: payload.permissions ?? null
86825
+ permissions: payload.permissions ?? null,
86826
+ roles: payload.roles ?? [],
86827
+ roles_version: payload.roles_version
86778
86828
  };
86779
86829
  return {
86780
86830
  confirmationSubject: `platform:${payload.platform_user_id}`,