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,280 @@
|
|
|
1
|
+
import { t as Route } from "./approvals-CWcFHlor.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 { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/routes/approvals/index.tsx?tsr-split=component
|
|
7
|
+
function ApprovalQueue() {
|
|
8
|
+
const [approvals, setApprovals] = useState(Route.useLoaderData().approvals);
|
|
9
|
+
const [status, setStatus] = useState("pending");
|
|
10
|
+
const [selected, setSelected] = useState(null);
|
|
11
|
+
const [busy, setBusy] = useState(false);
|
|
12
|
+
const [notice, setNotice] = useState(null);
|
|
13
|
+
const visible = approvals.filter((item) => status === "all" || item.status === status);
|
|
14
|
+
const refresh = async () => {
|
|
15
|
+
const response = await fetch("/api/approvals?limit=100");
|
|
16
|
+
if (!response.ok) throw new Error(`Could not refresh approvals (${response.status})`);
|
|
17
|
+
setApprovals((await response.json()).approvals);
|
|
18
|
+
};
|
|
19
|
+
const inspect = async (id) => {
|
|
20
|
+
const response = await fetch(`/api/approvals/${encodeURIComponent(id)}`);
|
|
21
|
+
if (!response.ok) throw new Error(`Could not load approval (${response.status})`);
|
|
22
|
+
setSelected(await response.json());
|
|
23
|
+
};
|
|
24
|
+
const decide = async (action) => {
|
|
25
|
+
if (!selected) return;
|
|
26
|
+
setBusy(true);
|
|
27
|
+
setNotice(null);
|
|
28
|
+
try {
|
|
29
|
+
const response = await fetch(`/api/approvals/${encodeURIComponent(selected.id)}/${action}`, {
|
|
30
|
+
method: "POST",
|
|
31
|
+
headers: { "content-type": "application/json" },
|
|
32
|
+
body: JSON.stringify({ reason: action === "deny" ? "Denied by operator" : void 0 })
|
|
33
|
+
});
|
|
34
|
+
const body = await response.json();
|
|
35
|
+
if (!response.ok) throw new Error(body.error ?? `Decision failed (${response.status})`);
|
|
36
|
+
await refresh();
|
|
37
|
+
await inspect(selected.id);
|
|
38
|
+
setNotice(action === "approve" ? "Approved and delivered once." : "Denied.");
|
|
39
|
+
} catch (error) {
|
|
40
|
+
setNotice(error instanceof Error ? error.message : String(error));
|
|
41
|
+
await refresh();
|
|
42
|
+
await inspect(selected.id);
|
|
43
|
+
} finally {
|
|
44
|
+
setBusy(false);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
return /* @__PURE__ */ jsxs(PageShell, {
|
|
48
|
+
size: "wide",
|
|
49
|
+
children: [/* @__PURE__ */ jsx(PageHeader, {
|
|
50
|
+
eyebrow: "Policy operations",
|
|
51
|
+
title: "Communication approvals",
|
|
52
|
+
description: "One durable queue for policy-protected attempts. Approval authorizes only the captured attempt.",
|
|
53
|
+
actions: /* @__PURE__ */ jsxs("label", {
|
|
54
|
+
className: "m-0 block w-full text-sm sm:w-52",
|
|
55
|
+
children: ["Status", /* @__PURE__ */ jsxs("select", {
|
|
56
|
+
value: status,
|
|
57
|
+
onChange: (event) => setStatus(event.target.value),
|
|
58
|
+
className: "mt-1",
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ jsx("option", {
|
|
61
|
+
value: "pending",
|
|
62
|
+
children: "Pending"
|
|
63
|
+
}),
|
|
64
|
+
/* @__PURE__ */ jsx("option", {
|
|
65
|
+
value: "all",
|
|
66
|
+
children: "All history"
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ jsx("option", {
|
|
69
|
+
value: "delivered",
|
|
70
|
+
children: "Delivered"
|
|
71
|
+
}),
|
|
72
|
+
/* @__PURE__ */ jsx("option", {
|
|
73
|
+
value: "denied",
|
|
74
|
+
children: "Denied"
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ jsx("option", {
|
|
77
|
+
value: "expired",
|
|
78
|
+
children: "Expired"
|
|
79
|
+
}),
|
|
80
|
+
/* @__PURE__ */ jsx("option", {
|
|
81
|
+
value: "cancelled",
|
|
82
|
+
children: "Cancelled"
|
|
83
|
+
}),
|
|
84
|
+
/* @__PURE__ */ jsx("option", {
|
|
85
|
+
value: "delivery_failed",
|
|
86
|
+
children: "Delivery failed"
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
})]
|
|
90
|
+
})
|
|
91
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
92
|
+
className: "grid min-w-0 gap-5 lg:grid-cols-[minmax(0,1.15fr)_minmax(320px,0.85fr)]",
|
|
93
|
+
children: [/* @__PURE__ */ jsx(SectionCard, {
|
|
94
|
+
title: "Approval queue",
|
|
95
|
+
description: `${visible.length} matching attempt${visible.length === 1 ? "" : "s"}`,
|
|
96
|
+
className: "min-w-0",
|
|
97
|
+
children: visible.length === 0 ? /* @__PURE__ */ jsx(EmptyState, {
|
|
98
|
+
title: "No matching approvals",
|
|
99
|
+
description: "Try another status filter or return when a protected attempt needs review."
|
|
100
|
+
}) : /* @__PURE__ */ jsx("div", {
|
|
101
|
+
className: "overflow-x-auto",
|
|
102
|
+
children: /* @__PURE__ */ jsxs("table", {
|
|
103
|
+
className: "m-0 min-w-[680px]",
|
|
104
|
+
children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
105
|
+
/* @__PURE__ */ jsx("th", { children: "Status" }),
|
|
106
|
+
/* @__PURE__ */ jsx("th", { children: "Path" }),
|
|
107
|
+
/* @__PURE__ */ jsx("th", { children: "Origin" }),
|
|
108
|
+
/* @__PURE__ */ jsx("th", { children: "Expires" })
|
|
109
|
+
] }) }), /* @__PURE__ */ jsx("tbody", { children: visible.map((item) => /* @__PURE__ */ jsxs("tr", {
|
|
110
|
+
tabIndex: 0,
|
|
111
|
+
role: "button",
|
|
112
|
+
"aria-label": `Inspect ${item.attemptKind} approval`,
|
|
113
|
+
"aria-current": selected?.id === item.id ? "true" : void 0,
|
|
114
|
+
onClick: () => void inspect(item.id),
|
|
115
|
+
onKeyDown: (event) => {
|
|
116
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
117
|
+
event.preventDefault();
|
|
118
|
+
inspect(item.id);
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
className: `cursor-pointer ${selected?.id === item.id ? "bg-accent/60" : ""}`,
|
|
122
|
+
children: [
|
|
123
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(Status, { value: item.status }) }),
|
|
124
|
+
/* @__PURE__ */ jsxs("td", {
|
|
125
|
+
className: "min-w-56",
|
|
126
|
+
children: [
|
|
127
|
+
endpoint(item.source),
|
|
128
|
+
" → ",
|
|
129
|
+
endpoint(item.target)
|
|
130
|
+
]
|
|
131
|
+
}),
|
|
132
|
+
/* @__PURE__ */ jsx("td", { children: item.origin }),
|
|
133
|
+
/* @__PURE__ */ jsx("td", {
|
|
134
|
+
className: "whitespace-nowrap",
|
|
135
|
+
children: /* @__PURE__ */ jsx("time", {
|
|
136
|
+
dateTime: new Date(item.expiresAt).toISOString(),
|
|
137
|
+
children: formatTimestamp(item.expiresAt)
|
|
138
|
+
})
|
|
139
|
+
})
|
|
140
|
+
]
|
|
141
|
+
}, item.id)) })]
|
|
142
|
+
})
|
|
143
|
+
})
|
|
144
|
+
}), /* @__PURE__ */ jsx("aside", {
|
|
145
|
+
className: "min-w-0",
|
|
146
|
+
"aria-label": "Approval details",
|
|
147
|
+
children: /* @__PURE__ */ jsx(SectionCard, {
|
|
148
|
+
title: "Attempt details",
|
|
149
|
+
actions: selected ? /* @__PURE__ */ jsx(Status, { value: selected.status }) : void 0,
|
|
150
|
+
children: !selected ? /* @__PURE__ */ jsx(EmptyState, {
|
|
151
|
+
title: "No attempt selected",
|
|
152
|
+
description: "Select an attempt from the queue to inspect its policy and audit history.",
|
|
153
|
+
className: "min-h-56"
|
|
154
|
+
}) : /* @__PURE__ */ jsxs("div", {
|
|
155
|
+
className: "space-y-5",
|
|
156
|
+
children: [
|
|
157
|
+
/* @__PURE__ */ jsxs("dl", {
|
|
158
|
+
className: "grid gap-3 text-sm sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2",
|
|
159
|
+
children: [
|
|
160
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
161
|
+
label: "Attempt",
|
|
162
|
+
value: `${selected.attemptKind}:${selected.attemptId}`
|
|
163
|
+
}),
|
|
164
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
165
|
+
label: "Operation",
|
|
166
|
+
value: selected.operation
|
|
167
|
+
}),
|
|
168
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
169
|
+
label: "Path",
|
|
170
|
+
value: `${endpoint(selected.source)} → ${endpoint(selected.target)}`
|
|
171
|
+
}),
|
|
172
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
173
|
+
label: "Policy",
|
|
174
|
+
value: selected.policyRefs.map((ref) => `${ref.teamId}@${ref.revision}`).join(", ")
|
|
175
|
+
}),
|
|
176
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
177
|
+
label: "Expires",
|
|
178
|
+
value: formatTimestamp(selected.expiresAt)
|
|
179
|
+
})
|
|
180
|
+
]
|
|
181
|
+
}),
|
|
182
|
+
/* @__PURE__ */ jsxs("details", {
|
|
183
|
+
className: "rounded-lg border border-border bg-muted/30 p-3",
|
|
184
|
+
children: [/* @__PURE__ */ jsx("summary", {
|
|
185
|
+
className: "cursor-pointer text-sm font-semibold",
|
|
186
|
+
children: "Sensitive payload"
|
|
187
|
+
}), /* @__PURE__ */ jsx("pre", {
|
|
188
|
+
className: "mt-3 max-h-48 overflow-auto rounded-lg bg-background p-3 text-xs",
|
|
189
|
+
children: JSON.stringify(selected.payload, null, 2)
|
|
190
|
+
})]
|
|
191
|
+
}),
|
|
192
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h3", {
|
|
193
|
+
className: "m-0 font-body text-sm font-semibold text-foreground",
|
|
194
|
+
children: "Audit history"
|
|
195
|
+
}), /* @__PURE__ */ jsx("ol", {
|
|
196
|
+
className: "mt-2 divide-y divide-border rounded-lg border border-border text-xs",
|
|
197
|
+
children: selected.events.map((item) => /* @__PURE__ */ jsxs("li", {
|
|
198
|
+
className: "px-3 py-2 leading-5",
|
|
199
|
+
children: [
|
|
200
|
+
formatTimestamp(item.createdAt),
|
|
201
|
+
" · ",
|
|
202
|
+
item.event,
|
|
203
|
+
" · ",
|
|
204
|
+
item.actor
|
|
205
|
+
]
|
|
206
|
+
}, item.id))
|
|
207
|
+
})] }),
|
|
208
|
+
notice && /* @__PURE__ */ jsx("p", {
|
|
209
|
+
role: "status",
|
|
210
|
+
className: "rounded-lg bg-muted px-3 py-2 text-sm",
|
|
211
|
+
children: notice
|
|
212
|
+
}),
|
|
213
|
+
selected.status === "pending" && /* @__PURE__ */ jsxs("div", {
|
|
214
|
+
className: "flex flex-wrap gap-2",
|
|
215
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
216
|
+
variant: "primary",
|
|
217
|
+
disabled: busy,
|
|
218
|
+
onClick: () => void decide("approve"),
|
|
219
|
+
children: "Approve once"
|
|
220
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
221
|
+
variant: "danger",
|
|
222
|
+
disabled: busy,
|
|
223
|
+
onClick: () => void decide("deny"),
|
|
224
|
+
children: "Deny"
|
|
225
|
+
})]
|
|
226
|
+
})
|
|
227
|
+
]
|
|
228
|
+
})
|
|
229
|
+
})
|
|
230
|
+
})]
|
|
231
|
+
})]
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
function Status({ value }) {
|
|
235
|
+
return /* @__PURE__ */ jsx(StatusBadge, {
|
|
236
|
+
variant: statusVariant(value),
|
|
237
|
+
children: statusLabel(value)
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
function statusVariant(value) {
|
|
241
|
+
switch (value) {
|
|
242
|
+
case "pending": return "warning";
|
|
243
|
+
case "approved":
|
|
244
|
+
case "delivering": return "info";
|
|
245
|
+
case "delivered": return "success";
|
|
246
|
+
case "denied":
|
|
247
|
+
case "delivery_failed": return "danger";
|
|
248
|
+
case "expired":
|
|
249
|
+
case "cancelled": return "neutral";
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function statusLabel(value) {
|
|
253
|
+
const label = value.replaceAll("_", " ");
|
|
254
|
+
return `${label.charAt(0).toUpperCase()}${label.slice(1)}`;
|
|
255
|
+
}
|
|
256
|
+
function endpoint(value) {
|
|
257
|
+
return value.kind === "agent" ? `Agent ${value.id}` : value.kind === "user" ? "User" : `Outside ${value.teamId}`;
|
|
258
|
+
}
|
|
259
|
+
function Fact({ label, value }) {
|
|
260
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
261
|
+
className: "rounded-lg bg-muted/40 p-3",
|
|
262
|
+
children: [/* @__PURE__ */ jsx("dt", {
|
|
263
|
+
className: "text-xs font-semibold uppercase tracking-wide text-muted-foreground",
|
|
264
|
+
children: label
|
|
265
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
266
|
+
className: "mt-1 break-all text-foreground",
|
|
267
|
+
children: value
|
|
268
|
+
})]
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
var timestampFormatter = new Intl.DateTimeFormat("en-GB", {
|
|
272
|
+
dateStyle: "medium",
|
|
273
|
+
timeStyle: "medium",
|
|
274
|
+
timeZone: "UTC"
|
|
275
|
+
});
|
|
276
|
+
function formatTimestamp(value) {
|
|
277
|
+
return `${timestampFormatter.format(new Date(value))} UTC`;
|
|
278
|
+
}
|
|
279
|
+
//#endregion
|
|
280
|
+
export { ApprovalQueue as component };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
|
-
import { t as createServerRpc } from "./createServerRpc-
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
|
|
3
3
|
import { n as daemonClient, r as ApiClientError } from "./daemon-client-2NRMzlTr.js";
|
|
4
4
|
//#region src/lib/auth.ts?tss-serverfn-split
|
|
5
5
|
var fetchAuthState_createServerFn_handler = createServerRpc({
|
|
@@ -19,7 +19,11 @@ var fetchAuthState = createServerFn({ method: "GET" }).handler(fetchAuthState_cr
|
|
|
19
19
|
authed: false,
|
|
20
20
|
setupComplete: false
|
|
21
21
|
};
|
|
22
|
-
|
|
22
|
+
return {
|
|
23
|
+
authed: true,
|
|
24
|
+
setupComplete: true,
|
|
25
|
+
degraded: true
|
|
26
|
+
};
|
|
23
27
|
}
|
|
24
28
|
});
|
|
25
29
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
|
-
import { t as createServerRpc } from "./createServerRpc-
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
|
|
3
3
|
import { n as daemonClient } from "./daemon-client-2NRMzlTr.js";
|
|
4
4
|
//#region src/routes/config/index.tsx?tss-serverfn-split
|
|
5
5
|
var fetchProvidersData_createServerFn_handler = createServerRpc({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { t as Route } from "./config-
|
|
2
|
-
import { t as
|
|
3
|
-
import { t as FieldRow } from "./FieldRow-
|
|
1
|
+
import { t as Route } from "./config-TeIoyYYc.js";
|
|
2
|
+
import { t as ConfigPage } from "./ConfigPage-BKlh5vOU.js";
|
|
3
|
+
import { t as FieldRow } from "./FieldRow-B4eTegH9.js";
|
|
4
4
|
import { useState } from "react";
|
|
5
5
|
import { useRouter } from "@tanstack/react-router";
|
|
6
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -8,41 +8,20 @@ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
|
8
8
|
function ProvidersPage() {
|
|
9
9
|
const { providers, openaiCodex } = Route.useLoaderData();
|
|
10
10
|
const setupComplete = providers.some((p) => p.enabled && p.curated.length > 0);
|
|
11
|
-
return /* @__PURE__ */ jsxs(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
openaiCodex
|
|
22
|
-
}),
|
|
23
|
-
/* @__PURE__ */ jsxs("p", {
|
|
24
|
-
className: "text-muted-foreground text-sm mb-6",
|
|
25
|
-
children: [
|
|
26
|
-
"Each card configures one LLM provider end to end: credentials (encrypted in the",
|
|
27
|
-
" ",
|
|
28
|
-
/* @__PURE__ */ jsx("code", {
|
|
29
|
-
className: "font-mono",
|
|
30
|
-
children: "secrets"
|
|
31
|
-
}),
|
|
32
|
-
" table), URLs and IDs (plaintext in the",
|
|
33
|
-
" ",
|
|
34
|
-
/* @__PURE__ */ jsx("code", {
|
|
35
|
-
className: "font-mono",
|
|
36
|
-
children: "config"
|
|
37
|
-
}),
|
|
38
|
-
" table), and the curated model list that powers profile / agent dropdowns."
|
|
39
|
-
]
|
|
40
|
-
}),
|
|
41
|
-
providers.map((p) => /* @__PURE__ */ jsx(ProviderCard, {
|
|
11
|
+
return /* @__PURE__ */ jsxs(ConfigPage, {
|
|
12
|
+
active: "providers",
|
|
13
|
+
title: "Providers",
|
|
14
|
+
description: /* @__PURE__ */ jsx(Fragment, { children: "Configure credentials, endpoints, and the curated model lists used by agent templates and running agents. Secrets are encrypted; URLs and IDs remain inspectable configuration." }),
|
|
15
|
+
children: [!setupComplete && /* @__PURE__ */ jsx(SetupBlockerBanner, {
|
|
16
|
+
providers,
|
|
17
|
+
openaiCodex
|
|
18
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
19
|
+
className: "space-y-3",
|
|
20
|
+
children: providers.map((p) => /* @__PURE__ */ jsx(ProviderCard, {
|
|
42
21
|
p,
|
|
43
22
|
openaiCodexStatus: p.id === "openai-codex" ? openaiCodex : void 0
|
|
44
23
|
}, p.id))
|
|
45
|
-
]
|
|
24
|
+
})]
|
|
46
25
|
});
|
|
47
26
|
}
|
|
48
27
|
function SetupBlockerBanner({ providers, openaiCodex }) {
|
|
@@ -54,14 +33,14 @@ function SetupBlockerBanner({ providers, openaiCodex }) {
|
|
|
54
33
|
}
|
|
55
34
|
const enabledCount = providers.filter((p) => p.enabled).length;
|
|
56
35
|
return /* @__PURE__ */ jsxs("div", {
|
|
57
|
-
className: "rounded-md border-2 border-
|
|
36
|
+
className: "rounded-md border-2 border-warning/25 bg-warning/10 px-4 py-3 text-sm",
|
|
58
37
|
children: [
|
|
59
38
|
/* @__PURE__ */ jsx("div", {
|
|
60
|
-
className: "font-semibold text-
|
|
39
|
+
className: "font-semibold text-warning mb-1",
|
|
61
40
|
children: "First-run setup is not complete"
|
|
62
41
|
}),
|
|
63
42
|
/* @__PURE__ */ jsxs("p", {
|
|
64
|
-
className: "text-
|
|
43
|
+
className: "text-warning mb-2",
|
|
65
44
|
children: [
|
|
66
45
|
"The rest of the app stays on the Welcome screen until at least one provider is",
|
|
67
46
|
" ",
|
|
@@ -72,10 +51,10 @@ function SetupBlockerBanner({ providers, openaiCodex }) {
|
|
|
72
51
|
]
|
|
73
52
|
}),
|
|
74
53
|
issues.length > 0 ? /* @__PURE__ */ jsx("ul", {
|
|
75
|
-
className: "list-disc pl-5 text-
|
|
54
|
+
className: "list-disc pl-5 text-warning space-y-0.5",
|
|
76
55
|
children: issues.map((i) => /* @__PURE__ */ jsx("li", { children: i }, i))
|
|
77
56
|
}) : enabledCount === 0 ? /* @__PURE__ */ jsx("p", {
|
|
78
|
-
className: "text-
|
|
57
|
+
className: "text-warning",
|
|
79
58
|
children: "No providers are enabled yet — pick one below, flip the toggle on, set credentials, and save at least one model name."
|
|
80
59
|
}) : null
|
|
81
60
|
]
|
|
@@ -124,9 +103,9 @@ function ProviderCard({ p, openaiCodexStatus }) {
|
|
|
124
103
|
}
|
|
125
104
|
}
|
|
126
105
|
return /* @__PURE__ */ jsxs("section", {
|
|
127
|
-
className: "rounded-lg border bg-card
|
|
106
|
+
className: "overflow-hidden rounded-lg border bg-card",
|
|
128
107
|
children: [/* @__PURE__ */ jsxs("header", {
|
|
129
|
-
className: "flex items-center gap-3 px-4 py-3",
|
|
108
|
+
className: "flex flex-wrap items-center gap-3 px-4 py-3",
|
|
130
109
|
children: [
|
|
131
110
|
/* @__PURE__ */ jsx("span", {
|
|
132
111
|
className: "font-mono font-semibold",
|
|
@@ -144,12 +123,12 @@ function ProviderCard({ p, openaiCodexStatus }) {
|
|
|
144
123
|
onChange: (e) => toggle(e.target.checked),
|
|
145
124
|
className: "size-4"
|
|
146
125
|
}), /* @__PURE__ */ jsx("span", {
|
|
147
|
-
className: enabled ? "text-
|
|
126
|
+
className: enabled ? "text-success" : "text-muted-foreground",
|
|
148
127
|
children: enabled ? "enabled" : "disabled"
|
|
149
128
|
})]
|
|
150
129
|
}),
|
|
151
130
|
/* @__PURE__ */ jsxs("span", {
|
|
152
|
-
className: "
|
|
131
|
+
className: "w-full text-xs text-muted-foreground sm:ml-auto sm:w-auto",
|
|
153
132
|
children: [
|
|
154
133
|
p.curated.length > 0 && /* @__PURE__ */ jsxs("span", { children: [p.curated.length, " curated"] }),
|
|
155
134
|
p.catalog.length > 0 && /* @__PURE__ */ jsxs("span", { children: [
|
|
@@ -186,7 +165,7 @@ function ProviderCard({ p, openaiCodexStatus }) {
|
|
|
186
165
|
children: "curated models (one per line)"
|
|
187
166
|
}),
|
|
188
167
|
p.curated.length === 0 && /* @__PURE__ */ jsxs("p", {
|
|
189
|
-
className: "mb-2 text-xs font-medium text-
|
|
168
|
+
className: "mb-2 text-xs font-medium text-warning",
|
|
190
169
|
children: [
|
|
191
170
|
"First-run setup needs at least one model name here — type one (e.g.",
|
|
192
171
|
" ",
|
|
@@ -236,7 +215,7 @@ function ProviderCard({ p, openaiCodexStatus }) {
|
|
|
236
215
|
onPick: (name) => setModels((m) => m.includes(name) ? m : `${m}\n${name}`.trim())
|
|
237
216
|
})] }),
|
|
238
217
|
p.live?.error && /* @__PURE__ */ jsxs("p", {
|
|
239
|
-
className: "text-xs text-
|
|
218
|
+
className: "text-xs text-danger mt-2",
|
|
240
219
|
children: ["could not fetch: ", p.live.error]
|
|
241
220
|
})
|
|
242
221
|
]
|
|
@@ -245,8 +224,8 @@ function ProviderCard({ p, openaiCodexStatus }) {
|
|
|
245
224
|
}
|
|
246
225
|
function exampleModelFor(providerId) {
|
|
247
226
|
switch (providerId) {
|
|
248
|
-
case "openai-codex": return "gpt-5.
|
|
249
|
-
case "openai": return "gpt-5.
|
|
227
|
+
case "openai-codex": return "gpt-5.6-luna";
|
|
228
|
+
case "openai": return "gpt-5.6-luna";
|
|
250
229
|
case "anthropic": return "claude-opus-4-8";
|
|
251
230
|
case "google": return "gemini-3-pro-preview";
|
|
252
231
|
case "google-vertex": return "gemini-3.1-pro-preview";
|
|
@@ -278,7 +257,7 @@ function exampleModelFor(providerId) {
|
|
|
278
257
|
case "opencode": return "claude-opus-4-8";
|
|
279
258
|
case "opencode-go": return "kimi-k2.7-code";
|
|
280
259
|
case "zai-coding-cn": return "glm-5.2";
|
|
281
|
-
case "azure-openai": return "gpt-5.
|
|
260
|
+
case "azure-openai": return "gpt-5.6-luna";
|
|
282
261
|
case "bedrock": return "anthropic.claude-opus-4-8";
|
|
283
262
|
case "ollama": return "llama3.3";
|
|
284
263
|
case "lmstudio": return "qwen3-coder-30b";
|
|
@@ -335,7 +314,7 @@ function OpenAICodexCard({ status }) {
|
|
|
335
314
|
className: "flex flex-wrap gap-2 items-center mb-2",
|
|
336
315
|
children: [
|
|
337
316
|
/* @__PURE__ */ jsx("span", {
|
|
338
|
-
className: "rounded-full bg-
|
|
317
|
+
className: "rounded-full bg-success/10 text-success px-2 py-0.5 text-xs font-semibold uppercase",
|
|
339
318
|
children: "connected"
|
|
340
319
|
}),
|
|
341
320
|
status.accountId && /* @__PURE__ */ jsxs("span", {
|
|
@@ -358,7 +337,7 @@ function OpenAICodexCard({ status }) {
|
|
|
358
337
|
type: "button",
|
|
359
338
|
onClick: disconnect,
|
|
360
339
|
disabled: busy,
|
|
361
|
-
className: "rounded-md border px-3 py-1.5 text-sm text-
|
|
340
|
+
className: "rounded-md border px-3 py-1.5 text-sm text-danger hover:bg-danger/10 disabled:opacity-50",
|
|
362
341
|
children: "disconnect"
|
|
363
342
|
})] }) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsxs("p", {
|
|
364
343
|
className: "text-xs text-muted-foreground mb-2",
|
|
@@ -382,7 +361,7 @@ function OpenAICodexCard({ status }) {
|
|
|
382
361
|
className: "rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-foreground disabled:opacity-50",
|
|
383
362
|
children: busy ? "opening browser…" : "Connect ChatGPT →"
|
|
384
363
|
})] }), err && /* @__PURE__ */ jsx("p", {
|
|
385
|
-
className: "text-sm text-
|
|
364
|
+
className: "text-sm text-danger mt-2",
|
|
386
365
|
children: err
|
|
387
366
|
})]
|
|
388
367
|
});
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
|
-
import { t as createSsrRpc } from "./createSsrRpc-
|
|
2
|
+
import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/config/index.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./config-
|
|
5
|
+
var $$splitComponentImporter = () => import("./config-D2LAsud2.js");
|
|
6
6
|
var fetchProvidersData = createServerFn({ method: "GET" }).handler(createSsrRpc("b18a227687dba45b99ea5a2ac7a5bf8efcd9bc54387bc279cd87510fd2f83f7e"));
|
|
7
7
|
var Route = createFileRoute("/config/")({
|
|
8
8
|
loader: () => fetchProvidersData(),
|
|
@@ -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/teams/$id/context.tsx?tss-serverfn-split
|
|
5
|
+
var fetchContext_createServerFn_handler = createServerRpc({
|
|
6
|
+
id: "b859e1340a80871c50b0d3e60bd3f3b48fe3c66b083f8ff9d5b2981720d36a81",
|
|
7
|
+
name: "fetchContext",
|
|
8
|
+
filename: "src/routes/teams/$id/context.tsx"
|
|
9
|
+
}, (opts) => fetchContext.__executeServer(opts));
|
|
10
|
+
var fetchContext = createServerFn({ method: "POST" }).inputValidator((data) => data).handler(fetchContext_createServerFn_handler, ({ data }) => daemonClient().get(`/api/teams/${encodeURIComponent(data.id)}`));
|
|
11
|
+
//#endregion
|
|
12
|
+
export { fetchContext_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/teams/$id/context.tsx
|
|
5
|
+
var $$splitComponentImporter = () => import("./context-DrkrIWun.js");
|
|
6
|
+
var fetchContext = createServerFn({ method: "POST" }).inputValidator((data) => data).handler(createSsrRpc("b859e1340a80871c50b0d3e60bd3f3b48fe3c66b083f8ff9d5b2981720d36a81"));
|
|
7
|
+
var Route = createFileRoute("/teams/$id/context")({
|
|
8
|
+
loader: ({ params }) => fetchContext({ data: params }),
|
|
9
|
+
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
10
|
+
});
|
|
11
|
+
//#endregion
|
|
12
|
+
export { Route as t };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { t as Route } from "./context-BXGo5Vfi.js";
|
|
2
|
+
import { r as PageShell } from "./Page-LENulSXY.js";
|
|
3
|
+
import { t as TeamTabs } from "./TeamTabs-zZzbP1t_.js";
|
|
4
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
+
//#region src/routes/teams/$id/context.tsx?tsr-split=component
|
|
6
|
+
function ContextPage() {
|
|
7
|
+
const team = Route.useLoaderData();
|
|
8
|
+
return /* @__PURE__ */ jsxs(PageShell, { children: [
|
|
9
|
+
/* @__PURE__ */ jsx("h1", { children: "Team context" }),
|
|
10
|
+
/* @__PURE__ */ jsx("p", {
|
|
11
|
+
className: "muted",
|
|
12
|
+
children: "Workspace, operator context, and integrations owned by this Team."
|
|
13
|
+
}),
|
|
14
|
+
/* @__PURE__ */ jsx(TeamTabs, { teamId: team.id }),
|
|
15
|
+
/* @__PURE__ */ jsxs("section", {
|
|
16
|
+
className: "card",
|
|
17
|
+
children: [/* @__PURE__ */ jsxs("dl", {
|
|
18
|
+
className: "grid gap-4 sm:grid-cols-2",
|
|
19
|
+
children: [
|
|
20
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
|
|
21
|
+
className: "muted",
|
|
22
|
+
children: "workspace path"
|
|
23
|
+
}), /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("code", { children: team.path }) })] }),
|
|
24
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
|
|
25
|
+
className: "muted",
|
|
26
|
+
children: "Telegram topic format"
|
|
27
|
+
}), /* @__PURE__ */ jsx("dd", { children: /* @__PURE__ */ jsx("code", { children: team.telegramTopicNameFormat ?? "built-in naming" }) })] }),
|
|
28
|
+
/* @__PURE__ */ jsxs("div", {
|
|
29
|
+
className: "sm:col-span-2",
|
|
30
|
+
children: [/* @__PURE__ */ jsx("dt", {
|
|
31
|
+
className: "muted",
|
|
32
|
+
children: "USER.md"
|
|
33
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
34
|
+
className: "mt-2 whitespace-pre-wrap rounded-md border border-frost bg-ivory p-3 text-sm",
|
|
35
|
+
children: team.userMd || "No operator context configured."
|
|
36
|
+
})]
|
|
37
|
+
})
|
|
38
|
+
]
|
|
39
|
+
}), /* @__PURE__ */ jsx("p", {
|
|
40
|
+
className: "mt-4 text-sm text-mocha",
|
|
41
|
+
children: "Edit USER.md and Telegram naming from Overview during this transition. This route is the canonical context projection."
|
|
42
|
+
})]
|
|
43
|
+
})
|
|
44
|
+
] });
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { ContextPage as component };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as TSS_SERVER_FUNCTION } from "../server.js";
|
|
2
|
-
//#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.
|
|
2
|
+
//#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.17/node_modules/@tanstack/start-server-core/dist/esm/createServerRpc.js
|
|
3
3
|
var createServerRpc = (serverFnMeta, splitImportFn) => {
|
|
4
4
|
const url = "/_serverFn/" + serverFnMeta.id;
|
|
5
5
|
return Object.assign(splitImportFn, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { n as TSS_SERVER_FUNCTION, r as getServerFnById } from "../server.js";
|
|
2
|
-
//#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.
|
|
2
|
+
//#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.17/node_modules/@tanstack/start-server-core/dist/esm/createSsrRpc.js
|
|
3
3
|
var createSsrRpc = (functionId) => {
|
|
4
4
|
const url = "/_serverFn/" + functionId;
|
|
5
5
|
const serverFnMeta = { id: functionId };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.
|
|
1
|
+
//#region ../../node_modules/.pnpm/@tanstack+start-server-core@1.169.17/node_modules/@tanstack/start-server-core/dist/esm/empty-plugin-adapters.js
|
|
2
2
|
var pluginSerializationAdapters = [];
|
|
3
3
|
var hasPluginAdapters = false;
|
|
4
4
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
|
-
import { t as createServerRpc } from "./createServerRpc-
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-pU-IQV2Y.js";
|
|
3
3
|
import { n as daemonClient, r as ApiClientError } from "./daemon-client-2NRMzlTr.js";
|
|
4
4
|
//#region src/routes/agents/$id/inbox.tsx?tss-serverfn-split
|
|
5
5
|
var fetchInbox_createServerFn_handler = createServerRpc({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
|
-
import { t as createSsrRpc } from "./createSsrRpc-
|
|
2
|
+
import { t as createSsrRpc } from "./createSsrRpc-DFsIAfFd.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/agents/$id/inbox.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./inbox-
|
|
5
|
+
var $$splitComponentImporter = () => import("./inbox-CUIyf9MT.js");
|
|
6
6
|
var fetchInbox = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("2cd8c6ec40e2e2d9518b5f127a518ecd83a2222d85665cc61d5144bcf59ed4fb"));
|
|
7
7
|
var Route = createFileRoute("/agents/$id/inbox")({
|
|
8
8
|
validateSearch: (s) => ({
|