@truefoundry/assistant-ui-runtime 0.1.16 → 0.1.18

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.
package/dist/index.js CHANGED
@@ -11,7 +11,7 @@ import {
11
11
  isTfyMcpToolInfo,
12
12
  isTfySystemToolInfo,
13
13
  isTfyToolInfo
14
- } from "./chunk-S4SH2KT2.js";
14
+ } from "./chunk-N6LJ3LR2.js";
15
15
 
16
16
  // src/useTrueFoundryAgentRuntime.ts
17
17
  import {
@@ -22,8 +22,8 @@ import {
22
22
  useRemoteThreadListRuntime,
23
23
  useRuntimeAdapters
24
24
  } from "@assistant-ui/core/react";
25
- import { useAui, useAuiState } from "@assistant-ui/store";
26
- import { useCallback as useCallback3, useMemo as useMemo3, useRef as useRef3, useState as useState3 } from "react";
25
+ import { useAui as useAui2, useAuiState } from "@assistant-ui/store";
26
+ import { useCallback as useCallback4, useMemo as useMemo3, useRef as useRef3, useState as useState3 } from "react";
27
27
 
28
28
  // src/constants.ts
29
29
  var ROOT_THREAD_ID = "main";
@@ -2551,7 +2551,9 @@ function createTrueFoundryDraftThreadListAdapter(options) {
2551
2551
 
2552
2552
  // src/truefoundryExtras.ts
2553
2553
  import { createRuntimeExtras } from "@assistant-ui/core/internal";
2554
- var trueFoundryExtras = createRuntimeExtras(
2554
+ import { useAui } from "@assistant-ui/store";
2555
+ import { useCallback, useSyncExternalStore } from "react";
2556
+ var extrasBrand = createRuntimeExtras(
2555
2557
  "useTrueFoundryAgentRuntime"
2556
2558
  );
2557
2559
  var EMPTY_DRAFT_EXTRAS = {
@@ -2570,6 +2572,91 @@ var EMPTY_DRAFT_EXTRAS = {
2570
2572
  throw new Error("Draft agent extras are only available in draft mode.");
2571
2573
  }
2572
2574
  };
2575
+ function walkAssistantClientAncestors(client, visit) {
2576
+ let current = client;
2577
+ const seen = /* @__PURE__ */ new Set();
2578
+ while (current != null && !seen.has(current)) {
2579
+ seen.add(current);
2580
+ if (visit(current) === "stop") return;
2581
+ const parent = Object.getPrototypeOf(current);
2582
+ if (parent == null || parent === Object.prototype) {
2583
+ return;
2584
+ }
2585
+ current = parent;
2586
+ }
2587
+ }
2588
+ function tryGetTrueFoundryExtras(client) {
2589
+ let found;
2590
+ walkAssistantClientAncestors(client, (current) => {
2591
+ try {
2592
+ const thread = current.thread;
2593
+ if (typeof thread === "function") {
2594
+ const extras = extrasBrand.tryGet(thread().getState().extras);
2595
+ if (extras != null) {
2596
+ found = extras;
2597
+ return "stop";
2598
+ }
2599
+ }
2600
+ } catch {
2601
+ }
2602
+ return "continue";
2603
+ });
2604
+ return found;
2605
+ }
2606
+ function getTrueFoundryExtras(client) {
2607
+ const extras = tryGetTrueFoundryExtras(client);
2608
+ if (extras == null) {
2609
+ throw new Error(
2610
+ "The current thread is not backed by the useTrueFoundryAgentRuntime runtime."
2611
+ );
2612
+ }
2613
+ return extras;
2614
+ }
2615
+ function subscribeClientChain(client) {
2616
+ return (onStoreChange) => {
2617
+ const unsubs = [];
2618
+ walkAssistantClientAncestors(client, (current) => {
2619
+ try {
2620
+ const subscribe = current.subscribe;
2621
+ if (typeof subscribe === "function") {
2622
+ unsubs.push(subscribe(onStoreChange));
2623
+ }
2624
+ return "continue";
2625
+ } catch {
2626
+ return "stop";
2627
+ }
2628
+ });
2629
+ return () => {
2630
+ for (const unsub of unsubs) {
2631
+ unsub();
2632
+ }
2633
+ };
2634
+ };
2635
+ }
2636
+ function useTrueFoundryRuntimeExtras() {
2637
+ const aui = useAui();
2638
+ const subscribe = useCallback(subscribeClientChain(aui), [aui]);
2639
+ const getSnapshot = useCallback(() => tryGetTrueFoundryExtras(aui), [aui]);
2640
+ return useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
2641
+ }
2642
+ function useTrueFoundryExtrasApi(select, fallback) {
2643
+ const extras = useTrueFoundryRuntimeExtras();
2644
+ const hasFallback = arguments.length >= 2;
2645
+ if (extras == null) {
2646
+ if (hasFallback) return fallback;
2647
+ throw new Error(
2648
+ "The current thread is not backed by the useTrueFoundryAgentRuntime runtime."
2649
+ );
2650
+ }
2651
+ return select != null ? select(extras) : extras;
2652
+ }
2653
+ var trueFoundryExtras = {
2654
+ provide: extrasBrand.provide,
2655
+ is: extrasBrand.is,
2656
+ tryGet: extrasBrand.tryGet,
2657
+ get: getTrueFoundryExtras,
2658
+ use: useTrueFoundryExtrasApi
2659
+ };
2573
2660
 
2574
2661
  // src/sessions.ts
2575
2662
  var inflightBySessionId = /* @__PURE__ */ new Map();
@@ -2654,7 +2741,7 @@ function resolveTrueFoundryAgentRuntimeOptions(options) {
2654
2741
  }
2655
2742
 
2656
2743
  // src/draft/useDraftAgentSpec.ts
2657
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2744
+ import { useCallback as useCallback2, useEffect, useMemo, useRef, useState } from "react";
2658
2745
  var SPEC_SYNC_DEBOUNCE_MS = 400;
2659
2746
  function useDraftAgentSpec({
2660
2747
  draftSessionId,
@@ -2744,7 +2831,7 @@ function useDraftAgentSpec({
2744
2831
  setIsSpecLoading(false);
2745
2832
  };
2746
2833
  }, [defaultAgentSpec, draftBridge, draftSessionId, enabled, onError]);
2747
- const flushSpecSync = useCallback(
2834
+ const flushSpecSync = useCallback2(
2748
2835
  async (draftId, spec, generation) => {
2749
2836
  if (draftBridge == null) {
2750
2837
  return;
@@ -2771,7 +2858,7 @@ function useDraftAgentSpec({
2771
2858
  },
2772
2859
  [draftBridge, onAgentSpecChange, onError]
2773
2860
  );
2774
- const scheduleSpecSync = useCallback(
2861
+ const scheduleSpecSync = useCallback2(
2775
2862
  (draftId, spec) => {
2776
2863
  if (syncTimeoutRef.current != null) {
2777
2864
  clearTimeout(syncTimeoutRef.current);
@@ -2797,7 +2884,7 @@ function useDraftAgentSpec({
2797
2884
  );
2798
2885
  const scheduleSpecSyncRef = useRef(scheduleSpecSync);
2799
2886
  scheduleSpecSyncRef.current = scheduleSpecSync;
2800
- const flushPendingSpecSyncNow = useCallback(async () => {
2887
+ const flushPendingSpecSyncNow = useCallback2(async () => {
2801
2888
  if (syncTimeoutRef.current != null) {
2802
2889
  clearTimeout(syncTimeoutRef.current);
2803
2890
  syncTimeoutRef.current = void 0;
@@ -2812,7 +2899,7 @@ function useDraftAgentSpec({
2812
2899
  await inFlightFlushRef.current;
2813
2900
  }
2814
2901
  }, []);
2815
- const adoptAgentSpec = useCallback(
2902
+ const adoptAgentSpec = useCallback2(
2816
2903
  ({
2817
2904
  agentSpec: persistedSpec,
2818
2905
  updatedAt
@@ -2835,7 +2922,7 @@ function useDraftAgentSpec({
2835
2922
  },
2836
2923
  []
2837
2924
  );
2838
- const takeTurnHeaderTimestamp = useCallback(async () => {
2925
+ const takeTurnHeaderTimestamp = useCallback2(async () => {
2839
2926
  await flushPendingSpecSyncNow();
2840
2927
  const updatedAt = lastUpdatedAtRef.current;
2841
2928
  lastUpdatedAtRef.current = void 0;
@@ -2849,7 +2936,7 @@ function useDraftAgentSpec({
2849
2936
  },
2850
2937
  []
2851
2938
  );
2852
- const updateAgentSpec = useCallback(
2939
+ const updateAgentSpec = useCallback2(
2853
2940
  (update) => {
2854
2941
  if (!enabled || draftBridge == null) {
2855
2942
  return;
@@ -2892,7 +2979,7 @@ function useDraftAgentSpec({
2892
2979
 
2893
2980
  // src/useTrueFoundryAgentMessages.ts
2894
2981
  import { generateId } from "@assistant-ui/core";
2895
- import { useCallback as useCallback2, useEffect as useEffect2, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
2982
+ import { useCallback as useCallback3, useEffect as useEffect2, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
2896
2983
 
2897
2984
  // src/loadSessionSnapshot.ts
2898
2985
  var inflightBySessionId2 = /* @__PURE__ */ new Map();
@@ -3183,7 +3270,7 @@ function useTrueFoundryAgentMessages({
3183
3270
  const lazilyCreatedSessionIdRef = useRef2(void 0);
3184
3271
  const initialLoadStartedForRef = useRef2(void 0);
3185
3272
  const skipInitialPromotionLoadForRef = useRef2(void 0);
3186
- const markResumeUnavailable = useCallback2((value) => {
3273
+ const markResumeUnavailable = useCallback3((value) => {
3187
3274
  resumeUnavailableRef.current = value;
3188
3275
  setResumeUnavailable(value);
3189
3276
  }, []);
@@ -3205,7 +3292,7 @@ function useTrueFoundryAgentMessages({
3205
3292
  () => projectSessionMessages(snapshot, projectOptions),
3206
3293
  [snapshot, projectOptions]
3207
3294
  );
3208
- const runStream = useCallback2(
3295
+ const runStream = useCallback3(
3209
3296
  (createStream, turnIdRef, isContinuation) => {
3210
3297
  const streamGeneration = ++streamGenerationRef.current;
3211
3298
  abortControllerRef.current?.abort();
@@ -3297,7 +3384,7 @@ function useTrueFoundryAgentMessages({
3297
3384
  },
3298
3385
  [onError]
3299
3386
  );
3300
- const load = useCallback2(async () => {
3387
+ const load = useCallback3(async () => {
3301
3388
  void loadRetryTrigger;
3302
3389
  if (sessionId == null) {
3303
3390
  createdAtByMessageIdRef.current = /* @__PURE__ */ new Map();
@@ -3400,7 +3487,7 @@ function useTrueFoundryAgentMessages({
3400
3487
  useEffect2(() => {
3401
3488
  void load().catch(() => void 0);
3402
3489
  }, [load]);
3403
- const sendTurn = useCallback2(
3490
+ const sendTurn = useCallback3(
3404
3491
  async (options) => {
3405
3492
  let gatewayTurnAccepted = false;
3406
3493
  let pendingUserWasSet = false;
@@ -3564,7 +3651,7 @@ function useTrueFoundryAgentMessages({
3564
3651
  },
3565
3652
  [server, runStream, sessionId]
3566
3653
  );
3567
- const cancel = useCallback2(async () => {
3654
+ const cancel = useCallback3(async () => {
3568
3655
  if (sessionId == null) {
3569
3656
  abortControllerRef.current?.abort();
3570
3657
  return;
@@ -3582,7 +3669,7 @@ function useTrueFoundryAgentMessages({
3582
3669
  }, [server, sessionId, markResumeUnavailable]);
3583
3670
  const isRunningRef = useRef2(isRunning);
3584
3671
  isRunningRef.current = isRunning;
3585
- const trySendCollectedRequiredActions = useCallback2(
3672
+ const trySendCollectedRequiredActions = useCallback3(
3586
3673
  (nextSnapshot) => {
3587
3674
  if (isRunningRef.current) {
3588
3675
  return;
@@ -3599,7 +3686,7 @@ function useTrueFoundryAgentMessages({
3599
3686
  },
3600
3687
  [projectOptions, sendTurn]
3601
3688
  );
3602
- const respondToToolApproval = useCallback2(
3689
+ const respondToToolApproval = useCallback3(
3603
3690
  (response) => {
3604
3691
  const prev = snapshotRef.current;
3605
3692
  const approvals = new Map(prev.requiredActions.approvals);
@@ -3618,7 +3705,7 @@ function useTrueFoundryAgentMessages({
3618
3705
  },
3619
3706
  [trySendCollectedRequiredActions]
3620
3707
  );
3621
- const respondToToolResponse = useCallback2(
3708
+ const respondToToolResponse = useCallback3(
3622
3709
  (response) => {
3623
3710
  const prev = snapshotRef.current;
3624
3711
  const toolResponses = new Map(prev.requiredActions.toolResponses);
@@ -3634,7 +3721,7 @@ function useTrueFoundryAgentMessages({
3634
3721
  },
3635
3722
  [trySendCollectedRequiredActions]
3636
3723
  );
3637
- const resumeRun = useCallback2(async () => {
3724
+ const resumeRun = useCallback3(async () => {
3638
3725
  const turn = runningTurnRef.current;
3639
3726
  if (turn == null) {
3640
3727
  return;
@@ -3657,7 +3744,7 @@ function useTrueFoundryAgentMessages({
3657
3744
  true
3658
3745
  );
3659
3746
  }, [runStream, server]);
3660
- const branchFromTurn = useCallback2(
3747
+ const branchFromTurn = useCallback3(
3661
3748
  async (turnId, userMessage) => {
3662
3749
  let committed;
3663
3750
  let previousTurnId;
@@ -3700,7 +3787,7 @@ function useTrueFoundryAgentMessages({
3700
3787
  },
3701
3788
  [cancel, server, sendTurn, sessionId]
3702
3789
  );
3703
- const resetFromTurn = useCallback2(
3790
+ const resetFromTurn = useCallback3(
3704
3791
  async (turnId) => {
3705
3792
  const committed = commitActiveStream(snapshotRef.current);
3706
3793
  const originalInput = resolveTurnInput(committed, turnId);
@@ -3714,7 +3801,7 @@ function useTrueFoundryAgentMessages({
3714
3801
  },
3715
3802
  [branchFromTurn]
3716
3803
  );
3717
- const editFromTurn = useCallback2(
3804
+ const editFromTurn = useCallback3(
3718
3805
  async (turnId, editedText) => {
3719
3806
  const committed = commitActiveStream(snapshotRef.current);
3720
3807
  const originalInput = resolveTurnInput(committed, turnId);
@@ -3731,11 +3818,11 @@ function useTrueFoundryAgentMessages({
3731
3818
  },
3732
3819
  [branchFromTurn]
3733
3820
  );
3734
- const retryLoad = useCallback2(() => {
3821
+ const retryLoad = useCallback3(() => {
3735
3822
  setLoadRetryTrigger((n) => n + 1);
3736
3823
  }, []);
3737
3824
  const hasOlderHistory = snapshot.historyPagination?.hasOlder === true;
3738
- const loadOlderHistory = useCallback2(async () => {
3825
+ const loadOlderHistory = useCallback3(async () => {
3739
3826
  if (sessionId == null || isMain === false) {
3740
3827
  return;
3741
3828
  }
@@ -3830,7 +3917,7 @@ function useTrueFoundryAgentRuntimeImpl(options, pendingAgentSpecRef) {
3830
3917
  });
3831
3918
  const takeTurnHeaderTimestampRef = useRef3(draftSpec.takeTurnHeaderTimestamp);
3832
3919
  takeTurnHeaderTimestampRef.current = draftSpec.takeTurnHeaderTimestamp;
3833
- const getTurnHeaders = useCallback3(async () => {
3920
+ const getTurnHeaders = useCallback4(async () => {
3834
3921
  if (agent.mode !== "draft") {
3835
3922
  return void 0;
3836
3923
  }
@@ -3840,8 +3927,8 @@ function useTrueFoundryAgentRuntimeImpl(options, pendingAgentSpecRef) {
3840
3927
  }
3841
3928
  return { [DRAFT_SESSION_LAST_UPDATED_AT_HEADER]: updatedAt };
3842
3929
  }, [agent.mode]);
3843
- const aui = useAui();
3844
- const initializeSession = useCallback3(
3930
+ const aui = useAui2();
3931
+ const initializeSession = useCallback4(
3845
3932
  () => aui.threadListItem().initialize(),
3846
3933
  [aui]
3847
3934
  );
@@ -3889,7 +3976,7 @@ function useTrueFoundryAgentRuntimeImpl(options, pendingAgentSpecRef) {
3889
3976
  () => () => sendTurn({ resumeMcpAuth: true }),
3890
3977
  [sendTurn]
3891
3978
  );
3892
- const downloadSandboxFile = useCallback3(
3979
+ const downloadSandboxFile = useCallback4(
3893
3980
  async ({ turnId, path }) => {
3894
3981
  if (server.downloadSandboxFile == null) {
3895
3982
  throw new Error(
@@ -4086,9 +4173,9 @@ function createTrueFoundryOwnedSessionsThreadListAdapter(options) {
4086
4173
 
4087
4174
  // src/hooks.ts
4088
4175
  import { useMemo as useMemo4 } from "react";
4089
- import { useAui as useAui2, useAuiState as useAuiState2 } from "@assistant-ui/store";
4176
+ import { useAui as useAui3, useAuiState as useAuiState2 } from "@assistant-ui/store";
4090
4177
  var useTrueFoundryApprovals = () => {
4091
- const extras = trueFoundryExtras.use((e) => e, void 0);
4178
+ const extras = useTrueFoundryRuntimeExtras();
4092
4179
  return useMemo4(
4093
4180
  () => ({
4094
4181
  pending: extras?.pendingApprovals ?? [],
@@ -4100,7 +4187,7 @@ var useTrueFoundryApprovals = () => {
4100
4187
  );
4101
4188
  };
4102
4189
  var useTrueFoundryToolResponses = () => {
4103
- const extras = trueFoundryExtras.use((e) => e, void 0);
4190
+ const extras = useTrueFoundryRuntimeExtras();
4104
4191
  return useMemo4(
4105
4192
  () => ({
4106
4193
  pending: extras?.pendingToolResponses ?? [],
@@ -4112,7 +4199,7 @@ var useTrueFoundryToolResponses = () => {
4112
4199
  );
4113
4200
  };
4114
4201
  var useTrueFoundryMcpAuth = () => {
4115
- const extras = trueFoundryExtras.use((e) => e, void 0);
4202
+ const extras = useTrueFoundryRuntimeExtras();
4116
4203
  return useMemo4(
4117
4204
  () => ({
4118
4205
  pending: extras?.pendingMcpAuth ?? null,
@@ -4124,23 +4211,23 @@ var useTrueFoundryMcpAuth = () => {
4124
4211
  );
4125
4212
  };
4126
4213
  var useTrueFoundryRespondToToolApproval = () => {
4127
- const aui = useAui2();
4128
- return (response) => trueFoundryExtras.get(aui).respondToToolApproval(response);
4214
+ const aui = useAui3();
4215
+ return (response) => getTrueFoundryExtras(aui).respondToToolApproval(response);
4129
4216
  };
4130
4217
  var useTrueFoundryRespondToToolResponse = () => {
4131
- const aui = useAui2();
4132
- return (response) => trueFoundryExtras.get(aui).respondToToolResponse(response);
4218
+ const aui = useAui3();
4219
+ return (response) => getTrueFoundryExtras(aui).respondToToolResponse(response);
4133
4220
  };
4134
4221
  var useTrueFoundryResumeMcpAuth = () => {
4135
- const aui = useAui2();
4136
- return () => trueFoundryExtras.get(aui).resumeMcpAuth();
4222
+ const aui = useAui3();
4223
+ return () => getTrueFoundryExtras(aui).resumeMcpAuth();
4137
4224
  };
4138
- var useTrueFoundrySandboxId = () => trueFoundryExtras.use((e) => e.sandboxId, void 0);
4225
+ var useTrueFoundrySandboxId = () => useTrueFoundryRuntimeExtras()?.sandboxId;
4139
4226
  var useTrueFoundryTurnId = () => useAuiState2(
4140
4227
  (state) => state.message.metadata?.custom?.turnId
4141
4228
  );
4142
4229
  var useTrueFoundryDownloadSandboxFile = () => {
4143
- const aui = useAui2();
4230
+ const aui = useAui3();
4144
4231
  const turnId = useTrueFoundryTurnId();
4145
4232
  return (path) => {
4146
4233
  if (turnId == null) {
@@ -4148,19 +4235,19 @@ var useTrueFoundryDownloadSandboxFile = () => {
4148
4235
  "Downloading a sandbox file requires a message scope to resolve its turn."
4149
4236
  );
4150
4237
  }
4151
- return trueFoundryExtras.get(aui).downloadSandboxFile({ turnId, path });
4238
+ return getTrueFoundryExtras(aui).downloadSandboxFile({ turnId, path });
4152
4239
  };
4153
4240
  };
4154
4241
  var useTrueFoundryCancel = () => {
4155
- const aui = useAui2();
4156
- return () => trueFoundryExtras.get(aui).cancel();
4242
+ const aui = useAui3();
4243
+ return () => getTrueFoundryExtras(aui).cancel();
4157
4244
  };
4158
4245
  var useTrueFoundryReload = () => {
4159
- const aui = useAui2();
4160
- return () => trueFoundryExtras.get(aui).reload();
4246
+ const aui = useAui3();
4247
+ return () => getTrueFoundryExtras(aui).reload();
4161
4248
  };
4162
4249
  var useTrueFoundryHistoryPagination = () => {
4163
- const extras = trueFoundryExtras.use((e) => e, void 0);
4250
+ const extras = useTrueFoundryRuntimeExtras();
4164
4251
  return useMemo4(
4165
4252
  () => ({
4166
4253
  hasOlderHistory: extras?.hasOlderHistory ?? false,
@@ -4172,29 +4259,29 @@ var useTrueFoundryHistoryPagination = () => {
4172
4259
  [extras]
4173
4260
  );
4174
4261
  };
4175
- var useTrueFoundryResumeUnavailable = () => trueFoundryExtras.use((e) => e.resumeUnavailable, false) ?? false;
4262
+ var useTrueFoundryResumeUnavailable = () => useTrueFoundryRuntimeExtras()?.resumeUnavailable ?? false;
4176
4263
  var useTrueFoundryResetFromTurn = () => {
4177
- const aui = useAui2();
4178
- return (turnId) => trueFoundryExtras.get(aui).resetFromTurn(turnId);
4264
+ const aui = useAui3();
4265
+ return (turnId) => getTrueFoundryExtras(aui).resetFromTurn(turnId);
4179
4266
  };
4180
4267
  var useTrueFoundryAgentSpec = () => {
4181
- const extras = trueFoundryExtras.use((e) => e.draft, null);
4268
+ const extras = useTrueFoundryRuntimeExtras()?.draft ?? null;
4182
4269
  return useMemo4(
4183
4270
  () => ({ ...EMPTY_DRAFT_EXTRAS, ...extras }),
4184
4271
  [extras]
4185
4272
  );
4186
4273
  };
4187
4274
  var useTrueFoundryUpdateAgentSpec = () => {
4188
- const aui = useAui2();
4189
- return (update) => trueFoundryExtras.get(aui).draft?.updateAgentSpec(update);
4275
+ const aui = useAui3();
4276
+ return (update) => getTrueFoundryExtras(aui).draft?.updateAgentSpec(update);
4190
4277
  };
4191
4278
  var useTrueFoundryFlushAgentSpec = () => {
4192
- const aui = useAui2();
4193
- return () => trueFoundryExtras.get(aui).draft?.flushAgentSpec() ?? Promise.resolve();
4279
+ const aui = useAui3();
4280
+ return () => getTrueFoundryExtras(aui).draft?.flushAgentSpec() ?? Promise.resolve();
4194
4281
  };
4195
4282
  var useTrueFoundryAdoptAgentSpec = () => {
4196
- const aui = useAui2();
4197
- return (request) => trueFoundryExtras.get(aui).draft?.adoptAgentSpec(request);
4283
+ const aui = useAui3();
4284
+ return (request) => getTrueFoundryExtras(aui).draft?.adoptAgentSpec(request);
4198
4285
  };
4199
4286
 
4200
4287
  // src/attachmentAdapter.ts
@@ -4269,6 +4356,7 @@ export {
4269
4356
  getTfyMcpInitServers,
4270
4357
  getTfyThreadState,
4271
4358
  getTfyUsage,
4359
+ getTrueFoundryExtras,
4272
4360
  getTurnMessageContent,
4273
4361
  isEventDelta,
4274
4362
  isTfyMcpToolInfo,
@@ -4284,6 +4372,7 @@ export {
4284
4372
  toTrueFoundryApprovalInputs,
4285
4373
  trueFoundryAttachmentAdapter,
4286
4374
  trueFoundryExtras,
4375
+ tryGetTrueFoundryExtras,
4287
4376
  useTrueFoundryAdoptAgentSpec,
4288
4377
  useTrueFoundryAgentRuntime,
4289
4378
  useTrueFoundryAgentSpec,