@blade-hq/agent-kit 1.0.29 → 1.0.31

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 (44) hide show
  1. package/dist/{chunk-TVWC3PED.js → chunk-3EVO45IN.js} +2 -2
  2. package/dist/{chunk-UWNQ4PXK.js → chunk-3PX2W7II.js} +51 -12
  3. package/dist/chunk-3PX2W7II.js.map +1 -0
  4. package/dist/{chunk-YJ6BX3FU.js → chunk-DSC6KQOI.js} +45 -2
  5. package/dist/chunk-DSC6KQOI.js.map +1 -0
  6. package/dist/{chunk-PYYDXV2A.js → chunk-O32JOWYM.js} +2 -2
  7. package/dist/{chunk-N2OE5MVV.js → chunk-RAWQ7LWR.js} +973 -712
  8. package/dist/chunk-RAWQ7LWR.js.map +1 -0
  9. package/dist/{chunk-YXHPJGXR.js → chunk-XUWAM6MF.js} +173 -59
  10. package/dist/chunk-XUWAM6MF.js.map +1 -0
  11. package/dist/{chunk-HCQDDDOX.js → chunk-ZPZMN7KQ.js} +2 -2
  12. package/dist/client/index.js +1 -1
  13. package/dist/client/resources/sessions.d.ts +2 -0
  14. package/dist/client/types/rest.d.ts +639 -92
  15. package/dist/react/api/model-config.d.ts +8 -11
  16. package/dist/react/api/published-apps.js +3 -3
  17. package/dist/react/api/sessions.js +2 -2
  18. package/dist/react/components/chat/FileDeliveryCards.d.ts +11 -0
  19. package/dist/react/components/chat/PlanningToggle.d.ts +7 -0
  20. package/dist/react/components/chat/UserMessageBubble.d.ts +1 -1
  21. package/dist/react/components/chat/index.d.ts +1 -0
  22. package/dist/react/components/chat/index.js +7 -5
  23. package/dist/react/components/markdown/ExternalLinkDialog.d.ts +3 -1
  24. package/dist/react/components/plan/index.js +4 -4
  25. package/dist/react/components/session/index.js +3 -3
  26. package/dist/react/components/workspace/index.js +61 -42
  27. package/dist/react/components/workspace/index.js.map +1 -1
  28. package/dist/react/hooks/use-model-preferences.d.ts +2 -0
  29. package/dist/react/index.d.ts +2 -2
  30. package/dist/react/index.js +20 -8
  31. package/dist/react/index.js.map +1 -1
  32. package/dist/react/schemas/session.d.ts +4 -0
  33. package/dist/react/sockets/event-bridge.d.ts +6 -0
  34. package/dist/react/stores/ui-store.d.ts +6 -1
  35. package/dist/react/types/solution.d.ts +1 -0
  36. package/dist/style.css +1 -1
  37. package/package.json +1 -1
  38. package/dist/chunk-N2OE5MVV.js.map +0 -1
  39. package/dist/chunk-UWNQ4PXK.js.map +0 -1
  40. package/dist/chunk-YJ6BX3FU.js.map +0 -1
  41. package/dist/chunk-YXHPJGXR.js.map +0 -1
  42. /package/dist/{chunk-TVWC3PED.js.map → chunk-3EVO45IN.js.map} +0 -0
  43. /package/dist/{chunk-PYYDXV2A.js.map → chunk-O32JOWYM.js.map} +0 -0
  44. /package/dist/{chunk-HCQDDDOX.js.map → chunk-ZPZMN7KQ.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  useSessionStore
3
- } from "./chunk-UWNQ4PXK.js";
3
+ } from "./chunk-3PX2W7II.js";
4
4
 
5
5
  // src/react/hooks/use-session.ts
6
6
  function useSession() {
@@ -27,4 +27,4 @@ function useSession() {
27
27
  export {
28
28
  useSession
29
29
  };
30
- //# sourceMappingURL=chunk-TVWC3PED.js.map
30
+ //# sourceMappingURL=chunk-3EVO45IN.js.map
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  BladeClient,
6
6
  ClientProjectionBuilder
7
- } from "./chunk-YJ6BX3FU.js";
7
+ } from "./chunk-DSC6KQOI.js";
8
8
  import {
9
9
  createClientActions,
10
10
  useCardStateStore
@@ -881,14 +881,22 @@ function upsertArtifactState(state, target, options) {
881
881
  const reveal = options?.reveal ?? true;
882
882
  const activate = options?.activate ?? true;
883
883
  const targetKey = target.key ?? target.title;
884
- const applyUiState = (partial) => ({
885
- ...partial,
886
- ...reveal ? {
887
- rightPanelCollapsed: false,
888
- activeRightTab: "preview",
889
- rightTabActivationId: state.rightTabActivationId + 1
890
- } : {}
891
- });
884
+ const clearsUnread = Boolean(activate && targetKey && state.previewUnreadArtifactKeys.includes(targetKey));
885
+ const applyUiState = (partial) => {
886
+ const nextUnread = clearsUnread ? state.previewUnreadArtifactKeys.filter((key) => key !== targetKey) : state.previewUnreadArtifactKeys;
887
+ return {
888
+ ...partial,
889
+ ...clearsUnread ? {
890
+ previewUnreadArtifactKeys: nextUnread,
891
+ rightPanelUnreadTabs: nextUnread.length === 0 ? state.rightPanelUnreadTabs.filter((tab) => tab !== "files") : state.rightPanelUnreadTabs
892
+ } : {},
893
+ ...reveal ? {
894
+ rightPanelCollapsed: false,
895
+ activeRightTab: "preview",
896
+ rightTabActivationId: state.rightTabActivationId + 1
897
+ } : {}
898
+ };
899
+ };
892
900
  const existing = state.artifacts.findIndex((artifact) => targetKey && (artifact.key ?? artifact.title) === targetKey);
893
901
  if (existing >= 0) {
894
902
  const updated = [...state.artifacts];
@@ -917,7 +925,9 @@ var useUiStore = create2()((set) => ({
917
925
  artifacts: [],
918
926
  activeArtifactIndex: -1,
919
927
  previewUnreadArtifactKeys: [],
928
+ filePreviewMode: "preview",
920
929
  theme: storedTheme,
930
+ setFilePreviewMode: (mode) => set({ filePreviewMode: mode }),
921
931
  setLeftPanelSize: (size) => set({ leftPanelSize: size }),
922
932
  setRightPanelSize: (size) => set({ rightPanelSize: size }),
923
933
  setLeftPanelCollapsed: (collapsed) => set({ leftPanelCollapsed: collapsed }),
@@ -2355,6 +2365,7 @@ var AgentSocket = class {
2355
2365
  pendingReplayMessages = /* @__PURE__ */ new Map();
2356
2366
  pendingReplayModes = /* @__PURE__ */ new Map();
2357
2367
  oomNotifiedKeys = /* @__PURE__ */ new Set();
2368
+ browserRevealedToolCalls = /* @__PURE__ */ new Set();
2358
2369
  pendingTurnPatches = /* @__PURE__ */ new Map();
2359
2370
  joinedSessions = /* @__PURE__ */ new Set();
2360
2371
  requestedJoins = /* @__PURE__ */ new Set();
@@ -2667,7 +2678,7 @@ var AgentSocket = class {
2667
2678
  revision: Date.now()
2668
2679
  };
2669
2680
  const uiStore = useUiStore.getState();
2670
- if (uiStore.rightPanelAutoJump) {
2681
+ if (uiStore.rightPanelAutoJump && !uiStore.rightPanelCollapsed) {
2671
2682
  uiStore.clearRightPanelTabUnread("files");
2672
2683
  uiStore.clearPreviewArtifactUnread(data.file_path);
2673
2684
  uiStore.setActiveRightTab("preview");
@@ -2736,7 +2747,7 @@ var AgentSocket = class {
2736
2747
  key: data.file_path
2737
2748
  };
2738
2749
  const uiStore = useUiStore.getState();
2739
- if (uiStore.rightPanelAutoJump) {
2750
+ if (uiStore.rightPanelAutoJump && !uiStore.rightPanelCollapsed) {
2740
2751
  uiStore.clearRightPanelTabUnread("files");
2741
2752
  uiStore.clearPreviewArtifactUnread(data.file_path);
2742
2753
  uiStore.setActiveRightTab("preview");
@@ -2878,6 +2889,33 @@ var AgentSocket = class {
2878
2889
  this._notifySandboxOom(sessionId, toolCall.id);
2879
2890
  }
2880
2891
  }
2892
+ this._maybeRevealBrowserPanel(toolCall);
2893
+ }
2894
+ }
2895
+ /** agent 一旦在沙盒里跑 `chrome ...`(操作内置浏览器)就自动把右侧面板切到
2896
+ * 「浏览器」标签,让用户围观。与文件预览共用 rightTabActivationId → 谁最后发生
2897
+ * 谁占据面板,不再是文件单向碾压。用户手动切走别的标签会关掉 rightPanelAutoJump
2898
+ * (见 RightPanel.setTab),此后浏览器活动只标未读、不再抢占。 */
2899
+ _maybeRevealBrowserPanel(toolCall) {
2900
+ if (this.browserRevealedToolCalls.has(toolCall.id)) return;
2901
+ let command = "";
2902
+ try {
2903
+ const parsed = JSON.parse(toolCall.arguments ?? "");
2904
+ if (parsed && typeof parsed === "object" && typeof parsed.command === "string") {
2905
+ command = parsed.command;
2906
+ }
2907
+ } catch {
2908
+ return;
2909
+ }
2910
+ if (!/(?:^|[\n;&|(]\s*)chrome\s/.test(command)) return;
2911
+ this.browserRevealedToolCalls.add(toolCall.id);
2912
+ const uiStore = useUiStore.getState();
2913
+ if (uiStore.rightPanelAutoJump) {
2914
+ uiStore.clearRightPanelTabUnread("browser");
2915
+ uiStore.setActiveRightTab("browser");
2916
+ if (uiStore.rightPanelCollapsed) uiStore.setRightPanelCollapsed(false);
2917
+ } else {
2918
+ uiStore.markRightPanelTabUnread("browser");
2881
2919
  }
2882
2920
  }
2883
2921
  _notifySandboxOom(sessionId, key) {
@@ -3449,6 +3487,7 @@ export {
3449
3487
  dispatchBladeBridge,
3450
3488
  postToParent,
3451
3489
  attachHostBridgeListener,
3490
+ normalizeMessageContent,
3452
3491
  getTextContent,
3453
3492
  isHiddenInternalMessage,
3454
3493
  buildMessageContent,
@@ -3532,4 +3571,4 @@ export {
3532
3571
  bootstrapBladeClient,
3533
3572
  getBootstrappedClient
3534
3573
  };
3535
- //# sourceMappingURL=chunk-UWNQ4PXK.js.map
3574
+ //# sourceMappingURL=chunk-3PX2W7II.js.map