kennel 0.2.12 → 0.2.13
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/dist/cli/src/plugins/external.js +19 -7
- package/dist/cli/src/site/server-plugins.d.ts +1 -4
- package/dist/core/api-client.js +3 -11
- package/dist/core/runtime.js +84 -695
- package/dist/package/preview.js +99 -729
- package/dist/plugins/external.js +19 -7
- package/dist/site/server-plugins.d.ts +1 -4
- package/dist/site/server-plugins.js +28 -537
- package/kernel/apps/web/package.json +0 -1
- package/kernel/apps/web/src/app.css +0 -1
- package/kernel/apps/web/src/app.tsx +7 -24
- package/kernel/apps/web/src/folder-plugin-view.tsx +6 -3
- package/kernel/apps/web/src/plugins.ts +2 -14
- package/kernel/apps/web/vite.config.ts +16 -3
- package/kernel/packages/api/openapi.json +85 -224
- package/kernel/packages/api/package.json +0 -1
- package/kernel/packages/api/src/contracts/schemas.ts +1 -9
- package/kernel/packages/api/src/server/folder-metadata-plugin.ts +9 -151
- package/kernel/packages/api/src/server/plugins.ts +11 -26
- package/kernel/packages/api/src/shared/viewer-route.ts +3 -5
- package/kernel/packages/api-client/src/generated.d.ts +16 -53
- package/kernel/packages/markdown/README.md +2 -2
- package/kernel/packages/notes/package.json +1 -0
- package/kernel/packages/notes/src/client.tsx +0 -1
- package/kernel/packages/notes/src/manifest.ts +7 -0
- package/kernel/packages/notes/src/pages/notes-page.tsx +1 -1
- package/kernel/packages/notes/src/ui/folder-notes-list.tsx +52 -7
- package/kernel/packages/plugins/SKILL.md +3 -2
- package/kernel/packages/plugins/package.json +5 -1
- package/kernel/packages/plugins/src/hooks.ts +24 -0
- package/kernel/packages/plugins/src/index.ts +1 -7
- package/kernel/packages/plugins/src/page.ts +0 -7
- package/kernel/packages/plugins/src/types.ts +8 -0
- package/kernel/packages/plugins/tsconfig.json +1 -1
- package/kernel/packages/plugins/tsup.config.ts +1 -0
- package/kernel/packages/ui/src/components/folder-activity.tsx +16 -98
- package/kernel/packages/ui/src/components/folder-landing.tsx +4 -0
- package/kernel/packages/ui/src/components/pagination.tsx +88 -2
- package/kernel/packages/ui/src/components/plugin-icon.tsx +19 -0
- package/kernel/packages/ui/src/lib/folder-activity.ts +4 -17
- package/kernel/packages/ui/src/styles/folder-activity.css +1 -31
- package/package.json +2 -2
- package/web/assets/{abnfDiagram-VRR7QNED-Brm1vcGG.js → abnfDiagram-VRR7QNED-Dt7QEF5H.js} +1 -1
- package/web/assets/app-C1j063QX.js +2 -0
- package/web/assets/app-options-98-a6ivv.js +25 -0
- package/web/assets/{app-view-header-BSOI-wB6.js → app-view-header-BJ9CWTE1.js} +1 -1
- package/web/assets/{arc-zngHsMKV.js → arc-PFB0H7oD.js} +1 -1
- package/web/assets/{architectureDiagram-ZJ3FMSHR-BLklLqRP.js → architectureDiagram-ZJ3FMSHR-BHLqEXlZ.js} +1 -1
- package/web/assets/{ask-tray-B4SPj-fH.js → ask-tray-C3gBesHJ.js} +1 -1
- package/web/assets/{blockDiagram-677ZJIJ3-yhC2fEtu.js → blockDiagram-677ZJIJ3-UbnYoYDg.js} +1 -1
- package/web/assets/{c4Diagram-LMCZKHZV-DMcweQme.js → c4Diagram-LMCZKHZV-4OSx1V4W.js} +1 -1
- package/web/assets/channel-BuvY5cQN.js +1 -0
- package/web/assets/{chunk-2Q5K7J3B-DD-S6n8h.js → chunk-2Q5K7J3B-CgxJ1aJb.js} +1 -1
- package/web/assets/{chunk-32BRIVSS-DFIAKRv_.js → chunk-32BRIVSS-Bfwxg2LM.js} +1 -1
- package/web/assets/{chunk-5VM5RSS4-B23APb3c.js → chunk-5VM5RSS4-BZN9a2hI.js} +1 -1
- package/web/assets/{chunk-EX3LRPZG-BSVEB7db.js → chunk-EX3LRPZG-CrH6hhqq.js} +1 -1
- package/web/assets/{chunk-JWPE2WC7-B6qGd0ng.js → chunk-JWPE2WC7-Ddn7ZSp8.js} +1 -1
- package/web/assets/{chunk-MOJQB5TN-N4T1-ew1.js → chunk-MOJQB5TN-9lJ7f_hI.js} +1 -1
- package/web/assets/{chunk-RYQCIY6F-6oc6i_Xw.js → chunk-RYQCIY6F-QrFo_00s.js} +1 -1
- package/web/assets/{chunk-V7JOEXUC-Dftgm9ck.js → chunk-V7JOEXUC-Dn0lQjVf.js} +1 -1
- package/web/assets/{chunk-VR4S4FIN-DfjqwEsO.js → chunk-VR4S4FIN-DXVPySkB.js} +1 -1
- package/web/assets/{chunk-XXDRQBXY-CsFsQYow.js → chunk-XXDRQBXY-CBiFDOdZ.js} +1 -1
- package/web/assets/classDiagram-OUVF2IWQ-DCYNCJhe.js +1 -0
- package/web/assets/classDiagram-v2-EOCWNBFH-DCYNCJhe.js +1 -0
- package/web/assets/client-DBJY3XDL.js +43 -0
- package/web/assets/client-DKJs0w4y.js +6 -0
- package/web/assets/{command-D_9V8ejS.js → command-onjTnuXT.js} +1 -1
- package/web/assets/{copy-context-CevDWX59.js → copy-context-CciRaLNN.js} +1 -1
- package/web/assets/{cose-bilkent-JH36ORCC-DzKsIuDb.js → cose-bilkent-JH36ORCC-CGRic2um.js} +1 -1
- package/web/assets/{cynefin-VYW2F7L2-AL45ZHbw.js → cynefin-VYW2F7L2-Blk0Lu0l.js} +1 -1
- package/web/assets/{cynefinDiagram-TSTJHNR4-DSbBegxZ.js → cynefinDiagram-TSTJHNR4-DpnnHRDK.js} +1 -1
- package/web/assets/{dagre-VKFMJZFB-BaG6MGUE.js → dagre-VKFMJZFB-llzMokKp.js} +1 -1
- package/web/assets/{diagram-FQU43EPY-WbDotTX5.js → diagram-FQU43EPY-DC6xHovR.js} +1 -1
- package/web/assets/{diagram-G47NLZAW-DMbouYVI.js → diagram-G47NLZAW-B8GVS3EA.js} +1 -1
- package/web/assets/{diagram-NH7WQ7WH-DoEuaWd_.js → diagram-NH7WQ7WH-DWUaARfh.js} +1 -1
- package/web/assets/{diagram-OA4YK3LP-BjGd-PoH.js → diagram-OA4YK3LP-9Uaes_Yi.js} +1 -1
- package/web/assets/{diagram-WEI45ONY-CXHi27jF.js → diagram-WEI45ONY-DPPTBWud.js} +1 -1
- package/web/assets/{document-CVJCfWiQ.js → document-D23WzFsW.js} +3 -3
- package/web/assets/{ebnfDiagram-CCIWWBDH-B5vMUDOs.js → ebnfDiagram-CCIWWBDH-BPrKneNw.js} +1 -1
- package/web/assets/{entities-BTKzWJ-r.js → entities-DPg0B8vd.js} +1 -1
- package/web/assets/{erDiagram-Q63AITRT-DhO7ayzF.js → erDiagram-Q63AITRT-CFqYBcnb.js} +1 -1
- package/web/assets/{file-viewer-D1HK9J3A.js → file-viewer-Ck73SsLA.js} +1 -1
- package/web/assets/{flowDiagram-23GEKE2U-CublTUlC.js → flowDiagram-23GEKE2U-C7RpYqaT.js} +1 -1
- package/web/assets/folder-filter-bar-DzejUj87.js +4 -0
- package/web/assets/{folder-image-L_AjkRfI.js → folder-image-BjIicmQ6.js} +1 -1
- package/web/assets/folder-landing-CCIXZfkp.js +55 -0
- package/web/assets/folder-list-TuRwuTss.js +1 -0
- package/web/assets/folder-mobile-bar-Bqnfwi-z.js +1 -0
- package/web/assets/folder-plugin-view-CrinCX1o.js +2 -0
- package/web/assets/{ganttDiagram-NO4QXBWP-BLMJWerM.js → ganttDiagram-NO4QXBWP-Cz2sxU8F.js} +1 -1
- package/web/assets/{gitGraphDiagram-IHSO6WYX-Br0E6qyZ.js → gitGraphDiagram-IHSO6WYX-BSuz0yF-.js} +1 -1
- package/web/assets/index-DLn_2LPp.js +2 -0
- package/web/assets/index-uY9jLiL5.css +1 -0
- package/web/assets/{infoDiagram-FWYZ7A6U-Dgz0npJO.js → infoDiagram-FWYZ7A6U-CpeKgqoS.js} +1 -1
- package/web/assets/input-Bz_puamS.js +9 -0
- package/web/assets/{ishikawaDiagram-FXEZZL3T-rY5pdS3b.js → ishikawaDiagram-FXEZZL3T-5c2Tmknb.js} +1 -1
- package/web/assets/{journeyDiagram-5HDEW3XC-CKZALyR6.js → journeyDiagram-5HDEW3XC-Cu-wRkR4.js} +1 -1
- package/web/assets/{kanban-definition-HUTT4EX6-EGPY9Vda.js → kanban-definition-HUTT4EX6-BunSqkPe.js} +1 -1
- package/web/assets/{linear-DkJW9OwI.js → linear-C8e8bGVv.js} +1 -1
- package/web/assets/{mermaid.core-DVEpXYiF.js → mermaid.core-DLgjY1g2.js} +4 -4
- package/web/assets/{metadata-Bu_ffLUd.js → metadata-DEfJKlnd.js} +1 -1
- package/web/assets/{mindmap-definition-LN4V7U3C-BEOUVnDN.js → mindmap-definition-LN4V7U3C-W9ENYFOD.js} +1 -1
- package/web/assets/{pegDiagram-2B236MQR-DThjl3eK.js → pegDiagram-2B236MQR-0vPlHCFp.js} +1 -1
- package/web/assets/{pieDiagram-ENE6RG2P-DzmoGgw2.js → pieDiagram-ENE6RG2P-CakaveRV.js} +1 -1
- package/web/assets/{project-search-dialog-e2Jmhvfq.js → project-search-dialog-BSKA4peX.js} +1 -1
- package/web/assets/{quadrantDiagram-ABIIQ3AL-BqT8U3FS.js → quadrantDiagram-ABIIQ3AL-jxHw_egj.js} +1 -1
- package/web/assets/{railroadDiagram-RFXS5EU6-1k1tfPk1.js → railroadDiagram-RFXS5EU6-lIjDXPZt.js} +1 -1
- package/web/assets/{requirementDiagram-TGXJPOKE-bM4RTd2J.js → requirementDiagram-TGXJPOKE-C-JiT4bc.js} +1 -1
- package/web/assets/{sankeyDiagram-HTMAVEWB-TCgfqDLy.js → sankeyDiagram-HTMAVEWB-SuLPAw9X.js} +1 -1
- package/web/assets/{search-DQiFH2up.js → search-CKujW14f.js} +1 -1
- package/web/assets/{selection-popup-bqfgVd-L.js → selection-popup-CtxT9SWn.js} +3 -3
- package/web/assets/{sequenceDiagram-DBY2YBRQ-BRhGHI0i.js → sequenceDiagram-DBY2YBRQ-o9UwTkZR.js} +1 -1
- package/web/assets/{sizeCapture-X5ZJPWSS-EeUWgn0N.js → sizeCapture-X5ZJPWSS-ClbWGybF.js} +1 -1
- package/web/assets/{stateDiagram-2N3HPSRC-BSOG758d.js → stateDiagram-2N3HPSRC-Ce4avoWx.js} +1 -1
- package/web/assets/stateDiagram-v2-6OUMAXLB-CsrPTZoJ.js +1 -0
- package/web/assets/{swimlanes-5IMT3BWC-DpCo4aEm.js → swimlanes-5IMT3BWC-DMZI4XZT.js} +2 -2
- package/web/assets/swimlanesDiagram-G3AALYLV-pShSVcTd.js +8 -0
- package/web/assets/{timeline-definition-FHXFAJF6-BpaObe6u.js → timeline-definition-FHXFAJF6-CPIpIgPN.js} +1 -1
- package/web/assets/{vennDiagram-L72KCM5P-ClvUzW8B.js → vennDiagram-L72KCM5P-_rha8uDZ.js} +1 -1
- package/web/assets/view-context-BDtIUHQy.js +229 -0
- package/web/assets/{viewer-capabilities-CFBwvpcI.js → viewer-capabilities-YYZqMs56.js} +1 -1
- package/web/assets/{wardleyDiagram-EHGQE667-Dg1CX0Fl.js → wardleyDiagram-EHGQE667-D4EAOS35.js} +1 -1
- package/web/assets/{xychartDiagram-FW5EYKEG-C0c9zQTr.js → xychartDiagram-FW5EYKEG-DR8PwXpe.js} +1 -1
- package/web/index.html +2 -2
- package/kernel/packages/agents/eslint.config.js +0 -10
- package/kernel/packages/agents/package.json +0 -75
- package/kernel/packages/agents/src/agent-card.tsx +0 -334
- package/kernel/packages/agents/src/client.tsx +0 -13
- package/kernel/packages/agents/src/index.ts +0 -18
- package/kernel/packages/agents/src/manifest.ts +0 -7
- package/kernel/packages/agents/src/node.ts +0 -447
- package/kernel/packages/agents/src/profiles.ts +0 -137
- package/kernel/packages/agents/src/resolve.ts +0 -69
- package/kernel/packages/agents/src/server.ts +0 -60
- package/kernel/packages/agents/src/types.ts +0 -82
- package/kernel/packages/agents/src/viewer.tsx +0 -370
- package/kernel/packages/agents/test/profiles.test.mjs +0 -88
- package/kernel/packages/agents/test/resolve.test.mjs +0 -729
- package/kernel/packages/agents/tsconfig.json +0 -17
- package/kernel/packages/api/test/agents-loading.test.ts +0 -94
- package/kernel/packages/ui/src/components/folder-skill-list.tsx +0 -62
- package/web/assets/app-Debw-lUT.js +0 -2
- package/web/assets/app-options-UU_JlJQv.js +0 -25
- package/web/assets/channel-BgYLn5Cm.js +0 -1
- package/web/assets/classDiagram-OUVF2IWQ-Fzhmfbkt.js +0 -1
- package/web/assets/classDiagram-v2-EOCWNBFH-Fzhmfbkt.js +0 -1
- package/web/assets/client-C1WdY7jQ.js +0 -22
- package/web/assets/client-D__L4Hl0.js +0 -17
- package/web/assets/client-DoMhF9Tv.js +0 -5
- package/web/assets/folder-filter-bar-BHz7s9Vb.js +0 -4
- package/web/assets/folder-landing-Byh8W67L.js +0 -54
- package/web/assets/folder-list-jMyo-7pV.js +0 -1
- package/web/assets/folder-metadata-bCocvxpP.js +0 -2
- package/web/assets/folder-mobile-bar-DvvyOS-a.js +0 -1
- package/web/assets/folder-plugin-view-sib0Dwfw.js +0 -3
- package/web/assets/index-4Xh9UKim.js +0 -1
- package/web/assets/index-Bu75S2qS.js +0 -1
- package/web/assets/index-CPcMcCUY.js +0 -2
- package/web/assets/index-CXxkvzNJ.css +0 -1
- package/web/assets/select-CkOwL81C.js +0 -30
- package/web/assets/stateDiagram-v2-6OUMAXLB-DUeGDz1r.js +0 -1
- package/web/assets/swimlanesDiagram-G3AALYLV-BGOaCfyV.js +0 -8
- package/web/assets/use-folder-filter-hA6fa7nm.js +0 -1
- package/web/assets/view-context-CVvDw2JM.js +0 -229
|
@@ -28,7 +28,7 @@ import type {
|
|
|
28
28
|
// Sessions functionality is commented out (can be re-enabled).
|
|
29
29
|
// FolderSession,
|
|
30
30
|
} from "@raggle-ai/ui/lib/folder-activity"
|
|
31
|
-
import { useFolderNotes } from "@raggle-ai/notes/
|
|
31
|
+
import { useFolderNotes } from "@raggle-ai/notes/data/use-folder-notes"
|
|
32
32
|
import { LinkProvider } from "@raggle-ai/ui/components/link"
|
|
33
33
|
import { toast, Toaster } from "@raggle-ai/ui/components/sonner"
|
|
34
34
|
|
|
@@ -43,6 +43,7 @@ import {
|
|
|
43
43
|
writeFolderQueryCache,
|
|
44
44
|
} from "./folder-query-cache"
|
|
45
45
|
import { localSource } from "./local-source"
|
|
46
|
+
import { getFolderPlugin } from "./plugins"
|
|
46
47
|
import { queryClient } from "./query-client"
|
|
47
48
|
import { useView, ViewProvider } from "./view-context"
|
|
48
49
|
import {
|
|
@@ -154,10 +155,6 @@ const folderRoute = createRoute({
|
|
|
154
155
|
// getParentRoute: () => folderRoute,
|
|
155
156
|
// path: "sessions",
|
|
156
157
|
// })
|
|
157
|
-
const folderSkillsRoute = createRoute({
|
|
158
|
-
getParentRoute: () => folderRoute,
|
|
159
|
-
path: "skills",
|
|
160
|
-
})
|
|
161
158
|
const folderViewRoute = createRoute({
|
|
162
159
|
getParentRoute: () => folderRoute,
|
|
163
160
|
path: "views/$pluginId",
|
|
@@ -211,7 +208,6 @@ const routeTree = rootRoute.addChildren([
|
|
|
211
208
|
folderNotesRoute,
|
|
212
209
|
folderCollectionRoute,
|
|
213
210
|
// folderSessionsRoute,
|
|
214
|
-
folderSkillsRoute,
|
|
215
211
|
folderViewRoute,
|
|
216
212
|
folderViewDetailRoute,
|
|
217
213
|
folderProjectsRoute,
|
|
@@ -297,7 +293,6 @@ const cacheTimes = {
|
|
|
297
293
|
plugins: Number.POSITIVE_INFINITY,
|
|
298
294
|
// Sessions functionality is commented out (can be re-enabled).
|
|
299
295
|
// sessions: 5_000,
|
|
300
|
-
skills: 15_000,
|
|
301
296
|
}
|
|
302
297
|
|
|
303
298
|
function folderQueryKey(folderId: string, part: MetadataPart) {
|
|
@@ -387,14 +382,6 @@ function FolderContent() {
|
|
|
387
382
|
// staleTime: cacheTimes.sessions,
|
|
388
383
|
// })
|
|
389
384
|
const notes = useFolderNotes(href, loadMetadata && params.section === "notes")
|
|
390
|
-
// Skills are loaded on demand, only when their section is open.
|
|
391
|
-
const skills = useQuery({
|
|
392
|
-
enabled: Boolean(loadMetadata && params.section === "skills"),
|
|
393
|
-
gcTime: 5 * 60_000,
|
|
394
|
-
queryFn: ({ signal }) => fetchMetadataPart(href, "skills", { signal }),
|
|
395
|
-
queryKey: folderQueryKey(folderId, "skills"),
|
|
396
|
-
staleTime: cacheTimes.skills,
|
|
397
|
-
})
|
|
398
385
|
const metadata = useMemo<FolderMetadata | undefined>(() => {
|
|
399
386
|
if (!identity.data) return undefined
|
|
400
387
|
return {
|
|
@@ -408,16 +395,8 @@ function FolderContent() {
|
|
|
408
395
|
// Sessions functionality is commented out (can be re-enabled).
|
|
409
396
|
// sessions: sessions.data?.sessions ?? { items: [] },
|
|
410
397
|
sessions: { items: [] },
|
|
411
|
-
skills: skills.data?.skills ?? { items: [] },
|
|
412
398
|
}
|
|
413
|
-
}, [
|
|
414
|
-
discovery.data,
|
|
415
|
-
identity.data,
|
|
416
|
-
notes.files,
|
|
417
|
-
plugins.data,
|
|
418
|
-
skills.data,
|
|
419
|
-
view.workspace,
|
|
420
|
-
])
|
|
399
|
+
}, [discovery.data, identity.data, notes.files, plugins.data, view.workspace])
|
|
421
400
|
const metadataErrorReason =
|
|
422
401
|
identity.error ??
|
|
423
402
|
(params.section === "projects" ? discovery.error : undefined) ??
|
|
@@ -532,6 +511,7 @@ function FolderContent() {
|
|
|
532
511
|
) : null
|
|
533
512
|
|
|
534
513
|
const collectionPage = Boolean(params.collectionId)
|
|
514
|
+
const activePlugin = getFolderPlugin(params.view?.pluginId)
|
|
535
515
|
const landingProps = {
|
|
536
516
|
data: metadata,
|
|
537
517
|
collectionId: params.collectionId,
|
|
@@ -560,6 +540,9 @@ function FolderContent() {
|
|
|
560
540
|
tab: routeFolderTab(params),
|
|
561
541
|
tabHref,
|
|
562
542
|
view: params.view,
|
|
543
|
+
viewNavigation: activePlugin
|
|
544
|
+
? { icon: activePlugin.icon, label: activePlugin.label }
|
|
545
|
+
: undefined,
|
|
563
546
|
}
|
|
564
547
|
|
|
565
548
|
return (
|
|
@@ -2,6 +2,7 @@ import { useParams } from "@tanstack/react-router"
|
|
|
2
2
|
import { api } from "~/api-client"
|
|
3
3
|
|
|
4
4
|
import type { FolderPluginViewProps } from "kennel-plugins/client"
|
|
5
|
+
import { FolderPathProvider } from "kennel-plugins/hooks"
|
|
5
6
|
|
|
6
7
|
import { FolderFilterMetadataProvider } from "./folder-filter-icons"
|
|
7
8
|
import { getFolderPlugin } from "./plugins"
|
|
@@ -80,8 +81,10 @@ export function FolderPluginPage() {
|
|
|
80
81
|
}
|
|
81
82
|
const Component = plugin.component
|
|
82
83
|
return (
|
|
83
|
-
<
|
|
84
|
-
<
|
|
85
|
-
|
|
84
|
+
<FolderPathProvider key={`${folderId}:${plugin.id}`} folder={folder}>
|
|
85
|
+
<FolderFilterMetadataProvider>
|
|
86
|
+
<Component {...view} />
|
|
87
|
+
</FolderFilterMetadataProvider>
|
|
88
|
+
</FolderPathProvider>
|
|
86
89
|
)
|
|
87
90
|
}
|
|
@@ -1,21 +1,9 @@
|
|
|
1
|
-
import { lazy } from "react"
|
|
2
|
-
import { externalFolderPlugins } from "@/external-plugins"
|
|
3
|
-
|
|
4
1
|
import type { FolderPluginClient } from "kennel-plugins/client"
|
|
5
|
-
import {
|
|
2
|
+
import { externalFolderPlugins } from "@/external-plugins"
|
|
6
3
|
|
|
7
4
|
// Keep navigation metadata cheap. Import only the selected plugin's UI;
|
|
8
5
|
// never construct an import path from an untrusted URL segment.
|
|
9
|
-
export const folderPlugins: FolderPluginClient[] = [
|
|
10
|
-
{
|
|
11
|
-
...agentsManifest,
|
|
12
|
-
component: lazy(async () => ({
|
|
13
|
-
default: (await import("@raggle-ai/agents/client")).agentsClient
|
|
14
|
-
.component,
|
|
15
|
-
})),
|
|
16
|
-
},
|
|
17
|
-
...externalFolderPlugins,
|
|
18
|
-
]
|
|
6
|
+
export const folderPlugins: FolderPluginClient[] = [...externalFolderPlugins]
|
|
19
7
|
|
|
20
8
|
const byId = new Map(folderPlugins.map((plugin) => [plugin.id, plugin]))
|
|
21
9
|
export function getFolderPlugin(id: string | undefined) {
|
|
@@ -63,7 +63,6 @@ const resolveBarkdown = (): string | undefined => {
|
|
|
63
63
|
}
|
|
64
64
|
const barkdown = resolveBarkdown()
|
|
65
65
|
const internalPackages: Array<[RegExp, string]> = [
|
|
66
|
-
[/^@raggle-ai\/agents(\/.*)?$/, "packages/agents/src"],
|
|
67
66
|
[/^kennel-plugins(\/.*)?$/, "packages/plugins/src"],
|
|
68
67
|
[/^@raggle-ai\/kennel-api(\/.*)?$/, "packages/api/src"],
|
|
69
68
|
[/^@raggle-ai\/markdown(\/.*)?$/, "packages/markdown/src"],
|
|
@@ -76,6 +75,11 @@ const internalPackages: Array<[RegExp, string]> = [
|
|
|
76
75
|
const hostPackageNames = [
|
|
77
76
|
"@tanstack/react-query",
|
|
78
77
|
"@tanstack/react-router",
|
|
78
|
+
"class-variance-authority",
|
|
79
|
+
"clsx",
|
|
80
|
+
"radix-ui",
|
|
81
|
+
"sonner",
|
|
82
|
+
"tailwind-merge",
|
|
79
83
|
"date-fns",
|
|
80
84
|
"effect",
|
|
81
85
|
"lucide-react",
|
|
@@ -213,6 +217,17 @@ export default defineConfig({
|
|
|
213
217
|
}),
|
|
214
218
|
// Only non-API BarkDown assets remain here; core owns /api/*.
|
|
215
219
|
barkdownPlugin(root),
|
|
220
|
+
{
|
|
221
|
+
name: "kennel-plugin-style-sources",
|
|
222
|
+
enforce: "pre",
|
|
223
|
+
transform(code, id) {
|
|
224
|
+
if (id.split("?")[0] !== resolve(import.meta.dirname, "src/app.css")) return
|
|
225
|
+
const sources = externalSourceRoots
|
|
226
|
+
.map((folder) => `@source ${JSON.stringify(folder.replaceAll("\\", "/"))};`)
|
|
227
|
+
.join("\n")
|
|
228
|
+
return `${code}\n${sources}\n`
|
|
229
|
+
},
|
|
230
|
+
},
|
|
216
231
|
tailwindcss(),
|
|
217
232
|
react(),
|
|
218
233
|
],
|
|
@@ -250,8 +265,6 @@ export default defineConfig({
|
|
|
250
265
|
"./src/main.tsx",
|
|
251
266
|
"./src/App.tsx",
|
|
252
267
|
"./src/markdown-page.tsx",
|
|
253
|
-
"../../packages/agents/src/viewer.tsx",
|
|
254
|
-
"../../packages/agents/src/node.ts",
|
|
255
268
|
],
|
|
256
269
|
},
|
|
257
270
|
host: "127.0.0.1",
|
|
@@ -164,7 +164,6 @@
|
|
|
164
164
|
"workspace",
|
|
165
165
|
"collections",
|
|
166
166
|
"plugins",
|
|
167
|
-
"skills",
|
|
168
167
|
"sessions",
|
|
169
168
|
"calendar",
|
|
170
169
|
"schema"
|
|
@@ -322,6 +321,23 @@
|
|
|
322
321
|
"error": {
|
|
323
322
|
"type": "string"
|
|
324
323
|
},
|
|
324
|
+
"icon": {
|
|
325
|
+
"type": "object",
|
|
326
|
+
"properties": {
|
|
327
|
+
"paths": {
|
|
328
|
+
"minItems": 1,
|
|
329
|
+
"type": "array",
|
|
330
|
+
"items": {
|
|
331
|
+
"type": "string",
|
|
332
|
+
"minLength": 1
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
},
|
|
336
|
+
"required": [
|
|
337
|
+
"paths"
|
|
338
|
+
],
|
|
339
|
+
"additionalProperties": false
|
|
340
|
+
},
|
|
325
341
|
"id": {
|
|
326
342
|
"type": "string"
|
|
327
343
|
},
|
|
@@ -433,48 +449,6 @@
|
|
|
433
449
|
],
|
|
434
450
|
"additionalProperties": false
|
|
435
451
|
},
|
|
436
|
-
"skills": {
|
|
437
|
-
"type": "object",
|
|
438
|
-
"properties": {
|
|
439
|
-
"items": {
|
|
440
|
-
"type": "array",
|
|
441
|
-
"items": {
|
|
442
|
-
"type": "object",
|
|
443
|
-
"properties": {
|
|
444
|
-
"description": {
|
|
445
|
-
"type": "string"
|
|
446
|
-
},
|
|
447
|
-
"name": {
|
|
448
|
-
"type": "string"
|
|
449
|
-
},
|
|
450
|
-
"openHref": {
|
|
451
|
-
"type": "string"
|
|
452
|
-
},
|
|
453
|
-
"relativePath": {
|
|
454
|
-
"type": "string"
|
|
455
|
-
},
|
|
456
|
-
"source": {
|
|
457
|
-
"type": "string",
|
|
458
|
-
"enum": [
|
|
459
|
-
"global",
|
|
460
|
-
"local"
|
|
461
|
-
]
|
|
462
|
-
}
|
|
463
|
-
},
|
|
464
|
-
"required": [
|
|
465
|
-
"name",
|
|
466
|
-
"relativePath",
|
|
467
|
-
"source"
|
|
468
|
-
],
|
|
469
|
-
"additionalProperties": false
|
|
470
|
-
}
|
|
471
|
-
}
|
|
472
|
-
},
|
|
473
|
-
"required": [
|
|
474
|
-
"items"
|
|
475
|
-
],
|
|
476
|
-
"additionalProperties": false
|
|
477
|
-
},
|
|
478
452
|
"workspace": {
|
|
479
453
|
"type": "object",
|
|
480
454
|
"properties": {
|
|
@@ -1402,6 +1376,23 @@
|
|
|
1402
1376
|
"error": {
|
|
1403
1377
|
"type": "string"
|
|
1404
1378
|
},
|
|
1379
|
+
"icon": {
|
|
1380
|
+
"type": "object",
|
|
1381
|
+
"properties": {
|
|
1382
|
+
"paths": {
|
|
1383
|
+
"minItems": 1,
|
|
1384
|
+
"type": "array",
|
|
1385
|
+
"items": {
|
|
1386
|
+
"type": "string",
|
|
1387
|
+
"minLength": 1
|
|
1388
|
+
}
|
|
1389
|
+
}
|
|
1390
|
+
},
|
|
1391
|
+
"required": [
|
|
1392
|
+
"paths"
|
|
1393
|
+
],
|
|
1394
|
+
"additionalProperties": false
|
|
1395
|
+
},
|
|
1405
1396
|
"id": {
|
|
1406
1397
|
"type": "string"
|
|
1407
1398
|
},
|
|
@@ -1428,61 +1419,6 @@
|
|
|
1428
1419
|
],
|
|
1429
1420
|
"additionalProperties": false
|
|
1430
1421
|
},
|
|
1431
|
-
{
|
|
1432
|
-
"type": "object",
|
|
1433
|
-
"properties": {
|
|
1434
|
-
"folder": {
|
|
1435
|
-
"type": "string"
|
|
1436
|
-
},
|
|
1437
|
-
"skills": {
|
|
1438
|
-
"type": "object",
|
|
1439
|
-
"properties": {
|
|
1440
|
-
"items": {
|
|
1441
|
-
"type": "array",
|
|
1442
|
-
"items": {
|
|
1443
|
-
"type": "object",
|
|
1444
|
-
"properties": {
|
|
1445
|
-
"description": {
|
|
1446
|
-
"type": "string"
|
|
1447
|
-
},
|
|
1448
|
-
"name": {
|
|
1449
|
-
"type": "string"
|
|
1450
|
-
},
|
|
1451
|
-
"openHref": {
|
|
1452
|
-
"type": "string"
|
|
1453
|
-
},
|
|
1454
|
-
"relativePath": {
|
|
1455
|
-
"type": "string"
|
|
1456
|
-
},
|
|
1457
|
-
"source": {
|
|
1458
|
-
"type": "string",
|
|
1459
|
-
"enum": [
|
|
1460
|
-
"global",
|
|
1461
|
-
"local"
|
|
1462
|
-
]
|
|
1463
|
-
}
|
|
1464
|
-
},
|
|
1465
|
-
"required": [
|
|
1466
|
-
"name",
|
|
1467
|
-
"relativePath",
|
|
1468
|
-
"source"
|
|
1469
|
-
],
|
|
1470
|
-
"additionalProperties": false
|
|
1471
|
-
}
|
|
1472
|
-
}
|
|
1473
|
-
},
|
|
1474
|
-
"required": [
|
|
1475
|
-
"items"
|
|
1476
|
-
],
|
|
1477
|
-
"additionalProperties": false
|
|
1478
|
-
}
|
|
1479
|
-
},
|
|
1480
|
-
"required": [
|
|
1481
|
-
"folder",
|
|
1482
|
-
"skills"
|
|
1483
|
-
],
|
|
1484
|
-
"additionalProperties": false
|
|
1485
|
-
},
|
|
1486
1422
|
{
|
|
1487
1423
|
"type": "object",
|
|
1488
1424
|
"properties": {
|
|
@@ -1585,6 +1521,23 @@
|
|
|
1585
1521
|
"error": {
|
|
1586
1522
|
"type": "string"
|
|
1587
1523
|
},
|
|
1524
|
+
"icon": {
|
|
1525
|
+
"type": "object",
|
|
1526
|
+
"properties": {
|
|
1527
|
+
"paths": {
|
|
1528
|
+
"minItems": 1,
|
|
1529
|
+
"type": "array",
|
|
1530
|
+
"items": {
|
|
1531
|
+
"type": "string",
|
|
1532
|
+
"minLength": 1
|
|
1533
|
+
}
|
|
1534
|
+
}
|
|
1535
|
+
},
|
|
1536
|
+
"required": [
|
|
1537
|
+
"paths"
|
|
1538
|
+
],
|
|
1539
|
+
"additionalProperties": false
|
|
1540
|
+
},
|
|
1588
1541
|
"id": {
|
|
1589
1542
|
"type": "string"
|
|
1590
1543
|
},
|
|
@@ -1696,48 +1649,6 @@
|
|
|
1696
1649
|
],
|
|
1697
1650
|
"additionalProperties": false
|
|
1698
1651
|
},
|
|
1699
|
-
"skills": {
|
|
1700
|
-
"type": "object",
|
|
1701
|
-
"properties": {
|
|
1702
|
-
"items": {
|
|
1703
|
-
"type": "array",
|
|
1704
|
-
"items": {
|
|
1705
|
-
"type": "object",
|
|
1706
|
-
"properties": {
|
|
1707
|
-
"description": {
|
|
1708
|
-
"type": "string"
|
|
1709
|
-
},
|
|
1710
|
-
"name": {
|
|
1711
|
-
"type": "string"
|
|
1712
|
-
},
|
|
1713
|
-
"openHref": {
|
|
1714
|
-
"type": "string"
|
|
1715
|
-
},
|
|
1716
|
-
"relativePath": {
|
|
1717
|
-
"type": "string"
|
|
1718
|
-
},
|
|
1719
|
-
"source": {
|
|
1720
|
-
"type": "string",
|
|
1721
|
-
"enum": [
|
|
1722
|
-
"global",
|
|
1723
|
-
"local"
|
|
1724
|
-
]
|
|
1725
|
-
}
|
|
1726
|
-
},
|
|
1727
|
-
"required": [
|
|
1728
|
-
"name",
|
|
1729
|
-
"relativePath",
|
|
1730
|
-
"source"
|
|
1731
|
-
],
|
|
1732
|
-
"additionalProperties": false
|
|
1733
|
-
}
|
|
1734
|
-
}
|
|
1735
|
-
},
|
|
1736
|
-
"required": [
|
|
1737
|
-
"items"
|
|
1738
|
-
],
|
|
1739
|
-
"additionalProperties": false
|
|
1740
|
-
},
|
|
1741
1652
|
"workspace": {
|
|
1742
1653
|
"type": "object",
|
|
1743
1654
|
"properties": {
|
|
@@ -1994,6 +1905,23 @@
|
|
|
1994
1905
|
"error": {
|
|
1995
1906
|
"type": "string"
|
|
1996
1907
|
},
|
|
1908
|
+
"icon": {
|
|
1909
|
+
"type": "object",
|
|
1910
|
+
"properties": {
|
|
1911
|
+
"paths": {
|
|
1912
|
+
"minItems": 1,
|
|
1913
|
+
"type": "array",
|
|
1914
|
+
"items": {
|
|
1915
|
+
"type": "string",
|
|
1916
|
+
"minLength": 1
|
|
1917
|
+
}
|
|
1918
|
+
}
|
|
1919
|
+
},
|
|
1920
|
+
"required": [
|
|
1921
|
+
"paths"
|
|
1922
|
+
],
|
|
1923
|
+
"additionalProperties": false
|
|
1924
|
+
},
|
|
1997
1925
|
"id": {
|
|
1998
1926
|
"type": "string"
|
|
1999
1927
|
},
|
|
@@ -2105,48 +2033,6 @@
|
|
|
2105
2033
|
],
|
|
2106
2034
|
"additionalProperties": false
|
|
2107
2035
|
},
|
|
2108
|
-
"skills": {
|
|
2109
|
-
"type": "object",
|
|
2110
|
-
"properties": {
|
|
2111
|
-
"items": {
|
|
2112
|
-
"type": "array",
|
|
2113
|
-
"items": {
|
|
2114
|
-
"type": "object",
|
|
2115
|
-
"properties": {
|
|
2116
|
-
"description": {
|
|
2117
|
-
"type": "string"
|
|
2118
|
-
},
|
|
2119
|
-
"name": {
|
|
2120
|
-
"type": "string"
|
|
2121
|
-
},
|
|
2122
|
-
"openHref": {
|
|
2123
|
-
"type": "string"
|
|
2124
|
-
},
|
|
2125
|
-
"relativePath": {
|
|
2126
|
-
"type": "string"
|
|
2127
|
-
},
|
|
2128
|
-
"source": {
|
|
2129
|
-
"type": "string",
|
|
2130
|
-
"enum": [
|
|
2131
|
-
"global",
|
|
2132
|
-
"local"
|
|
2133
|
-
]
|
|
2134
|
-
}
|
|
2135
|
-
},
|
|
2136
|
-
"required": [
|
|
2137
|
-
"name",
|
|
2138
|
-
"relativePath",
|
|
2139
|
-
"source"
|
|
2140
|
-
],
|
|
2141
|
-
"additionalProperties": false
|
|
2142
|
-
}
|
|
2143
|
-
}
|
|
2144
|
-
},
|
|
2145
|
-
"required": [
|
|
2146
|
-
"items"
|
|
2147
|
-
],
|
|
2148
|
-
"additionalProperties": false
|
|
2149
|
-
},
|
|
2150
2036
|
"workspace": {
|
|
2151
2037
|
"type": "object",
|
|
2152
2038
|
"properties": {
|
|
@@ -2403,6 +2289,23 @@
|
|
|
2403
2289
|
"error": {
|
|
2404
2290
|
"type": "string"
|
|
2405
2291
|
},
|
|
2292
|
+
"icon": {
|
|
2293
|
+
"type": "object",
|
|
2294
|
+
"properties": {
|
|
2295
|
+
"paths": {
|
|
2296
|
+
"minItems": 1,
|
|
2297
|
+
"type": "array",
|
|
2298
|
+
"items": {
|
|
2299
|
+
"type": "string",
|
|
2300
|
+
"minLength": 1
|
|
2301
|
+
}
|
|
2302
|
+
}
|
|
2303
|
+
},
|
|
2304
|
+
"required": [
|
|
2305
|
+
"paths"
|
|
2306
|
+
],
|
|
2307
|
+
"additionalProperties": false
|
|
2308
|
+
},
|
|
2406
2309
|
"id": {
|
|
2407
2310
|
"type": "string"
|
|
2408
2311
|
},
|
|
@@ -2514,48 +2417,6 @@
|
|
|
2514
2417
|
],
|
|
2515
2418
|
"additionalProperties": false
|
|
2516
2419
|
},
|
|
2517
|
-
"skills": {
|
|
2518
|
-
"type": "object",
|
|
2519
|
-
"properties": {
|
|
2520
|
-
"items": {
|
|
2521
|
-
"type": "array",
|
|
2522
|
-
"items": {
|
|
2523
|
-
"type": "object",
|
|
2524
|
-
"properties": {
|
|
2525
|
-
"description": {
|
|
2526
|
-
"type": "string"
|
|
2527
|
-
},
|
|
2528
|
-
"name": {
|
|
2529
|
-
"type": "string"
|
|
2530
|
-
},
|
|
2531
|
-
"openHref": {
|
|
2532
|
-
"type": "string"
|
|
2533
|
-
},
|
|
2534
|
-
"relativePath": {
|
|
2535
|
-
"type": "string"
|
|
2536
|
-
},
|
|
2537
|
-
"source": {
|
|
2538
|
-
"type": "string",
|
|
2539
|
-
"enum": [
|
|
2540
|
-
"global",
|
|
2541
|
-
"local"
|
|
2542
|
-
]
|
|
2543
|
-
}
|
|
2544
|
-
},
|
|
2545
|
-
"required": [
|
|
2546
|
-
"name",
|
|
2547
|
-
"relativePath",
|
|
2548
|
-
"source"
|
|
2549
|
-
],
|
|
2550
|
-
"additionalProperties": false
|
|
2551
|
-
}
|
|
2552
|
-
}
|
|
2553
|
-
},
|
|
2554
|
-
"required": [
|
|
2555
|
-
"items"
|
|
2556
|
-
],
|
|
2557
|
-
"additionalProperties": false
|
|
2558
|
-
},
|
|
2559
2420
|
"workspace": {
|
|
2560
2421
|
"type": "object",
|
|
2561
2422
|
"properties": {
|
|
@@ -28,13 +28,6 @@ const project = z.object({
|
|
|
28
28
|
relativePath: z.string(),
|
|
29
29
|
worktree: z.string(),
|
|
30
30
|
});
|
|
31
|
-
const skill = z.object({
|
|
32
|
-
description: z.string().optional(),
|
|
33
|
-
name: z.string(),
|
|
34
|
-
openHref: z.string().optional(),
|
|
35
|
-
relativePath: z.string(),
|
|
36
|
-
source: z.enum(["global", "local"]),
|
|
37
|
-
});
|
|
38
31
|
const session = z.object({
|
|
39
32
|
client: z.enum(["claude", "codex", "cursor", "opencode", "pi"]),
|
|
40
33
|
href: z.string().optional(),
|
|
@@ -64,6 +57,7 @@ const workspace = z.object({
|
|
|
64
57
|
const plugin = z.object({
|
|
65
58
|
count: z.number().optional(),
|
|
66
59
|
error: z.string().optional(),
|
|
60
|
+
icon: z.object({ paths: z.array(z.string().min(1)).min(1) }).optional(),
|
|
67
61
|
id: z.string(),
|
|
68
62
|
label: z.string(),
|
|
69
63
|
});
|
|
@@ -81,7 +75,6 @@ export const folderMetadataSchema = z.object({
|
|
|
81
75
|
plugins: plugins.optional(),
|
|
82
76
|
projects: items(project),
|
|
83
77
|
sessions: items(session),
|
|
84
|
-
skills: items(skill).optional(),
|
|
85
78
|
workspace: workspace.optional(),
|
|
86
79
|
});
|
|
87
80
|
const collection = coreCollectionSchema;
|
|
@@ -105,7 +98,6 @@ export const metadataSchemas = {
|
|
|
105
98
|
configWarnings: z.array(z.string()).optional(),
|
|
106
99
|
plugins: plugins.optional(),
|
|
107
100
|
}),
|
|
108
|
-
skills: z.object({ ...folder, skills: items(skill) }),
|
|
109
101
|
// Legacy selectors currently return the complete metadata payload.
|
|
110
102
|
sessions: folderMetadataSchema,
|
|
111
103
|
calendar: folderMetadataSchema,
|