@agent-team-foundation/first-tree-hub 0.14.3 → 0.14.5

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,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import "../observability-BAScT_5S-BcW9HgkG.mjs";
3
- import { $ as formatStaleReason, A as checkDocker, B as isServiceSupported, C as createApiNameResolver, D as checkBackgroundService, E as checkAgentConfigs, F as checkWebSocket, H as restartClientService, I as printResults, J as stopPostgres, L as reconcileAgentConfigs, M as checkServerConfig, N as checkServerHealth, O as checkClientConfig, P as checkServerReachable, Q as findStaleAliases, R as getClientServiceStatus, S as runHomeMigration, T as runMigrations, U as startClientService, W as stopClientService, X as handleClientOrgMismatch, Y as ClientRuntime, _ as formatCheckReport, a as declineUpdate, at as fail, b as onboardCreate, c as detectInstallMode, ct as ClientUserMismatchError, d as startServer, dt as SessionRegistry, et as removeLocalAgent, f as reconcileLocalRuntimeProviders, ft as cleanWorkspaces, g as promptMissingFields, h as promptAddAgent, ht as configureClientLoggerForService, i as createExecuteUpdate, it as resolveSenderName, j as checkNodeVersion, k as checkDatabase, l as fetchLatestVersion, lt as FirstTreeHubSDK, m as isInteractive, mt as applyClientLoggerConfig, o as promptUpdate, ot as success, p as uploadClientCapabilities, pt as probeCapabilities, r as registerSaaSConnectCommand, rt as resolveReplyToFromEnv, s as PACKAGE_NAME, st as ClientOrgMismatchError, tt as createOwner, u as installGlobalLatest, ut as SdkError, v as loadOnboardState, w as migrateLocalAgentDirs, x as saveOnboardState, y as onboardCheck, z as installClientService } from "../saas-connect-ChxZv2YQ.mjs";
3
+ import { $ as formatStaleReason, A as checkDocker, B as isServiceSupported, C as createApiNameResolver, D as checkBackgroundService, E as checkAgentConfigs, F as checkWebSocket, H as restartClientService, I as printResults, J as stopPostgres, L as reconcileAgentConfigs, M as checkServerConfig, N as checkServerHealth, O as checkClientConfig, P as checkServerReachable, Q as findStaleAliases, R as getClientServiceStatus, S as runHomeMigration, T as runMigrations, U as startClientService, W as stopClientService, X as handleClientOrgMismatch, Y as ClientRuntime, _ as formatCheckReport, a as declineUpdate, at as fail, b as onboardCreate, c as detectInstallMode, ct as ClientUserMismatchError, d as startServer, dt as SessionRegistry, et as removeLocalAgent, f as reconcileLocalRuntimeProviders, ft as cleanWorkspaces, g as promptMissingFields, h as promptAddAgent, ht as configureClientLoggerForService, i as createExecuteUpdate, it as resolveSenderName, j as checkNodeVersion, k as checkDatabase, l as fetchLatestVersion, lt as FirstTreeHubSDK, m as isInteractive, mt as applyClientLoggerConfig, o as promptUpdate, ot as success, p as uploadClientCapabilities, pt as probeCapabilities, r as registerSaaSConnectCommand, rt as resolveReplyToFromEnv, s as PACKAGE_NAME, st as ClientOrgMismatchError, tt as createOwner, u as installGlobalLatest, ut as SdkError, v as loadOnboardState, w as migrateLocalAgentDirs, x as saveOnboardState, y as onboardCheck, z as installClientService } from "../saas-connect-CYp9TOB5.mjs";
4
4
  import "../logger-core-BTmvdflj-DjW8FM4T.mjs";
5
5
  import { C as resetConfigMeta, E as setConfigValue, S as resetConfig, T as serverConfigSchema, _ as getConfigValue, a as ensureFreshAdminToken, c as resolveServerUrl, d as DEFAULT_CONFIG_DIR, f as DEFAULT_DATA_DIR, h as clientConfigSchema, i as ensureFreshAccessToken, l as saveAgentConfig, m as agentConfigSchema, o as loadCredentials, p as DEFAULT_HOME_DIR, v as initConfig, w as resolveConfigReadonly, x as readConfigFile, y as loadAgents } from "../bootstrap-CQQGgIx1.mjs";
6
6
  import { a as print, n as CLI_USER_AGENT, o as setJsonMode, r as COMMAND_VERSION, t as cliFetch } from "../cli-fetch--tiwKm5S.mjs";
7
- import "../dist-CwsiHGX7.mjs";
8
- import { n as bindFeishuUser, t as bindFeishuBot } from "../feishu-DHSy6WDD.mjs";
7
+ import "../dist-CrdnqZjv.mjs";
8
+ import { n as bindFeishuUser, t as bindFeishuBot } from "../feishu-DNoBroKK.mjs";
9
9
  import "../uuid-DbS_4vFh-iFghv4zA.mjs";
10
10
  import "../src-DNBS5Yjj.mjs";
11
- import "../client-BSfCc0pJ-BP_1f21y.mjs";
11
+ import "../client-BPRIfrOT-CoV_2o7e.mjs";
12
12
  import "../invitation-D_ENPHyj-5ETiae5r.mjs";
13
13
  import { join } from "node:path";
14
14
  import { existsSync, mkdirSync, readFileSync, readdirSync } from "node:fs";
@@ -1,10 +1,10 @@
1
1
  import { A as FIRST_TREE_HUB_ATTR, O as withSpan, f as messageAttrs, s as createLogger } from "./observability-BAScT_5S-BcW9HgkG.mjs";
2
- import { L as extractMentions, N as defaultParticipantMode, P as defaultRuntimeConfigPayload, S as clientCapabilitiesSchema, St as stripCode, Z as isReservedAgentName, a as AGENT_TYPES, b as agentTypeSchema, ct as questionAnswerMessageContentSchema, d as MENTION_REGEX, i as AGENT_STATUSES, l as GITHUB_ENTITY_TYPES, lt as questionMessageContentSchema, mt as scanMentionTokens, n as AGENT_NAME_REGEX, nt as messageSourceSchema, o as AGENT_VISIBILITY, s as CHAT_ENGAGEMENT_STATUSES } from "./dist-CwsiHGX7.mjs";
2
+ import { L as extractMentions, N as defaultParticipantMode, P as defaultRuntimeConfigPayload, S as clientCapabilitiesSchema, St as stripCode, Z as isReservedAgentName, a as AGENT_TYPES, b as agentTypeSchema, ct as questionAnswerMessageContentSchema, d as MENTION_REGEX, i as AGENT_STATUSES, l as GITHUB_ENTITY_TYPES, lt as questionMessageContentSchema, mt as scanMentionTokens, n as AGENT_NAME_REGEX, nt as messageSourceSchema, o as AGENT_VISIBILITY, s as CHAT_ENGAGEMENT_STATUSES } from "./dist-CrdnqZjv.mjs";
3
3
  import { a as ClientUserMismatchError, c as NotFoundError, d as users, f as uuidv7, o as ConflictError, r as BadRequestError, s as ForbiddenError, t as AgentSendNonMemberError, u as organizations } from "./uuid-DbS_4vFh-iFghv4zA.mjs";
4
4
  import { randomUUID } from "node:crypto";
5
5
  import { and, asc, count, desc, eq, gt, gte, inArray, isNotNull, lt, ne, or, sql } from "drizzle-orm";
6
6
  import { bigserial, boolean, customType, index, integer, jsonb, pgTable, primaryKey, serial, text, timestamp, unique } from "drizzle-orm/pg-core";
7
- //#region ../server/dist/client-BSfCc0pJ.mjs
7
+ //#region ../server/dist/client-BPRIfrOT.mjs
8
8
  /**
9
9
  * Client connections. A client is a single SDK process (AgentRuntime) that may
10
10
  * host multiple agents. From the unified-user-token milestone on, a client is
@@ -725,8 +725,10 @@ async function listAgentsManagedByUser(db, userId) {
725
725
  inboxId: agents.inboxId,
726
726
  visibility: agents.visibility,
727
727
  runtimeProvider: agents.runtimeProvider,
728
- clientId: agents.clientId
729
- }).from(agents).innerJoin(members, eq(agents.managerId, members.id)).where(and(eq(members.userId, userId), eq(members.status, "active"), ne(agents.status, AGENT_STATUSES.DELETED)));
728
+ clientId: agents.clientId,
729
+ avatarImageUpdatedAt: agents.avatarImageUpdatedAt,
730
+ userAvatarUrl: users.avatarUrl
731
+ }).from(agents).innerJoin(members, eq(agents.managerId, members.id)).leftJoin(users, eq(users.id, members.userId)).where(and(eq(members.userId, userId), eq(members.status, "active"), ne(agents.status, AGENT_STATUSES.DELETED)));
730
732
  }
731
733
  /**
732
734
  * Resolve the UUID of the "default" organization. Internal use only —
@@ -1166,6 +1168,36 @@ function agentAvatarImageUrl(uuid, updatedAt) {
1166
1168
  return `/api/v1/agents/${uuid}/avatar?v=${updatedAt.getTime()}`;
1167
1169
  }
1168
1170
  /**
1171
+ * Resolve the public avatar image URL for an agent, considering both the
1172
+ * manager-uploaded image and — for human agents — the user's external
1173
+ * avatar URL (e.g. GitHub `users.avatar_url` injected by OAuth). Returns
1174
+ * `null` when neither source is available; the renderer then falls back
1175
+ * to color + initial.
1176
+ *
1177
+ * Priority: uploaded image > human user's avatar > null. The "upload
1178
+ * wins" rule gives users explicit control: once they upload a custom
1179
+ * avatar for their human agent it always shows, regardless of any later
1180
+ * GitHub avatar change.
1181
+ */
1182
+ function resolveAvatarImageUrl(args) {
1183
+ const uploaded = agentAvatarImageUrl(args.uuid, args.avatarImageUpdatedAt);
1184
+ if (uploaded) return uploaded;
1185
+ if (args.type === AGENT_TYPES.HUMAN && args.userAvatarUrl) return args.userAvatarUrl;
1186
+ return null;
1187
+ }
1188
+ /**
1189
+ * Look up the external user-avatar URL backing a human agent via the
1190
+ * `members.agent_id → members.user_id → users.avatar_url` path. Returns
1191
+ * `null` for non-human agents or when the user has no avatar URL
1192
+ * captured (e.g. signed in without GitHub OAuth). Used by single-agent
1193
+ * API responses; list endpoints inline the join in their SELECT.
1194
+ */
1195
+ async function fetchUserAvatarForHumanAgent(db, agent) {
1196
+ if (agent.type !== AGENT_TYPES.HUMAN) return null;
1197
+ const [row] = await db.select({ avatarUrl: users.avatarUrl }).from(members).innerJoin(users, eq(members.userId, users.id)).where(eq(members.agentId, agent.uuid)).limit(1);
1198
+ return row?.avatarUrl ?? null;
1199
+ }
1200
+ /**
1169
1201
  * True iff `clients.metadata.capabilities` is a non-empty object — i.e. the
1170
1202
  * client has reported at least one runtime probe result. Used to distinguish
1171
1203
  * "we don't know what's installed yet" (empty / never reported) from
@@ -1426,13 +1458,14 @@ async function listAgentsForAdmin(db, scope, limit, cursor) {
1426
1458
  runtimeProvider: agents.runtimeProvider,
1427
1459
  avatarColorToken: agents.avatarColorToken,
1428
1460
  avatarImageUpdatedAt: agents.avatarImageUpdatedAt,
1461
+ userAvatarUrl: users.avatarUrl,
1429
1462
  createdAt: agents.createdAt,
1430
1463
  updatedAt: agents.updatedAt,
1431
1464
  presenceStatus: agentPresence.status,
1432
1465
  runtimeType: agentPresence.runtimeType,
1433
1466
  runtimeState: agentPresence.runtimeState,
1434
1467
  activeSessions: agentPresence.activeSessions
1435
- }).from(agents).leftJoin(agentPresence, eq(agents.uuid, agentPresence.agentId)).where(where).orderBy(desc(agents.createdAt)).limit(limit + 1);
1468
+ }).from(agents).leftJoin(agentPresence, eq(agents.uuid, agentPresence.agentId)).leftJoin(members, eq(members.agentId, agents.uuid)).leftJoin(users, eq(users.id, members.userId)).where(where).orderBy(desc(agents.createdAt)).limit(limit + 1);
1436
1469
  const hasMore = rows.length > limit;
1437
1470
  const items = hasMore ? rows.slice(0, limit) : rows;
1438
1471
  const last = items[items.length - 1];
@@ -1466,13 +1499,14 @@ async function listAgentsForMember(db, scope, limit, cursor, type) {
1466
1499
  runtimeProvider: agents.runtimeProvider,
1467
1500
  avatarColorToken: agents.avatarColorToken,
1468
1501
  avatarImageUpdatedAt: agents.avatarImageUpdatedAt,
1502
+ userAvatarUrl: users.avatarUrl,
1469
1503
  createdAt: agents.createdAt,
1470
1504
  updatedAt: agents.updatedAt,
1471
1505
  presenceStatus: agentPresence.status,
1472
1506
  runtimeType: agentPresence.runtimeType,
1473
1507
  runtimeState: agentPresence.runtimeState,
1474
1508
  activeSessions: agentPresence.activeSessions
1475
- }).from(agents).leftJoin(agentPresence, eq(agents.uuid, agentPresence.agentId)).where(where).orderBy(desc(agents.createdAt)).limit(limit + 1);
1509
+ }).from(agents).leftJoin(agentPresence, eq(agents.uuid, agentPresence.agentId)).leftJoin(members, eq(members.agentId, agents.uuid)).leftJoin(users, eq(users.id, members.userId)).where(where).orderBy(desc(agents.createdAt)).limit(limit + 1);
1476
1510
  const hasMore = rows.length > limit;
1477
1511
  const items = hasMore ? rows.slice(0, limit) : rows;
1478
1512
  const last = items[items.length - 1];
@@ -3491,13 +3525,21 @@ async function getChatDetail(db, chatId, selfAgentId = null) {
3491
3525
  displayName: p.displayName,
3492
3526
  type: p.type
3493
3527
  }));
3528
+ const viewerMembershipKind = await resolveViewerMembershipKind(db, chatId, selfAgentId);
3494
3529
  return {
3495
3530
  ...chat,
3496
3531
  participants,
3497
3532
  title,
3498
- firstMessagePreview
3533
+ firstMessagePreview,
3534
+ viewerMembershipKind
3499
3535
  };
3500
3536
  }
3537
+ async function resolveViewerMembershipKind(db, chatId, viewerAgentId) {
3538
+ if (!viewerAgentId) return null;
3539
+ const [row] = await db.select({ accessMode: chatMembership.accessMode }).from(chatMembership).where(and(eq(chatMembership.chatId, chatId), eq(chatMembership.agentId, viewerAgentId))).limit(1);
3540
+ if (!row) return null;
3541
+ return row.accessMode === "speaker" ? "participant" : "watching";
3542
+ }
3501
3543
  async function listChats(db, agentId, limit, cursor) {
3502
3544
  const chatIds = (await db.select({ chatId: chatMembership.chatId }).from(chatMembership).where(and(eq(chatMembership.agentId, agentId), eq(chatMembership.accessMode, "speaker")))).map((r) => r.chatId);
3503
3545
  if (chatIds.length === 0) return {
@@ -4185,4 +4227,4 @@ async function cleanupStaleClients(db, staleSeconds = 60) {
4185
4227
  return result.length;
4186
4228
  }
4187
4229
  //#endregion
4188
- export { heartbeatClient as $, unbindAgent as $t, createChat as A, pruneStaleSilentEntries as At, filterSessionsByParticipant as B, resolveDefaultOrgId as Bt, claimBacklogForPush as C, markMeChatUnread as Ct, clearAgentAvatarImage as D, notifyRecipients as Dt, cleanupStalePresence as E, messages as Et, disconnectClient as F, registerClient as Ft, getCachedAudience as G, setAgentAvatarImage as Gt, getActivityOverview as H, sendMessage as Ht, editMessage as I, removeParticipant as It, getClient as J, setRuntimeState as Jt, getCallerEngagement as K, setChatEngagement as Kt, ensureDefaultOrganization as L, resetActivity as Lt, createNotifier as M, rebindAgent as Mt, deleteAgent as N, recomputeWatchersForMember as Nt, clients as O, pendingQuestions as Ot, deriveAuthState as P, registerChatMessageDispatcher as Pt, getSession as Q, touchAgent as Qt, ensureParticipant as R, resetTimedOutEntries as Rt, claimAndBuildForPush as S, markMeChatRead as St, cleanupStaleClients as T, members as Tt, getAgent as U, sendToAgent as Ut, findOrCreateDirectChat as V, retireClient as Vt, getAgentAvatarImage as W, serverInstances as Wt, getOrganization as X, suspendAgent as Xt, getOnlineCount as Y, submitAnswer as Yt, getPresence as Z, suspendSession as Zt, bindAgent as _, listClientsForOrgAdmin as _t, adapterConfigs as a, leaveMeChat as at, chats as b, listMessages as bt, addParticipant as c, listAgentsForAdmin as ct, agentConfigs as d, listAgentsWithRuntime as dt, updateAgent as en, heartbeatInstance as et, agentPresence as f, listAllSessions as ft, assertParticipant as g, listClients as gt, assertClientOwner as h, listChatsForMember as ht, adapterAgentMappings as i, leaveChat as it, createMeChat as j, reactivateAgent as jt, createAgent as k, pollInbox as kt, agentAvatarImageUrl as l, listAgentsForMember as lt, archiveSession as m, listChats as mt, SUPPORTED_AVATAR_IMAGE_MIMES as n, updateOrganization as nn, joinChat as nt, addChatParticipants as o, listActiveAgentsPinnedToClient as ot, agents as p, listChatParticipantsWithNames as pt, getChatDetail as q, setOffline as qt, ackEntryByIdForBoundAgents as r, upsertSessionState as rn, joinMeChat as rt, addMeChatParticipants as s, listAgentSessions as st, MAX_AVATAR_IMAGE_BYTES as t, updateClientCapabilities as tn, inboxEntries as tt, agentChatSessions as u, listAgentsManagedByUser as ut, chatMembership as v, listMeChatSourceCounts as vt, claimClient as w, markStaleAgents as wt, checkAgentNameAvailability as x, listMyPinnedAgents as xt, chatUserState as y, listMeChats as yt, extractSummary as z, resolveChatTitle as zt };
4230
+ export { getSession as $, suspendSession as $t, createChat as A, pollInbox as At, fetchUserAvatarForHumanAgent as B, resolveAvatarImageUrl as Bt, claimBacklogForPush as C, markMeChatRead as Ct, clearAgentAvatarImage as D, messages as Dt, cleanupStalePresence as E, members as Et, disconnectClient as F, registerChatMessageDispatcher as Ft, getAgentAvatarImage as G, sendToAgent as Gt, findOrCreateDirectChat as H, resolveDefaultOrgId as Ht, editMessage as I, registerClient as It, getChatDetail as J, setChatEngagement as Jt, getCachedAudience as K, serverInstances as Kt, ensureDefaultOrganization as L, removeParticipant as Lt, createNotifier as M, reactivateAgent as Mt, deleteAgent as N, rebindAgent as Nt, clients as O, notifyRecipients as Ot, deriveAuthState as P, recomputeWatchersForMember as Pt, getPresence as Q, suspendAgent as Qt, ensureParticipant as R, resetActivity as Rt, claimAndBuildForPush as S, listMyPinnedAgents as St, cleanupStaleClients as T, markStaleAgents as Tt, getActivityOverview as U, retireClient as Ut, filterSessionsByParticipant as V, resolveChatTitle as Vt, getAgent as W, sendMessage as Wt, getOnlineCount as X, setRuntimeState as Xt, getClient as Y, setOffline as Yt, getOrganization as Z, submitAnswer as Zt, bindAgent as _, listClients as _t, adapterConfigs as a, upsertSessionState as an, leaveChat as at, chats as b, listMeChats as bt, addParticipant as c, listAgentSessions as ct, agentConfigs as d, listAgentsManagedByUser as dt, touchAgent as en, heartbeatClient as et, agentPresence as f, listAgentsWithRuntime as ft, assertParticipant as g, listChatsForMember as gt, assertClientOwner as h, listChats as ht, adapterAgentMappings as i, updateOrganization as in, joinMeChat as it, createMeChat as j, pruneStaleSilentEntries as jt, createAgent as k, pendingQuestions as kt, agentAvatarImageUrl as l, listAgentsForAdmin as lt, archiveSession as m, listChatParticipantsWithNames as mt, SUPPORTED_AVATAR_IMAGE_MIMES as n, updateAgent as nn, inboxEntries as nt, addChatParticipants as o, leaveMeChat as ot, agents as p, listAllSessions as pt, getCallerEngagement as q, setAgentAvatarImage as qt, ackEntryByIdForBoundAgents as r, updateClientCapabilities as rn, joinChat as rt, addMeChatParticipants as s, listActiveAgentsPinnedToClient as st, MAX_AVATAR_IMAGE_BYTES as t, unbindAgent as tn, heartbeatInstance as tt, agentChatSessions as u, listAgentsForMember as ut, chatMembership as v, listClientsForOrgAdmin as vt, claimClient as w, markMeChatUnread as wt, checkAgentNameAvailability as x, listMessages as xt, chatUserState as y, listMeChatSourceCounts as yt, extractSummary as z, resetTimedOutEntries as zt };
@@ -1,7 +1,7 @@
1
1
  import "./observability-BAScT_5S-BcW9HgkG.mjs";
2
2
  import "./logger-core-BTmvdflj-DjW8FM4T.mjs";
3
- import "./dist-CwsiHGX7.mjs";
3
+ import "./dist-CrdnqZjv.mjs";
4
4
  import "./uuid-DbS_4vFh-iFghv4zA.mjs";
5
5
  import "./src-DNBS5Yjj.mjs";
6
- import { xt as listMyPinnedAgents } from "./client-BSfCc0pJ-BP_1f21y.mjs";
6
+ import { St as listMyPinnedAgents } from "./client-BPRIfrOT-CoV_2o7e.mjs";
7
7
  export { listMyPinnedAgents };
@@ -756,7 +756,8 @@ z.object({
756
756
  participants: z.array(chatParticipantDetailSchema),
757
757
  title: z.string(),
758
758
  firstMessagePreview: z.string().nullable(),
759
- engagementStatus: chatEngagementStatusSchema
759
+ engagementStatus: chatEngagementStatusSchema,
760
+ viewerMembershipKind: z.enum(["participant", "watching"]).nullable()
760
761
  });
761
762
  const updateChatSchema = z.object({ topic: z.string().trim().max(500).nullable() });
762
763
  /**
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./chunk-BSw8zbkd.mjs";
2
2
  import { t as cliFetch } from "./cli-fetch--tiwKm5S.mjs";
3
- import { r as AGENT_SELECTOR_HEADER } from "./dist-CwsiHGX7.mjs";
3
+ import { r as AGENT_SELECTOR_HEADER } from "./dist-CrdnqZjv.mjs";
4
4
  //#region src/core/feishu.ts
5
5
  var feishu_exports = /* @__PURE__ */ __exportAll({
6
6
  bindFeishuBot: () => bindFeishuBot,
package/dist/index.mjs CHANGED
@@ -1,12 +1,12 @@
1
1
  import "./observability-BAScT_5S-BcW9HgkG.mjs";
2
- import { A as checkDocker, B as isServiceSupported, E as checkAgentConfigs, F as checkWebSocket, G as uninstallClientService, H as restartClientService, I as printResults, J as stopPostgres, K as ensurePostgres, M as checkServerConfig, N as checkServerHealth, O as checkClientConfig, P as checkServerReachable, R as getClientServiceStatus, S as runHomeMigration, T as runMigrations, U as startClientService, V as resolveCliInvocation, W as stopClientService, X as handleClientOrgMismatch, Y as ClientRuntime, Z as rotateClientIdWithBackup, _ as formatCheckReport, b as onboardCreate, d as startServer, g as promptMissingFields, h as promptAddAgent, j as checkNodeVersion, k as checkDatabase, lt as FirstTreeHubSDK, m as isInteractive, n as deriveHubUrlFromToken, nt as hasUser, q as isDockerAvailable, t as HubUrlDerivationError, tt as createOwner, ut as SdkError, y as onboardCheck, z as installClientService } from "./saas-connect-ChxZv2YQ.mjs";
2
+ import { A as checkDocker, B as isServiceSupported, E as checkAgentConfigs, F as checkWebSocket, G as uninstallClientService, H as restartClientService, I as printResults, J as stopPostgres, K as ensurePostgres, M as checkServerConfig, N as checkServerHealth, O as checkClientConfig, P as checkServerReachable, R as getClientServiceStatus, S as runHomeMigration, T as runMigrations, U as startClientService, V as resolveCliInvocation, W as stopClientService, X as handleClientOrgMismatch, Y as ClientRuntime, Z as rotateClientIdWithBackup, _ as formatCheckReport, b as onboardCreate, d as startServer, g as promptMissingFields, h as promptAddAgent, j as checkNodeVersion, k as checkDatabase, lt as FirstTreeHubSDK, m as isInteractive, n as deriveHubUrlFromToken, nt as hasUser, q as isDockerAvailable, t as HubUrlDerivationError, tt as createOwner, ut as SdkError, y as onboardCheck, z as installClientService } from "./saas-connect-CYp9TOB5.mjs";
3
3
  import "./logger-core-BTmvdflj-DjW8FM4T.mjs";
4
4
  import { a as ensureFreshAdminToken, c as resolveServerUrl, i as ensureFreshAccessToken, n as AuthRefreshRateLimitedError, s as resolveAccessToken, t as AuthRefreshFailedError } from "./bootstrap-CQQGgIx1.mjs";
5
5
  import { i as blank, s as status } from "./cli-fetch--tiwKm5S.mjs";
6
- import "./dist-CwsiHGX7.mjs";
7
- import { n as bindFeishuUser, t as bindFeishuBot } from "./feishu-DHSy6WDD.mjs";
6
+ import "./dist-CrdnqZjv.mjs";
7
+ import { n as bindFeishuUser, t as bindFeishuBot } from "./feishu-DNoBroKK.mjs";
8
8
  import "./uuid-DbS_4vFh-iFghv4zA.mjs";
9
9
  import "./src-DNBS5Yjj.mjs";
10
- import "./client-BSfCc0pJ-BP_1f21y.mjs";
10
+ import "./client-BPRIfrOT-CoV_2o7e.mjs";
11
11
  import "./invitation-D_ENPHyj-5ETiae5r.mjs";
12
12
  export { AuthRefreshFailedError, AuthRefreshRateLimitedError, ClientRuntime, FirstTreeHubSDK, HubUrlDerivationError, SdkError, bindFeishuBot, bindFeishuUser, blank, checkAgentConfigs, checkClientConfig, checkDatabase, checkDocker, checkNodeVersion, checkServerConfig, checkServerHealth, checkServerReachable, checkWebSocket, createOwner, deriveHubUrlFromToken, ensureFreshAccessToken, ensureFreshAdminToken, ensurePostgres, formatCheckReport, getClientServiceStatus, handleClientOrgMismatch, hasUser, installClientService, isDockerAvailable, isInteractive, isServiceSupported, onboardCheck, onboardCreate, printResults, promptAddAgent, promptMissingFields, resolveAccessToken, resolveCliInvocation, resolveServerUrl, restartClientService, rotateClientIdWithBackup, runHomeMigration, runMigrations, startClientService, startServer, status, stopClientService, stopPostgres, uninstallClientService };
@@ -1,4 +1,4 @@
1
- import "./dist-CwsiHGX7.mjs";
1
+ import "./dist-CrdnqZjv.mjs";
2
2
  import "./uuid-DbS_4vFh-iFghv4zA.mjs";
3
3
  import { s as previewInvitation } from "./invitation-D_ENPHyj-5ETiae5r.mjs";
4
4
  export { previewInvitation };