bazilion 0.13.0 → 0.14.0
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.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +25 -5
- package/dist/daemon.js.map +1 -1
- package/dist/web/client/assets/AgentTabs-BcmmwYJc.js +1 -0
- package/dist/web/client/assets/ConfigPage-BCLp-FUC.js +1 -0
- package/dist/web/client/assets/ConfirmDialog-CyL9A20V.js +1 -0
- package/dist/web/client/assets/FieldRow-D6REbYUa.js +1 -0
- package/dist/web/client/assets/Page-NV96O47A.js +1 -0
- package/dist/web/client/assets/ProductionTeamPolicyEditor-DBKnOezm.js +7 -0
- package/dist/web/client/assets/{ProfileCommunicationEditor-BcSf2Hao.js → ProfileCommunicationEditor-4RK2laqO.js} +1 -1
- package/dist/web/client/assets/SectionTabs-4kCQXuFY.js +1 -0
- package/dist/web/client/assets/TeamTabs-CdtNEqt4.js +1 -0
- package/dist/web/client/assets/{TemplatesTabs-CyDVzrOl.js → TemplatesTabs-CZyss2Y0.js} +1 -1
- package/dist/web/client/assets/UnsavedChangesGuard-CEoK-ZcN.js +1 -0
- package/dist/web/client/assets/_id-4ZS-w_Aj.js +1 -0
- package/dist/web/client/assets/{_id-DWTMH7Eb.js → _id-DIqtdQij.js} +1 -1
- package/dist/web/client/assets/_id-DbcC2E7F.js +1 -0
- package/dist/web/client/assets/_id-f_r5M0p3.js +1 -0
- package/dist/web/client/assets/activity-CB9Ufth-.js +1 -0
- package/dist/web/client/assets/agents-D-JGXVg9.js +1 -0
- package/dist/web/client/assets/agents-DS2XafoA.js +1 -0
- package/dist/web/client/assets/approvals-Cke_mrJv.js +1 -0
- package/dist/web/client/assets/attention-PYwRM2wC.js +1 -0
- package/dist/web/client/assets/chevron-right-BG4OeFRQ.js +1 -0
- package/dist/web/client/assets/config-DF9Gqmfa.js +3 -0
- package/dist/web/client/assets/{inbox-D2NypLee.js → inbox-DC_HdOfI.js} +1 -1
- package/dist/web/client/assets/index-Cp6UHWr2.js +52 -0
- package/dist/web/client/assets/learning-BfrQ4YZY.js +1 -0
- package/dist/web/client/assets/login-D4n3AcBR.js +1 -0
- package/dist/web/client/assets/mcp-CnjQc_JJ.js +1 -0
- package/dist/web/client/assets/members-wxsVTJdW.js +1 -0
- package/dist/web/client/assets/memory-Du60O3pE.js +1 -0
- package/dist/web/client/assets/{policy-CHM95pMU.js → policy-BOfnkJsL.js} +1 -1
- package/dist/web/client/assets/{preload-helper-mNuBjNXU.js → preload-helper-bztXdkDj.js} +1 -1
- package/dist/web/client/assets/routes-B9CuhzUW.js +1 -0
- package/dist/web/client/assets/services-DyvqJqM2.js +1 -0
- package/dist/web/client/assets/skills-DQo7ioW7.js +1 -0
- package/dist/web/client/assets/styles-B5vcgXln.css +2 -0
- package/dist/web/client/assets/{teams-Dm_huGxn.js → teams-DPggy97H.js} +1 -1
- package/dist/web/client/assets/teams-DdawcfNR.js +1 -0
- package/dist/web/client/assets/telegram-DcTeDpP5.js +1 -0
- package/dist/web/client/assets/tokens-CIEKwZXc.js +1 -0
- package/dist/web/client/assets/triggers-Bc2RrUPm.js +1 -0
- package/dist/web/client/assets/utils-B6KiDbIe.js +1 -0
- package/dist/web/client/assets/welcome-DlhNXUIa.js +1 -0
- package/dist/web/client/assets/wire-constants-BzdHSc6A.js +74 -0
- package/dist/web/client/assets/x-DAXGIe_Q.js +1 -0
- package/dist/web/server/assets/{AgentTabs-aXdsiiMp.js → AgentTabs-Dq8hDM2Q.js} +9 -2
- package/dist/web/server/assets/{ChatPane-Ba5wTsVk.js → ChatPane-CgSe7tsy.js} +81 -43
- package/dist/web/server/assets/{ConfigPage-BKlh5vOU.js → ConfigPage-CiQ-gxmJ.js} +3 -2
- package/dist/web/server/assets/ConfirmDialog-C-MPYYSU.js +99 -0
- package/dist/web/server/assets/FieldRow-DCOF07kl.js +160 -0
- package/dist/web/server/assets/{Page-LENulSXY.js → Page-Bz-ydB8j.js} +4 -10
- package/dist/web/server/assets/{ProductionTeamPolicyEditor-Y4mzFFvR.js → ProductionTeamPolicyEditor-DQSdP7Yx.js} +140 -123
- package/dist/web/server/assets/{SectionTabs-BJTPr5nU.js → SectionTabs-B2Yw81XN.js} +2 -2
- package/dist/web/server/assets/{Sidebar-DsRVCszF.js → Sidebar-DKyk7oIo.js} +563 -283
- package/dist/web/server/assets/{TeamTabs-zZzbP1t_.js → TeamTabs-Co3n2exj.js} +2 -6
- package/dist/web/server/assets/{TemplatesTabs-CcRxZhJe.js → TemplatesTabs-B0fA361R.js} +1 -1
- package/dist/web/server/assets/UnsavedChangesGuard-CiStXyBI.js +40 -0
- package/dist/web/server/assets/{_id-xTD_6ApX.js → _id-BAA9KJBU.js} +1 -1
- package/dist/web/server/assets/{_id-BQ2zoMiR.js → _id-BM5m2FLT.js} +4 -4
- package/dist/web/server/assets/{_id-BENqNBfK.js → _id-BYKpT2Tu.js} +1 -2
- package/dist/web/server/assets/{_id-BreRHYV2.js → _id-BeKhPKw3.js} +350 -185
- package/dist/web/server/assets/{_id-CPIXIqyO.js → _id-BqWTB8Wl.js} +188 -86
- package/dist/web/server/assets/{_id-DkrNqqTw.js → _id-BwvCtzlD.js} +1 -1
- package/dist/web/server/assets/{_id-BZWunvy7.js → _id-DYU6uIBx.js} +0 -1
- package/dist/web/server/assets/{_id-BFELaMIN.js → _id-ndxFHx0t.js} +75 -71
- package/dist/web/server/assets/{_id-CvYqVJPU.js → _id-sNu5aXZt.js} +2 -1
- package/dist/web/server/assets/{_tanstack-start-manifest_v-COkJjXt_.js → _tanstack-start-manifest_v-C-OiOZeM.js} +110 -87
- package/dist/web/server/assets/{activity-B6N1T_5N.js → activity-BWv1goK6.js} +3 -3
- package/dist/web/server/assets/{activity-BazZNfvf.js → activity-LjpblbDL.js} +1 -1
- package/dist/web/server/assets/{agents-BpSeOA30.js → agents-BDFGrU3o.js} +1 -1
- package/dist/web/server/assets/{agents-DY630p6x.js → agents-CJk4pxKu.js} +1 -1
- package/dist/web/server/assets/{agents-wSYNPuyK.js → agents-CYw1xHoY.js} +138 -16
- package/dist/web/server/assets/{agents-DfoLnTyD.js → agents-DfNKc_Q7.js} +52 -8
- package/dist/web/server/assets/{approvals-BkUGmYU9.js → approvals-7JOoBchn.js} +1 -1
- package/dist/web/server/assets/{approvals-BYajNOdE.js → approvals-Bz123liE.js} +59 -21
- package/dist/web/server/assets/{attention-Bw_wiiqI.js → attention-B35JvhOL.js} +1 -1
- package/dist/web/server/assets/{attention-Z3bGuxOD.js → attention-C1pPWSXw.js} +3 -3
- package/dist/web/server/assets/{config-wYtIhkRm.js → config-BlMkHStx.js} +1 -1
- package/dist/web/server/assets/config-ExacOzHX.js +958 -0
- package/dist/web/server/assets/{inbox-DTTfSuGU.js → inbox-RweGCV3D.js} +3 -3
- package/dist/web/server/assets/{inbox-0iiSg-Y1.js → inbox-cu3jLzNP.js} +1 -1
- package/dist/web/server/assets/{learning-DpyLNVe8.js → learning-BaKM6qaw.js} +1 -1
- package/dist/web/server/assets/{learning-fG8316uc.js → learning-CbtNlqYo.js} +76 -23
- package/dist/web/server/assets/{login-D_GDeTrB.js → login-BNj3U6ok.js} +21 -11
- package/dist/web/server/assets/{login-CrFVVUaE.js → login-Be8eP4Jp.js} +2 -2
- package/dist/web/server/assets/{mcp-BQtp2T87.js → mcp-B0goWO8Q.js} +1 -1
- package/dist/web/server/assets/mcp-CiBs8unU.js +332 -0
- package/dist/web/server/assets/members-DHYTVgwb.js +100 -0
- package/dist/web/server/assets/{members-DXu2oAS_.js → members-DiYtr-zm.js} +1 -1
- package/dist/web/server/assets/{memory-C6fX_FKI.js → memory-CkXUgf5s.js} +150 -48
- package/dist/web/server/assets/{memory-Iq2M0-Yc.js → memory-DTFEmfF3.js} +1 -1
- package/dist/web/server/assets/{policy-D7kj3Cy7.js → policy-BddK4xom.js} +1 -1
- package/dist/web/server/assets/{policy-Bg6u-rTq.js → policy-Bvvav8fh.js} +4 -4
- package/dist/web/server/assets/{router-D-6TzLRZ.js → router-pjH2t8Rl.js} +345 -172
- package/dist/web/server/assets/{routes-CiPfEldd.js → routes-BgHisAxH.js} +22 -5
- package/dist/web/server/assets/{routes-CNRzy79H.js → routes-COtkyZG1.js} +1 -1
- package/dist/web/server/assets/{routes-D933ngZS.js → routes-DAU2g7Uz.js} +1 -1
- package/dist/web/server/assets/services-ClyGBU7W.js +83 -0
- package/dist/web/server/assets/{services-OB4LAr2A.js → services-DgoU1udp.js} +1 -1
- package/dist/web/server/assets/{skills-Babb9jsQ.js → skills-CYih9TJw.js} +47 -6
- package/dist/web/server/assets/{skills-D5DQL8bM.js → skills-Dw3cI3si.js} +1 -1
- package/dist/web/server/assets/{start-uKQNK6if.js → start-D4Wq9iTa.js} +1 -1
- package/dist/web/server/assets/{teams-Dz6ZEMRo.js → teams-BJuoNOTB.js} +1 -1
- package/dist/web/server/assets/{teams-Bk6ZT0MD.js → teams-DF3RViAg.js} +3 -3
- package/dist/web/server/assets/{teams-DqC4wZxu.js → teams-DFnuc660.js} +1 -1
- package/dist/web/server/assets/{teams-Cc2Czynq.js → teams-TV6nbEN_.js} +101 -10
- package/dist/web/server/assets/{telegram-J4T0XhwQ.js → telegram-DbOFpTFm.js} +1 -1
- package/dist/web/server/assets/{telegram-DUbDIVGX.js → telegram-Dj4Wwhd6.js} +147 -47
- package/dist/web/server/assets/{tokens-CJM_0NDa.js → tokens-DDwtO15P.js} +88 -19
- package/dist/web/server/assets/{tokens-DO5BzNOn.js → tokens-_2hptHP6.js} +1 -1
- package/dist/web/server/assets/{triggers-BdBx-HwR.js → triggers-BvjYNmmY.js} +1 -1
- package/dist/web/server/assets/triggers-CHk9O3rU.js +367 -0
- package/dist/web/server/assets/utils-C_uf36nf.js +8 -0
- package/dist/web/server/assets/{welcome-DDB11L5j.js → welcome-B8nchXdF.js} +9 -8
- package/dist/web/server/server.js +5 -9
- package/package.json +3 -3
- package/dist/web/client/assets/AgentTabs-R6gSjIj3.js +0 -1
- package/dist/web/client/assets/ConfigPage-BCwfgyjD.js +0 -1
- package/dist/web/client/assets/FieldRow-avAFLgYW.js +0 -1
- package/dist/web/client/assets/Page-CwNuDhWz.js +0 -1
- package/dist/web/client/assets/ProductionTeamPolicyEditor-DdpYInwV.js +0 -7
- package/dist/web/client/assets/SectionTabs-DZzy01az.js +0 -1
- package/dist/web/client/assets/TeamTabs-Bk89JfN7.js +0 -1
- package/dist/web/client/assets/_id-CAJTTnee.js +0 -1
- package/dist/web/client/assets/_id-CN6jPaBu.js +0 -1
- package/dist/web/client/assets/_id-DGwJqqDc.js +0 -1
- package/dist/web/client/assets/activity-DK_M0-bn.js +0 -1
- package/dist/web/client/assets/agents-B-i5pASm.js +0 -1
- package/dist/web/client/assets/agents-n8U7qNxw.js +0 -1
- package/dist/web/client/assets/approvals-CmVxCy0Z.js +0 -1
- package/dist/web/client/assets/attention-F0lUQCWE.js +0 -1
- package/dist/web/client/assets/chevron-down-OndG7r1U.js +0 -1
- package/dist/web/client/assets/config-DuApZ9xS.js +0 -3
- package/dist/web/client/assets/context-C1sMnW6K.js +0 -1
- package/dist/web/client/assets/index-B3vdrEEg.js +0 -12
- package/dist/web/client/assets/learning-zYDCfVxT.js +0 -1
- package/dist/web/client/assets/login-B1Un51Zx.js +0 -1
- package/dist/web/client/assets/mcp-DSVmJBdv.js +0 -1
- package/dist/web/client/assets/members-Pl7hXJcN.js +0 -1
- package/dist/web/client/assets/memory-Co3BEaAq.js +0 -1
- package/dist/web/client/assets/plus-Dor-_wmL.js +0 -1
- package/dist/web/client/assets/routes-D29qjwG0.js +0 -1
- package/dist/web/client/assets/services-CCQ_6YWQ.js +0 -1
- package/dist/web/client/assets/skills-3xAIvzvP.js +0 -1
- package/dist/web/client/assets/styles-D6RPN7RK.css +0 -2
- package/dist/web/client/assets/teams-UGLyjHYj.js +0 -1
- package/dist/web/client/assets/telegram-3KvrJVO6.js +0 -1
- package/dist/web/client/assets/tokens-DUSFmV5_.js +0 -1
- package/dist/web/client/assets/triggers-DlQ2KF1h.js +0 -1
- package/dist/web/client/assets/welcome-DkP8qzK1.js +0 -1
- package/dist/web/client/assets/wire-constants-BhVKOCQa.js +0 -74
- package/dist/web/server/assets/FieldRow-B4eTegH9.js +0 -94
- package/dist/web/server/assets/config-DGzM28F_.js +0 -554
- package/dist/web/server/assets/context-BkDDwbby.js +0 -12
- package/dist/web/server/assets/context-DMc0KyHh.js +0 -12
- package/dist/web/server/assets/context-poimKI7w.js +0 -47
- package/dist/web/server/assets/mcp-DlgXUcAS.js +0 -261
- package/dist/web/server/assets/members-CteHKPSF.js +0 -46
- package/dist/web/server/assets/services-DJRA1A0-.js +0 -79
- package/dist/web/server/assets/triggers-B87fycBl.js +0 -216
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as Route } from "./routes-
|
|
2
|
-
import { t as ChatPane } from "./ChatPane-
|
|
3
|
-
import { n as Sidebar } from "./Sidebar-
|
|
1
|
+
import { t as Route } from "./routes-DAU2g7Uz.js";
|
|
2
|
+
import { t as ChatPane } from "./ChatPane-CgSe7tsy.js";
|
|
3
|
+
import { n as Sidebar } from "./Sidebar-DKyk7oIo.js";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
//#region src/routes/index.tsx?tsr-split=component
|
|
6
6
|
function HomePage() {
|
|
@@ -26,8 +26,25 @@ function HomePage() {
|
|
|
26
26
|
initialMessages: data.selected.initialMessages,
|
|
27
27
|
initialSessionHead: data.selected.sessionHead
|
|
28
28
|
}) : /* @__PURE__ */ jsx("div", {
|
|
29
|
-
className: "flex h-full items-center justify-center rounded-
|
|
30
|
-
children:
|
|
29
|
+
className: "flex h-full items-center justify-center rounded-2xl border border-dashed bg-card px-6 text-center text-muted-foreground",
|
|
30
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
31
|
+
className: "max-w-sm",
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ jsx("h1", {
|
|
34
|
+
className: "m-0 font-body text-lg font-semibold text-foreground",
|
|
35
|
+
children: data.agents.length === 0 ? "Start your first conversation" : "Choose an agent"
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ jsx("p", {
|
|
38
|
+
className: "mt-2 text-sm leading-6",
|
|
39
|
+
children: data.agents.length === 0 ? "Your default Team and Agent template are ready. Use “Spawn first agent” on the left to create a working member." : "Pick an agent in the Team list to open its persistent conversation."
|
|
40
|
+
}),
|
|
41
|
+
data.agents.length === 0 && /* @__PURE__ */ jsx("a", {
|
|
42
|
+
href: "/agents",
|
|
43
|
+
className: "btn-primary mt-4 no-underline",
|
|
44
|
+
children: "Open agent setup"
|
|
45
|
+
})
|
|
46
|
+
]
|
|
47
|
+
})
|
|
31
48
|
})
|
|
32
49
|
})]
|
|
33
50
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { a as getCookie, n as createServerFn } from "../server.js";
|
|
2
2
|
import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
|
|
3
3
|
import { n as daemonClient, r as ApiClientError } from "./daemon-client-CI5NHwNC.js";
|
|
4
|
-
import { t as SIDEBAR_OPEN_GROUPS_COOKIE } from "./Sidebar-
|
|
4
|
+
import { t as SIDEBAR_OPEN_GROUPS_COOKIE } from "./Sidebar-DKyk7oIo.js";
|
|
5
5
|
//#region src/routes/index.tsx?tss-serverfn-split
|
|
6
6
|
function parseOpenGroupsCookie(raw) {
|
|
7
7
|
if (!raw) return {};
|
|
@@ -2,7 +2,7 @@ import { n as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/index.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./routes-
|
|
5
|
+
var $$splitComponentImporter = () => import("./routes-BgHisAxH.js");
|
|
6
6
|
var fetchHomeData = createServerFn({ method: "POST" }).validator((d) => d).handler(createSsrRpc("26dbbcbe40063e8aedfd343cf1dfd4dfe5589f24591c0ba35e80c611d7c57c7c"));
|
|
7
7
|
var Route = createFileRoute("/")({
|
|
8
8
|
validateSearch: (s) => ({ agent: typeof s.agent === "string" ? s.agent : void 0 }),
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { t as Route } from "./services-DgoU1udp.js";
|
|
2
|
+
import { a as StatusBadge, t as EmptyState } from "./Page-Bz-ydB8j.js";
|
|
3
|
+
import { t as ConfigPage } from "./ConfigPage-CiQ-gxmJ.js";
|
|
4
|
+
import { t as FieldRow } from "./FieldRow-DCOF07kl.js";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/routes/config/services.tsx?tsr-split=component
|
|
7
|
+
var UNGROUPED_LABEL = "Other";
|
|
8
|
+
/**
|
|
9
|
+
* Bucket services into teams while preserving the order each team first
|
|
10
|
+
* appears in the daemon's SERVICES list. Cards without a `team` field land
|
|
11
|
+
* in an "Other" bucket at the end.
|
|
12
|
+
*/
|
|
13
|
+
function groupServices(services) {
|
|
14
|
+
const buckets = /* @__PURE__ */ new Map();
|
|
15
|
+
for (const s of services) {
|
|
16
|
+
const key = s.team ?? UNGROUPED_LABEL;
|
|
17
|
+
const bucket = buckets.get(key) ?? [];
|
|
18
|
+
bucket.push(s);
|
|
19
|
+
buckets.set(key, bucket);
|
|
20
|
+
}
|
|
21
|
+
const entries = Array.from(buckets, ([team, items]) => ({
|
|
22
|
+
team,
|
|
23
|
+
items
|
|
24
|
+
}));
|
|
25
|
+
if (entries.length > 1) entries.sort((a, b) => {
|
|
26
|
+
if (a.team === UNGROUPED_LABEL) return 1;
|
|
27
|
+
if (b.team === UNGROUPED_LABEL) return -1;
|
|
28
|
+
return 0;
|
|
29
|
+
});
|
|
30
|
+
return entries;
|
|
31
|
+
}
|
|
32
|
+
function ServicesPage() {
|
|
33
|
+
const { services } = Route.useLoaderData();
|
|
34
|
+
const grouped = groupServices(services);
|
|
35
|
+
return /* @__PURE__ */ jsxs(ConfigPage, {
|
|
36
|
+
active: "services",
|
|
37
|
+
title: "Services",
|
|
38
|
+
description: /* @__PURE__ */ jsx(Fragment, { children: "Connect optional tools such as web search and crawlers. Secret values are encrypted; endpoint details remain inspectable and editable on this device." }),
|
|
39
|
+
children: [services.length === 0 && /* @__PURE__ */ jsx(EmptyState, {
|
|
40
|
+
title: "No optional services",
|
|
41
|
+
description: "This Bazilion build has no additional service connectors registered."
|
|
42
|
+
}), grouped.map(({ team, items }) => /* @__PURE__ */ jsxs("section", {
|
|
43
|
+
className: "space-y-3",
|
|
44
|
+
children: [/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h2", {
|
|
45
|
+
className: "m-0 font-body text-base font-semibold text-foreground",
|
|
46
|
+
children: team
|
|
47
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
48
|
+
className: "mt-1 text-xs text-muted-foreground",
|
|
49
|
+
children: "Open only the service you want to configure."
|
|
50
|
+
})] }), items.map((service) => {
|
|
51
|
+
const configured = service.fields.filter((field) => field.set).length;
|
|
52
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
53
|
+
open: configured > 0,
|
|
54
|
+
className: "overflow-hidden rounded-2xl border border-border bg-card shadow-baziu-sm",
|
|
55
|
+
children: [/* @__PURE__ */ jsxs("summary", {
|
|
56
|
+
className: "flex cursor-pointer list-none items-center gap-3 px-4 py-4 marker:hidden sm:px-5",
|
|
57
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
58
|
+
className: "min-w-0 flex-1",
|
|
59
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
60
|
+
className: "block font-semibold text-foreground",
|
|
61
|
+
children: service.displayName
|
|
62
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
63
|
+
className: "mt-0.5 block font-mono text-xs text-muted-foreground",
|
|
64
|
+
children: service.id
|
|
65
|
+
})]
|
|
66
|
+
}), /* @__PURE__ */ jsx(StatusBadge, {
|
|
67
|
+
variant: configured > 0 ? "success" : "neutral",
|
|
68
|
+
children: configured > 0 ? `${configured} field${configured === 1 ? "" : "s"} configured` : "Not configured"
|
|
69
|
+
})]
|
|
70
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
71
|
+
className: "border-t border-border px-4 py-4 sm:px-5",
|
|
72
|
+
children: [service.hint && /* @__PURE__ */ jsx("p", {
|
|
73
|
+
className: "mb-2 text-sm text-muted-foreground",
|
|
74
|
+
children: service.hint
|
|
75
|
+
}), service.fields.map((field) => /* @__PURE__ */ jsx(FieldRow, { field }, field.envVar))]
|
|
76
|
+
})]
|
|
77
|
+
}, service.id);
|
|
78
|
+
})]
|
|
79
|
+
}, team))]
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export { ServicesPage as component };
|
|
@@ -2,7 +2,7 @@ import { n as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/config/services.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./services-
|
|
5
|
+
var $$splitComponentImporter = () => import("./services-ClyGBU7W.js");
|
|
6
6
|
var fetchServices = createServerFn({ method: "GET" }).handler(createSsrRpc("6afd81bef0ee381d6e3641cd8e269968429c874e2f9d56c8f818cc9d180ee477"));
|
|
7
7
|
var Route = createFileRoute("/config/services")({
|
|
8
8
|
loader: () => fetchServices(),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { t as Route } from "./skills-
|
|
2
|
-
import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-
|
|
1
|
+
import { t as Route } from "./skills-Dw3cI3si.js";
|
|
2
|
+
import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-Bz-ydB8j.js";
|
|
3
3
|
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
4
|
+
import { t as ConfirmDialog } from "./ConfirmDialog-C-MPYYSU.js";
|
|
4
5
|
import { useRef, useState } from "react";
|
|
5
6
|
import { useRouter } from "@tanstack/react-router";
|
|
6
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -8,12 +9,13 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
8
9
|
function SkillsPage() {
|
|
9
10
|
const skills = Route.useLoaderData();
|
|
10
11
|
const router = useRouter();
|
|
12
|
+
const [removeTarget, setRemoveTarget] = useState(null);
|
|
13
|
+
const [removeError, setRemoveError] = useState(null);
|
|
11
14
|
async function remove(name) {
|
|
12
|
-
if (!confirm(`Remove skill "${name}"? This deletes the directory on disk.`)) return;
|
|
13
15
|
const res = await fetch(`/api/skills/${encodeURIComponent(name)}`, { method: "DELETE" });
|
|
14
16
|
if (!res.ok && res.status !== 204) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
+
const body = await res.json().catch(() => null);
|
|
18
|
+
throw new Error(body?.error ?? `Could not remove skill (${res.status})`);
|
|
17
19
|
}
|
|
18
20
|
await router.invalidate();
|
|
19
21
|
}
|
|
@@ -24,6 +26,11 @@ function SkillsPage() {
|
|
|
24
26
|
title: "Skills",
|
|
25
27
|
description: "Install and review the prompt-only skills available to your agents."
|
|
26
28
|
}),
|
|
29
|
+
removeError && /* @__PURE__ */ jsx("p", {
|
|
30
|
+
role: "alert",
|
|
31
|
+
className: "err",
|
|
32
|
+
children: removeError
|
|
33
|
+
}),
|
|
27
34
|
/* @__PURE__ */ jsx(ImportCard, { onImported: () => router.invalidate() }),
|
|
28
35
|
/* @__PURE__ */ jsx(SectionCard, {
|
|
29
36
|
title: "Installed skills",
|
|
@@ -72,13 +79,47 @@ function SkillsPage() {
|
|
|
72
79
|
children: /* @__PURE__ */ jsx(Button, {
|
|
73
80
|
variant: "danger",
|
|
74
81
|
className: "whitespace-nowrap",
|
|
75
|
-
onClick: () =>
|
|
82
|
+
onClick: () => {
|
|
83
|
+
setRemoveError(null);
|
|
84
|
+
setRemoveTarget(s);
|
|
85
|
+
},
|
|
76
86
|
children: "Remove"
|
|
77
87
|
})
|
|
78
88
|
})
|
|
79
89
|
] }, s.name)) })]
|
|
80
90
|
})
|
|
81
91
|
})
|
|
92
|
+
}),
|
|
93
|
+
/* @__PURE__ */ jsx(ConfirmDialog, {
|
|
94
|
+
open: removeTarget !== null,
|
|
95
|
+
title: `Remove skill ${removeTarget?.name ?? ""}?`,
|
|
96
|
+
description: /* @__PURE__ */ jsxs("p", { children: [
|
|
97
|
+
"This permanently deletes the installed ",
|
|
98
|
+
/* @__PURE__ */ jsx("code", {
|
|
99
|
+
className: "font-mono",
|
|
100
|
+
children: "SKILL.md"
|
|
101
|
+
}),
|
|
102
|
+
" and every helper script or asset in the ",
|
|
103
|
+
/* @__PURE__ */ jsx("code", {
|
|
104
|
+
className: "font-mono",
|
|
105
|
+
children: removeTarget?.name
|
|
106
|
+
}),
|
|
107
|
+
" ",
|
|
108
|
+
"directory. The skill becomes unavailable to every Agent and Agent template until it is imported again."
|
|
109
|
+
] }),
|
|
110
|
+
confirmLabel: "delete installed skill",
|
|
111
|
+
onConfirm: async () => {
|
|
112
|
+
if (!removeTarget) return;
|
|
113
|
+
try {
|
|
114
|
+
await remove(removeTarget.name);
|
|
115
|
+
} catch (error) {
|
|
116
|
+
setRemoveError(error instanceof Error ? error.message : String(error));
|
|
117
|
+
throw error;
|
|
118
|
+
}
|
|
119
|
+
},
|
|
120
|
+
onOpenChange: (open) => {
|
|
121
|
+
if (!open) setRemoveTarget(null);
|
|
122
|
+
}
|
|
82
123
|
})
|
|
83
124
|
]
|
|
84
125
|
});
|
|
@@ -2,7 +2,7 @@ import { n as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/skills/index.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./skills-
|
|
5
|
+
var $$splitComponentImporter = () => import("./skills-CYih9TJw.js");
|
|
6
6
|
var fetchSkills = createServerFn({ method: "GET" }).handler(createSsrRpc("ae1d30575b229c1e2622fbaf2252800a9a7acc84afdd68cba025ca890b8d52c5"));
|
|
7
7
|
var Route = createFileRoute("/skills/")({
|
|
8
8
|
loader: () => fetchSkills(),
|
|
@@ -36,7 +36,7 @@ function isLoopback(hostname) {
|
|
|
36
36
|
}
|
|
37
37
|
function secureHeaders(headers, production) {
|
|
38
38
|
headers.set("x-content-type-options", "nosniff");
|
|
39
|
-
headers.set("referrer-policy", "
|
|
39
|
+
headers.set("referrer-policy", "same-origin");
|
|
40
40
|
headers.set("permissions-policy", "camera=(), microphone=(), geolocation=()");
|
|
41
41
|
headers.set("x-frame-options", "DENY");
|
|
42
42
|
headers.set("content-security-policy", "default-src 'self'; base-uri 'self'; connect-src 'self'; font-src 'self'; frame-ancestors 'none'; img-src 'self' data:; object-src 'none'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'");
|
|
@@ -2,7 +2,7 @@ import { n as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/templates/teams/index.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./teams-
|
|
5
|
+
var $$splitComponentImporter = () => import("./teams-DF3RViAg.js");
|
|
6
6
|
var fetchTeams = createServerFn({ method: "GET" }).handler(createSsrRpc("1bb12262aaa902fa208aafaa70b69c63da34c1fe523ab0322fe766903fc6b4c1"));
|
|
7
7
|
var Route = createFileRoute("/templates/teams/")({
|
|
8
8
|
loader: () => fetchTeams(),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { t as Route } from "./teams-
|
|
2
|
-
import { n as PageHeader, r as PageShell } from "./Page-
|
|
1
|
+
import { t as Route } from "./teams-BJuoNOTB.js";
|
|
2
|
+
import { n as PageHeader, r as PageShell } from "./Page-Bz-ydB8j.js";
|
|
3
3
|
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
4
|
-
import { t as TemplatesTabs } from "./TemplatesTabs-
|
|
4
|
+
import { t as TemplatesTabs } from "./TemplatesTabs-B0fA361R.js";
|
|
5
5
|
import { useState } from "react";
|
|
6
6
|
import { useRouter } from "@tanstack/react-router";
|
|
7
7
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -3,7 +3,7 @@ import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
|
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/teams/index.tsx
|
|
5
5
|
var $$splitErrorComponentImporter = () => import("./teams-3im0oQnS.js");
|
|
6
|
-
var $$splitComponentImporter = () => import("./teams-
|
|
6
|
+
var $$splitComponentImporter = () => import("./teams-TV6nbEN_.js");
|
|
7
7
|
var fetchTeamsData = createServerFn({ method: "GET" }).handler(createSsrRpc("1ab05a58944792f34ad279deeaa56f70e9360687856b18327f335b022e8d21a5"));
|
|
8
8
|
var Route = createFileRoute("/teams/")({
|
|
9
9
|
loader: () => fetchTeamsData(),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { t as Route } from "./teams-
|
|
2
|
-
import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-
|
|
1
|
+
import { t as Route } from "./teams-DFnuc660.js";
|
|
2
|
+
import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-Bz-ydB8j.js";
|
|
3
3
|
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
4
|
+
import { t as ConfirmDialog } from "./ConfirmDialog-C-MPYYSU.js";
|
|
4
5
|
import { useState } from "react";
|
|
5
6
|
import { useRouter } from "@tanstack/react-router";
|
|
6
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -8,14 +9,15 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
8
9
|
function TeamsPage() {
|
|
9
10
|
const { teams, memberCounts, policies, readiness } = Route.useLoaderData();
|
|
10
11
|
const router = useRouter();
|
|
12
|
+
const [removeTarget, setRemoveTarget] = useState(null);
|
|
13
|
+
const [actionError, setActionError] = useState(null);
|
|
11
14
|
async function remove(id) {
|
|
12
|
-
if (!confirm("remove this team registration?")) return;
|
|
13
15
|
const revision = policies[id]?.revision;
|
|
14
|
-
if (!revision)
|
|
16
|
+
if (!revision) throw new Error("The Team policy revision is unavailable. Nothing was removed.");
|
|
15
17
|
const res = await fetch(`/api/teams/${encodeURIComponent(id)}?expectedTeamPolicyRevision=${revision}`, { method: "DELETE" });
|
|
16
18
|
if (!res.ok && res.status !== 204) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
const body = await res.json().catch(() => null);
|
|
20
|
+
throw new Error(body?.error ?? `Could not remove Team (${res.status})`);
|
|
19
21
|
}
|
|
20
22
|
await router.invalidate();
|
|
21
23
|
}
|
|
@@ -45,14 +47,19 @@ function TeamsPage() {
|
|
|
45
47
|
})
|
|
46
48
|
}),
|
|
47
49
|
/* @__PURE__ */ jsx(RegisterTeamForm, { onRegistered: () => router.invalidate() }),
|
|
50
|
+
actionError && /* @__PURE__ */ jsx("p", {
|
|
51
|
+
role: "alert",
|
|
52
|
+
className: "err",
|
|
53
|
+
children: actionError
|
|
54
|
+
}),
|
|
48
55
|
/* @__PURE__ */ jsx(SectionCard, {
|
|
49
56
|
title: "Registered teams",
|
|
50
57
|
description: "Open a Team to manage its context, members, shared memory, and policy.",
|
|
51
58
|
children: teams.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
|
|
52
59
|
title: "No teams registered",
|
|
53
60
|
description: "Register a Team above to create a workspace for your agents."
|
|
54
|
-
}) : /* @__PURE__ */ jsx("div", {
|
|
55
|
-
className: "overflow-x-auto",
|
|
61
|
+
}) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("div", {
|
|
62
|
+
className: "hidden overflow-x-auto md:block",
|
|
56
63
|
children: /* @__PURE__ */ jsxs("table", {
|
|
57
64
|
className: "min-w-[820px]",
|
|
58
65
|
children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
@@ -84,7 +91,7 @@ function TeamsPage() {
|
|
|
84
91
|
className: "flex justify-end",
|
|
85
92
|
children: count === 0 ? /* @__PURE__ */ jsx(Button, {
|
|
86
93
|
variant: "danger",
|
|
87
|
-
onClick: () =>
|
|
94
|
+
onClick: () => setRemoveTarget(g),
|
|
88
95
|
children: "Remove"
|
|
89
96
|
}) : /* @__PURE__ */ jsx(StatusBadge, {
|
|
90
97
|
variant: "neutral",
|
|
@@ -95,7 +102,90 @@ function TeamsPage() {
|
|
|
95
102
|
] }, g.id);
|
|
96
103
|
}) })]
|
|
97
104
|
})
|
|
98
|
-
})
|
|
105
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
106
|
+
className: "grid gap-3 md:hidden",
|
|
107
|
+
children: teams.map((team) => {
|
|
108
|
+
const count = memberCounts[team.id] ?? 0;
|
|
109
|
+
const policy = policies[team.id];
|
|
110
|
+
return /* @__PURE__ */ jsxs("article", {
|
|
111
|
+
className: "min-w-0 rounded-xl border border-border bg-muted/20 p-4",
|
|
112
|
+
children: [
|
|
113
|
+
/* @__PURE__ */ jsxs("div", {
|
|
114
|
+
className: "flex min-w-0 items-start justify-between gap-3",
|
|
115
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
116
|
+
className: "min-w-0",
|
|
117
|
+
children: [/* @__PURE__ */ jsx("a", {
|
|
118
|
+
href: `/teams/${encodeURIComponent(team.id)}`,
|
|
119
|
+
className: "block truncate font-semibold text-foreground",
|
|
120
|
+
children: team.name
|
|
121
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
122
|
+
className: "mt-0.5 truncate font-mono text-xs text-muted-foreground",
|
|
123
|
+
children: team.id
|
|
124
|
+
})]
|
|
125
|
+
}), /* @__PURE__ */ jsxs(StatusBadge, {
|
|
126
|
+
variant: count > 0 ? "success" : "neutral",
|
|
127
|
+
children: [
|
|
128
|
+
count,
|
|
129
|
+
" member",
|
|
130
|
+
count === 1 ? "" : "s"
|
|
131
|
+
]
|
|
132
|
+
})]
|
|
133
|
+
}),
|
|
134
|
+
/* @__PURE__ */ jsxs("dl", {
|
|
135
|
+
className: "mt-3 grid gap-2 text-xs sm:grid-cols-2",
|
|
136
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
137
|
+
className: "rounded-lg bg-muted p-2",
|
|
138
|
+
children: [/* @__PURE__ */ jsx("dt", {
|
|
139
|
+
className: "font-semibold text-muted-foreground",
|
|
140
|
+
children: "Policy"
|
|
141
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
142
|
+
className: "mt-0.5",
|
|
143
|
+
children: /* @__PURE__ */ jsx("a", {
|
|
144
|
+
href: `/teams/${encodeURIComponent(team.id)}/policy`,
|
|
145
|
+
children: policy ? `Revision ${policy.revision} · ${policy.edges} edges` : "Unavailable"
|
|
146
|
+
})
|
|
147
|
+
})]
|
|
148
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
149
|
+
className: "rounded-lg bg-muted p-2",
|
|
150
|
+
children: [/* @__PURE__ */ jsx("dt", {
|
|
151
|
+
className: "font-semibold text-muted-foreground",
|
|
152
|
+
children: "Baseline"
|
|
153
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
154
|
+
className: "mt-0.5 break-words",
|
|
155
|
+
children: policy?.baseline ?? "None"
|
|
156
|
+
})]
|
|
157
|
+
})]
|
|
158
|
+
}),
|
|
159
|
+
count === 0 && /* @__PURE__ */ jsx("div", {
|
|
160
|
+
className: "mt-3",
|
|
161
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
162
|
+
variant: "danger",
|
|
163
|
+
onClick: () => setRemoveTarget(team),
|
|
164
|
+
children: "Remove Team"
|
|
165
|
+
})
|
|
166
|
+
})
|
|
167
|
+
]
|
|
168
|
+
}, team.id);
|
|
169
|
+
})
|
|
170
|
+
})] })
|
|
171
|
+
}),
|
|
172
|
+
/* @__PURE__ */ jsx(ConfirmDialog, {
|
|
173
|
+
open: removeTarget !== null,
|
|
174
|
+
onOpenChange: (open) => {
|
|
175
|
+
if (!open) setRemoveTarget(null);
|
|
176
|
+
},
|
|
177
|
+
title: `Remove ${removeTarget?.name ?? "Team"}?`,
|
|
178
|
+
description: /* @__PURE__ */ jsx("p", { children: "This removes the empty Team registration and its Bazilion-managed workspace slot. If the slot is a symlink, its external target is not deleted. This action cannot be undone from the web UI." }),
|
|
179
|
+
confirmLabel: "Remove Team",
|
|
180
|
+
onConfirm: async () => {
|
|
181
|
+
if (!removeTarget) return;
|
|
182
|
+
try {
|
|
183
|
+
await remove(removeTarget.id);
|
|
184
|
+
} catch (error) {
|
|
185
|
+
setActionError(error instanceof Error ? error.message : String(error));
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
99
189
|
})
|
|
100
190
|
]
|
|
101
191
|
});
|
|
@@ -149,6 +239,7 @@ function RegisterTeamForm({ onRegistered }) {
|
|
|
149
239
|
onSubmit: submit,
|
|
150
240
|
children: [
|
|
151
241
|
err && /* @__PURE__ */ jsx("div", {
|
|
242
|
+
role: "alert",
|
|
152
243
|
className: "err",
|
|
153
244
|
children: err
|
|
154
245
|
}),
|
|
@@ -2,7 +2,7 @@ import { n as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/config/integrations/telegram.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./telegram-
|
|
5
|
+
var $$splitComponentImporter = () => import("./telegram-Dj4Wwhd6.js");
|
|
6
6
|
var fetchTelegramConfig = createServerFn({ method: "GET" }).handler(createSsrRpc("00a157dd07824e1f126f06646effd1d876f280f6fc64c144d2f6429414a4e58a"));
|
|
7
7
|
var Route = createFileRoute("/config/integrations/telegram")({
|
|
8
8
|
loader: () => fetchTelegramConfig(),
|