@blade-hq/agent-kit 0.5.32 → 0.5.33

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 (30) hide show
  1. package/dist/{SkillStatusBar-CvgcEiSi.d.ts → SkillStatusBar-Dp93pqlP.d.ts} +14 -3
  2. package/dist/{blade-client-DoodJJDz.d.ts → blade-client-DS7lV19a.d.ts} +4 -1
  3. package/dist/{chunk-ZWO6YBLA.js → chunk-DQXXSHCR.js} +5 -3
  4. package/dist/chunk-DQXXSHCR.js.map +1 -0
  5. package/dist/{chunk-QMOW3TDA.js → chunk-EBTZAB6X.js} +5 -3
  6. package/dist/{chunk-QMOW3TDA.js.map → chunk-EBTZAB6X.js.map} +1 -1
  7. package/dist/{chunk-CFW62YND.js → chunk-MGXPILAM.js} +3 -3
  8. package/dist/{chunk-EAZ7AGFY.js → chunk-PMG4N3JO.js} +2 -2
  9. package/dist/{chunk-FXEELOLI.js → chunk-SGOR4YXZ.js} +51 -11
  10. package/dist/chunk-SGOR4YXZ.js.map +1 -0
  11. package/dist/{chunk-YPFIWC45.js → chunk-UR6C4AJB.js} +2 -2
  12. package/dist/client/index.d.ts +28 -1
  13. package/dist/client/index.js +1 -1
  14. package/dist/react/api/vibe-coding.d.ts +2 -2
  15. package/dist/react/api/vibe-coding.js +2 -2
  16. package/dist/react/components/chat/index.d.ts +3 -3
  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.js +3 -3
  20. package/dist/react/components/workspace/index.d.ts +2 -2
  21. package/dist/react/components/workspace/index.js +3 -3
  22. package/dist/react/index.d.ts +7 -5
  23. package/dist/react/index.js +6 -6
  24. package/dist/{sessions-DFGsAOPa.d.ts → sessions-DaddUdO6.d.ts} +4 -1
  25. package/package.json +1 -1
  26. package/dist/chunk-FXEELOLI.js.map +0 -1
  27. package/dist/chunk-ZWO6YBLA.js.map +0 -1
  28. /package/dist/{chunk-CFW62YND.js.map → chunk-MGXPILAM.js.map} +0 -0
  29. /package/dist/{chunk-EAZ7AGFY.js.map → chunk-PMG4N3JO.js.map} +0 -0
  30. /package/dist/{chunk-YPFIWC45.js.map → chunk-UR6C4AJB.js.map} +0 -0
@@ -5,12 +5,12 @@ import {
5
5
  import {
6
6
  getSessionFilePath,
7
7
  resolveSessionFilePreviewTarget
8
- } from "./chunk-EAZ7AGFY.js";
8
+ } from "./chunk-PMG4N3JO.js";
9
9
  import {
10
10
  formatToolName,
11
11
  getAuthedUrl,
12
12
  useUiStore
13
- } from "./chunk-QMOW3TDA.js";
13
+ } from "./chunk-EBTZAB6X.js";
14
14
  import {
15
15
  cn,
16
16
  copyToClipboard
@@ -1933,4 +1933,4 @@ export {
1933
1933
  PlanSummaryCard,
1934
1934
  extractLatestPlanMessages
1935
1935
  };
1936
- //# sourceMappingURL=chunk-CFW62YND.js.map
1936
+ //# sourceMappingURL=chunk-MGXPILAM.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  apiFetchResponse,
3
3
  getAuthedUrl
4
- } from "./chunk-QMOW3TDA.js";
4
+ } from "./chunk-EBTZAB6X.js";
5
5
 
6
6
  // src/react/lib/session-file-preview.ts
7
7
  var IMAGE_EXTS = /* @__PURE__ */ new Set(["png", "jpg", "jpeg", "gif", "svg", "webp", "ico", "bmp"]);
@@ -117,4 +117,4 @@ export {
117
117
  resolveTextPreviewType,
118
118
  resolveSessionFilePreviewTarget
119
119
  };
120
- //# sourceMappingURL=chunk-EAZ7AGFY.js.map
120
+ //# sourceMappingURL=chunk-PMG4N3JO.js.map
@@ -8,7 +8,7 @@ import {
8
8
  getCodeLanguageFromFilename,
9
9
  parseAskUserQuestion,
10
10
  useHighlightedCodeHtml
11
- } from "./chunk-CFW62YND.js";
11
+ } from "./chunk-MGXPILAM.js";
12
12
  import {
13
13
  Collapsible,
14
14
  CollapsibleContent,
@@ -16,7 +16,7 @@ import {
16
16
  } from "./chunk-H62LH2AG.js";
17
17
  import {
18
18
  resolveSessionFilePreviewTarget
19
- } from "./chunk-EAZ7AGFY.js";
19
+ } from "./chunk-PMG4N3JO.js";
20
20
  import {
21
21
  apiFetchResponse,
22
22
  buildMessageContent,
@@ -60,7 +60,7 @@ import {
60
60
  useUiBridgeStore,
61
61
  useUiStore,
62
62
  writeFile
63
- } from "./chunk-QMOW3TDA.js";
63
+ } from "./chunk-EBTZAB6X.js";
64
64
  import {
65
65
  registerBridgeIframe,
66
66
  tapBridgeEvent
@@ -69,7 +69,7 @@ import {
69
69
  ModelOption,
70
70
  ModelsConfig,
71
71
  ModelsResource
72
- } from "./chunk-ZWO6YBLA.js";
72
+ } from "./chunk-DQXXSHCR.js";
73
73
  import {
74
74
  cn,
75
75
  copyToClipboard
@@ -198,6 +198,7 @@ import {
198
198
  Paperclip,
199
199
  Plus,
200
200
  Rocket,
201
+ RotateCcw,
201
202
  Scissors,
202
203
  Send,
203
204
  Sparkles as Sparkles2,
@@ -2046,6 +2047,7 @@ var SkillMention = Mention2.extend({
2046
2047
 
2047
2048
  // src/react/components/chat/ChatInput.tsx
2048
2049
  import { Fragment as Fragment2, jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
2050
+ var DOUBLE_ESCAPE_MS = 450;
2049
2051
  function getEditorText(editor) {
2050
2052
  return editor?.getText({ blockSeparator: "\n" }) ?? "";
2051
2053
  }
@@ -2685,7 +2687,9 @@ function ChatInput({
2685
2687
  skillStatusBarInnerClassName,
2686
2688
  onResyncSkills,
2687
2689
  isResyncingSkills = false,
2688
- inputLabel = "\u8F93\u5165\u6D88\u606F"
2690
+ inputLabel = "\u8F93\u5165\u6D88\u606F",
2691
+ onDoubleEscape,
2692
+ composerHint
2689
2693
  }) {
2690
2694
  const resolvedInputLabel = inputLabel?.trim() || "\u8F93\u5165\u6D88\u606F";
2691
2695
  const [input, setInputInternal] = useState8(externalDraft?.value ?? "");
@@ -2734,6 +2738,7 @@ function ChatInput({
2734
2738
  const fileInputRef = useRef5(null);
2735
2739
  const folderInputRef = useRef5(null);
2736
2740
  const editorRef = useRef5(null);
2741
+ const lastEscapeAtRef = useRef5(0);
2737
2742
  const localImageUrlsRef = useRef5(/* @__PURE__ */ new Map());
2738
2743
  const activeSessionId = useSessionStore((state) => state.activeSessionId);
2739
2744
  const sessions = useSessionStore((state) => state.sessions);
@@ -2836,7 +2841,8 @@ function ChatInput({
2836
2841
  navigateUp: inputHistory.navigateUp,
2837
2842
  navigateDown: inputHistory.navigateDown,
2838
2843
  isNavigatingHistory: inputHistory.isNavigating,
2839
- handleSubmit: stableHandleSubmit
2844
+ handleSubmit: stableHandleSubmit,
2845
+ onDoubleEscape
2840
2846
  }));
2841
2847
  const syncEditorState = (editorInstance) => {
2842
2848
  const value = getEditorText(editorInstance);
@@ -3066,6 +3072,18 @@ function ChatInput({
3066
3072
  replaceEditorText(editorRef.current, nextEntry);
3067
3073
  return true;
3068
3074
  }
3075
+ if (state.onDoubleEscape && event.key === "Escape" && !event.isComposing && !event.repeat) {
3076
+ const now = Date.now();
3077
+ if (now - lastEscapeAtRef.current <= DOUBLE_ESCAPE_MS) {
3078
+ lastEscapeAtRef.current = 0;
3079
+ event.preventDefault();
3080
+ const rect = editorRef.current?.view.dom.getBoundingClientRect() ?? null;
3081
+ state.onDoubleEscape(rect);
3082
+ return true;
3083
+ }
3084
+ lastEscapeAtRef.current = now;
3085
+ return false;
3086
+ }
3069
3087
  if (event.key === "Enter" && !event.shiftKey && !event.isComposing) {
3070
3088
  event.preventDefault();
3071
3089
  if (state.connectionStatus !== "connected") {
@@ -3560,6 +3578,23 @@ function ChatInput({
3560
3578
  ]
3561
3579
  }
3562
3580
  ),
3581
+ onDoubleEscape ? /* @__PURE__ */ jsxs8(
3582
+ "button",
3583
+ {
3584
+ type: "button",
3585
+ onClick: () => {
3586
+ actionMenuRef.current?.removeAttribute("open");
3587
+ onDoubleEscape(
3588
+ editorRef.current?.view.dom.getBoundingClientRect() ?? null
3589
+ );
3590
+ },
3591
+ className: "flex w-full items-center gap-2 px-3 py-2 text-left transition-colors hover:bg-[hsl(var(--accent))]",
3592
+ children: [
3593
+ /* @__PURE__ */ jsx9(RotateCcw, { size: 13 }),
3594
+ "\u56DE\u5230\u4E4B\u524D\u7684\u67D0\u4E00\u6B65"
3595
+ ]
3596
+ }
3597
+ ) : null,
3563
3598
  onCommand ? /* @__PURE__ */ jsxs8(Fragment2, { children: [
3564
3599
  /* @__PURE__ */ jsxs8(
3565
3600
  "button",
@@ -3699,7 +3734,8 @@ function ChatInput({
3699
3734
  /* @__PURE__ */ jsxs8("div", { className: "space-y-0.5", children: [
3700
3735
  /* @__PURE__ */ jsx9("div", { children: "Shift+Enter \u6362\u884C" }),
3701
3736
  /* @__PURE__ */ jsx9("div", { children: "/ \u8C03\u7528\u6280\u80FD" }),
3702
- /* @__PURE__ */ jsx9("div", { children: "@ \u5F15\u7528\u6587\u4EF6" })
3737
+ /* @__PURE__ */ jsx9("div", { children: "@ \u5F15\u7528\u6587\u4EF6" }),
3738
+ composerHint && /* @__PURE__ */ jsx9("div", { children: composerHint })
3703
3739
  ] })
3704
3740
  ] }) })
3705
3741
  ] }),
@@ -4988,7 +5024,7 @@ function FileEditRenderer({ toolCall }) {
4988
5024
  import { useState as useState13 } from "react";
4989
5025
 
4990
5026
  // src/react/components/chat/ImageLightbox.tsx
4991
- import { ChevronLeft, ChevronRight as ChevronRight2, Download as Download2, ExternalLink, Minus, Plus as Plus2, RotateCcw, X as X3 } from "lucide-react";
5027
+ import { ChevronLeft, ChevronRight as ChevronRight2, Download as Download2, ExternalLink, Minus, Plus as Plus2, RotateCcw as RotateCcw2, X as X3 } from "lucide-react";
4992
5028
  import { useCallback as useCallback10, useEffect as useEffect11, useRef as useRef10, useState as useState12 } from "react";
4993
5029
  import { createPortal as createPortal3 } from "react-dom";
4994
5030
  import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
@@ -5219,7 +5255,7 @@ function ImageLightbox({ open, onOpenChange, images, initialIndex = 0 }) {
5219
5255
  type: "button",
5220
5256
  onClick: reset,
5221
5257
  className: "rounded-full p-1.5 text-white/80 transition-colors hover:bg-white/10 hover:text-white",
5222
- children: /* @__PURE__ */ jsx17(RotateCcw, { size: 16 })
5258
+ children: /* @__PURE__ */ jsx17(RotateCcw2, { size: 16 })
5223
5259
  }
5224
5260
  ),
5225
5261
  showNav && /* @__PURE__ */ jsxs13(Fragment4, { children: [
@@ -8403,6 +8439,8 @@ function ChatView({
8403
8439
  onResyncSkills,
8404
8440
  isResyncingSkills = false,
8405
8441
  inputLabel,
8442
+ onDoubleEscape,
8443
+ composerHint,
8406
8444
  classNames,
8407
8445
  components,
8408
8446
  renderers
@@ -8482,7 +8520,9 @@ function ChatView({
8482
8520
  skillStatusBarInnerClassName: classNames?.skillStatusBarInner,
8483
8521
  onResyncSkills,
8484
8522
  isResyncingSkills,
8485
- inputLabel
8523
+ inputLabel,
8524
+ onDoubleEscape,
8525
+ composerHint
8486
8526
  }
8487
8527
  )
8488
8528
  ] });
@@ -8539,4 +8579,4 @@ use-stick-to-bottom/dist/StickToBottom.js:
8539
8579
  * Licensed under the MIT License. See License.txt in the project root for license information.
8540
8580
  *--------------------------------------------------------------------------------------------*)
8541
8581
  */
8542
- //# sourceMappingURL=chunk-FXEELOLI.js.map
8582
+ //# sourceMappingURL=chunk-SGOR4YXZ.js.map