@blade-hq/agent-kit 0.5.35 → 1.0.1

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 (35) hide show
  1. package/dist/{SkillStatusBar-Dp93pqlP.d.ts → SkillStatusBar-dAc3k2rZ.d.ts} +2 -2
  2. package/dist/{blade-client-DS7lV19a.d.ts → blade-client-BDKe7LRv.d.ts} +25 -3
  3. package/dist/{chunk-LVWRKH45.js → chunk-6PKGWPIK.js} +2 -2
  4. package/dist/{chunk-DQXXSHCR.js → chunk-DN4CKDDQ.js} +46 -5
  5. package/dist/chunk-DN4CKDDQ.js.map +1 -0
  6. package/dist/{chunk-OVOZQHYQ.js → chunk-HRQSJO3P.js} +45 -6
  7. package/dist/chunk-HRQSJO3P.js.map +1 -0
  8. package/dist/{chunk-IRHXGYY3.js → chunk-O5FJLN6G.js} +3 -3
  9. package/dist/{chunk-KSYNFNF4.js → chunk-QMYGPQCX.js} +2 -2
  10. package/dist/{chunk-II2PTBJI.js → chunk-U7Y7GRF6.js} +145 -17
  11. package/dist/chunk-U7Y7GRF6.js.map +1 -0
  12. package/dist/client/index.d.ts +1462 -132
  13. package/dist/client/index.js +1 -1
  14. package/dist/react/api/vibe-coding.d.ts +3 -3
  15. package/dist/react/api/vibe-coding.js +2 -2
  16. package/dist/react/components/chat/index.d.ts +4 -4
  17. package/dist/react/components/chat/index.js +5 -5
  18. package/dist/react/components/plan/index.js +4 -4
  19. package/dist/react/components/session/index.d.ts +1 -1
  20. package/dist/react/components/session/index.js +3 -3
  21. package/dist/react/components/workspace/index.d.ts +3 -3
  22. package/dist/react/components/workspace/index.js +140 -129
  23. package/dist/react/components/workspace/index.js.map +1 -1
  24. package/dist/react/index.d.ts +37 -10
  25. package/dist/react/index.js +49 -16
  26. package/dist/react/index.js.map +1 -1
  27. package/dist/{session-B5v5KkVd.d.ts → session-o8bAQoXK.d.ts} +11 -1
  28. package/dist/{sessions-DaddUdO6.d.ts → sessions-D_cIKSO6.d.ts} +2 -2
  29. package/package.json +1 -1
  30. package/dist/chunk-DQXXSHCR.js.map +0 -1
  31. package/dist/chunk-II2PTBJI.js.map +0 -1
  32. package/dist/chunk-OVOZQHYQ.js.map +0 -1
  33. /package/dist/{chunk-LVWRKH45.js.map → chunk-6PKGWPIK.js.map} +0 -0
  34. /package/dist/{chunk-IRHXGYY3.js.map → chunk-O5FJLN6G.js.map} +0 -0
  35. /package/dist/{chunk-KSYNFNF4.js.map → chunk-QMYGPQCX.js.map} +0 -0
@@ -1,19 +1,19 @@
1
- import { v as BladeClient, w as BladeClientOptions, s as ApiKeysResource, A as ApiKeyCreateResponse, r as ApiKeyPublic, t as AuthResource, aB as UserInfo, ac as ProvidersResponse, aF as EnvBucketsResource, aG as EnvBucket, aH as PlatformEnvBucket, a3 as MemoriesResource, a4 as Memory, a7 as MemoryListResponse, a5 as MemoryCreateBody, a6 as MemoryListParams, W as GisResource, aI as GisState, aJ as RuntimeConfig, aa as ModelsResource, a8 as ModelOption, a9 as ModelsConfig, an as SkillsResource, X as GlobalSkillStats, aK as SkillDetail, aL as SkillStats, a1 as InstalledRegistrySkill, aM as SkillSummary, aN as SkillSearchResult, aO as PartnerSkillInstallPayload, aP as PartnerSkillInstallResult, aQ as SessionSkillUploadPayload, aR as SessionSkillUploadResult, ad as PublishedAppsResource, aS as PublishedApp, aT as PublishedAppListResponse, aU as PublishedAppStatus, aV as UnpublishAppResponse, aC as UserPreferencesResource, M as ComputerUpgradeStatusResponse, aA as UpgradeComputerResponse, au as SolutionsResource, ai as ScenariosResource, ae as QuickScenario, y as BladeHubScenarioResource, N as CreateQuickScenarioPayload, ab as PreviewUrlItem, az as UpdateQuickScenarioPayload, ap as SoftwareFactoryResource, ar as SoftwareFactorySoftware, at as SoftwareFactoryTopicModule, aq as SoftwareFactorySharedFile, K as CodingTaskTopic, as as SoftwareFactoryTopic, J as CodingTask, Q as CreateSoftwareFactorySharedFilePayload, R as CreateSoftwareFactorySoftwarePayload, ao as SoftwareFactoryModuleBlueprint, ah as ResourceApi, ag as RegistryResource, al as SkillOrgListResponse, B as BackgroundTask, aW as GisGoal, aX as GisResource$1, aY as GisTarget, aZ as GisMapCommand, a_ as Task } from '../blade-client-DS7lV19a.js';
2
- export { a$ as AgentDriver, b0 as AgentResource, b1 as DatabaseDriver, b2 as DatabaseResource, b3 as DifyKnowledgeConfig, b4 as GisGoalStatus, b5 as HttpToolConfig, b6 as KnowledgeDriver, b7 as KnowledgeResource, b8 as McpToolConfig, b9 as MysqlConfig, ba as ParallelMode, bb as PartnerSkillFile, bb as PartnerSkillFileData, bc as PartnerSkillName, bc as PartnerSkillNameData, bd as PostgresqlConfig, af as REGISTRY_PREFIX, be as SessionSkillFile, be as SessionSkillFileData, bf as SessionSkillName, bf as SessionSkillNameData, am as SkillOrgOption, bg as StageSpec, bh as StepSpec, bi as TaskStatus, bj as ToolDriver, bk as ToolResource, aE as normalizeResource, bl as skillDisplayName } from '../blade-client-DS7lV19a.js';
1
+ import { v as BladeClient, w as BladeClientOptions, s as ApiKeysResource, A as ApiKeyCreateResponse, r as ApiKeyPublic, t as AuthResource, aC as UserInfo, ad as ProvidersResponse, aG as EnvBucketsResource, aH as EnvBucket, aI as PlatformEnvBucket, a4 as MemoriesResource, a5 as Memory, a8 as MemoryListResponse, a6 as MemoryCreateBody, a7 as MemoryListParams, X as GisResource, aJ as GisState, aK as RuntimeConfig, ab as ModelsResource, a9 as ModelOption, aa as ModelsConfig, ao as SkillsResource, Y as GlobalSkillStats, aL as SkillDetail, aM as SkillStats, a2 as InstalledRegistrySkill, aN as SkillSummary, aO as SkillSearchResult, aP as PartnerSkillInstallPayload, aQ as PartnerSkillInstallResult, aR as SessionSkillUploadPayload, aS as SessionSkillUploadResult, ae as PublishedAppsResource, aT as PublishedApp, aU as PublishedAppListResponse, aV as PublishedAppStatus, aW as UnpublishAppResponse, aD as UserPreferencesResource, M as ComputerUpgradeStatusResponse, aB as UpgradeComputerResponse, av as SolutionsResource, W as ExportedSolutionFile, aj as ScenariosResource, af as QuickScenario, y as BladeHubScenarioResource, N as CreateQuickScenarioPayload, ac as PreviewUrlItem, aA as UpdateQuickScenarioPayload, aq as SoftwareFactoryResource, as as SoftwareFactorySoftware, au as SoftwareFactoryTopicModule, ar as SoftwareFactorySharedFile, K as CodingTaskTopic, at as SoftwareFactoryTopic, J as CodingTask, Q as CreateSoftwareFactorySharedFilePayload, R as CreateSoftwareFactorySoftwarePayload, ap as SoftwareFactoryModuleBlueprint, ai as ResourceApi, ah as RegistryResource, am as SkillOrgListResponse, B as BackgroundTask, aX as GisGoal, aY as GisResource$1, aZ as GisTarget, a_ as GisMapCommand, a$ as Task } from '../blade-client-BDKe7LRv.js';
2
+ export { b0 as AgentDriver, b1 as AgentResource, b2 as DatabaseDriver, b3 as DatabaseResource, b4 as DifyKnowledgeConfig, b5 as GisGoalStatus, b6 as HttpToolConfig, b7 as KnowledgeDriver, b8 as KnowledgeResource, b9 as McpToolConfig, ba as MysqlConfig, bb as ParallelMode, bc as PartnerSkillFile, bc as PartnerSkillFileData, bd as PartnerSkillName, bd as PartnerSkillNameData, be as PostgresqlConfig, ag as REGISTRY_PREFIX, bf as SessionSkillFile, bf as SessionSkillFileData, bg as SessionSkillName, bg as SessionSkillNameData, an as SkillOrgOption, bh as StageSpec, bi as StepSpec, bj as TaskStatus, bk as ToolDriver, bl as ToolResource, aF as normalizeResource, bm as skillDisplayName } from '../blade-client-BDKe7LRv.js';
3
3
  import * as react from 'react';
4
4
  import { ReactNode, ComponentProps, JSX, ComponentType } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
- export { S as SessionExtraInfo, s as sessionsApi, u as uploadFiles } from '../sessions-DaddUdO6.js';
7
- import { B as BizRole, c as Solution, a as SessionInfo } from '../session-B5v5KkVd.js';
8
- export { L as LayoutType, M as ModeId, P as PrimarySkillParallelMode, d as PrimarySkillSnapshot, e as PrimarySkillStageSpec, f as PrimarySkillStepSpec, S as SessionDetail, g as SessionPortMapping, b as SessionStatus, h as SkillEditorTemplateId, i as SolutionAppField, j as SolutionAppState, k as SolutionAppUiConfig, T as TemplateId } from '../session-B5v5KkVd.js';
6
+ export { S as SessionExtraInfo, s as sessionsApi, u as uploadFiles } from '../sessions-D_cIKSO6.js';
7
+ import { B as BizRole, c as Solution, a as SessionInfo } from '../session-o8bAQoXK.js';
8
+ export { L as LayoutType, M as ModeId, P as PrimarySkillParallelMode, d as PrimarySkillSnapshot, e as PrimarySkillStageSpec, f as PrimarySkillStepSpec, S as SessionDetail, g as SessionPortMapping, b as SessionStatus, h as SkillEditorTemplateId, i as SolutionAppField, j as SolutionAppState, k as SolutionAppUiConfig, T as TemplateId } from '../session-o8bAQoXK.js';
9
9
  import * as arktype_internal_variants_object_ts from 'arktype/internal/variants/object.ts';
10
10
  import { M as MessageContent, C as ChatMessage, A as AskUserAnswerData, a as CompactionInfo } from '../AskUserQuestionBlock---kOTouk.js';
11
11
  export { F as FileContentPart, I as ImageUrlContentPart, c as MessageContentPart, d as TextContentPart, T as ToolCallInfo } from '../AskUserQuestionBlock---kOTouk.js';
12
12
  import * as _tanstack_react_query from '@tanstack/react-query';
13
13
  import { Editor } from '@tiptap/react';
14
14
  import { ClassValue } from 'clsx';
15
- import { l as ClientAwareState } from '../SkillStatusBar-Dp93pqlP.js';
16
- export { m as ATTACHMENT_SIZE_LIMIT_BYTES, B as BuildWhatIfPromptInput, a as ChatInput, b as ChatView, g as FileSizeLimitDialog, M as MessageList, O as OversizedFileInfo, P as ParsedWhatIfPrompt, S as SkillStatusBar, W as WhatIfQuote, n as buildWhatIfPrompt, o as formatFileSize, p as invalidateHomeSidebarSessions, q as parseWhatIfPrompt, s as splitFilesBySize, u as useSessionStore } from '../SkillStatusBar-Dp93pqlP.js';
15
+ import { l as ClientAwareState } from '../SkillStatusBar-dAc3k2rZ.js';
16
+ export { m as ATTACHMENT_SIZE_LIMIT_BYTES, B as BuildWhatIfPromptInput, a as ChatInput, b as ChatView, g as FileSizeLimitDialog, M as MessageList, O as OversizedFileInfo, P as ParsedWhatIfPrompt, S as SkillStatusBar, W as WhatIfQuote, n as buildWhatIfPrompt, o as formatFileSize, p as invalidateHomeSidebarSessions, q as parseWhatIfPrompt, s as splitFilesBySize, u as useSessionStore } from '../SkillStatusBar-dAc3k2rZ.js';
17
17
  import * as zustand from 'zustand';
18
18
  import { Streamdown, ExtraProps } from 'streamdown';
19
19
  import { T as TurnProjection, a as PatchEnvelope } from '../projection-BWYEFYNn.js';
@@ -815,13 +815,22 @@ declare namespace userPreferences {
815
815
  declare const fetchSolutions: (...args: Parameters<SolutionsResource["fetchSolutions"]>) => Promise<Solution[]>;
816
816
  declare const fetchSolutionFile: (...args: Parameters<SolutionsResource["fetchSolutionFile"]>) => Promise<string>;
817
817
  declare const fetchSolutionBizRoles: (...args: Parameters<SolutionsResource["fetchSolutionBizRoles"]>) => Promise<BizRole[]>;
818
+ declare const exportSolution: (...args: Parameters<SolutionsResource["exportSolution"]>) => Promise<ExportedSolutionFile>;
819
+ declare const publishSolution: (...args: Parameters<SolutionsResource["publishSolution"]>) => Promise<{
820
+ success: boolean;
821
+ solution_id: string;
822
+ message: string;
823
+ }>;
818
824
 
825
+ declare const solutions_ExportedSolutionFile: typeof ExportedSolutionFile;
819
826
  declare const solutions_SolutionsResource: typeof SolutionsResource;
827
+ declare const solutions_exportSolution: typeof exportSolution;
820
828
  declare const solutions_fetchSolutionBizRoles: typeof fetchSolutionBizRoles;
821
829
  declare const solutions_fetchSolutionFile: typeof fetchSolutionFile;
822
830
  declare const solutions_fetchSolutions: typeof fetchSolutions;
831
+ declare const solutions_publishSolution: typeof publishSolution;
823
832
  declare namespace solutions {
824
- export { solutions_SolutionsResource as SolutionsResource, solutions_fetchSolutionBizRoles as fetchSolutionBizRoles, solutions_fetchSolutionFile as fetchSolutionFile, solutions_fetchSolutions as fetchSolutions };
833
+ export { solutions_ExportedSolutionFile as ExportedSolutionFile, solutions_SolutionsResource as SolutionsResource, solutions_exportSolution as exportSolution, solutions_fetchSolutionBizRoles as fetchSolutionBizRoles, solutions_fetchSolutionFile as fetchSolutionFile, solutions_fetchSolutions as fetchSolutions, solutions_publishSolution as publishSolution };
825
834
  }
826
835
 
827
836
  declare const listQuickScenarios: (...args: Parameters<ScenariosResource["listQuickScenarios"]>) => Promise<QuickScenario[]>;
@@ -1065,6 +1074,7 @@ declare class AgentSocket {
1065
1074
  private client;
1066
1075
  private socket;
1067
1076
  private subscribedSession;
1077
+ private readonly attachedSessions;
1068
1078
  private readonly previewArtifactsByToolCall;
1069
1079
  private readonly deliveredBridgeKeys;
1070
1080
  private readonly pendingReplayMessages;
@@ -1074,6 +1084,7 @@ declare class AgentSocket {
1074
1084
  private readonly joinedSessions;
1075
1085
  private readonly requestedJoins;
1076
1086
  private readonly pendingJoins;
1087
+ private readonly boardProjectRefCounts;
1077
1088
  private patchFlushHandle;
1078
1089
  private patchFlushCancel;
1079
1090
  constructor(client: BladeClient);
@@ -1102,6 +1113,8 @@ declare class AgentSocket {
1102
1113
  * 前端,卡片就会停留在乐观写入的"运行中"态。
1103
1114
  *
1104
1115
  * 幂等:后端 session:subscribe handler 只做 enter_room,重复 emit 无副作用。
1116
+ * 同时把 sessionId 记到 attachedSessions,连接断开重连时一并重新订阅,
1117
+ * 避免长会话期间断网后再回来时丢掉该 session 的 turn 事件。
1105
1118
  */
1106
1119
  attachSession(sessionId: string): void;
1107
1120
  private _ensureJoined;
@@ -1175,6 +1188,11 @@ declare function useCheckSkillFile(sessionId: string | null): {
1175
1188
  refetch: () => Promise<void>;
1176
1189
  };
1177
1190
 
1191
+ declare function useCheckSolutionFile(sessionId: string | null): {
1192
+ exists: boolean;
1193
+ refetch: () => Promise<void>;
1194
+ };
1195
+
1178
1196
  declare function useGlobalSkillStats(): {
1179
1197
  data: GlobalSkillStats;
1180
1198
  loading: boolean;
@@ -1405,7 +1423,7 @@ interface PreviewTarget {
1405
1423
  /** Changes when an artifact with the same key is updated in place. */
1406
1424
  revision?: number;
1407
1425
  }
1408
- type ActiveRightTab = "situation" | "preview" | "skill-test" | "vibe-service" | "vibe-preview" | "vibe-access" | "vibe-board";
1426
+ type ActiveRightTab = "situation" | "preview" | "skill-test" | "vibe-service" | "vibe-preview" | "vibe-access" | "solution-editor" | "vibe-board";
1409
1427
  interface UpsertArtifactOptions {
1410
1428
  reveal?: boolean;
1411
1429
  activate?: boolean;
@@ -1417,10 +1435,13 @@ interface UiState extends ClientAwareState {
1417
1435
  rightPanelCollapsed: boolean;
1418
1436
  activeRightTab: ActiveRightTab;
1419
1437
  rightTabActivationId: number;
1438
+ rightPanelAutoJump: boolean;
1439
+ rightPanelUnreadTabs: string[];
1420
1440
  /** All open artifact tabs */
1421
1441
  artifacts: PreviewTarget[];
1422
1442
  /** Index of the active tab (-1 if none) */
1423
1443
  activeArtifactIndex: number;
1444
+ previewUnreadArtifactKeys: string[];
1424
1445
  theme: ThemeValue;
1425
1446
  setLeftPanelSize: (size: number) => void;
1426
1447
  setRightPanelSize: (size: number) => void;
@@ -1429,6 +1450,12 @@ interface UiState extends ClientAwareState {
1429
1450
  toggleLeftPanel: () => void;
1430
1451
  toggleRightPanel: () => void;
1431
1452
  setActiveRightTab: (tab: ActiveRightTab) => void;
1453
+ setRightPanelAutoJump: (enabled: boolean) => void;
1454
+ markRightPanelTabUnread: (tab: string) => void;
1455
+ clearRightPanelTabUnread: (tab: string) => void;
1456
+ markPreviewArtifactUnread: (key: string) => void;
1457
+ clearPreviewArtifactUnread: (key: string) => void;
1458
+ activateLatestUnreadArtifact: () => void;
1432
1459
  /** Add or update an artifact tab (matched by key/title). Opens the panel automatically. */
1433
1460
  pushArtifact: (target: PreviewTarget) => void;
1434
1461
  /** Add or update an artifact tab with optional reveal/activate control. */
@@ -2051,4 +2078,4 @@ interface UiBridgeState extends ClientAwareState {
2051
2078
  }
2052
2079
  declare const useUiBridgeStore: zustand.UseBoundStore<zustand.StoreApi<UiBridgeState>>;
2053
2080
 
2054
- export { type ActiveRightTab, type AnalyticsEventName, ApiKeyCreateResponse, ApiKeyPublic, type ArchitectureNode, type ArchitecturePayload, type ArchitectureVersion, type ArchitectureVersionListItem, BackgroundTask, BizRole, type BladeBridgeEnvelope, type BladeBridgeHandler, BladeClientOptions, BladeClientProvider, type BladeClientProviderProps, BladeContext, BladeHubScenarioResource, type BuildHtmlElementSelectionInput, type Card, CardCodeBlock, type CardComponent, type CardComponentProps, CardContext, CardJSON, type ChatEnd, ChatMessage, type ConnectionStatus, type ContentDelta, CreateQuickScenarioPayload, CreateSoftwareFactorySharedFilePayload, CreateSoftwareFactorySoftwarePayload, type DagPayload, type DagVersion, type DagVersionListItem, type DslStep, EnvBucket, EnvVariable, GisGoal, GisMapCommand, GisResource$1 as GisResource, GisState, GisTarget, GlobalSkillStats, type HtmlElementSelectionContext, type HtmlElementSelectionRaw, type HtmlSourceLocation, type HtmlSourceLocatorElement, InstalledRegistrySkill, type IssueAssigneeType, type IssuePriority, type IssueStatus, type LlmResponseDone, MarkdownContent, Memory, MemoryCreateBody, MemoryListParams, MemoryListResponse, MessageContent, ModelSelector, type MulticaAgent, type MulticaRuntime, PartnerSkillInstallPayload, PartnerSkillInstallPayload as PartnerSkillInstallPayloadData, PartnerSkillInstallResult, PartnerSkillInstallResult as PartnerSkillInstallResultData, PatchEnvelope, type PendingHtmlElementContext, PlatformEnvBucket, type PreviewTarget, PreviewUrlItem, type ProdAgentCatalogSolution, type ProdAgentPreviewUrl, type ProdAgentRecord, type ProdSolution, type ProdUser, type ProdUserTokenStatus, PublishedApp, PublishedAppListResponse, PublishedAppStatus, QuickScenario, RegistryResource, ResourceApi, ResourceBase, type ResourceBridgeAction, type ResourceBridgeDispatchParams, ResourceIframe, RuntimeConfig, type RuntimeEvent, Scene, SceneStatus, ScheduledTask, ScheduledTaskCalendarItem, ScheduledTaskCalendarItem as ScheduledTaskCalendarItemData, type ScheduledTaskCreatePayload, ScheduledTask as ScheduledTaskData, ScheduledTaskRun, ScheduledTaskRun as ScheduledTaskRunData, type ScheduledTaskUpdatePayload, SessionInfo, SessionSkillUploadPayload, SessionSkillUploadPayload as SessionSkillUploadPayloadData, SessionSkillUploadResult, SessionSkillUploadResult as SessionSkillUploadResultData, type SessionStatusEvent, SkillCompletionMenu, type SkillCompletionMenuRef, SkillDetail, SkillMention, SkillOrgListResponse, SkillSearchResult, type SkillSuggestionItem, SkillSummary, SoftwareFactorySharedFile, SoftwareFactorySoftware, Solution, type StepMessageRange, type SystemError, Task, type ToolCallCreated, type ToolResultDone, TurnProjection, type UiMeta, UnpublishAppResponse, UpdateQuickScenarioPayload, type UseTiptapVoiceInputOptions, type UseTiptapVoiceInputResult, type UseVoiceInputOptions, type UseVoiceInputResult, type UserWorkspace, type VoiceInputError, type VoiceInputStatus, VoiceWaveform, type WorkspaceIssue, type WorkspaceIssueTaskRun, type WorkspaceIssueTimelineEntry, type WorkspaceIssueUsageSummary, type WorkspaceMember, agentApi, agentSocket, apiFetch, apiFetchResponse, apiFetchText, apiKeys as apiKeysApi, attachClientToStores, attachHostBridgeListener, auth as authApi, bootstrapBladeClient, buildBinaryPreviewTarget, buildHtmlElementSelectionContext, buildMessageContent, buildSessionBinaryPreviewTarget, buildStepRanges, buildVoiceInputUnavailableError, cardRegistry, cn, copyToClipboard, createResourceApi, databaseApi, deriveDeprecateEntryIds, dispatchBladeBridge, envBuckets as envBucketsApi, getAuthedUrl, getBaseUrl, getBootstrappedClient, getClient, getCodeLanguageFromFilename, getSocket, getTextContent, gisApi, groupMessagesByLoop, isInsideIframe, isOfficePdfPreviewable, isUiMeta, knowledgeApi, listSkillOrgs, locateHtmlElementSource, memories as memoriesApi, models as modelsApi, normalizeCodeLanguage, partnerSkill as partnerSkillApi, postToParent, prodSolution as prodSolutionApi, publishSkill, publishedApps as publishedAppsApi, resolveEffectiveTheme, resolveSessionFilePreviewTarget, resolveTextPreviewType, resourceBridgeDispatch, scenarios as scenariosApi, scheduledTasks as scheduledTasksApi, setAnalyticsClient, setOnWorkspaceFilesChanged, skillMentionSuggestionKey, skills as skillsApi, softwareFactory as softwareFactoryApi, solutions as solutionsApi, subscribeBladeBridge, toolApi, trackEvent, transformSlashCommand, useAgents, useAuthStore, useBackgroundStore, useBackgroundTasks, useBladeClient, useCardContext, useCardState, useCardStateStore, useChat, useChatStore, useCheckSkillFile, useConnectionStore, useDataSources, useGisState, useGisStore, useGlobalSkillStats, useHighlightedCodeHtml, useInputHistory, useKnowledgeBases, useModelConfig, usePreferredModel, useResolvedModel, useRuntimeConfig, useRuntimeFeaturesStore, useRuntimeStore, useSession, useSkills, useTaskStore, useTiptapVoiceInput, useToolProviders, useUiBridgeStore, useUiStore, useVoiceInput, userPreferences as userPreferencesApi };
2081
+ export { type ActiveRightTab, type AnalyticsEventName, ApiKeyCreateResponse, ApiKeyPublic, type ArchitectureNode, type ArchitecturePayload, type ArchitectureVersion, type ArchitectureVersionListItem, BackgroundTask, BizRole, type BladeBridgeEnvelope, type BladeBridgeHandler, BladeClientOptions, BladeClientProvider, type BladeClientProviderProps, BladeContext, BladeHubScenarioResource, type BuildHtmlElementSelectionInput, type Card, CardCodeBlock, type CardComponent, type CardComponentProps, CardContext, CardJSON, type ChatEnd, ChatMessage, type ConnectionStatus, type ContentDelta, CreateQuickScenarioPayload, CreateSoftwareFactorySharedFilePayload, CreateSoftwareFactorySoftwarePayload, type DagPayload, type DagVersion, type DagVersionListItem, type DslStep, EnvBucket, EnvVariable, GisGoal, GisMapCommand, GisResource$1 as GisResource, GisState, GisTarget, GlobalSkillStats, type HtmlElementSelectionContext, type HtmlElementSelectionRaw, type HtmlSourceLocation, type HtmlSourceLocatorElement, InstalledRegistrySkill, type IssueAssigneeType, type IssuePriority, type IssueStatus, type LlmResponseDone, MarkdownContent, Memory, MemoryCreateBody, MemoryListParams, MemoryListResponse, MessageContent, ModelSelector, type MulticaAgent, type MulticaRuntime, PartnerSkillInstallPayload, PartnerSkillInstallPayload as PartnerSkillInstallPayloadData, PartnerSkillInstallResult, PartnerSkillInstallResult as PartnerSkillInstallResultData, PatchEnvelope, type PendingHtmlElementContext, PlatformEnvBucket, type PreviewTarget, PreviewUrlItem, type ProdAgentCatalogSolution, type ProdAgentPreviewUrl, type ProdAgentRecord, type ProdSolution, type ProdUser, type ProdUserTokenStatus, PublishedApp, PublishedAppListResponse, PublishedAppStatus, QuickScenario, RegistryResource, ResourceApi, ResourceBase, type ResourceBridgeAction, type ResourceBridgeDispatchParams, ResourceIframe, RuntimeConfig, type RuntimeEvent, Scene, SceneStatus, ScheduledTask, ScheduledTaskCalendarItem, ScheduledTaskCalendarItem as ScheduledTaskCalendarItemData, type ScheduledTaskCreatePayload, ScheduledTask as ScheduledTaskData, ScheduledTaskRun, ScheduledTaskRun as ScheduledTaskRunData, type ScheduledTaskUpdatePayload, SessionInfo, SessionSkillUploadPayload, SessionSkillUploadPayload as SessionSkillUploadPayloadData, SessionSkillUploadResult, SessionSkillUploadResult as SessionSkillUploadResultData, type SessionStatusEvent, SkillCompletionMenu, type SkillCompletionMenuRef, SkillDetail, SkillMention, SkillOrgListResponse, SkillSearchResult, type SkillSuggestionItem, SkillSummary, SoftwareFactorySharedFile, SoftwareFactorySoftware, Solution, type StepMessageRange, type SystemError, Task, type ToolCallCreated, type ToolResultDone, TurnProjection, type UiMeta, UnpublishAppResponse, UpdateQuickScenarioPayload, type UseTiptapVoiceInputOptions, type UseTiptapVoiceInputResult, type UseVoiceInputOptions, type UseVoiceInputResult, type UserWorkspace, type VoiceInputError, type VoiceInputStatus, VoiceWaveform, type WorkspaceIssue, type WorkspaceIssueTaskRun, type WorkspaceIssueTimelineEntry, type WorkspaceIssueUsageSummary, type WorkspaceMember, agentApi, agentSocket, apiFetch, apiFetchResponse, apiFetchText, apiKeys as apiKeysApi, attachClientToStores, attachHostBridgeListener, auth as authApi, bootstrapBladeClient, buildBinaryPreviewTarget, buildHtmlElementSelectionContext, buildMessageContent, buildSessionBinaryPreviewTarget, buildStepRanges, buildVoiceInputUnavailableError, cardRegistry, cn, copyToClipboard, createResourceApi, databaseApi, deriveDeprecateEntryIds, dispatchBladeBridge, envBuckets as envBucketsApi, getAuthedUrl, getBaseUrl, getBootstrappedClient, getClient, getCodeLanguageFromFilename, getSocket, getTextContent, gisApi, groupMessagesByLoop, isInsideIframe, isOfficePdfPreviewable, isUiMeta, knowledgeApi, listSkillOrgs, locateHtmlElementSource, memories as memoriesApi, models as modelsApi, normalizeCodeLanguage, partnerSkill as partnerSkillApi, postToParent, prodSolution as prodSolutionApi, publishSkill, publishedApps as publishedAppsApi, resolveEffectiveTheme, resolveSessionFilePreviewTarget, resolveTextPreviewType, resourceBridgeDispatch, scenarios as scenariosApi, scheduledTasks as scheduledTasksApi, setAnalyticsClient, setOnWorkspaceFilesChanged, skillMentionSuggestionKey, skills as skillsApi, softwareFactory as softwareFactoryApi, solutions as solutionsApi, subscribeBladeBridge, toolApi, trackEvent, transformSlashCommand, useAgents, useAuthStore, useBackgroundStore, useBackgroundTasks, useBladeClient, useCardContext, useCardState, useCardStateStore, useChat, useChatStore, useCheckSkillFile, useCheckSolutionFile, useConnectionStore, useDataSources, useGisState, useGisStore, useGlobalSkillStats, useHighlightedCodeHtml, useInputHistory, useKnowledgeBases, useModelConfig, usePreferredModel, useResolvedModel, useRuntimeConfig, useRuntimeFeaturesStore, useRuntimeStore, useSession, useSkills, useTaskStore, useTiptapVoiceInput, useToolProviders, useUiBridgeStore, useUiStore, useVoiceInput, userPreferences as userPreferencesApi };
@@ -30,7 +30,7 @@ import {
30
30
  useTiptapVoiceInput,
31
31
  useVoiceInput,
32
32
  user_preferences_exports
33
- } from "../chunk-OVOZQHYQ.js";
33
+ } from "../chunk-HRQSJO3P.js";
34
34
  import {
35
35
  CardCodeBlock,
36
36
  CardContext,
@@ -39,14 +39,14 @@ import {
39
39
  normalizeCodeLanguage,
40
40
  useCardContext,
41
41
  useHighlightedCodeHtml
42
- } from "../chunk-IRHXGYY3.js";
42
+ } from "../chunk-O5FJLN6G.js";
43
43
  import {
44
44
  CardJSON,
45
45
  cardRegistry
46
46
  } from "../chunk-2UP7MG3J.js";
47
47
  import {
48
48
  useSession
49
- } from "../chunk-KSYNFNF4.js";
49
+ } from "../chunk-QMYGPQCX.js";
50
50
  import "../chunk-H62LH2AG.js";
51
51
  import {
52
52
  buildBinaryPreviewTarget,
@@ -54,7 +54,7 @@ import {
54
54
  isOfficePdfPreviewable,
55
55
  resolveSessionFilePreviewTarget,
56
56
  resolveTextPreviewType
57
- } from "../chunk-LVWRKH45.js";
57
+ } from "../chunk-6PKGWPIK.js";
58
58
  import {
59
59
  PartnerSkillFile,
60
60
  PartnerSkillInstallPayload,
@@ -109,12 +109,12 @@ import {
109
109
  useTaskStore,
110
110
  useUiBridgeStore,
111
111
  useUiStore
112
- } from "../chunk-II2PTBJI.js";
112
+ } from "../chunk-U7Y7GRF6.js";
113
113
  import "../chunk-J3XVFPOV.js";
114
114
  import {
115
115
  REGISTRY_PREFIX,
116
116
  normalizeResource
117
- } from "../chunk-DQXXSHCR.js";
117
+ } from "../chunk-DN4CKDDQ.js";
118
118
  import {
119
119
  cn,
120
120
  copyToClipboard
@@ -661,14 +661,18 @@ async function updateProdAgent(recordId, request) {
661
661
  // src/react/api/solutions.ts
662
662
  var solutions_exports = {};
663
663
  __export(solutions_exports, {
664
+ exportSolution: () => exportSolution,
664
665
  fetchSolutionBizRoles: () => fetchSolutionBizRoles,
665
666
  fetchSolutionFile: () => fetchSolutionFile,
666
- fetchSolutions: () => fetchSolutions
667
+ fetchSolutions: () => fetchSolutions,
668
+ publishSolution: () => publishSolution
667
669
  });
668
670
  var r6 = () => getClient().solutions;
669
671
  var fetchSolutions = (...args) => r6().fetchSolutions(...args);
670
672
  var fetchSolutionFile = (...args) => r6().fetchSolutionFile(...args);
671
673
  var fetchSolutionBizRoles = (...args) => r6().fetchSolutionBizRoles(...args);
674
+ var exportSolution = (...args) => r6().exportSolution(...args);
675
+ var publishSolution = (...args) => r6().publishSolution(...args);
672
676
 
673
677
  // src/react/api/scenarios.ts
674
678
  var scenarios_exports = {};
@@ -887,15 +891,40 @@ function useCheckSkillFile(sessionId) {
887
891
  };
888
892
  }
889
893
 
894
+ // src/react/hooks/use-check-solution-file.ts
895
+ import { useCallback as useCallback2 } from "react";
896
+ import { useQuery as useQuery3, useQueryClient as useQueryClient2 } from "@tanstack/react-query";
897
+ function useCheckSolutionFile(sessionId) {
898
+ const queryClient = useQueryClient2();
899
+ const { data } = useQuery3({
900
+ queryKey: ["sessions", sessionId, "solution-file"],
901
+ queryFn: async () => {
902
+ if (!sessionId) return false;
903
+ const response = await apiFetch(`/api/sessions/${encodeURIComponent(sessionId)}/check-solution-file`);
904
+ return response.exists;
905
+ },
906
+ enabled: !!sessionId,
907
+ staleTime: 5e3,
908
+ gcTime: 1e4
909
+ });
910
+ const refetch = useCallback2(() => {
911
+ return queryClient.invalidateQueries({ queryKey: ["sessions", sessionId, "solution-file"] });
912
+ }, [queryClient, sessionId]);
913
+ return {
914
+ exists: data ?? false,
915
+ refetch
916
+ };
917
+ }
918
+
890
919
  // src/react/hooks/use-global-skill-stats.ts
891
- import { useQuery as useQuery3 } from "@tanstack/react-query";
920
+ import { useQuery as useQuery4 } from "@tanstack/react-query";
892
921
  var EMPTY = {
893
922
  remote_configured: false,
894
923
  remote_connected: false,
895
924
  installed_skill_count: 0
896
925
  };
897
926
  function useGlobalSkillStats() {
898
- const query = useQuery3({
927
+ const query = useQuery4({
899
928
  queryKey: ["global-skill-stats"],
900
929
  queryFn: ({ signal }) => getGlobalSkillStats({ signal }),
901
930
  refetchInterval: 3e5
@@ -908,14 +937,14 @@ function useGlobalSkillStats() {
908
937
  }
909
938
 
910
939
  // src/react/hooks/use-skills.ts
911
- import { useQuery as useQuery4 } from "@tanstack/react-query";
940
+ import { useQuery as useQuery5 } from "@tanstack/react-query";
912
941
  var EMPTY_SKILLS = [];
913
942
  function useSkills() {
914
943
  const {
915
944
  data = EMPTY_SKILLS,
916
945
  isLoading: loading,
917
946
  error
918
- } = useQuery4({
947
+ } = useQuery5({
919
948
  queryKey: ["skills"],
920
949
  queryFn: ({ signal }) => listSkills({ signal })
921
950
  });
@@ -923,7 +952,7 @@ function useSkills() {
923
952
  }
924
953
 
925
954
  // src/react/hooks/use-registry.ts
926
- import { useQuery as useQuery5 } from "@tanstack/react-query";
955
+ import { useQuery as useQuery6 } from "@tanstack/react-query";
927
956
  var EMPTY_TOOL_PROVIDERS = [];
928
957
  var EMPTY_DATA_SOURCES = [];
929
958
  var EMPTY_KNOWLEDGE_BASES = [];
@@ -933,7 +962,7 @@ function useToolProviders() {
933
962
  data = EMPTY_TOOL_PROVIDERS,
934
963
  isLoading: loading,
935
964
  error
936
- } = useQuery5({
965
+ } = useQuery6({
937
966
  queryKey: ["registry", "tool-providers"],
938
967
  queryFn: ({ signal }) => toolApi.list({ signal })
939
968
  });
@@ -944,7 +973,7 @@ function useDataSources() {
944
973
  data = EMPTY_DATA_SOURCES,
945
974
  isLoading: loading,
946
975
  error
947
- } = useQuery5({
976
+ } = useQuery6({
948
977
  queryKey: ["registry", "data-sources"],
949
978
  queryFn: ({ signal }) => databaseApi.list({ signal })
950
979
  });
@@ -955,7 +984,7 @@ function useKnowledgeBases() {
955
984
  data = EMPTY_KNOWLEDGE_BASES,
956
985
  isLoading: loading,
957
986
  error
958
- } = useQuery5({
987
+ } = useQuery6({
959
988
  queryKey: ["registry", "knowledge-bases"],
960
989
  queryFn: ({ signal }) => knowledgeApi.list({ signal })
961
990
  });
@@ -966,7 +995,7 @@ function useAgents() {
966
995
  data = EMPTY_AGENTS,
967
996
  isLoading: loading,
968
997
  error
969
- } = useQuery5({
998
+ } = useQuery6({
970
999
  queryKey: ["registry", "agents"],
971
1000
  queryFn: ({ signal }) => agentApi.list({ signal })
972
1001
  });
@@ -1639,9 +1668,12 @@ var LayoutType = /* @__PURE__ */ ((LayoutType2) => {
1639
1668
  LayoutType2["Default"] = "default";
1640
1669
  LayoutType2["SkillEditor"] = "skill-editor";
1641
1670
  LayoutType2["BladeCoa"] = "blade-coa";
1671
+ LayoutType2["SolutionEditor"] = "solution-editor";
1672
+ LayoutType2["SolutionEditor2"] = "solution-editor2";
1642
1673
  LayoutType2["ChatPreview"] = "chat-preview";
1643
1674
  LayoutType2["ChatOnly"] = "chat-only";
1644
1675
  LayoutType2["SolutionApp"] = "solution-app";
1676
+ LayoutType2["Custom"] = "custom";
1645
1677
  return LayoutType2;
1646
1678
  })(LayoutType || {});
1647
1679
 
@@ -1935,6 +1967,7 @@ export {
1935
1967
  useChat,
1936
1968
  useChatStore,
1937
1969
  useCheckSkillFile,
1970
+ useCheckSolutionFile,
1938
1971
  useConnectionStore,
1939
1972
  useDataSources,
1940
1973
  useGisState,