@blade-hq/agent-kit 0.4.5 → 0.4.7
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.
- package/README.md +39 -1
- package/dist/{SkillStatusBar-DItrW2vv.d.ts → SkillStatusBar-DQyipdzn.d.ts} +112 -8
- package/dist/chunk-2UP7MG3J.js +66 -0
- package/dist/chunk-2UP7MG3J.js.map +1 -0
- package/dist/chunk-4VWLTG5L.js +2984 -0
- package/dist/chunk-4VWLTG5L.js.map +1 -0
- package/dist/chunk-7LEKQI47.js +32 -0
- package/dist/chunk-7LEKQI47.js.map +1 -0
- package/dist/chunk-CGOQI7ZL.js +8124 -0
- package/dist/chunk-CGOQI7ZL.js.map +1 -0
- package/dist/chunk-DQCXSPHP.js +33 -0
- package/dist/chunk-DQCXSPHP.js.map +1 -0
- package/dist/chunk-I3FFV63W.js +30 -0
- package/dist/chunk-I3FFV63W.js.map +1 -0
- package/dist/chunk-J3XVFPOV.js +58 -0
- package/dist/chunk-J3XVFPOV.js.map +1 -0
- package/dist/chunk-JCJFFJ42.js +39 -0
- package/dist/chunk-JCJFFJ42.js.map +1 -0
- package/dist/chunk-OKQWPNE3.js +1077 -0
- package/dist/chunk-OKQWPNE3.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-TC5BBLWO.js +29 -0
- package/dist/chunk-TC5BBLWO.js.map +1 -0
- package/dist/chunk-VD4CKRMT.js +127 -0
- package/dist/chunk-VD4CKRMT.js.map +1 -0
- package/dist/chunk-X6MEYCU7.js +1401 -0
- package/dist/chunk-X6MEYCU7.js.map +1 -0
- package/dist/client/index.js +24 -1052
- package/dist/client/index.js.map +1 -1
- package/dist/react/api/licenses.js +11 -1470
- package/dist/react/api/licenses.js.map +1 -1
- package/dist/react/api/vibe-coding.js +25 -1481
- package/dist/react/api/vibe-coding.js.map +1 -1
- package/dist/react/cards/register.js +45 -138
- package/dist/react/cards/register.js.map +1 -1
- package/dist/react/components/chat/index.d.ts +7 -21
- package/dist/react/components/chat/index.js +28 -11366
- package/dist/react/components/chat/index.js.map +1 -1
- package/dist/react/components/plan/index.js +135 -3054
- package/dist/react/components/plan/index.js.map +1 -1
- package/dist/react/components/session/index.js +21 -1499
- package/dist/react/components/session/index.js.map +1 -1
- package/dist/react/components/workspace/index.js +116 -1715
- package/dist/react/components/workspace/index.js.map +1 -1
- package/dist/react/devtools/bridge-devtools/index.js +8 -51
- package/dist/react/devtools/bridge-devtools/index.js.map +1 -1
- package/dist/react/index.d.ts +2 -2
- package/dist/react/index.js +625 -14035
- package/dist/react/index.js.map +1 -1
- package/dist/style.css +1 -1
- 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":[]}
|