@agent-team-foundation/first-tree-hub 0.11.3 → 0.11.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.
@@ -569,21 +569,6 @@ const serverConfigSchema = defineConfig({
569
569
  refreshTokenExpiry: field(z.string().default("30d"), { env: "FIRST_TREE_HUB_AUTH_REFRESH_TOKEN_EXPIRY" }),
570
570
  connectTokenExpiry: field(z.string().default("10m"), { env: "FIRST_TREE_HUB_AUTH_CONNECT_TOKEN_EXPIRY" })
571
571
  },
572
- contextTree: optional({
573
- repo: field(z.string().optional(), {
574
- env: "FIRST_TREE_HUB_CONTEXT_TREE_REPO",
575
- prompt: { message: "Context Tree repo URL (e.g. https://github.com/org/first-tree):" }
576
- }),
577
- localPath: field(z.string().optional(), { env: "FIRST_TREE_HUB_CONTEXT_TREE_PATH" }),
578
- branch: field(z.string().default("main"))
579
- }),
580
- github: {
581
- webhookSecret: field(z.string().optional(), {
582
- env: "FIRST_TREE_HUB_GITHUB_WEBHOOK_SECRET",
583
- secret: true
584
- }),
585
- allowedOrg: field(z.string().optional(), { env: "FIRST_TREE_HUB_GITHUB_ALLOWED_ORG" })
586
- },
587
572
  oauth: optional({ github: optional({
588
573
  clientId: field(z.string(), { env: "FIRST_TREE_HUB_GITHUB_OAUTH_CLIENT_ID" }),
589
574
  clientSecret: field(z.string(), {
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import "../observability-BAScT_5S-gw1ODB_o.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 success, b as onboardCreate, c as detectInstallMode, ct as FirstTreeHubSDK, d as startServer, dt as cleanWorkspaces, et as removeLocalAgent, f as reconcileLocalRuntimeProviders, ft as probeCapabilities, g as promptMissingFields, h as promptAddAgent, i as createExecuteUpdate, it as fail, j as checkNodeVersion, k as checkDatabase, l as fetchLatestVersion, lt as SdkError, m as isInteractive, mt as configureClientLoggerForService, o as promptUpdate, ot as ClientOrgMismatchError, p as uploadClientCapabilities, pt as applyClientLoggerConfig, r as registerSaaSConnectCommand, rt as resolveReplyToFromEnv, s as PACKAGE_NAME, st as ClientUserMismatchError, tt as createOwner, u as installGlobalLatest, ut as SessionRegistry, v as loadOnboardState, w as migrateLocalAgentDirs, x as saveOnboardState, y as onboardCheck, z as installClientService } from "../saas-connect-gcT6Q10z.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 success, b as onboardCreate, c as detectInstallMode, ct as FirstTreeHubSDK, d as startServer, dt as cleanWorkspaces, et as removeLocalAgent, f as reconcileLocalRuntimeProviders, ft as probeCapabilities, g as promptMissingFields, h as promptAddAgent, i as createExecuteUpdate, it as fail, j as checkNodeVersion, k as checkDatabase, l as fetchLatestVersion, lt as SdkError, m as isInteractive, mt as configureClientLoggerForService, o as promptUpdate, ot as ClientOrgMismatchError, p as uploadClientCapabilities, pt as applyClientLoggerConfig, r as registerSaaSConnectCommand, rt as resolveReplyToFromEnv, s as PACKAGE_NAME, st as ClientUserMismatchError, tt as createOwner, u as installGlobalLatest, ut as SessionRegistry, v as loadOnboardState, w as migrateLocalAgentDirs, x as saveOnboardState, y as onboardCheck, z as installClientService } from "../saas-connect-CVoRK0Ex.mjs";
4
4
  import "../logger-core-BTmvdflj-DjW8FM4T.mjs";
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, u as saveCredentials, v as initConfig, w as resolveConfigReadonly, x as readConfigFile, y as loadAgents } from "../bootstrap-D4rdqM2F.mjs";
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, u as saveCredentials, v as initConfig, w as resolveConfigReadonly, x as readConfigFile, y as loadAgents } from "../bootstrap-D-Yf8yOc.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-BAqGZkco.mjs";
8
- import { n as bindFeishuUser, t as bindFeishuBot } from "../feishu-Th_-ivJ7.mjs";
7
+ import "../dist-ClFs4WMj.mjs";
8
+ import { n as bindFeishuUser, t as bindFeishuBot } from "../feishu-AI3pwmqN.mjs";
9
9
  import "../errors-BmyRwN0Y-Dad3eV8F.mjs";
10
- import "../client-CLdRbuml-BRtalKpQ.mjs";
10
+ import "../client-CLdRbuml-svTO0Eat.mjs";
11
11
  import "../src-aJMV60mR.mjs";
12
12
  import "../invitation-Dnn5gGGX-DXryyvRG.mjs";
13
13
  import { join } from "node:path";
@@ -1670,13 +1670,13 @@ function isSecretField(schema, dotPath) {
1670
1670
  //#region src/commands/onboard.ts
1671
1671
  async function promptMissing(args) {
1672
1672
  if (!args.server) try {
1673
- const { resolveServerUrl } = await import("../bootstrap-D4rdqM2F.mjs").then((n) => n.r);
1673
+ const { resolveServerUrl } = await import("../bootstrap-D-Yf8yOc.mjs").then((n) => n.r);
1674
1674
  resolveServerUrl();
1675
1675
  } catch {
1676
1676
  args.server = await input({ message: "Hub server URL:" });
1677
1677
  saveOnboardState(args);
1678
1678
  }
1679
- const { loadCredentials } = await import("../bootstrap-D4rdqM2F.mjs").then((n) => n.r);
1679
+ const { loadCredentials } = await import("../bootstrap-D-Yf8yOc.mjs").then((n) => n.r);
1680
1680
  if (!loadCredentials()) throw new Error("No saved credentials. Run `first-tree-hub client connect <server-url>` before onboarding.");
1681
1681
  if (!args.id) {
1682
1682
  args.id = await input({ message: "Agent ID:" });
@@ -0,0 +1,4 @@
1
+ import "./dist-ClFs4WMj.mjs";
2
+ import "./errors-BmyRwN0Y-Dad3eV8F.mjs";
3
+ import { y as listMyPinnedAgents } from "./client-CLdRbuml-svTO0Eat.mjs";
4
+ export { listMyPinnedAgents };
@@ -1,4 +1,4 @@
1
- import { C as clientCapabilitiesSchema } from "./dist-BAqGZkco.mjs";
1
+ import { w as clientCapabilitiesSchema } from "./dist-ClFs4WMj.mjs";
2
2
  import { a as ConflictError, i as ClientUserMismatchError, l as organizations, n as BadRequestError, s as NotFoundError, u as users } from "./errors-BmyRwN0Y-Dad3eV8F.mjs";
3
3
  import { and, eq, inArray, ne, sql } from "drizzle-orm";
4
4
  import { index, integer, jsonb, pgTable, text, timestamp, unique } from "drizzle-orm/pg-core";
@@ -1140,6 +1140,60 @@ const githubDevCallbackQuerySchema = z.object({
1140
1140
  displayName: z.string().optional(),
1141
1141
  next: z.string().max(256).optional()
1142
1142
  });
1143
+ /**
1144
+ * Per-organization settings — schemas, namespaces, and the registry that
1145
+ * dispatches `(orgId, namespace)` lookups to the right validator.
1146
+ *
1147
+ * Each namespace has three schemas:
1148
+ * - `storage` — what is persisted in `organization_settings.value`. For
1149
+ * namespaces with secrets, the storage schema names the *cipher* field
1150
+ * (e.g. `webhookSecretCipher`); plaintext never touches the row.
1151
+ * - `input` — what the admin API accepts in PUT bodies. For namespaces
1152
+ * with secrets, `webhookSecret` is plaintext; the service layer
1153
+ * encrypts it before merging into storage.
1154
+ * - `output` — what GET returns. Secrets are replaced by a boolean
1155
+ * `…Configured` flag — plaintext is never echoed.
1156
+ *
1157
+ * Adding a new per-org config group:
1158
+ * 1. Define three schemas (storage / input / output).
1159
+ * 2. Add a key to `ORG_SETTINGS_NAMESPACES`.
1160
+ * 3. Done. No DB migration, no new API route.
1161
+ */
1162
+ const orgContextTreeStorageSchema = z.object({
1163
+ repo: z.string().url().optional(),
1164
+ branch: z.string().default("main")
1165
+ });
1166
+ const orgContextTreeInputSchema = z.object({
1167
+ repo: z.string().url().min(1).nullish(),
1168
+ branch: z.string().min(1).nullish()
1169
+ });
1170
+ const orgContextTreeOutputSchema = z.object({
1171
+ repo: z.string().optional(),
1172
+ branch: z.string().optional()
1173
+ });
1174
+ const orgGithubIntegrationStorageSchema = z.object({ webhookSecretCipher: z.string().optional() });
1175
+ const orgGithubIntegrationInputSchema = z.object({ webhookSecret: z.string().min(1).nullish() });
1176
+ const orgGithubIntegrationOutputSchema = z.object({
1177
+ webhookSecretConfigured: z.boolean(),
1178
+ webhookUrl: z.string()
1179
+ });
1180
+ const ORG_SETTINGS_NAMESPACES = {
1181
+ context_tree: {
1182
+ storage: orgContextTreeStorageSchema,
1183
+ input: orgContextTreeInputSchema,
1184
+ output: orgContextTreeOutputSchema
1185
+ },
1186
+ github_integration: {
1187
+ storage: orgGithubIntegrationStorageSchema,
1188
+ input: orgGithubIntegrationInputSchema,
1189
+ output: orgGithubIntegrationOutputSchema
1190
+ }
1191
+ };
1192
+ const ORG_SETTINGS_NAMESPACE_KEYS = Object.keys(ORG_SETTINGS_NAMESPACES);
1193
+ z.enum(ORG_SETTINGS_NAMESPACE_KEYS);
1194
+ function isOrgSettingNamespace(value) {
1195
+ return typeof value === "string" && ORG_SETTINGS_NAMESPACE_KEYS.includes(value);
1196
+ }
1143
1197
  const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1144
1198
  z.object({
1145
1199
  name: z.string().min(2).max(50).regex(/^[a-z0-9][a-z0-9-]*$/, "Must start with a letter or digit and contain only lowercase alphanumeric and hyphens").refine((v) => !UUID_PATTERN.test(v), "Name must not be a UUID format"),
@@ -1467,4 +1521,4 @@ z.object({
1467
1521
  capabilities: serverCapabilitiesSchema.optional()
1468
1522
  }).passthrough();
1469
1523
  //#endregion
1470
- export { notificationQuerySchema as $, createChatSchema as A, githubDevCallbackQuerySchema as B, clientCapabilitiesSchema as C, updateTaskStatusSchema as Ct, createAdapterConfigSchema as D, contextTreeSnapshotSchema as E, defaultRuntimeConfigPayload as F, inboxPollQuerySchema as G, imageInlineContentSchema as H, delegateFeishuUserSchema as I, joinByInvitationSchema as J, isRedactedEnvValue as K, dryRunAgentRuntimeConfigSchema as L, createMemberSchema as M, createOrgFromMeSchema as N, createAdapterMappingSchema as O, createTaskSchema as P, messageSourceSchema as Q, extractMentions as R, agentTypeSchema as S, updateOrganizationSchema as St, connectTokenExchangeSchema as T, inboxAckFrameSchema as U, githubStartQuerySchema as V, inboxDeliverFrameSchema as W, listMeChatsQuerySchema as X, linkTaskChatSchema as Y, loginSchema as Z, adminCreateTaskSchema as _, updateAgentRuntimeConfigSchema as _t, AGENT_STATUSES as a, scanMentionTokens as at, agentPinnedMessageSchema as b, updateClientCapabilitiesSchema as bt, DEFAULT_RUNTIME_PROVIDER as c, sendToAgentSchema as ct, TASK_HEALTH_SIGNALS as d, sessionEventSchema as dt, paginationQuerySchema as et, TASK_STATUSES as f, sessionReconcileRequestSchema as ft, addParticipantSchema as g, updateAdapterConfigSchema as gt, addMeChatParticipantsSchema as h, taskListQuerySchema as ht, AGENT_SOURCES as i, safeRedirectPath as it, createMeChatSchema as j, createAgentSchema as k, MENTION_REGEX as l, sessionCompletionMessageSchema as lt, WS_AUTH_FRAME_TIMEOUT_MS as m, stripCode as mt, AGENT_NAME_REGEX as n, refreshTokenSchema as nt, AGENT_TYPES as o, selfServiceFeishuBotSchema as ot, TASK_TERMINAL_STATUSES as p, sessionStateMessageSchema as pt, isReservedAgentName as q, AGENT_SELECTOR_HEADER as r, runtimeStateMessageSchema as rt, AGENT_VISIBILITY as s, sendMessageSchema as st, AGENT_BIND_REJECT_REASONS as t, rebindAgentSchema as tt, TASK_CREATOR_TYPES as u, sessionEventMessageSchema as ut, adminUpdateTaskSchema as v, updateAgentSchema as vt, clientRegisterSchema as w, wsAuthFrameSchema as wt, agentRuntimeConfigPayloadSchema as x, updateMemberSchema as xt, agentBindRequestSchema as y, updateChatSchema as yt, githubCallbackQuerySchema as z };
1524
+ export { loginSchema as $, createAgentSchema as A, githubCallbackQuerySchema as B, agentTypeSchema as C, updateMemberSchema as Ct, contextTreeSnapshotSchema as D, connectTokenExchangeSchema as E, wsAuthFrameSchema as Et, createTaskSchema as F, inboxDeliverFrameSchema as G, githubStartQuerySchema as H, defaultRuntimeConfigPayload as I, isRedactedEnvValue as J, inboxPollQuerySchema as K, delegateFeishuUserSchema as L, createMeChatSchema as M, createMemberSchema as N, createAdapterConfigSchema as O, createOrgFromMeSchema as P, listMeChatsQuerySchema as Q, dryRunAgentRuntimeConfigSchema as R, agentRuntimeConfigPayloadSchema as S, updateClientCapabilitiesSchema as St, clientRegisterSchema as T, updateTaskStatusSchema as Tt, imageInlineContentSchema as U, githubDevCallbackQuerySchema as V, inboxAckFrameSchema as W, joinByInvitationSchema as X, isReservedAgentName as Y, linkTaskChatSchema as Z, addParticipantSchema as _, taskListQuerySchema as _t, AGENT_STATUSES as a, runtimeStateMessageSchema as at, agentBindRequestSchema as b, updateAgentSchema as bt, DEFAULT_RUNTIME_PROVIDER as c, selfServiceFeishuBotSchema as ct, TASK_CREATOR_TYPES as d, sessionCompletionMessageSchema as dt, messageSourceSchema as et, TASK_HEALTH_SIGNALS as f, sessionEventMessageSchema as ft, addMeChatParticipantsSchema as g, stripCode as gt, WS_AUTH_FRAME_TIMEOUT_MS as h, sessionStateMessageSchema as ht, AGENT_SOURCES as i, refreshTokenSchema as it, createChatSchema as j, createAdapterMappingSchema as k, MENTION_REGEX as l, sendMessageSchema as lt, TASK_TERMINAL_STATUSES as m, sessionReconcileRequestSchema as mt, AGENT_NAME_REGEX as n, paginationQuerySchema as nt, AGENT_TYPES as o, safeRedirectPath as ot, TASK_STATUSES as p, sessionEventSchema as pt, isOrgSettingNamespace as q, AGENT_SELECTOR_HEADER as r, rebindAgentSchema as rt, AGENT_VISIBILITY as s, scanMentionTokens as st, AGENT_BIND_REJECT_REASONS as t, notificationQuerySchema as tt, ORG_SETTINGS_NAMESPACES as u, sendToAgentSchema as ut, adminCreateTaskSchema as v, updateAdapterConfigSchema as vt, clientCapabilitiesSchema as w, updateOrganizationSchema as wt, agentPinnedMessageSchema as x, updateChatSchema as xt, adminUpdateTaskSchema as y, updateAgentRuntimeConfigSchema as yt, extractMentions as z };
@@ -0,0 +1,36 @@
1
+ -- Per-organization settings, keyed by (organization_id, namespace).
2
+ --
3
+ -- Each row holds an entire group of related config as a JSONB blob; the
4
+ -- schema for each namespace lives in @agent-team-foundation/first-tree-hub-shared
5
+ -- (ORG_SETTINGS_NAMESPACES) and is enforced by the service layer on every
6
+ -- read/write. Adding a new config group means registering a new namespace +
7
+ -- Zod schema in shared — the DB does not change.
8
+ --
9
+ -- `version` is reserved for future optimistic locking (PUT with If-Match).
10
+ -- We keep the column from day one so tightening to compare-and-swap later
11
+ -- is a code-only change with no migration.
12
+ --
13
+ -- Sensitive fields inside `value` (e.g. github_integration.webhookSecret)
14
+ -- are AES-256-GCM-encrypted at the service layer using crypto.ts's
15
+ -- encryptValue / decryptValue — same pattern as adapter_configs.
16
+ --
17
+ -- ON DELETE CASCADE on organization_id: settings have no independent
18
+ -- lifecycle, deleting an org must drop them. updated_by is SET NULL so a
19
+ -- user deletion does not cascade-clobber unrelated config rows.
20
+
21
+ CREATE TABLE IF NOT EXISTS "organization_settings" (
22
+ "organization_id" text NOT NULL,
23
+ "namespace" text NOT NULL,
24
+ "value" jsonb NOT NULL DEFAULT '{}'::jsonb,
25
+ "version" integer NOT NULL DEFAULT 0,
26
+ "updated_by" text,
27
+ "updated_at" timestamp with time zone NOT NULL DEFAULT now(),
28
+ CONSTRAINT "organization_settings_pkey" PRIMARY KEY ("organization_id", "namespace"),
29
+ CONSTRAINT "organization_settings_organization_id_organizations_id_fk"
30
+ FOREIGN KEY ("organization_id") REFERENCES "organizations"("id") ON DELETE CASCADE,
31
+ CONSTRAINT "organization_settings_updated_by_users_id_fk"
32
+ FOREIGN KEY ("updated_by") REFERENCES "users"("id") ON DELETE SET NULL
33
+ );
34
+
35
+ CREATE INDEX IF NOT EXISTS "idx_org_settings_namespace"
36
+ ON "organization_settings" ("namespace");
@@ -225,6 +225,13 @@
225
225
  "when": 1777939200000,
226
226
  "tag": "0031_drop_system_configs",
227
227
  "breakpoints": true
228
+ },
229
+ {
230
+ "idx": 32,
231
+ "version": "7",
232
+ "when": 1778198400000,
233
+ "tag": "0032_organization_settings",
234
+ "breakpoints": true
228
235
  }
229
236
  ]
230
- }
237
+ }
@@ -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-BAqGZkco.mjs";
3
+ import { r as AGENT_SELECTOR_HEADER } from "./dist-ClFs4WMj.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-gw1ODB_o.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, ct as FirstTreeHubSDK, d as startServer, g as promptMissingFields, h as promptAddAgent, j as checkNodeVersion, k as checkDatabase, lt as SdkError, m as isInteractive, n as deriveHubUrlFromToken, nt as hasUser, q as isDockerAvailable, t as HubUrlDerivationError, tt as createOwner, y as onboardCheck, z as installClientService } from "./saas-connect-gcT6Q10z.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, ct as FirstTreeHubSDK, d as startServer, g as promptMissingFields, h as promptAddAgent, j as checkNodeVersion, k as checkDatabase, lt as SdkError, m as isInteractive, n as deriveHubUrlFromToken, nt as hasUser, q as isDockerAvailable, t as HubUrlDerivationError, tt as createOwner, y as onboardCheck, z as installClientService } from "./saas-connect-CVoRK0Ex.mjs";
3
3
  import "./logger-core-BTmvdflj-DjW8FM4T.mjs";
4
- import { a as ensureFreshAdminToken, c as resolveServerUrl, i as ensureFreshAccessToken, n as AuthRefreshRateLimitedError, s as resolveAccessToken, t as AuthRefreshFailedError } from "./bootstrap-D4rdqM2F.mjs";
4
+ import { a as ensureFreshAdminToken, c as resolveServerUrl, i as ensureFreshAccessToken, n as AuthRefreshRateLimitedError, s as resolveAccessToken, t as AuthRefreshFailedError } from "./bootstrap-D-Yf8yOc.mjs";
5
5
  import { i as blank, s as status } from "./cli-fetch--tiwKm5S.mjs";
6
- import "./dist-BAqGZkco.mjs";
7
- import { n as bindFeishuUser, t as bindFeishuBot } from "./feishu-Th_-ivJ7.mjs";
6
+ import "./dist-ClFs4WMj.mjs";
7
+ import { n as bindFeishuUser, t as bindFeishuBot } from "./feishu-AI3pwmqN.mjs";
8
8
  import "./errors-BmyRwN0Y-Dad3eV8F.mjs";
9
- import "./client-CLdRbuml-BRtalKpQ.mjs";
9
+ import "./client-CLdRbuml-svTO0Eat.mjs";
10
10
  import "./src-aJMV60mR.mjs";
11
11
  import "./invitation-Dnn5gGGX-DXryyvRG.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-BAqGZkco.mjs";
1
+ import "./dist-ClFs4WMj.mjs";
2
2
  import "./errors-BmyRwN0Y-Dad3eV8F.mjs";
3
3
  import { s as previewInvitation } from "./invitation-Dnn5gGGX-DXryyvRG.mjs";
4
4
  export { previewInvitation };