bazilion 0.8.0 → 0.10.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/README.md +47 -5
- package/dist/cli.js +1190 -640
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +5165 -1598
- package/dist/daemon.js.map +1 -1
- package/dist/migrations/0001_init.sql +318 -88
- package/dist/web/client/assets/AgentTabs-B3hq5a3e.js +1 -0
- package/dist/web/client/assets/ConfigPage-BCwfgyjD.js +1 -0
- package/dist/web/client/assets/FieldRow-avAFLgYW.js +1 -0
- package/dist/web/client/assets/Page-CwNuDhWz.js +1 -0
- package/dist/web/client/assets/ProductionTeamPolicyEditor-CiQ-VVDo.js +7 -0
- package/dist/web/client/assets/ProductionTeamPolicyEditor-DLioOiRN.css +1 -0
- package/dist/web/client/assets/ProfileCommunicationEditor-D84F5yfr.js +1 -0
- package/dist/web/client/assets/RecoveryState-QfMSuwy3.js +1 -0
- package/dist/web/client/assets/SectionTabs-DZzy01az.js +1 -0
- package/dist/web/client/assets/TeamTabs-Btoe_FAE.js +1 -0
- package/dist/web/client/assets/TemplatesTabs-CAYY03F5.js +1 -0
- package/dist/web/client/assets/_id-BeauECmk.js +1 -0
- package/dist/web/client/assets/_id-BqU2BodK.js +1 -0
- package/dist/web/client/assets/_id-CKtoio3t.js +1 -0
- package/dist/web/client/assets/_id-DGyKURCp.js +1 -0
- package/dist/web/client/assets/_id-Q98Of6k9.js +1 -0
- package/dist/web/client/assets/activity-DJuhhQCb.js +1 -0
- package/dist/web/client/assets/activity-DXN_N85w.js +1 -0
- package/dist/web/client/assets/agents-C5Xsdge1.js +1 -0
- package/dist/web/client/assets/agents-Cgxo4H5G.js +1 -0
- package/dist/web/client/assets/approvals-BnG7fbw-.js +1 -0
- package/dist/web/client/assets/approvals-DGi0PSx8.js +1 -0
- package/dist/web/client/assets/chevron-down-BhcBspw3.js +1 -0
- package/dist/web/client/assets/config-xw4NyrXF.js +3 -0
- package/dist/web/client/assets/context-D2V1Oi4z.js +1 -0
- package/dist/web/client/assets/inbox-DK6hWCMp.js +1 -0
- package/dist/web/client/assets/index-VdURSoM4.js +12 -0
- package/dist/web/client/assets/login-CvptUoMR.js +1 -0
- package/dist/web/client/assets/mcp-BDFM_sW-.js +1 -0
- package/dist/web/client/assets/members-BJvph_TR.js +1 -0
- package/dist/web/client/assets/memory-DRytqZCD.js +1 -0
- package/dist/web/client/assets/plus-C9ee3SIO.js +1 -0
- package/dist/web/client/assets/policy-CGP50OtQ.js +1 -0
- package/dist/web/client/assets/policy-K4hIbbIN.js +1 -0
- package/dist/web/client/assets/preload-helper-mNuBjNXU.js +1 -0
- package/dist/web/client/assets/react-3W8R1pOO.js +1 -0
- package/dist/web/client/assets/routes-DJnWYvC9.js +1 -0
- package/dist/web/client/assets/services-DHheiv7L.js +1 -0
- package/dist/web/client/assets/skills-DmsitluU.js +1 -0
- package/dist/web/client/assets/styles-B5eQAwLP.css +2 -0
- package/dist/web/client/assets/team-policy-D0jpnn2b.js +1 -0
- package/dist/web/client/assets/teams-BdC4gthq.js +1 -0
- package/dist/web/client/assets/teams-CSNyLz3l.js +1 -0
- package/dist/web/client/assets/teams-CbxSaorm.js +1 -0
- package/dist/web/client/assets/telegram-D61G_alO.js +1 -0
- package/dist/web/client/assets/tokens-CjRplDrJ.js +1 -0
- package/dist/web/client/assets/triggers-MLzTm_DM.js +1 -0
- package/dist/web/client/assets/welcome-wBfX9dAd.js +1 -0
- package/dist/web/client/assets/{ChatPane-DzEgOEqS.js → wire-constants-BxfyUMXB.js} +4 -4
- package/dist/web/server/assets/{AgentTabs-BOjTN7QF.js → AgentTabs-DoMDJBXH.js} +10 -7
- package/dist/web/server/assets/{ChatPane-BvpswYvF.js → ChatPane-eUY_dga3.js} +38 -20
- package/dist/web/server/assets/ConfigPage-BKlh5vOU.js +68 -0
- package/dist/web/server/assets/{FieldRow-DwyqycWI.js → FieldRow-B4eTegH9.js} +5 -5
- package/dist/web/server/assets/Page-LENulSXY.js +111 -0
- package/dist/web/server/assets/ProductionTeamPolicyEditor-Y4mzFFvR.js +1009 -0
- package/dist/web/server/assets/ProfileCommunicationEditor-C2RU-2QB.js +107 -0
- package/dist/web/server/assets/RecoveryState-B2SG-mrY.js +37 -0
- package/dist/web/server/assets/SectionTabs-BJTPr5nU.js +8 -0
- package/dist/web/server/assets/Sidebar-O_CH1-JD.js +964 -0
- package/dist/web/server/assets/TeamTabs-zZzbP1t_.js +51 -0
- package/dist/web/server/assets/{TemplatesTabs---7h5GYa.js → TemplatesTabs-CcRxZhJe.js} +9 -8
- package/dist/web/server/assets/_id-A8Xiv6Lc.js +11 -0
- package/dist/web/server/assets/{_id-Sjw0zhA6.js → _id-BhOB8Umi.js} +5 -5
- package/dist/web/server/assets/{_id-DDixKEud.js → _id-C3HY4lWg.js} +77 -20
- package/dist/web/server/assets/{_id-BdRiQb2H.js → _id-ClN9hY2x.js} +132 -39
- package/dist/web/server/assets/{_id-BqnDy_Ca.js → _id-CwyGjJeP.js} +7 -6
- package/dist/web/server/assets/{_id-D8duqgd5.js → _id-D27T85mU.js} +6 -5
- package/dist/web/server/assets/_id-D3Ap7zZA.js +377 -0
- package/dist/web/server/assets/_id-DinTp_7X.js +14 -0
- package/dist/web/server/assets/{_id-CnQflrRv.js → _id-Dj1yZ3zJ.js} +6 -6
- package/dist/web/server/assets/{_id-DUIrFV3G.js → _id-DkYodSkG.js} +10 -2
- package/dist/web/server/assets/{_id-D_Ew11ED.js → _id-IzadFZV9.js} +9 -9
- package/dist/web/server/assets/_id-LrvXU4Nr.js +45 -0
- package/dist/web/server/assets/_id-tB47Vsfp.js +42 -0
- package/dist/web/server/assets/_tanstack-start-manifest_v-D09Xu_6u.js +286 -0
- package/dist/web/server/assets/activity-BCI4mfNS.js +168 -0
- package/dist/web/server/assets/activity-CGCf8BQf.js +11 -0
- package/dist/web/server/assets/activity-D9SMqBhy.js +14 -0
- package/dist/web/server/assets/activity-DohitgwW.js +12 -0
- package/dist/web/server/assets/{agents-k5QURC4I.js → agents-BPKOshR5.js} +5 -5
- package/dist/web/server/assets/{profiles-C6a3RKgu.js → agents-BY74v7fM.js} +5 -5
- package/dist/web/server/assets/{profiles-CZ5NkmVw.js → agents-BvttypqB.js} +5 -5
- package/dist/web/server/assets/{agents-ChcAJUI5.js → agents-C9xlWK0Z.js} +2 -2
- package/dist/web/server/assets/agents-CgZMHj80.js +265 -0
- package/dist/web/server/assets/{profiles-LxcC_L6n.js → agents-DZuFEj0D.js} +87 -79
- package/dist/web/server/assets/approvals-BGU-XGIO.js +12 -0
- package/dist/web/server/assets/approvals-CWcFHlor.js +14 -0
- package/dist/web/server/assets/approvals-CbFXFvG8.js +11 -0
- package/dist/web/server/assets/approvals-DCaVw1Mz.js +280 -0
- package/dist/web/server/assets/{auth-DzRAMwVt.js → auth-byfSx6Ja.js} +6 -2
- package/dist/web/server/assets/{config-CHaCv89D.js → config-BDCJdtj2.js} +1 -1
- package/dist/web/server/assets/{config-CdVjqjin.js → config-D2LAsud2.js} +31 -52
- package/dist/web/server/assets/{config-Bq3o924J.js → config-TeIoyYYc.js} +2 -2
- package/dist/web/server/assets/context-B-XDf6Ym.js +12 -0
- package/dist/web/server/assets/context-BXGo5Vfi.js +12 -0
- package/dist/web/server/assets/context-DrkrIWun.js +47 -0
- package/dist/web/server/assets/{createServerRpc-CeKECg65.js → createServerRpc-pU-IQV2Y.js} +1 -1
- package/dist/web/server/assets/{createSsrRpc-ZBGxhl8t.js → createSsrRpc-DFsIAfFd.js} +1 -1
- package/dist/web/server/assets/{empty-plugin-adapters-DKUlnwwl.js → empty-plugin-adapters-Cq4--YW-.js} +1 -1
- package/dist/web/server/assets/{inbox-CkiSvD14.js → inbox-B3-TRsNI.js} +1 -1
- package/dist/web/server/assets/{inbox-Bxb3W04M.js → inbox-BardsGyy.js} +2 -2
- package/dist/web/server/assets/inbox-CUIyf9MT.js +131 -0
- package/dist/web/server/assets/login-Bx5LEyGP.js +118 -0
- package/dist/web/server/assets/login-CmWvxfTK.js +136 -0
- package/dist/web/server/assets/{mcp-BsFKEoXt.js → mcp-2pwT9HU8.js} +1 -1
- package/dist/web/server/assets/{mcp-BU_kKENi.js → mcp-BJjLIdP0.js} +105 -112
- package/dist/web/server/assets/{mcp-CKqwG4mt.js → mcp-DIWTogHM.js} +2 -2
- package/dist/web/server/assets/members-CCv17cjQ.js +46 -0
- package/dist/web/server/assets/members-CW5aBe81.js +12 -0
- package/dist/web/server/assets/members-VdPwD6CE.js +12 -0
- package/dist/web/server/assets/{memory-BaYnfm7K.js → memory-Dngc13Nw.js} +9 -9
- package/dist/web/server/assets/{memory-CQaqWnyM.js → memory-a8Kz57Kh.js} +22 -19
- package/dist/web/server/assets/{memory-Ns2-Z31p.js → memory-pZ4pZT7p.js} +6 -6
- package/dist/web/server/assets/policy-BYVXqsan.js +11 -0
- package/dist/web/server/assets/policy-Bb-vEgqg.js +40 -0
- package/dist/web/server/assets/policy-BcGELcc9.js +490 -0
- package/dist/web/server/assets/policy-C30AeFIb.js +21 -0
- package/dist/web/server/assets/router-DIdp8ZNt.js +504 -0
- package/dist/web/server/assets/{routes-C61gBiXa.js → routes-CXz4hTAr.js} +6 -6
- package/dist/web/server/assets/{routes-Ce2VWrU9.js → routes-Jb0zjKav.js} +16 -13
- package/dist/web/server/assets/{routes-V9URcp1v.js → routes-lIclH9Br.js} +2 -2
- package/dist/web/server/assets/services-B9yBWDX0.js +79 -0
- package/dist/web/server/assets/{services-Ccc5s2bS.js → services-C4szdhPx.js} +4 -4
- package/dist/web/server/assets/{services-DhRiNeq0.js → services-wG8I06oS.js} +1 -1
- package/dist/web/server/assets/skills-BZdqiDig.js +358 -0
- package/dist/web/server/assets/{skills-l2cyQ3zS.js → skills-C-UgkuCW.js} +2 -2
- package/dist/web/server/assets/{skills-CFIWVg32.js → skills-a9VSWHWq.js} +1 -1
- package/dist/web/server/assets/{start-CYDpZ6cb.js → start-WH8WzTL_.js} +1 -1
- package/dist/web/server/assets/team-policy-vPG01onj.js +180 -0
- package/dist/web/server/assets/teams-3im0oQnS.js +11 -0
- package/dist/web/server/assets/teams-CpQ0YgWf.js +112 -0
- package/dist/web/server/assets/teams-DEpQR2QA.js +14 -0
- package/dist/web/server/assets/teams-DqfrEoH6.js +36 -0
- package/dist/web/server/assets/teams-MjqgsmC3.js +12 -0
- package/dist/web/server/assets/teams-OIkHuxy1.js +12 -0
- package/dist/web/server/assets/teams-jBtvnk59.js +193 -0
- package/dist/web/server/assets/{telegram-DfAddLdv.js → telegram-7ub--6xz.js} +44 -56
- package/dist/web/server/assets/{telegram-T3l9KtiE.js → telegram-Bazhmpr4.js} +2 -2
- package/dist/web/server/assets/{telegram-BdaUIjvs.js → telegram-DNgCWebD.js} +1 -1
- package/dist/web/server/assets/{tokens-DdpnfV_Y.js → tokens-BnwFbV7T.js} +2 -2
- package/dist/web/server/assets/{tokens-BCz3PSoT.js → tokens-DPDMSN5O.js} +1 -1
- package/dist/web/server/assets/tokens-yyTSfBSN.js +186 -0
- package/dist/web/server/assets/{triggers-BzJG1nN5.js → triggers-BMpHsGIr.js} +5 -4
- package/dist/web/server/assets/{triggers-BcH_6PW1.js → triggers-C_0y6QV9.js} +1 -1
- package/dist/web/server/assets/{triggers-BcTTwMfy.js → triggers-Ca57_qym.js} +2 -2
- package/dist/web/server/assets/{welcome-CP4CZ9B6.js → welcome-IYHGurWx.js} +23 -15
- package/dist/web/server/assets/{wire-constants-Deb4NxBb.js → wire-constants-C8nBJcU3.js} +3 -3
- package/dist/web/server/server.js +126 -95
- package/dist/worker.js +185 -146
- package/dist/worker.js.map +1 -1
- package/package.json +8 -7
- package/dist/migrations/0002_profile_groups.sql +0 -38
- package/dist/migrations/0003_agent_telegram.sql +0 -40
- package/dist/migrations/0004_agent_mirror_mode.sql +0 -17
- package/dist/migrations/0005_group_topic_name_format.sql +0 -15
- package/dist/migrations/0006_telegram_acl.sql +0 -18
- package/dist/migrations/0007_mcp_servers.sql +0 -30
- package/dist/migrations/0008_seed_user_md.sql +0 -39
- package/dist/web/client/assets/AgentTabs-DioGqUVR.js +0 -1
- package/dist/web/client/assets/ConfigTabs-pY-V0Rie.js +0 -1
- package/dist/web/client/assets/FieldRow-CNKma5LE.js +0 -1
- package/dist/web/client/assets/MembersEditor-C6UpqDdV.js +0 -1
- package/dist/web/client/assets/SpawnTeamModal-BEkNCKXm.js +0 -1
- package/dist/web/client/assets/TemplatesTabs-UM04RMO9.js +0 -1
- package/dist/web/client/assets/_id-BNJapCT4.js +0 -1
- package/dist/web/client/assets/_id-CjGoV8Mr.js +0 -1
- package/dist/web/client/assets/_id-DehuCHUw.js +0 -1
- package/dist/web/client/assets/_id-Dz9fjcCM.js +0 -1
- package/dist/web/client/assets/agents-M6omAXcZ.js +0 -1
- package/dist/web/client/assets/config-DIuEc5bm.js +0 -3
- package/dist/web/client/assets/groups-DpE2d2zZ.js +0 -1
- package/dist/web/client/assets/inbox-BPnLsRNf.js +0 -1
- package/dist/web/client/assets/index-MAJuXnie.js +0 -12
- package/dist/web/client/assets/login-CawJX16E.js +0 -1
- package/dist/web/client/assets/mcp-DIrh9-v_.js +0 -1
- package/dist/web/client/assets/memory-BpHbdKsd.js +0 -1
- package/dist/web/client/assets/preload-helper-CvnapA2_.js +0 -1
- package/dist/web/client/assets/profile-groups-ByoKak0c.js +0 -1
- package/dist/web/client/assets/profiles-BEjv8LGo.js +0 -1
- package/dist/web/client/assets/routes-D2COHy7v.js +0 -1
- package/dist/web/client/assets/services-D212jSK_.js +0 -1
- package/dist/web/client/assets/skills-Da0MURjY.js +0 -1
- package/dist/web/client/assets/styles-BgE5bCHA.css +0 -2
- package/dist/web/client/assets/telegram-Czh2MdVm.js +0 -1
- package/dist/web/client/assets/tokens-E_JvO5JN.js +0 -1
- package/dist/web/client/assets/triggers-BBRZQOm7.js +0 -1
- package/dist/web/client/assets/welcome-Dn-zvmBE.js +0 -1
- package/dist/web/client/assets/wire-constants-BkT5-597.js +0 -1
- package/dist/web/server/assets/ConfigTabs-CyuxzesF.js +0 -41
- package/dist/web/server/assets/MembersEditor-BWQztvrX.js +0 -131
- package/dist/web/server/assets/Sidebar-DmEiewRN.js +0 -529
- package/dist/web/server/assets/SpawnTeamModal-dSN421k_.js +0 -107
- package/dist/web/server/assets/_id-BKev9H1p.js +0 -12
- package/dist/web/server/assets/_id-BNwlbWHP.js +0 -24
- package/dist/web/server/assets/_id-CRqqi8IE.js +0 -161
- package/dist/web/server/assets/_id-CXg-Blec.js +0 -367
- package/dist/web/server/assets/_tanstack-start-manifest_v-D9FLKShQ.js +0 -178
- package/dist/web/server/assets/agents-C7SBPN0M.js +0 -210
- package/dist/web/server/assets/groups-CbSwND2r.js +0 -12
- package/dist/web/server/assets/groups-CeRRlZaZ.js +0 -150
- package/dist/web/server/assets/groups-pk4CYSuf.js +0 -21
- package/dist/web/server/assets/inbox-DU27iHv_.js +0 -133
- package/dist/web/server/assets/login-CNznncgA.js +0 -58
- package/dist/web/server/assets/login-CQybKk7Y.js +0 -74
- package/dist/web/server/assets/profile-groups-CiU06yN1.js +0 -28
- package/dist/web/server/assets/profile-groups-D21MYoLM.js +0 -208
- package/dist/web/server/assets/profile-groups-aoJleXHP.js +0 -12
- package/dist/web/server/assets/router-BrDascdO.js +0 -460
- package/dist/web/server/assets/services-B91w2f-X.js +0 -94
- package/dist/web/server/assets/skills-D89ND2kR.js +0 -321
- package/dist/web/server/assets/tokens-CkKqrtk-.js +0 -193
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { t as Route } from "./teams-OIkHuxy1.js";
|
|
2
|
+
import { n as PageHeader, r as PageShell } from "./Page-LENulSXY.js";
|
|
3
|
+
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
4
|
+
import { t as TemplatesTabs } from "./TemplatesTabs-CcRxZhJe.js";
|
|
5
|
+
import { useState } from "react";
|
|
6
|
+
import { useRouter } from "@tanstack/react-router";
|
|
7
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/routes/templates/teams/index.tsx?tsr-split=component
|
|
9
|
+
function TeamTemplatesPage() {
|
|
10
|
+
const teams = Route.useLoaderData();
|
|
11
|
+
const router = useRouter();
|
|
12
|
+
return /* @__PURE__ */ jsxs(PageShell, {
|
|
13
|
+
size: "wide",
|
|
14
|
+
children: [
|
|
15
|
+
/* @__PURE__ */ jsx(PageHeader, {
|
|
16
|
+
eyebrow: "Templates",
|
|
17
|
+
title: "Team templates",
|
|
18
|
+
description: "Create revisioned rosters with stable slots and a reusable communication policy."
|
|
19
|
+
}),
|
|
20
|
+
/* @__PURE__ */ jsx(TemplatesTabs, {}),
|
|
21
|
+
/* @__PURE__ */ jsx(CreateTeamForm, { onCreated: () => router.invalidate() }),
|
|
22
|
+
/* @__PURE__ */ jsx("div", {
|
|
23
|
+
className: "overflow-x-auto",
|
|
24
|
+
children: /* @__PURE__ */ jsxs("table", { children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
25
|
+
/* @__PURE__ */ jsx("th", { children: "id" }),
|
|
26
|
+
/* @__PURE__ */ jsx("th", { children: "name" }),
|
|
27
|
+
/* @__PURE__ */ jsx("th", { children: "slots" }),
|
|
28
|
+
/* @__PURE__ */ jsx("th", { children: "revision" }),
|
|
29
|
+
/* @__PURE__ */ jsx("th", { children: "source state" })
|
|
30
|
+
] }) }), /* @__PURE__ */ jsxs("tbody", { children: [teams.map((team) => /* @__PURE__ */ jsxs("tr", { children: [
|
|
31
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("a", {
|
|
32
|
+
href: `/templates/teams/${encodeURIComponent(team.id)}`,
|
|
33
|
+
children: /* @__PURE__ */ jsx("code", { children: team.id })
|
|
34
|
+
}) }),
|
|
35
|
+
/* @__PURE__ */ jsx("td", { children: team.name }),
|
|
36
|
+
/* @__PURE__ */ jsx("td", { children: team.slotCount }),
|
|
37
|
+
/* @__PURE__ */ jsx("td", { children: team.currentRevision }),
|
|
38
|
+
/* @__PURE__ */ jsx("td", { children: team.deletedAt ? "deleted source" : "canonical" })
|
|
39
|
+
] }, team.id)), teams.length === 0 && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
|
|
40
|
+
colSpan: 5,
|
|
41
|
+
className: "muted",
|
|
42
|
+
children: "No team templates yet."
|
|
43
|
+
}) })] })] })
|
|
44
|
+
})
|
|
45
|
+
]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function CreateTeamForm({ onCreated }) {
|
|
49
|
+
const [id, setId] = useState("");
|
|
50
|
+
const [name, setName] = useState("");
|
|
51
|
+
const [error, setError] = useState(null);
|
|
52
|
+
const [busy, setBusy] = useState(false);
|
|
53
|
+
async function submit(event) {
|
|
54
|
+
event.preventDefault();
|
|
55
|
+
setBusy(true);
|
|
56
|
+
setError(null);
|
|
57
|
+
try {
|
|
58
|
+
const response = await fetch("/api/team-templates", {
|
|
59
|
+
method: "POST",
|
|
60
|
+
headers: { "content-type": "application/json" },
|
|
61
|
+
body: JSON.stringify({
|
|
62
|
+
id: id.trim(),
|
|
63
|
+
name: name.trim()
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
if (!response.ok) throw new Error((await response.json().catch(() => null))?.error ?? response.statusText);
|
|
67
|
+
setId("");
|
|
68
|
+
setName("");
|
|
69
|
+
await onCreated();
|
|
70
|
+
} catch (cause) {
|
|
71
|
+
setError(cause.message);
|
|
72
|
+
} finally {
|
|
73
|
+
setBusy(false);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return /* @__PURE__ */ jsxs("form", {
|
|
77
|
+
className: "card",
|
|
78
|
+
onSubmit: submit,
|
|
79
|
+
children: [
|
|
80
|
+
/* @__PURE__ */ jsx("h2", {
|
|
81
|
+
className: "text-xl",
|
|
82
|
+
children: "new team template"
|
|
83
|
+
}),
|
|
84
|
+
error && /* @__PURE__ */ jsx("p", {
|
|
85
|
+
className: "err",
|
|
86
|
+
children: error
|
|
87
|
+
}),
|
|
88
|
+
/* @__PURE__ */ jsxs("div", {
|
|
89
|
+
className: "grid gap-3 sm:grid-cols-2",
|
|
90
|
+
children: [/* @__PURE__ */ jsxs("label", { children: ["id", /* @__PURE__ */ jsx("input", {
|
|
91
|
+
required: true,
|
|
92
|
+
value: id,
|
|
93
|
+
onChange: (event) => setId(event.target.value),
|
|
94
|
+
placeholder: "review-team"
|
|
95
|
+
})] }), /* @__PURE__ */ jsxs("label", { children: ["name", /* @__PURE__ */ jsx("input", {
|
|
96
|
+
required: true,
|
|
97
|
+
value: name,
|
|
98
|
+
onChange: (event) => setName(event.target.value),
|
|
99
|
+
placeholder: "Review team"
|
|
100
|
+
})] })]
|
|
101
|
+
}),
|
|
102
|
+
/* @__PURE__ */ jsx(Button, {
|
|
103
|
+
variant: "primary",
|
|
104
|
+
type: "submit",
|
|
105
|
+
disabled: busy,
|
|
106
|
+
children: busy ? "creating…" : "create team template"
|
|
107
|
+
})
|
|
108
|
+
]
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
//#endregion
|
|
112
|
+
export { TeamTemplatesPage as component };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
|
|
3
|
+
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
|
+
//#region src/routes/teams/index.tsx
|
|
5
|
+
var $$splitErrorComponentImporter = () => import("./teams-3im0oQnS.js");
|
|
6
|
+
var $$splitComponentImporter = () => import("./teams-jBtvnk59.js");
|
|
7
|
+
var fetchTeamsData = createServerFn({ method: "GET" }).handler(createSsrRpc("1ab05a58944792f34ad279deeaa56f70e9360687856b18327f335b022e8d21a5"));
|
|
8
|
+
var Route = createFileRoute("/teams/")({
|
|
9
|
+
loader: () => fetchTeamsData(),
|
|
10
|
+
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
11
|
+
errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent")
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Route as t };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
|
|
3
|
+
import { n as daemonClient } from "./daemon-client-2NRMzlTr.js";
|
|
4
|
+
//#region src/routes/teams/index.tsx?tss-serverfn-split
|
|
5
|
+
var fetchTeamsData_createServerFn_handler = createServerRpc({
|
|
6
|
+
id: "1ab05a58944792f34ad279deeaa56f70e9360687856b18327f335b022e8d21a5",
|
|
7
|
+
name: "fetchTeamsData",
|
|
8
|
+
filename: "src/routes/teams/index.tsx"
|
|
9
|
+
}, (opts) => fetchTeamsData.__executeServer(opts));
|
|
10
|
+
var fetchTeamsData = createServerFn({ method: "GET" }).handler(fetchTeamsData_createServerFn_handler, async () => {
|
|
11
|
+
const c = daemonClient();
|
|
12
|
+
const [teams, agents, health] = await Promise.all([
|
|
13
|
+
c.get("/api/teams"),
|
|
14
|
+
c.get("/api/agents?includeArchived=true"),
|
|
15
|
+
c.get("/api/health")
|
|
16
|
+
]);
|
|
17
|
+
const memberCounts = {};
|
|
18
|
+
for (const a of agents) memberCounts[a.teamId] = (memberCounts[a.teamId] ?? 0) + 1;
|
|
19
|
+
const policies = {};
|
|
20
|
+
await Promise.all(teams.map(async (team) => {
|
|
21
|
+
const detail = await c.get(`/api/teams/${encodeURIComponent(team.id)}/policy`);
|
|
22
|
+
policies[team.id] = {
|
|
23
|
+
revision: detail.teamPolicy.revision,
|
|
24
|
+
baseline: detail.baseline ? `${detail.baseline.templateId} r${detail.baseline.templateRevision}` : null,
|
|
25
|
+
edges: detail.edges.length
|
|
26
|
+
};
|
|
27
|
+
}));
|
|
28
|
+
return {
|
|
29
|
+
teams,
|
|
30
|
+
memberCounts,
|
|
31
|
+
policies,
|
|
32
|
+
readiness: health.teamPolicyManagement
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
//#endregion
|
|
36
|
+
export { fetchTeamsData_createServerFn_handler };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
|
|
3
|
+
import { n as daemonClient } from "./daemon-client-2NRMzlTr.js";
|
|
4
|
+
//#region src/routes/templates/teams/index.tsx?tss-serverfn-split
|
|
5
|
+
var fetchTeams_createServerFn_handler = createServerRpc({
|
|
6
|
+
id: "1bb12262aaa902fa208aafaa70b69c63da34c1fe523ab0322fe766903fc6b4c1",
|
|
7
|
+
name: "fetchTeams",
|
|
8
|
+
filename: "src/routes/templates/teams/index.tsx"
|
|
9
|
+
}, (opts) => fetchTeams.__executeServer(opts));
|
|
10
|
+
var fetchTeams = createServerFn({ method: "GET" }).handler(fetchTeams_createServerFn_handler, () => daemonClient().get("/api/team-templates"));
|
|
11
|
+
//#endregion
|
|
12
|
+
export { fetchTeams_createServerFn_handler };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
|
|
3
|
+
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
|
+
//#region src/routes/templates/teams/index.tsx
|
|
5
|
+
var $$splitComponentImporter = () => import("./teams-CpQ0YgWf.js");
|
|
6
|
+
var fetchTeams = createServerFn({ method: "GET" }).handler(createSsrRpc("1bb12262aaa902fa208aafaa70b69c63da34c1fe523ab0322fe766903fc6b4c1"));
|
|
7
|
+
var Route = createFileRoute("/templates/teams/")({
|
|
8
|
+
loader: () => fetchTeams(),
|
|
9
|
+
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { Route as t };
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import { t as Route } from "./teams-DEpQR2QA.js";
|
|
2
|
+
import { a as StatusBadge, i as SectionCard, n as PageHeader, r as PageShell, t as EmptyState } from "./Page-LENulSXY.js";
|
|
3
|
+
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { useRouter } from "@tanstack/react-router";
|
|
6
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
+
//#region src/routes/teams/index.tsx?tsr-split=component
|
|
8
|
+
function TeamsPage() {
|
|
9
|
+
const { teams, memberCounts, policies, readiness } = Route.useLoaderData();
|
|
10
|
+
const router = useRouter();
|
|
11
|
+
async function remove(id) {
|
|
12
|
+
if (!confirm("remove this team registration?")) return;
|
|
13
|
+
const revision = policies[id]?.revision;
|
|
14
|
+
if (!revision) return;
|
|
15
|
+
const res = await fetch(`/api/teams/${encodeURIComponent(id)}?expectedTeamPolicyRevision=${revision}`, { method: "DELETE" });
|
|
16
|
+
if (!res.ok && res.status !== 204) {
|
|
17
|
+
alert(res.statusText);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
await router.invalidate();
|
|
21
|
+
}
|
|
22
|
+
return /* @__PURE__ */ jsxs(PageShell, {
|
|
23
|
+
size: "wide",
|
|
24
|
+
children: [
|
|
25
|
+
/* @__PURE__ */ jsx(PageHeader, {
|
|
26
|
+
eyebrow: "Workspace",
|
|
27
|
+
title: "Teams",
|
|
28
|
+
description: "Each Team owns one workspace, one live membership roster, and one effective communication policy. Every agent belongs to exactly one Team."
|
|
29
|
+
}),
|
|
30
|
+
/* @__PURE__ */ jsx(SectionCard, {
|
|
31
|
+
title: "Policy enforcement",
|
|
32
|
+
description: `Management contract v${readiness.contractVersion} is ready for this daemon.`,
|
|
33
|
+
actions: /* @__PURE__ */ jsx(StatusBadge, {
|
|
34
|
+
variant: readiness.enforcementActive ? "success" : "warning",
|
|
35
|
+
children: readiness.enforcementActive ? "Enforcement on" : "Enforcement off"
|
|
36
|
+
}),
|
|
37
|
+
"aria-label": "Team Policy enforcement readiness",
|
|
38
|
+
children: /* @__PURE__ */ jsx("p", {
|
|
39
|
+
className: "text-sm text-muted-foreground",
|
|
40
|
+
children: readiness.enforcementActive ? "Communication boundaries are currently enforcing each Team policy." : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
41
|
+
"Set ",
|
|
42
|
+
/* @__PURE__ */ jsx("code", { children: "BAZILION_TEAM_POLICY_ENFORCEMENT=on" }),
|
|
43
|
+
" and restart the daemon to enforce Team policies."
|
|
44
|
+
] })
|
|
45
|
+
})
|
|
46
|
+
}),
|
|
47
|
+
/* @__PURE__ */ jsx(RegisterTeamForm, { onRegistered: () => router.invalidate() }),
|
|
48
|
+
/* @__PURE__ */ jsx(SectionCard, {
|
|
49
|
+
title: "Registered teams",
|
|
50
|
+
description: "Open a Team to manage its context, members, shared memory, and policy.",
|
|
51
|
+
children: teams.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
|
|
52
|
+
title: "No teams registered",
|
|
53
|
+
description: "Register a Team above to create a workspace for your agents."
|
|
54
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
55
|
+
className: "overflow-x-auto",
|
|
56
|
+
children: /* @__PURE__ */ jsxs("table", {
|
|
57
|
+
className: "min-w-[820px]",
|
|
58
|
+
children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
59
|
+
/* @__PURE__ */ jsx("th", { children: "ID" }),
|
|
60
|
+
/* @__PURE__ */ jsx("th", { children: "Name" }),
|
|
61
|
+
/* @__PURE__ */ jsx("th", { children: "Members" }),
|
|
62
|
+
/* @__PURE__ */ jsx("th", { children: "Policy" }),
|
|
63
|
+
/* @__PURE__ */ jsx("th", { children: "Baseline" }),
|
|
64
|
+
/* @__PURE__ */ jsx("th", { children: /* @__PURE__ */ jsx("span", {
|
|
65
|
+
className: "sr-only",
|
|
66
|
+
children: "Actions"
|
|
67
|
+
}) })
|
|
68
|
+
] }) }), /* @__PURE__ */ jsx("tbody", { children: teams.map((g) => {
|
|
69
|
+
const count = memberCounts[g.id] ?? 0;
|
|
70
|
+
const policy = policies[g.id];
|
|
71
|
+
return /* @__PURE__ */ jsxs("tr", { children: [
|
|
72
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("code", { children: g.id }) }),
|
|
73
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("a", {
|
|
74
|
+
href: `/teams/${g.id}`,
|
|
75
|
+
children: g.name
|
|
76
|
+
}) }),
|
|
77
|
+
/* @__PURE__ */ jsx("td", { children: count }),
|
|
78
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("a", {
|
|
79
|
+
href: `/teams/${g.id}/policy`,
|
|
80
|
+
children: policy ? `r${policy.revision} · ${policy.edges} edges` : "Unavailable"
|
|
81
|
+
}) }),
|
|
82
|
+
/* @__PURE__ */ jsx("td", { children: policy?.baseline ?? "None" }),
|
|
83
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("div", {
|
|
84
|
+
className: "flex justify-end",
|
|
85
|
+
children: count === 0 ? /* @__PURE__ */ jsx(Button, {
|
|
86
|
+
variant: "danger",
|
|
87
|
+
onClick: () => remove(g.id),
|
|
88
|
+
children: "Remove"
|
|
89
|
+
}) : /* @__PURE__ */ jsx(StatusBadge, {
|
|
90
|
+
variant: "neutral",
|
|
91
|
+
title: `${count} agent(s) belong to this Team`,
|
|
92
|
+
children: "In use"
|
|
93
|
+
})
|
|
94
|
+
}) })
|
|
95
|
+
] }, g.id);
|
|
96
|
+
}) })]
|
|
97
|
+
})
|
|
98
|
+
})
|
|
99
|
+
})
|
|
100
|
+
]
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function RegisterTeamForm({ onRegistered }) {
|
|
104
|
+
const [id, setId] = useState("");
|
|
105
|
+
const [name, setName] = useState("");
|
|
106
|
+
const [link, setLink] = useState("");
|
|
107
|
+
const [err, setErr] = useState(null);
|
|
108
|
+
const [submitting, setSubmitting] = useState(false);
|
|
109
|
+
async function submit(e) {
|
|
110
|
+
e.preventDefault();
|
|
111
|
+
setErr(null);
|
|
112
|
+
if (!id.trim()) {
|
|
113
|
+
setErr("id is required");
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
setSubmitting(true);
|
|
117
|
+
try {
|
|
118
|
+
const res = await fetch("/api/teams", {
|
|
119
|
+
method: "POST",
|
|
120
|
+
headers: { "content-type": "application/json" },
|
|
121
|
+
body: JSON.stringify({
|
|
122
|
+
id: id.trim(),
|
|
123
|
+
name: name.trim() || void 0,
|
|
124
|
+
link: link.trim() || void 0
|
|
125
|
+
})
|
|
126
|
+
});
|
|
127
|
+
if (!res.ok) {
|
|
128
|
+
const e2 = await res.json().catch(() => null);
|
|
129
|
+
throw new Error(e2?.error ?? res.statusText);
|
|
130
|
+
}
|
|
131
|
+
setId("");
|
|
132
|
+
setName("");
|
|
133
|
+
setLink("");
|
|
134
|
+
onRegistered();
|
|
135
|
+
} catch (e2) {
|
|
136
|
+
setErr(e2.message);
|
|
137
|
+
} finally {
|
|
138
|
+
setSubmitting(false);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return /* @__PURE__ */ jsx(SectionCard, {
|
|
142
|
+
title: "Register a team",
|
|
143
|
+
description: /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
144
|
+
"Teams live under ",
|
|
145
|
+
/* @__PURE__ */ jsx("code", { children: "~/.bazilion/teams/<slug>/" }),
|
|
146
|
+
". Link an existing project directory or leave the target blank to create a fresh workspace."
|
|
147
|
+
] }),
|
|
148
|
+
children: /* @__PURE__ */ jsxs("form", {
|
|
149
|
+
onSubmit: submit,
|
|
150
|
+
children: [
|
|
151
|
+
err && /* @__PURE__ */ jsx("div", {
|
|
152
|
+
className: "err",
|
|
153
|
+
children: err
|
|
154
|
+
}),
|
|
155
|
+
/* @__PURE__ */ jsxs("div", {
|
|
156
|
+
className: "grid gap-4 sm:grid-cols-2",
|
|
157
|
+
children: [
|
|
158
|
+
/* @__PURE__ */ jsxs("label", { children: ["ID (slug)", /* @__PURE__ */ jsx("input", {
|
|
159
|
+
value: id,
|
|
160
|
+
onChange: (e) => setId(e.target.value),
|
|
161
|
+
required: true,
|
|
162
|
+
placeholder: "my-project"
|
|
163
|
+
})] }),
|
|
164
|
+
/* @__PURE__ */ jsxs("label", { children: ["Name", /* @__PURE__ */ jsx("input", {
|
|
165
|
+
value: name,
|
|
166
|
+
onChange: (e) => setName(e.target.value),
|
|
167
|
+
placeholder: "My project"
|
|
168
|
+
})] }),
|
|
169
|
+
/* @__PURE__ */ jsxs("label", {
|
|
170
|
+
className: "sm:col-span-2",
|
|
171
|
+
children: ["Link target (optional, absolute path)", /* @__PURE__ */ jsx("input", {
|
|
172
|
+
value: link,
|
|
173
|
+
onChange: (e) => setLink(e.target.value),
|
|
174
|
+
placeholder: "/home/user/projects/my-project"
|
|
175
|
+
})]
|
|
176
|
+
})
|
|
177
|
+
]
|
|
178
|
+
}),
|
|
179
|
+
/* @__PURE__ */ jsx("div", {
|
|
180
|
+
className: "mt-4",
|
|
181
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
182
|
+
variant: "primary",
|
|
183
|
+
type: "submit",
|
|
184
|
+
disabled: submitting,
|
|
185
|
+
children: submitting ? "Registering…" : "Register team"
|
|
186
|
+
})
|
|
187
|
+
})
|
|
188
|
+
]
|
|
189
|
+
})
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
//#endregion
|
|
193
|
+
export { TeamsPage as component };
|