@blade-hq/agent-kit 0.4.5 → 0.4.6

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 (48) hide show
  1. package/README.md +5 -1
  2. package/dist/chunk-2UP7MG3J.js +66 -0
  3. package/dist/chunk-2UP7MG3J.js.map +1 -0
  4. package/dist/chunk-4VWLTG5L.js +2984 -0
  5. package/dist/chunk-4VWLTG5L.js.map +1 -0
  6. package/dist/chunk-7LEKQI47.js +32 -0
  7. package/dist/chunk-7LEKQI47.js.map +1 -0
  8. package/dist/chunk-DQCXSPHP.js +33 -0
  9. package/dist/chunk-DQCXSPHP.js.map +1 -0
  10. package/dist/chunk-I3FFV63W.js +30 -0
  11. package/dist/chunk-I3FFV63W.js.map +1 -0
  12. package/dist/chunk-J3XVFPOV.js +58 -0
  13. package/dist/chunk-J3XVFPOV.js.map +1 -0
  14. package/dist/chunk-JCJFFJ42.js +39 -0
  15. package/dist/chunk-JCJFFJ42.js.map +1 -0
  16. package/dist/chunk-LIL4FIZP.js +7992 -0
  17. package/dist/chunk-LIL4FIZP.js.map +1 -0
  18. package/dist/chunk-OKQWPNE3.js +1077 -0
  19. package/dist/chunk-OKQWPNE3.js.map +1 -0
  20. package/dist/chunk-PZ5AY32C.js +10 -0
  21. package/dist/chunk-PZ5AY32C.js.map +1 -0
  22. package/dist/chunk-TC5BBLWO.js +29 -0
  23. package/dist/chunk-TC5BBLWO.js.map +1 -0
  24. package/dist/chunk-VD4CKRMT.js +127 -0
  25. package/dist/chunk-VD4CKRMT.js.map +1 -0
  26. package/dist/chunk-X6MEYCU7.js +1401 -0
  27. package/dist/chunk-X6MEYCU7.js.map +1 -0
  28. package/dist/client/index.js +24 -1052
  29. package/dist/client/index.js.map +1 -1
  30. package/dist/react/api/licenses.js +11 -1470
  31. package/dist/react/api/licenses.js.map +1 -1
  32. package/dist/react/api/vibe-coding.js +25 -1481
  33. package/dist/react/api/vibe-coding.js.map +1 -1
  34. package/dist/react/cards/register.js +45 -138
  35. package/dist/react/cards/register.js.map +1 -1
  36. package/dist/react/components/chat/index.js +28 -11366
  37. package/dist/react/components/chat/index.js.map +1 -1
  38. package/dist/react/components/plan/index.js +135 -3054
  39. package/dist/react/components/plan/index.js.map +1 -1
  40. package/dist/react/components/session/index.js +21 -1499
  41. package/dist/react/components/session/index.js.map +1 -1
  42. package/dist/react/components/workspace/index.js +116 -1715
  43. package/dist/react/components/workspace/index.js.map +1 -1
  44. package/dist/react/devtools/bridge-devtools/index.js +8 -51
  45. package/dist/react/devtools/bridge-devtools/index.js.map +1 -1
  46. package/dist/react/index.js +625 -14035
  47. package/dist/react/index.js.map +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,33 @@
1
+ import {
2
+ useCardStateStore
3
+ } from "./chunk-JCJFFJ42.js";
4
+
5
+ // src/react/hooks/use-card-state.ts
6
+ import { useCallback, useEffect, useState } from "react";
7
+ function useCardState(cardId, initialValue) {
8
+ const getCardState = useCardStateStore((state2) => state2.getCardState);
9
+ const setCardState = useCardStateStore((state2) => state2.setCardState);
10
+ const storedValue = getCardState(cardId);
11
+ const [state, setStateInternal] = useState(storedValue ?? initialValue);
12
+ useEffect(() => {
13
+ if (storedValue === void 0) {
14
+ setCardState(cardId, initialValue);
15
+ }
16
+ }, [cardId, initialValue, storedValue, setCardState]);
17
+ const setState = useCallback(
18
+ (value) => {
19
+ setStateInternal((prevState) => {
20
+ const newValue = typeof value === "function" ? value(prevState) : value;
21
+ setCardState(cardId, newValue);
22
+ return newValue;
23
+ });
24
+ },
25
+ [cardId, setCardState]
26
+ );
27
+ return [state, setState];
28
+ }
29
+
30
+ export {
31
+ useCardState
32
+ };
33
+ //# sourceMappingURL=chunk-DQCXSPHP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/hooks/use-card-state.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from \"react\"\nimport { useCardStateStore } from \"../stores/card-state-store\"\n\nexport function useCardState<T>(\n cardId: string,\n initialValue: T,\n): [T, (value: T | ((prev: T) => T)) => void] {\n const getCardState = useCardStateStore((state) => state.getCardState)\n const setCardState = useCardStateStore((state) => state.setCardState)\n\n const storedValue = getCardState<T>(cardId)\n const [state, setStateInternal] = useState<T>(storedValue ?? initialValue)\n\n useEffect(() => {\n if (storedValue === undefined) {\n setCardState(cardId, initialValue)\n }\n }, [cardId, initialValue, storedValue, setCardState])\n\n const setState = useCallback(\n (value: T | ((prev: T) => T)) => {\n setStateInternal((prevState) => {\n const newValue = typeof value === \"function\" ? (value as (prev: T) => T)(prevState) : value\n setCardState(cardId, newValue)\n return newValue\n })\n },\n [cardId, setCardState],\n )\n\n return [state, setState]\n}\n"],"mappings":";;;;;AAAA,SAAS,aAAa,WAAW,gBAAgB;AAG1C,SAAS,aACd,QACA,cAC4C;AAC5C,QAAM,eAAe,kBAAkB,CAACA,WAAUA,OAAM,YAAY;AACpE,QAAM,eAAe,kBAAkB,CAACA,WAAUA,OAAM,YAAY;AAEpE,QAAM,cAAc,aAAgB,MAAM;AAC1C,QAAM,CAAC,OAAO,gBAAgB,IAAI,SAAY,eAAe,YAAY;AAEzE,YAAU,MAAM;AACd,QAAI,gBAAgB,QAAW;AAC7B,mBAAa,QAAQ,YAAY;AAAA,IACnC;AAAA,EACF,GAAG,CAAC,QAAQ,cAAc,aAAa,YAAY,CAAC;AAEpD,QAAM,WAAW;AAAA,IACf,CAAC,UAAgC;AAC/B,uBAAiB,CAAC,cAAc;AAC9B,cAAM,WAAW,OAAO,UAAU,aAAc,MAAyB,SAAS,IAAI;AACtF,qBAAa,QAAQ,QAAQ;AAC7B,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,IACA,CAAC,QAAQ,YAAY;AAAA,EACvB;AAEA,SAAO,CAAC,OAAO,QAAQ;AACzB;","names":["state"]}
@@ -0,0 +1,30 @@
1
+ import {
2
+ useSessionStore
3
+ } from "./chunk-4VWLTG5L.js";
4
+
5
+ // src/react/hooks/use-session.ts
6
+ function useSession() {
7
+ const sessions = useSessionStore((s) => s.sessions);
8
+ const activeSessionId = useSessionStore((s) => s.activeSessionId);
9
+ const loading = useSessionStore((s) => s.loading);
10
+ const fetchSessions = useSessionStore((s) => s.fetchSessions);
11
+ const createSession = useSessionStore((s) => s.createSession);
12
+ const setActiveSession = useSessionStore((s) => s.setActiveSession);
13
+ const deleteSession = useSessionStore((s) => s.deleteSession);
14
+ const activeSession = sessions.find((s) => s.id === activeSessionId) ?? null;
15
+ return {
16
+ sessions,
17
+ activeSessionId,
18
+ activeSession,
19
+ loading,
20
+ fetchSessions,
21
+ createSession,
22
+ setActiveSession,
23
+ deleteSession
24
+ };
25
+ }
26
+
27
+ export {
28
+ useSession
29
+ };
30
+ //# sourceMappingURL=chunk-I3FFV63W.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/hooks/use-session.ts"],"sourcesContent":["import { useSessionStore } from \"../stores/session-store\"\n\nexport function useSession() {\n const sessions = useSessionStore((s) => s.sessions)\n const activeSessionId = useSessionStore((s) => s.activeSessionId)\n const loading = useSessionStore((s) => s.loading)\n const fetchSessions = useSessionStore((s) => s.fetchSessions)\n const createSession = useSessionStore((s) => s.createSession)\n const setActiveSession = useSessionStore((s) => s.setActiveSession)\n const deleteSession = useSessionStore((s) => s.deleteSession)\n\n const activeSession = sessions.find((s) => s.id === activeSessionId) ?? null\n\n return {\n sessions,\n activeSessionId,\n activeSession,\n loading,\n fetchSessions,\n createSession,\n setActiveSession,\n deleteSession,\n }\n}\n"],"mappings":";;;;;AAEO,SAAS,aAAa;AAC3B,QAAM,WAAW,gBAAgB,CAAC,MAAM,EAAE,QAAQ;AAClD,QAAM,kBAAkB,gBAAgB,CAAC,MAAM,EAAE,eAAe;AAChE,QAAM,UAAU,gBAAgB,CAAC,MAAM,EAAE,OAAO;AAChD,QAAM,gBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa;AAC5D,QAAM,gBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa;AAC5D,QAAM,mBAAmB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB;AAClE,QAAM,gBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa;AAE5D,QAAM,gBAAgB,SAAS,KAAK,CAAC,MAAM,EAAE,OAAO,eAAe,KAAK;AAExE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,58 @@
1
+ // src/react/devtools/bridge-devtools/tap.ts
2
+ function isDev() {
3
+ return import.meta.env?.DEV === true;
4
+ }
5
+ var PENDING_EVENT_LIMIT = 500;
6
+ var pendingEvents = [];
7
+ function tapBridgeEvent(event) {
8
+ if (!isDev()) return;
9
+ const hook = globalThis.__bladeBridgeDevtools;
10
+ if (hook) {
11
+ hook.record(event);
12
+ return;
13
+ }
14
+ if (pendingEvents.length >= PENDING_EVENT_LIMIT) {
15
+ pendingEvents.shift();
16
+ }
17
+ pendingEvents.push(event);
18
+ }
19
+ function flushPendingBridgeEvents() {
20
+ const hook = globalThis.__bladeBridgeDevtools;
21
+ if (!hook) return;
22
+ for (const event of pendingEvents) {
23
+ hook.record(event);
24
+ }
25
+ pendingEvents.length = 0;
26
+ }
27
+ var pendingRegistrations = [];
28
+ function registerBridgeIframe(entry) {
29
+ if (!isDev()) return () => {
30
+ };
31
+ const hook = globalThis.__bladeBridgeDevtools;
32
+ if (hook) {
33
+ return hook.registerIframe(entry);
34
+ }
35
+ const pending = { entry, unregister: null };
36
+ pendingRegistrations.push(pending);
37
+ return () => {
38
+ const idx = pendingRegistrations.indexOf(pending);
39
+ if (idx >= 0) pendingRegistrations.splice(idx, 1);
40
+ pending.unregister?.();
41
+ };
42
+ }
43
+ function flushPendingIframeRegistrations() {
44
+ const hook = globalThis.__bladeBridgeDevtools;
45
+ if (!hook) return;
46
+ for (const pending of pendingRegistrations) {
47
+ pending.unregister = hook.registerIframe(pending.entry);
48
+ }
49
+ pendingRegistrations.length = 0;
50
+ }
51
+
52
+ export {
53
+ tapBridgeEvent,
54
+ flushPendingBridgeEvents,
55
+ registerBridgeIframe,
56
+ flushPendingIframeRegistrations
57
+ };
58
+ //# sourceMappingURL=chunk-J3XVFPOV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/devtools/bridge-devtools/tap.ts"],"sourcesContent":["import type { BridgeEventInput, RegisteredIframeEntry } from \"./types\"\n\nfunction isDev() {\n return (import.meta as unknown as { env?: { DEV?: boolean } }).env?.DEV === true\n}\n\nconst PENDING_EVENT_LIMIT = 500\nconst pendingEvents: BridgeEventInput[] = []\n\nexport function tapBridgeEvent(event: BridgeEventInput) {\n if (!isDev()) return\n const hook = globalThis.__bladeBridgeDevtools\n if (hook) {\n hook.record(event)\n return\n }\n // hook 异步安装,启动阶段事件(如首个 postTheme、早期 host 消息)\n // 在 mount 前触达,直接丢弃会让 debugger 错过初始化链,故先入队。\n if (pendingEvents.length >= PENDING_EVENT_LIMIT) {\n pendingEvents.shift()\n }\n pendingEvents.push(event)\n}\n\nexport function flushPendingBridgeEvents() {\n const hook = globalThis.__bladeBridgeDevtools\n if (!hook) return\n for (const event of pendingEvents) {\n hook.record(event)\n }\n pendingEvents.length = 0\n}\n\ninterface PendingRegistration {\n entry: RegisteredIframeEntry\n unregister: (() => void) | null\n}\n\nconst pendingRegistrations: PendingRegistration[] = []\n\nexport function registerBridgeIframe(entry: RegisteredIframeEntry) {\n if (!isDev()) return () => {}\n const hook = globalThis.__bladeBridgeDevtools\n if (hook) {\n return hook.registerIframe(entry)\n }\n // devtools hook 在 main.tsx 里通过动态 import 异步安装,ResourceIframe\n // 可能先于 hook mount。先把 entry 排进队列,mount 时 flush 掉。\n const pending: PendingRegistration = { entry, unregister: null }\n pendingRegistrations.push(pending)\n return () => {\n const idx = pendingRegistrations.indexOf(pending)\n if (idx >= 0) pendingRegistrations.splice(idx, 1)\n pending.unregister?.()\n }\n}\n\nexport function flushPendingIframeRegistrations() {\n const hook = globalThis.__bladeBridgeDevtools\n if (!hook) return\n for (const pending of pendingRegistrations) {\n pending.unregister = hook.registerIframe(pending.entry)\n }\n pendingRegistrations.length = 0\n}\n"],"mappings":";AAEA,SAAS,QAAQ;AACf,SAAQ,YAAuD,KAAK,QAAQ;AAC9E;AAEA,IAAM,sBAAsB;AAC5B,IAAM,gBAAoC,CAAC;AAEpC,SAAS,eAAe,OAAyB;AACtD,MAAI,CAAC,MAAM,EAAG;AACd,QAAM,OAAO,WAAW;AACxB,MAAI,MAAM;AACR,SAAK,OAAO,KAAK;AACjB;AAAA,EACF;AAGA,MAAI,cAAc,UAAU,qBAAqB;AAC/C,kBAAc,MAAM;AAAA,EACtB;AACA,gBAAc,KAAK,KAAK;AAC1B;AAEO,SAAS,2BAA2B;AACzC,QAAM,OAAO,WAAW;AACxB,MAAI,CAAC,KAAM;AACX,aAAW,SAAS,eAAe;AACjC,SAAK,OAAO,KAAK;AAAA,EACnB;AACA,gBAAc,SAAS;AACzB;AAOA,IAAM,uBAA8C,CAAC;AAE9C,SAAS,qBAAqB,OAA8B;AACjE,MAAI,CAAC,MAAM,EAAG,QAAO,MAAM;AAAA,EAAC;AAC5B,QAAM,OAAO,WAAW;AACxB,MAAI,MAAM;AACR,WAAO,KAAK,eAAe,KAAK;AAAA,EAClC;AAGA,QAAM,UAA+B,EAAE,OAAO,YAAY,KAAK;AAC/D,uBAAqB,KAAK,OAAO;AACjC,SAAO,MAAM;AACX,UAAM,MAAM,qBAAqB,QAAQ,OAAO;AAChD,QAAI,OAAO,EAAG,sBAAqB,OAAO,KAAK,CAAC;AAChD,YAAQ,aAAa;AAAA,EACvB;AACF;AAEO,SAAS,kCAAkC;AAChD,QAAM,OAAO,WAAW;AACxB,MAAI,CAAC,KAAM;AACX,aAAW,WAAW,sBAAsB;AAC1C,YAAQ,aAAa,KAAK,eAAe,QAAQ,KAAK;AAAA,EACxD;AACA,uBAAqB,SAAS;AAChC;","names":[]}
@@ -0,0 +1,39 @@
1
+ // src/react/stores/card-state-store.ts
2
+ import { create } from "zustand";
3
+
4
+ // src/react/stores/client-aware.ts
5
+ function createClientActions(set) {
6
+ return {
7
+ _client: null,
8
+ setClient: (client) => set({ _client: client })
9
+ };
10
+ }
11
+
12
+ // src/react/stores/card-state-store.ts
13
+ var useCardStateStore = create((set, get) => ({
14
+ ...createClientActions(set),
15
+ states: {},
16
+ getCardState: (cardId) => {
17
+ return get().states[cardId];
18
+ },
19
+ setCardState: (cardId, state) => {
20
+ set((prev) => ({
21
+ states: { ...prev.states, [cardId]: state }
22
+ }));
23
+ },
24
+ removeCardState: (cardId) => {
25
+ set((prev) => {
26
+ const { [cardId]: _, ...rest } = prev.states;
27
+ return { states: rest };
28
+ });
29
+ },
30
+ clearAllStates: () => {
31
+ set({ states: {} });
32
+ }
33
+ }));
34
+
35
+ export {
36
+ createClientActions,
37
+ useCardStateStore
38
+ };
39
+ //# sourceMappingURL=chunk-JCJFFJ42.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/stores/card-state-store.ts","../src/react/stores/client-aware.ts"],"sourcesContent":["import { create } from \"zustand\"\nimport { createClientActions, type ClientAwareState } from \"./client-aware\"\n\ninterface CardStateStore extends ClientAwareState {\n states: Record<string, unknown>\n getCardState: <T>(cardId: string) => T | undefined\n setCardState: <T>(cardId: string, state: T) => void\n removeCardState: (cardId: string) => void\n clearAllStates: () => void\n}\n\nexport const useCardStateStore = create<CardStateStore>((set, get) => ({\n ...createClientActions(set),\n states: {},\n\n getCardState: <T,>(cardId: string): T | undefined => {\n return get().states[cardId] as T | undefined\n },\n\n setCardState: <T,>(cardId: string, state: T) => {\n set((prev) => ({\n states: { ...prev.states, [cardId]: state },\n }))\n },\n\n removeCardState: (cardId: string) => {\n set((prev) => {\n const { [cardId]: _, ...rest } = prev.states\n return { states: rest }\n })\n },\n\n clearAllStates: () => {\n set({ states: {} })\n },\n}))\n","import type { StoreApi } from \"zustand\"\nimport type { BladeClient } from \"../../client\"\n\nexport interface ClientAwareState {\n _client: BladeClient | null\n setClient: (client: BladeClient) => void\n}\n\nexport function createClientActions<T extends ClientAwareState>(\n set: StoreApi<T>[\"setState\"],\n): ClientAwareState {\n return {\n _client: null,\n setClient: (client) => set({ _client: client } as Partial<T>),\n }\n}\n"],"mappings":";AAAA,SAAS,cAAc;;;ACQhB,SAAS,oBACd,KACkB;AAClB,SAAO;AAAA,IACL,SAAS;AAAA,IACT,WAAW,CAAC,WAAW,IAAI,EAAE,SAAS,OAAO,CAAe;AAAA,EAC9D;AACF;;;ADJO,IAAM,oBAAoB,OAAuB,CAAC,KAAK,SAAS;AAAA,EACrE,GAAG,oBAAoB,GAAG;AAAA,EAC1B,QAAQ,CAAC;AAAA,EAET,cAAc,CAAK,WAAkC;AACnD,WAAO,IAAI,EAAE,OAAO,MAAM;AAAA,EAC5B;AAAA,EAEA,cAAc,CAAK,QAAgB,UAAa;AAC9C,QAAI,CAAC,UAAU;AAAA,MACb,QAAQ,EAAE,GAAG,KAAK,QAAQ,CAAC,MAAM,GAAG,MAAM;AAAA,IAC5C,EAAE;AAAA,EACJ;AAAA,EAEA,iBAAiB,CAAC,WAAmB;AACnC,QAAI,CAAC,SAAS;AACZ,YAAM,EAAE,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,KAAK;AACtC,aAAO,EAAE,QAAQ,KAAK;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEA,gBAAgB,MAAM;AACpB,QAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;AAAA,EACpB;AACF,EAAE;","names":[]}