@blade-hq/agent-kit 1.0.27 → 1.0.29

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 (53) hide show
  1. package/dist/{chunk-M72OL7ZJ.js → chunk-HCQDDDOX.js} +2 -2
  2. package/dist/{chunk-X2NJKKXR.js → chunk-N2OE5MVV.js} +253 -52
  3. package/dist/chunk-N2OE5MVV.js.map +1 -0
  4. package/dist/{chunk-C2FKVGJU.js → chunk-PYYDXV2A.js} +2 -2
  5. package/dist/{chunk-JU5SL4HP.js → chunk-TVWC3PED.js} +2 -2
  6. package/dist/{chunk-SBASG3M2.js → chunk-UWNQ4PXK.js} +4 -1101
  7. package/dist/chunk-UWNQ4PXK.js.map +1 -0
  8. package/dist/{chunk-34GDDOWY.js → chunk-YJ6BX3FU.js} +1379 -31
  9. package/dist/chunk-YJ6BX3FU.js.map +1 -0
  10. package/dist/{chunk-TE6G6NVX.js → chunk-YXHPJGXR.js} +27 -13
  11. package/dist/chunk-YXHPJGXR.js.map +1 -0
  12. package/dist/client/blade-client.d.ts +2 -0
  13. package/dist/client/index.d.ts +1 -0
  14. package/dist/client/index.js +3 -1
  15. package/dist/client/resources/app-dev-templates.d.ts +93 -0
  16. package/dist/client/resources/models.d.ts +3 -0
  17. package/dist/{react → client/shared}/projection/builder.d.ts +1 -1
  18. package/dist/{react → client/shared}/projection/helpers.d.ts +1 -1
  19. package/dist/client/shared/projection/history.d.ts +12 -0
  20. package/dist/{react → client/shared}/projection/index.d.ts +1 -0
  21. package/dist/{react → client/shared}/projection/state.d.ts +1 -1
  22. package/dist/client/types/index.d.ts +2 -2
  23. package/dist/client/types/rest.d.ts +1104 -66
  24. package/dist/client/types/socket-events.d.ts +18 -132
  25. package/dist/react/api/app-dev-templates.d.ts +5 -0
  26. package/dist/react/api/model-config.d.ts +68 -0
  27. package/dist/react/api/models.d.ts +2 -0
  28. package/dist/react/api/published-apps.js +3 -3
  29. package/dist/react/api/sessions.js +2 -2
  30. package/dist/react/components/chat/AskUserQuestionBlock.d.ts +1 -1
  31. package/dist/react/components/chat/ChatInput.d.ts +10 -4
  32. package/dist/react/components/chat/ChatView.d.ts +3 -1
  33. package/dist/react/components/chat/MessageList.d.ts +3 -1
  34. package/dist/react/components/chat/index.d.ts +1 -1
  35. package/dist/react/components/chat/index.js +5 -5
  36. package/dist/react/components/chat/scroll-anchor.d.ts +8 -0
  37. package/dist/react/components/plan/index.js +4 -4
  38. package/dist/react/components/session/index.js +3 -3
  39. package/dist/react/components/workspace/index.js +3 -3
  40. package/dist/react/hooks/use-model-preferences.d.ts +1 -0
  41. package/dist/react/hooks/use-resolved-model.d.ts +1 -0
  42. package/dist/react/index.d.ts +3 -0
  43. package/dist/react/index.js +87 -7
  44. package/dist/react/index.js.map +1 -1
  45. package/dist/react/schemas/session.d.ts +1 -0
  46. package/package.json +1 -1
  47. package/dist/chunk-34GDDOWY.js.map +0 -1
  48. package/dist/chunk-SBASG3M2.js.map +0 -1
  49. package/dist/chunk-TE6G6NVX.js.map +0 -1
  50. package/dist/chunk-X2NJKKXR.js.map +0 -1
  51. /package/dist/{chunk-M72OL7ZJ.js.map → chunk-HCQDDDOX.js.map} +0 -0
  52. /package/dist/{chunk-C2FKVGJU.js.map → chunk-PYYDXV2A.js.map} +0 -0
  53. /package/dist/{chunk-JU5SL4HP.js.map → chunk-TVWC3PED.js.map} +0 -0
@@ -74,13 +74,15 @@ export type ChatCompactPayload = ChatCompactPayloadSchema.ChatCompactPayload;
74
74
  export declare namespace SessionSubscribePayloadSchema {
75
75
  type SessionId = string;
76
76
  type Mode = string;
77
- type EventFormat = ("raw" | "projection");
77
+ type EventFormat = "raw";
78
78
  type AfterSequence = number;
79
+ type Resume = boolean;
79
80
  interface SessionSubscribePayload {
80
81
  session_id: SessionId;
81
82
  mode?: Mode;
82
83
  event_format?: EventFormat;
83
84
  after_sequence?: AfterSequence;
85
+ resume?: Resume;
84
86
  [k: string]: unknown;
85
87
  }
86
88
  }
@@ -93,8 +95,9 @@ export declare namespace SessionSubscribeBatchPayloadSchema {
93
95
  type Sessions = [SessionSubscribe, ...(SessionSubscribe)[]];
94
96
  type SessionId = string;
95
97
  type Mode = string;
96
- type EventFormat = ("raw" | "projection");
98
+ type EventFormat = "raw";
97
99
  type AfterSequence = number;
100
+ type Resume = boolean;
98
101
  interface SessionSubscribeBatchPayload {
99
102
  sessions: Sessions;
100
103
  [k: string]: unknown;
@@ -104,6 +107,7 @@ export declare namespace SessionSubscribeBatchPayloadSchema {
104
107
  mode?: Mode;
105
108
  event_format?: EventFormat;
106
109
  after_sequence?: AfterSequence;
110
+ resume?: Resume;
107
111
  [k: string]: unknown;
108
112
  }
109
113
  }
@@ -217,143 +221,27 @@ export declare namespace SystemNotificationPayloadSchema {
217
221
  }
218
222
  }
219
223
  export type SystemNotificationPayload = SystemNotificationPayloadSchema.SystemNotificationPayload;
220
- export declare namespace TurnProjectionPayloadSchema {
221
- type Id = string;
222
- type Sequence = number;
223
- type TurnId = string;
224
- type LoopId = string;
225
- type TurnKind = ("message" | "compaction");
226
- type Role = ("user" | "assistant" | "system");
227
- type Status = ("streaming" | "completed" | "paused" | "failed" | "interrupted");
228
- type Type = ("text" | "thinking" | "tool_use" | "tool_result" | "tool_ui" | "tool_bridge" | "system_notification" | "mode_change" | "plan_status" | "ask_user_answer");
229
- type Content = string;
230
- type ToolCallId = (string | null);
231
- type ToolName = (string | null);
232
- type DisplayName = (string | null);
233
- type Blocks = ContentBlock[];
234
- type Id1 = string;
235
- type ToolName1 = string;
236
- type DisplayName1 = string;
237
- type Arguments = string;
238
- type Status1 = ("pending" | "done" | "error" | "cancelled" | "awaiting_answer");
239
- type DurationMs = (number | null);
240
- type ChildLoopName = string;
241
- type ChildToolCallId = string;
242
- type Description = (string | null);
243
- type ToolCalls = ToolCallProjection[];
244
- type Model = (string | null);
245
- type Usage = ({
246
- [k: string]: unknown;
247
- } | null);
248
- type DurationMs1 = number;
249
- type StartedAt = (string | null);
250
- type ContextWindow = number;
251
- type MemoryRefs = (MemoryRef[] | null);
252
- type Id2 = number;
253
- type ContentPreview = string;
254
- type SkillName = (string | null);
255
- type ParentForkToolCallId = (string | null);
256
- type CompactionId = (string | null);
257
- type SummaryPreview = (string | null);
258
- type SummaryFull = (string | null);
259
- type ArchivedCount = (number | null);
260
- type TokensBefore = (number | null);
261
- type TokensAfter = (number | null);
262
- type SavedRatio = (number | null);
263
- type Trigger = (("auto" | "manual" | "forced_retry") | null);
264
- type FailureReason = (string | null);
265
- type FallbackApplied = (boolean | null);
224
+ export declare namespace TurnEventsPayloadSchema {
266
225
  type SessionId = string;
267
- type SolutionId = (string | null);
268
- type TemplateId = (string | null);
269
- interface TurnProjectionPayload {
270
- id: Id;
271
- sequence: Sequence;
272
- turn_id: TurnId;
273
- loop_id: LoopId;
274
- kind?: TurnKind;
275
- role: Role;
276
- status: Status;
277
- blocks?: Blocks;
278
- tool_calls?: ToolCalls;
279
- model?: Model;
280
- usage?: Usage;
281
- duration_ms?: DurationMs1;
282
- started_at?: StartedAt;
283
- context_window?: ContextWindow;
284
- memory_refs?: MemoryRefs;
285
- parent_fork_tool_call_id?: ParentForkToolCallId;
286
- compaction_id?: CompactionId;
287
- summary_preview?: SummaryPreview;
288
- summary_full?: SummaryFull;
289
- archived_count?: ArchivedCount;
290
- tokens_before?: TokensBefore;
291
- tokens_after?: TokensAfter;
292
- saved_ratio?: SavedRatio;
293
- trigger?: Trigger;
294
- failure_reason?: FailureReason;
295
- fallback_applied?: FallbackApplied;
226
+ type Type = string;
227
+ type StreamSequence = (number | null);
228
+ type Events = RawWireEvent[];
229
+ interface TurnEventsPayload {
296
230
  session_id: SessionId;
297
- solution_id?: SolutionId;
298
- template_id?: TemplateId;
231
+ events: Events;
299
232
  [k: string]: unknown;
300
233
  }
301
- interface ContentBlock {
234
+ interface RawWireEvent {
302
235
  type: Type;
303
- content?: Content;
304
- tool_call_id?: ToolCallId;
305
- tool_name?: ToolName;
306
- display_name?: DisplayName;
307
- [k: string]: unknown;
308
- }
309
- interface ToolCallProjection {
310
- id: Id1;
311
- tool_name: ToolName1;
312
- display_name: DisplayName1;
313
- arguments?: Arguments;
314
- status?: Status1;
315
- result?: Result;
316
- duration_ms?: DurationMs;
317
- pending_question_ref?: (PendingQuestionRef | null);
318
- [k: string]: unknown;
319
- }
320
- interface Result {
321
- [k: string]: unknown;
322
- }
323
- interface PendingQuestionRef {
324
- child_loop_name: ChildLoopName;
325
- child_tool_call_id: ChildToolCallId;
326
- description?: Description;
327
- [k: string]: unknown;
328
- }
329
- interface MemoryRef {
330
- id: Id2;
331
- content_preview: ContentPreview;
332
- skill_name?: SkillName;
333
- [k: string]: unknown;
334
- }
335
- }
336
- export type TurnProjectionPayload = TurnProjectionPayloadSchema.TurnProjectionPayload;
337
- export declare namespace PatchEnvelopePayloadSchema {
338
- type Sequence = number;
339
- type TurnId = string;
340
- type LoopId = string;
341
- type PatchType = string;
342
- type SessionId = string;
343
- interface PatchEnvelopePayload {
344
- sequence: Sequence;
345
- turn_id: TurnId;
346
- loop_id: LoopId;
347
- patch_type: PatchType;
348
- data?: Data;
349
- session_id: SessionId;
236
+ payload: Payload;
237
+ stream_sequence?: StreamSequence;
350
238
  [k: string]: unknown;
351
239
  }
352
- interface Data {
240
+ interface Payload {
353
241
  [k: string]: unknown;
354
242
  }
355
243
  }
356
- export type PatchEnvelopePayload = PatchEnvelopePayloadSchema.PatchEnvelopePayload;
244
+ export type TurnEventsPayload = TurnEventsPayloadSchema.TurnEventsPayload;
357
245
  export declare namespace AsrReadyPayloadSchema {
358
246
  type RequestId = string;
359
247
  type Provider = string;
@@ -481,9 +369,7 @@ export interface ServerToClientEvents {
481
369
  "workspace:files_changed": (payload: WorkspaceFilesChangedPayload) => void;
482
370
  "system:error": (payload: SystemErrorPayload) => void;
483
371
  "system:notification": (payload: SystemNotificationPayload) => void;
484
- "turn:start": (payload: TurnProjectionPayload) => void;
485
- "turn:patch": (payload: PatchEnvelopePayload) => void;
486
- "turn:end": (payload: TurnProjectionPayload) => void;
372
+ "turn:events": (payload: TurnEventsPayload) => void;
487
373
  "task:updated": (payload: unknown) => void;
488
374
  "task:synced": (payload: unknown) => void;
489
375
  "artifact:created": (payload: unknown) => void;
@@ -0,0 +1,5 @@
1
+ import type { AppDevTemplatesResource } from "../../client/resources/app-dev-templates.js";
2
+ export type * from "../../client/resources/app-dev-templates.js";
3
+ export declare const list: (...args: Parameters<AppDevTemplatesResource["list"]>) => Promise<import("./app-dev-templates.js").AppDevTemplateListResponse>;
4
+ export declare const get: (...args: Parameters<AppDevTemplatesResource["get"]>) => Promise<import("./app-dev-templates.js").AppDevTemplateDetail>;
5
+ export declare const getMediaUrl: (...args: Parameters<AppDevTemplatesResource["getMediaUrl"]>) => string;
@@ -0,0 +1,68 @@
1
+ export type ThinkingRequestFormat = "auto" | "none" | "openai_reasoning_effort" | "openrouter_reasoning" | "deepseek_thinking" | "together_reasoning" | "zai_thinking" | "qwen_enable_thinking" | "sglang_chat_template";
2
+ export interface RuntimeProviderConfig {
3
+ name: string;
4
+ base_url: string;
5
+ api_key_configured: boolean;
6
+ thinking_request_format: ThinkingRequestFormat;
7
+ effective_thinking_request_format: Exclude<ThinkingRequestFormat, "auto">;
8
+ }
9
+ export interface RuntimeModelDetails {
10
+ id: string;
11
+ context_window: number;
12
+ supports_vision: boolean;
13
+ }
14
+ export interface RuntimeModelConfig {
15
+ id: string;
16
+ provider: RuntimeProviderConfig;
17
+ model: RuntimeModelDetails;
18
+ }
19
+ export interface RuntimeModelConfigCollection {
20
+ items: RuntimeModelConfig[];
21
+ default_config_id: string;
22
+ source: "saved" | "startup";
23
+ }
24
+ export interface UpdateProviderConfig {
25
+ base_url: string;
26
+ api_key?: string;
27
+ thinking_request_format: ThinkingRequestFormat;
28
+ }
29
+ export interface UpdateModelDetails {
30
+ id: string;
31
+ context_window: number;
32
+ supports_vision: boolean;
33
+ }
34
+ export interface UpdateRuntimeModelConfig {
35
+ provider: UpdateProviderConfig;
36
+ model: UpdateModelDetails;
37
+ }
38
+ export interface ModelConfigProbe {
39
+ provider: UpdateProviderConfig;
40
+ model_id: string;
41
+ config_id?: string;
42
+ }
43
+ export interface ModelCandidatesRequest {
44
+ provider: UpdateProviderConfig;
45
+ config_id?: string;
46
+ }
47
+ export interface ModelCandidatesResult {
48
+ provider_name: string;
49
+ models: string[];
50
+ }
51
+ export interface ContextWindowDetectionResult {
52
+ provider_name: string;
53
+ model_id: string;
54
+ context_window: number;
55
+ }
56
+ export interface ModelConfigTestResult {
57
+ ok: boolean;
58
+ provider_name: string;
59
+ model_id: string;
60
+ }
61
+ export declare function getRuntimeModelConfigs(): Promise<RuntimeModelConfigCollection>;
62
+ export declare function createRuntimeModelConfig(config: UpdateRuntimeModelConfig): Promise<RuntimeModelConfigCollection>;
63
+ export declare function updateRuntimeModelConfig(configId: string, config: UpdateRuntimeModelConfig): Promise<RuntimeModelConfigCollection>;
64
+ export declare function deleteRuntimeModelConfig(configId: string): Promise<RuntimeModelConfigCollection>;
65
+ export declare function setDefaultRuntimeModelConfig(configId: string): Promise<RuntimeModelConfigCollection>;
66
+ export declare function detectContextWindow(config: ModelConfigProbe): Promise<ContextWindowDetectionResult>;
67
+ export declare function listModelCandidates(config: ModelCandidatesRequest): Promise<ModelCandidatesResult>;
68
+ export declare function testRuntimeModelConfig(config: ModelConfigProbe): Promise<ModelConfigTestResult>;
@@ -2,10 +2,12 @@ import type { ModelsResource } from "../../client/resources/models.js";
2
2
  export * from "../../client/resources/models.js";
3
3
  export declare const getModelsConfig: (...args: Parameters<ModelsResource["getModelsConfig"]>) => Promise<{
4
4
  default: string;
5
+ thinkingAvailable?: boolean | undefined;
5
6
  models: {
6
7
  id: string;
7
8
  label: string;
8
9
  inputModalities?: string[] | undefined;
9
10
  supportsImage?: boolean | undefined;
11
+ thinkingAvailable?: boolean | undefined;
10
12
  }[];
11
13
  }>;
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  listPublishedApps,
3
3
  unpublishApp
4
- } from "../../chunk-M72OL7ZJ.js";
5
- import "../../chunk-SBASG3M2.js";
4
+ } from "../../chunk-HCQDDDOX.js";
5
+ import "../../chunk-UWNQ4PXK.js";
6
6
  import "../../chunk-J3XVFPOV.js";
7
- import "../../chunk-34GDDOWY.js";
7
+ import "../../chunk-YJ6BX3FU.js";
8
8
  import "../../chunk-JCJFFJ42.js";
9
9
  import "../../chunk-PZ5AY32C.js";
10
10
  export {
@@ -41,9 +41,9 @@ import {
41
41
  updateSharing,
42
42
  uploadFiles,
43
43
  writeFile
44
- } from "../../chunk-SBASG3M2.js";
44
+ } from "../../chunk-UWNQ4PXK.js";
45
45
  import "../../chunk-J3XVFPOV.js";
46
- import "../../chunk-34GDDOWY.js";
46
+ import "../../chunk-YJ6BX3FU.js";
47
47
  import "../../chunk-JCJFFJ42.js";
48
48
  import "../../chunk-PZ5AY32C.js";
49
49
  export {
@@ -11,7 +11,7 @@ interface SourceLoopInfo {
11
11
  loop_name: string;
12
12
  description: string;
13
13
  }
14
- interface AskUserQuestionData {
14
+ export interface AskUserQuestionData {
15
15
  questions: QuestionItem[];
16
16
  source_loop?: SourceLoopInfo | null;
17
17
  }
@@ -7,8 +7,12 @@ export interface ChatSendOptions {
7
7
  model?: string | null;
8
8
  thinkingOverride?: boolean;
9
9
  }
10
+ export interface EnsureSessionResult {
11
+ sessionId: string;
12
+ pendingFilesHandled?: boolean;
13
+ }
10
14
  interface Props {
11
- onSend: (message: MessageContent, options?: ChatSendOptions) => void;
15
+ onSend: (message: MessageContent, options?: ChatSendOptions) => void | Promise<void>;
12
16
  onAppend?: (message: string) => void;
13
17
  onStop: () => void | Promise<void>;
14
18
  isStreaming: boolean;
@@ -24,7 +28,7 @@ interface Props {
24
28
  * path reaches exactly the session the files landed in — independent of
25
29
  * whatever the global activeSessionId is at that moment.
26
30
  */
27
- ensureSession?: (draftText: string) => Promise<string>;
31
+ ensureSession?: (draftText: string, options?: Pick<ChatSendOptions, "model" | "thinkingOverride">) => Promise<string | EnsureSessionResult>;
28
32
  onCommand?: (commandId: string) => void | Promise<void>;
29
33
  canShareSession?: boolean;
30
34
  /**
@@ -32,6 +36,8 @@ interface Props {
32
36
  * bar). ship-attack uses this to mount QuoteChipList for R4.
33
37
  */
34
38
  slotAboveTextarea?: ReactNode;
39
+ /** Optional business context rendered immediately before the send button. */
40
+ slotBeforeSend?: ReactNode;
35
41
  /**
36
42
  * Optional external draft channel. When provided, the composer initializes
37
43
  * from `value` on mount and mirrors every internal `setInput` call into
@@ -84,11 +90,11 @@ export type FileComposerAttachment = {
84
90
  textContent?: string | null;
85
91
  uploadProgress?: number | null;
86
92
  };
87
- type ComposerAttachment = FileComposerAttachment;
93
+ export type ComposerAttachment = FileComposerAttachment;
88
94
  export declare function buildSubmitPayload(text: string, attachments: ComposerAttachment[], pendingContexts: {
89
95
  label: string;
90
96
  content: string;
91
97
  imageUrl?: string;
92
98
  }[], onBeforeSend?: (content: MessageContent) => MessageContent | Promise<MessageContent>): Promise<MessageContent>;
93
- export declare function ChatInput({ onSend, onAppend, onStop, isStreaming, isStopping, mode, onToggleMode, renderAttachments, onBeforeSend, ensureSession, onCommand, canShareSession, slotAboveTextarea, externalDraft, externalAttachments, maxWidthClassName, className, innerClassName, SkillStatusBarComponent, skillStatusBarClassName, skillStatusBarInnerClassName, onResyncSkills, isResyncingSkills, inputLabel, onDoubleEscape, composerHint, }: Props): import("react/jsx-runtime").JSX.Element;
99
+ export declare function ChatInput({ onSend, onAppend, onStop, isStreaming, isStopping, mode, onToggleMode, renderAttachments, onBeforeSend, ensureSession, onCommand, canShareSession, slotAboveTextarea, slotBeforeSend, externalDraft, externalAttachments, maxWidthClassName, className, innerClassName, SkillStatusBarComponent, skillStatusBarClassName, skillStatusBarInnerClassName, onResyncSkills, isResyncingSkills, inputLabel, onDoubleEscape, composerHint, }: Props): import("react/jsx-runtime").JSX.Element;
94
100
  export {};
@@ -12,5 +12,7 @@ export interface ChatViewProps extends ChatViewCustomization {
12
12
  inputLabel?: string;
13
13
  onDoubleEscape?: (anchorRect: DOMRect | null) => void;
14
14
  composerHint?: ReactNode;
15
+ scrollToStartKey?: string | null;
16
+ scrollToEntryKey?: string | null;
15
17
  }
16
- export declare function ChatView({ sessionId, renderAttachments, onBeforeSend, onCommand, canShareSession, onResyncSkills, isResyncingSkills, inputLabel, onDoubleEscape, composerHint, classNames, components, renderers, }: ChatViewProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function ChatView({ sessionId, renderAttachments, onBeforeSend, onCommand, canShareSession, onResyncSkills, isResyncingSkills, inputLabel, onDoubleEscape, composerHint, scrollToStartKey, scrollToEntryKey, classNames, components, renderers, }: ChatViewProps): import("react/jsx-runtime").JSX.Element;
@@ -8,6 +8,8 @@ interface Props {
8
8
  sessionStatus?: string;
9
9
  onConfirmPlan?: (action: "execute" | "revise", text?: string) => void;
10
10
  customization?: ChatViewCustomization;
11
+ scrollToStartKey?: string | null;
12
+ scrollToEntryKey?: string | null;
11
13
  }
12
- export declare function MessageList({ sessionId, messages: rawMessages, onAnswer, sessionStatus, onConfirmPlan, customization, }: Props): import("react/jsx-runtime").JSX.Element;
14
+ export declare function MessageList({ sessionId, messages: rawMessages, onAnswer, sessionStatus, onConfirmPlan, customization, scrollToStartKey, scrollToEntryKey, }: Props): import("react/jsx-runtime").JSX.Element;
13
15
  export {};
@@ -1,6 +1,6 @@
1
1
  export { ChatView, type ChatViewProps } from "./ChatView.js";
2
2
  export { AttachmentPreviewDialog } from "./AttachmentPreviewDialog.js";
3
- export { ChatInput, type ChatSendOptions, type FileComposerAttachment } from "./ChatInput.js";
3
+ export { ChatInput, type ChatSendOptions, type ComposerAttachment, type EnsureSessionResult, type FileComposerAttachment, } from "./ChatInput.js";
4
4
  export { ThinkingToggle } from "./ThinkingToggle.js";
5
5
  export { FileSizeLimitDialog } from "./FileSizeLimitDialog.js";
6
6
  export { ImageLightbox } from "./ImageLightbox.js";
@@ -17,16 +17,16 @@ import {
17
17
  isErrorMessage,
18
18
  isUserMessage,
19
19
  useWhatIfQuoteContext
20
- } from "../../../chunk-X2NJKKXR.js";
20
+ } from "../../../chunk-N2OE5MVV.js";
21
21
  import "../../../chunk-H62LH2AG.js";
22
22
  import {
23
23
  AskUserQuestionBlock
24
- } from "../../../chunk-TE6G6NVX.js";
25
- import "../../../chunk-C2FKVGJU.js";
24
+ } from "../../../chunk-YXHPJGXR.js";
25
+ import "../../../chunk-PYYDXV2A.js";
26
26
  import "../../../chunk-2UP7MG3J.js";
27
- import "../../../chunk-SBASG3M2.js";
27
+ import "../../../chunk-UWNQ4PXK.js";
28
28
  import "../../../chunk-J3XVFPOV.js";
29
- import "../../../chunk-34GDDOWY.js";
29
+ import "../../../chunk-YJ6BX3FU.js";
30
30
  import "../../../chunk-7LEKQI47.js";
31
31
  import "../../../chunk-JCJFFJ42.js";
32
32
  import "../../../chunk-PZ5AY32C.js";
@@ -0,0 +1,8 @@
1
+ export declare const ENTRY_SCROLL_MARGIN_PX = 24;
2
+ export declare function normalizeScrollEntryKey(value: string | null | undefined): string | null;
3
+ export declare function calculateAnchoredScrollTop({ scrollTop, containerTop, targetTop, margin, }: {
4
+ scrollTop: number;
5
+ containerTop: number;
6
+ targetTop: number;
7
+ margin?: number;
8
+ }): number;
@@ -3,12 +3,12 @@ import {
3
3
  PlanSummaryCard,
4
4
  extractLatestPlanMessages,
5
5
  parsePlanMessages
6
- } from "../../../chunk-TE6G6NVX.js";
7
- import "../../../chunk-C2FKVGJU.js";
6
+ } from "../../../chunk-YXHPJGXR.js";
7
+ import "../../../chunk-PYYDXV2A.js";
8
8
  import "../../../chunk-2UP7MG3J.js";
9
- import "../../../chunk-SBASG3M2.js";
9
+ import "../../../chunk-UWNQ4PXK.js";
10
10
  import "../../../chunk-J3XVFPOV.js";
11
- import "../../../chunk-34GDDOWY.js";
11
+ import "../../../chunk-YJ6BX3FU.js";
12
12
  import {
13
13
  cn
14
14
  } from "../../../chunk-7LEKQI47.js";
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  useSession
3
- } from "../../../chunk-JU5SL4HP.js";
3
+ } from "../../../chunk-TVWC3PED.js";
4
4
  import {
5
5
  checkoutSession,
6
6
  getSessionCheckpoints,
7
7
  useChatStore,
8
8
  useSessionStore
9
- } from "../../../chunk-SBASG3M2.js";
9
+ } from "../../../chunk-UWNQ4PXK.js";
10
10
  import "../../../chunk-J3XVFPOV.js";
11
- import "../../../chunk-34GDDOWY.js";
11
+ import "../../../chunk-YJ6BX3FU.js";
12
12
  import {
13
13
  cn
14
14
  } from "../../../chunk-7LEKQI47.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "../../../chunk-H62LH2AG.js";
6
6
  import {
7
7
  resolveSessionFilePreviewTarget
8
- } from "../../../chunk-C2FKVGJU.js";
8
+ } from "../../../chunk-PYYDXV2A.js";
9
9
  import {
10
10
  apiFetchText,
11
11
  copyFile,
@@ -19,9 +19,9 @@ import {
19
19
  useChatStore,
20
20
  useSessionStore,
21
21
  useUiStore
22
- } from "../../../chunk-SBASG3M2.js";
22
+ } from "../../../chunk-UWNQ4PXK.js";
23
23
  import "../../../chunk-J3XVFPOV.js";
24
- import "../../../chunk-34GDDOWY.js";
24
+ import "../../../chunk-YJ6BX3FU.js";
25
25
  import {
26
26
  cn
27
27
  } from "../../../chunk-7LEKQI47.js";
@@ -2,6 +2,7 @@ import { type ModelOption } from "../api/models.js";
2
2
  export declare function useModelConfig(): {
3
3
  models: ModelOption[];
4
4
  defaultModel: string;
5
+ thinkingAvailable: boolean;
5
6
  isLoading: boolean;
6
7
  };
7
8
  export declare function usePreferredModel(): {
@@ -1,5 +1,6 @@
1
1
  export declare function useResolvedModel(activeSessionModel?: string | null): {
2
2
  resolvedModel: string;
3
3
  hasAvailableModel: boolean;
4
+ thinkingAvailable: boolean;
4
5
  isLoading: boolean;
5
6
  };
@@ -3,6 +3,7 @@ export { BladeContext } from "./context.js";
3
3
  export { BladeClientProvider, useBladeClient } from "./provider.js";
4
4
  export type { BladeClientProviderProps } from "./provider.js";
5
5
  export * as apiKeysApi from "./api/api-keys.js";
6
+ export * as appDevTemplatesApi from "./api/app-dev-templates.js";
6
7
  export type { ApiKeyCreateResponse, ApiKeyPublic } from "./api/api-keys.js";
7
8
  export * as authApi from "./api/auth.js";
8
9
  export * as envBucketsApi from "./api/env-buckets.js";
@@ -12,6 +13,8 @@ export type * from "./api/client.js";
12
13
  export * as memoriesApi from "./api/memories.js";
13
14
  export * as gisApi from "./api/gis-api.js";
14
15
  export * as modelsApi from "./api/models.js";
16
+ export * as modelConfigApi from "./api/model-config.js";
17
+ export type { ContextWindowDetectionResult, ModelCandidatesRequest, ModelCandidatesResult, ModelConfigProbe, ModelConfigTestResult, RuntimeModelConfig, RuntimeModelConfigCollection, RuntimeModelDetails, RuntimeProviderConfig, ThinkingRequestFormat, UpdateModelDetails, UpdateProviderConfig, UpdateRuntimeModelConfig, } from "./api/model-config.js";
15
18
  export type { Memory, MemoryCreateBody, MemoryListParams, MemoryListResponse, } from "./api/memories.js";
16
19
  export * as partnerSkillApi from "./api/partner-skill.js";
17
20
  export * as publishedAppsApi from "./api/published-apps.js";