bazilion 0.8.0 → 0.9.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 +1184 -628
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +5194 -1574
- package/dist/daemon.js.map +1 -1
- package/dist/migrations/0001_init.sql +318 -88
- package/dist/web/client/assets/{FieldRow-CNKma5LE.js → FieldRow-DmwAFfbF.js} +1 -1
- package/dist/web/client/assets/ProductionTeamPolicyEditor-1a5jQqUB.js +7 -0
- package/dist/web/client/assets/ProductionTeamPolicyEditor-DLioOiRN.css +1 -0
- package/dist/web/client/assets/ProfileCommunicationEditor-D1OZ8WE5.js +1 -0
- package/dist/web/client/assets/RecoveryState-QfMSuwy3.js +1 -0
- package/dist/web/client/assets/TeamTabs-BViZ4sti.js +1 -0
- package/dist/web/client/assets/TemplatesTabs-DVcY9pMD.js +1 -0
- package/dist/web/client/assets/_id-8P7brhGy.js +1 -0
- package/dist/web/client/assets/_id-C3o3MHq8.js +1 -0
- package/dist/web/client/assets/_id-DGRrSF1e.js +1 -0
- package/dist/web/client/assets/_id-DGyKURCp.js +1 -0
- package/dist/web/client/assets/_id-KnJe-aW9.js +1 -0
- package/dist/web/client/assets/activity-DJuhhQCb.js +1 -0
- package/dist/web/client/assets/activity-WWvJSo4t.js +1 -0
- package/dist/web/client/assets/agents-C32T1voV.js +1 -0
- package/dist/web/client/assets/agents-nH4m4gZ1.js +1 -0
- package/dist/web/client/assets/approvals-DGi0PSx8.js +1 -0
- package/dist/web/client/assets/approvals-l8jIZjqz.js +1 -0
- package/dist/web/client/assets/{config-DIuEc5bm.js → config-C7wvi1nR.js} +2 -2
- package/dist/web/client/assets/context-BEGWE3RC.js +1 -0
- package/dist/web/client/assets/inbox--4aBaAgG.js +1 -0
- package/dist/web/client/assets/index-BCXoh1c8.js +12 -0
- package/dist/web/client/assets/{login-CawJX16E.js → login-Bk2wwIHQ.js} +1 -1
- package/dist/web/client/assets/{mcp-DIrh9-v_.js → mcp-vM7xgh9e.js} +1 -1
- package/dist/web/client/assets/members-cPKfnrSL.js +1 -0
- package/dist/web/client/assets/memory-BOcsaemD.js +1 -0
- package/dist/web/client/assets/policy-BGLCJYvS.js +1 -0
- package/dist/web/client/assets/policy-K4hIbbIN.js +1 -0
- package/dist/web/client/assets/{preload-helper-CvnapA2_.js → preload-helper-eOOCz1Fu.js} +1 -1
- package/dist/web/client/assets/routes-DnrP3dwv.js +1 -0
- package/dist/web/client/assets/services-C2_O3ifw.js +1 -0
- package/dist/web/client/assets/{skills-Da0MURjY.js → skills-B__fLZjx.js} +1 -1
- package/dist/web/client/assets/styles-Dn24-ZvP.css +2 -0
- package/dist/web/client/assets/team-policy-BdX340m4.js +1 -0
- package/dist/web/client/assets/teams-CSNyLz3l.js +1 -0
- package/dist/web/client/assets/teams-DZMB4_iw.js +1 -0
- package/dist/web/client/assets/teams-rpaYKNIb.js +1 -0
- package/dist/web/client/assets/telegram-B1O4Ko0V.js +1 -0
- package/dist/web/client/assets/{tokens-E_JvO5JN.js → tokens-D7FH9VgA.js} +1 -1
- package/dist/web/client/assets/triggers-3PLy2_Fo.js +1 -0
- package/dist/web/client/assets/welcome-B-QQobzq.js +1 -0
- package/dist/web/client/assets/{ChatPane-DzEgOEqS.js → wire-constants-BY9Q9Z7d.js} +4 -4
- package/dist/web/server/assets/{ChatPane-BvpswYvF.js → ChatPane-Dh3qxzdb.js} +23 -12
- package/dist/web/server/assets/ProductionTeamPolicyEditor-Bke5doyl.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/{Sidebar-DmEiewRN.js → Sidebar-CGmtCnYU.js} +372 -48
- package/dist/web/server/assets/TeamTabs-BPxDBfqy.js +50 -0
- package/dist/web/server/assets/{TemplatesTabs---7h5GYa.js → TemplatesTabs-zf4YhStd.js} +6 -6
- package/dist/web/server/assets/{_id-CXg-Blec.js → _id-5lLzLwcv.js} +52 -40
- package/dist/web/server/assets/_id-A8Xiv6Lc.js +11 -0
- package/dist/web/server/assets/{_id-BqnDy_Ca.js → _id-B04VaQlh.js} +6 -5
- package/dist/web/server/assets/{_id-BdRiQb2H.js → _id-B6g9wmPR.js} +126 -27
- package/dist/web/server/assets/_id-ButXHnRH.js +14 -0
- package/dist/web/server/assets/_id-C4AOhstq.js +44 -0
- package/dist/web/server/assets/{_id-DDixKEud.js → _id-CCHA0gdR.js} +72 -12
- package/dist/web/server/assets/{_id-D_Ew11ED.js → _id-CUWgTqMS.js} +8 -8
- package/dist/web/server/assets/_id-DJkzwHjM.js +42 -0
- package/dist/web/server/assets/{_id-CnQflrRv.js → _id-DdC9wpNN.js} +5 -5
- package/dist/web/server/assets/{_id-DUIrFV3G.js → _id-DkFgCIb-.js} +9 -1
- package/dist/web/server/assets/{_id-D8duqgd5.js → _id-_nFwi9gD.js} +5 -4
- package/dist/web/server/assets/{_id-Sjw0zhA6.js → _id-fpFQ9_Ya.js} +4 -4
- package/dist/web/server/assets/_tanstack-start-manifest_v-Div-TukY.js +241 -0
- package/dist/web/server/assets/activity-C2ZKg1Q9.js +170 -0
- package/dist/web/server/assets/activity-CGCf8BQf.js +11 -0
- package/dist/web/server/assets/activity-DedraoFj.js +14 -0
- package/dist/web/server/assets/activity-GPx8NCeB.js +12 -0
- package/dist/web/server/assets/{profiles-CZ5NkmVw.js → agents-B8kinIPW.js} +4 -4
- package/dist/web/server/assets/{agents-k5QURC4I.js → agents-BR2qXlXF.js} +4 -4
- package/dist/web/server/assets/{agents-ChcAJUI5.js → agents-Bp1nsVs2.js} +1 -1
- package/dist/web/server/assets/{profiles-LxcC_L6n.js → agents-CUQmWhTp.js} +36 -10
- package/dist/web/server/assets/{agents-C7SBPN0M.js → agents-DU9Hqs58.js} +51 -12
- package/dist/web/server/assets/{profiles-C6a3RKgu.js → agents-LHowEI6S.js} +4 -4
- package/dist/web/server/assets/approvals-CbFXFvG8.js +11 -0
- package/dist/web/server/assets/approvals-DHgARzd8.js +242 -0
- package/dist/web/server/assets/approvals-Dw2LJoSA.js +14 -0
- package/dist/web/server/assets/approvals-VPc0YpLN.js +12 -0
- package/dist/web/server/assets/{auth-DzRAMwVt.js → auth-l-Vf8wlu.js} +5 -1
- package/dist/web/server/assets/{config-CdVjqjin.js → config-BvKctDOX.js} +4 -4
- package/dist/web/server/assets/{config-Bq3o924J.js → config-QvHaxGlP.js} +1 -1
- package/dist/web/server/assets/context-5lrf2ame.js +12 -0
- package/dist/web/server/assets/context-CEr4-xiA.js +49 -0
- package/dist/web/server/assets/context-D3Egm-vY.js +12 -0
- package/dist/web/server/assets/members-40DxRdVj.js +48 -0
- package/dist/web/server/assets/members-DlGBKZNl.js +12 -0
- package/dist/web/server/assets/members-ksELRsyk.js +12 -0
- package/dist/web/server/assets/{memory-Ns2-Z31p.js → memory-B5moRnnp.js} +5 -5
- package/dist/web/server/assets/{memory-BaYnfm7K.js → memory-CO0jKGzJ.js} +8 -8
- package/dist/web/server/assets/memory-CiTl4cN9.js +289 -0
- package/dist/web/server/assets/policy-BYVXqsan.js +11 -0
- package/dist/web/server/assets/policy-DNcGZLOB.js +21 -0
- package/dist/web/server/assets/policy-Dr55y-Mh.js +496 -0
- package/dist/web/server/assets/policy-Dxs78_GO.js +40 -0
- package/dist/web/server/assets/{router-BrDascdO.js → router-_izWQUeG.js} +156 -101
- package/dist/web/server/assets/{routes-Ce2VWrU9.js → routes-BSSKp3Rv.js} +4 -4
- package/dist/web/server/assets/{routes-C61gBiXa.js → routes-BrTOoeth.js} +5 -5
- package/dist/web/server/assets/{routes-V9URcp1v.js → routes-DOj6ljcm.js} +1 -1
- package/dist/web/server/assets/{services-B91w2f-X.js → services-CHe4ihJk.js} +11 -11
- package/dist/web/server/assets/{services-Ccc5s2bS.js → services-Pv_V88VA.js} +3 -3
- package/dist/web/server/assets/{start-CYDpZ6cb.js → start-DlHq0RaQ.js} +1 -1
- package/dist/web/server/assets/team-policy-Csvc5EDd.js +180 -0
- package/dist/web/server/assets/teams-35Oprf6e.js +14 -0
- package/dist/web/server/assets/teams-3im0oQnS.js +11 -0
- package/dist/web/server/assets/teams-B5IF65p2.js +12 -0
- package/dist/web/server/assets/teams-B9O-WDH5.js +108 -0
- package/dist/web/server/assets/teams-DFkN7ic7.js +36 -0
- package/dist/web/server/assets/teams-DH1CvWmT.js +12 -0
- package/dist/web/server/assets/teams-zcm9XaQU.js +174 -0
- package/dist/web/server/assets/{telegram-DfAddLdv.js → telegram-C9sQFwWj.js} +7 -7
- package/dist/web/server/assets/{telegram-T3l9KtiE.js → telegram-mTnJCOmn.js} +1 -1
- package/dist/web/server/assets/{welcome-CP4CZ9B6.js → welcome-CDGE2Sdk.js} +2 -2
- package/dist/web/server/assets/{wire-constants-Deb4NxBb.js → wire-constants-C8nBJcU3.js} +3 -3
- package/dist/web/server/server.js +64 -42
- package/dist/worker.js +180 -128
- package/dist/worker.js.map +1 -1
- package/package.json +7 -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/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/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/memory-BpHbdKsd.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/styles-BgE5bCHA.css +0 -2
- package/dist/web/client/assets/telegram-Czh2MdVm.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/MembersEditor-BWQztvrX.js +0 -131
- 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/_tanstack-start-manifest_v-D9FLKShQ.js +0 -178
- 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/memory-CQaqWnyM.js +0 -284
- 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
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { t as Route } from "./activity-DedraoFj.js";
|
|
2
|
+
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
3
|
+
import { t as TeamTabs } from "./TeamTabs-BPxDBfqy.js";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
import { ChevronDown } from "lucide-react";
|
|
7
|
+
//#region src/routes/teams/$id/activity.tsx?tsr-split=component
|
|
8
|
+
function ActivityPage() {
|
|
9
|
+
const initial = Route.useLoaderData();
|
|
10
|
+
const { id } = Route.useParams();
|
|
11
|
+
const [page, setPage] = useState(initial);
|
|
12
|
+
const [loading, setLoading] = useState(false);
|
|
13
|
+
const [error, setError] = useState(null);
|
|
14
|
+
const loadMore = async () => {
|
|
15
|
+
if (!page.nextCursor) return;
|
|
16
|
+
setLoading(true);
|
|
17
|
+
setError(null);
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetch(`/api/teams/${encodeURIComponent(id)}/policy/blocks?limit=25&cursor=${encodeURIComponent(page.nextCursor)}`);
|
|
20
|
+
if (!response.ok) throw new Error(`Could not load activity (${response.status})`);
|
|
21
|
+
const next = await response.json();
|
|
22
|
+
setPage({
|
|
23
|
+
blocks: [...page.blocks, ...next.blocks],
|
|
24
|
+
nextCursor: next.nextCursor
|
|
25
|
+
});
|
|
26
|
+
} catch (cause) {
|
|
27
|
+
setError(cause instanceof Error ? cause.message : String(cause));
|
|
28
|
+
} finally {
|
|
29
|
+
setLoading(false);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
33
|
+
className: "mx-auto max-w-5xl space-y-5 px-4 py-6 sm:px-6",
|
|
34
|
+
children: [
|
|
35
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("h1", { children: "blocked communication" }), /* @__PURE__ */ jsx("p", {
|
|
36
|
+
className: "muted",
|
|
37
|
+
children: "Durable denial evidence. Diagnostic simulations never create these records."
|
|
38
|
+
})] }),
|
|
39
|
+
/* @__PURE__ */ jsx(TeamTabs, { teamId: id }),
|
|
40
|
+
/* @__PURE__ */ jsxs("div", {
|
|
41
|
+
className: "space-y-3",
|
|
42
|
+
children: [page.blocks.map((block) => /* @__PURE__ */ jsx(BlockCard, { block }, block.id)), page.blocks.length === 0 && /* @__PURE__ */ jsx("p", {
|
|
43
|
+
className: "card muted",
|
|
44
|
+
children: "No blocked communication has been recorded for this team."
|
|
45
|
+
})]
|
|
46
|
+
}),
|
|
47
|
+
error && /* @__PURE__ */ jsx("p", {
|
|
48
|
+
role: "alert",
|
|
49
|
+
className: "err",
|
|
50
|
+
children: error
|
|
51
|
+
}),
|
|
52
|
+
page.nextCursor && /* @__PURE__ */ jsx(Button, {
|
|
53
|
+
variant: "ghost",
|
|
54
|
+
disabled: loading,
|
|
55
|
+
onClick: loadMore,
|
|
56
|
+
children: loading ? "Loading…" : "Load older evidence"
|
|
57
|
+
})
|
|
58
|
+
]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function BlockCard({ block }) {
|
|
62
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
63
|
+
className: "card team",
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ jsxs("summary", {
|
|
66
|
+
className: "flex cursor-pointer list-none flex-wrap items-center gap-2",
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ jsx("strong", {
|
|
69
|
+
className: "mr-auto break-all",
|
|
70
|
+
children: block.reason_code
|
|
71
|
+
}),
|
|
72
|
+
/* @__PURE__ */ jsx("time", {
|
|
73
|
+
className: "text-xs text-mocha-light",
|
|
74
|
+
children: new Date(block.created_at).toLocaleString()
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ jsx(ChevronDown, { className: "h-4 w-4 transition-transform team-open:rotate-180" })
|
|
77
|
+
]
|
|
78
|
+
}),
|
|
79
|
+
/* @__PURE__ */ jsxs("dl", {
|
|
80
|
+
className: "mt-4 grid gap-3 text-sm sm:grid-cols-2",
|
|
81
|
+
children: [
|
|
82
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
83
|
+
label: "Path",
|
|
84
|
+
value: `${endpoint(block.source_kind, block.source_id)} → ${endpoint(block.target_kind, block.target_id)}`
|
|
85
|
+
}),
|
|
86
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
87
|
+
label: "Channel / origin",
|
|
88
|
+
value: `${block.channel} · ${block.origin}`
|
|
89
|
+
}),
|
|
90
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
91
|
+
label: "Operation",
|
|
92
|
+
value: block.operation
|
|
93
|
+
}),
|
|
94
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
95
|
+
label: "Attempt identity",
|
|
96
|
+
value: `${block.attempt_kind}:${block.attempt_id}`,
|
|
97
|
+
code: true
|
|
98
|
+
}),
|
|
99
|
+
/* @__PURE__ */ jsx(Fact, {
|
|
100
|
+
label: "Reason",
|
|
101
|
+
value: block.reason,
|
|
102
|
+
wide: true
|
|
103
|
+
})
|
|
104
|
+
]
|
|
105
|
+
}),
|
|
106
|
+
/* @__PURE__ */ jsx("h3", {
|
|
107
|
+
className: "mt-5 text-sm",
|
|
108
|
+
children: "Policy revisions"
|
|
109
|
+
}),
|
|
110
|
+
/* @__PURE__ */ jsx("ul", {
|
|
111
|
+
className: "mt-2 text-sm",
|
|
112
|
+
children: block.policyRefs.map((ref) => /* @__PURE__ */ jsxs("li", { children: [
|
|
113
|
+
/* @__PURE__ */ jsx("code", { children: ref.teamId }),
|
|
114
|
+
" revision ",
|
|
115
|
+
ref.revision
|
|
116
|
+
] }, `${ref.teamId}:${ref.revision}`))
|
|
117
|
+
}),
|
|
118
|
+
block.componentOutcomes.length > 1 && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("h3", {
|
|
119
|
+
className: "mt-5 text-sm",
|
|
120
|
+
children: "Cross-Team consent components"
|
|
121
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
122
|
+
className: "mt-2 overflow-x-auto",
|
|
123
|
+
children: /* @__PURE__ */ jsxs("table", { children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
124
|
+
/* @__PURE__ */ jsx("th", { children: "Team" }),
|
|
125
|
+
/* @__PURE__ */ jsx("th", { children: "Required edge" }),
|
|
126
|
+
/* @__PURE__ */ jsx("th", { children: "Matched" })
|
|
127
|
+
] }) }), /* @__PURE__ */ jsx("tbody", { children: block.componentOutcomes.map((item) => /* @__PURE__ */ jsxs("tr", { children: [
|
|
128
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("code", { children: item.teamId }) }),
|
|
129
|
+
/* @__PURE__ */ jsx("td", {
|
|
130
|
+
className: "break-all",
|
|
131
|
+
children: /* @__PURE__ */ jsx("code", { children: item.edge })
|
|
132
|
+
}),
|
|
133
|
+
/* @__PURE__ */ jsx("td", { children: item.matched ? "yes" : "no" })
|
|
134
|
+
] }, `${item.teamId}:${item.edge}`)) })] })
|
|
135
|
+
})] }),
|
|
136
|
+
/* @__PURE__ */ jsxs("div", {
|
|
137
|
+
className: "mt-4 grid gap-3 sm:grid-cols-2",
|
|
138
|
+
children: [/* @__PURE__ */ jsx(Fact, {
|
|
139
|
+
label: "Required edges",
|
|
140
|
+
value: block.requiredEdgeIds.join(", ") || "none",
|
|
141
|
+
code: true
|
|
142
|
+
}), /* @__PURE__ */ jsx(Fact, {
|
|
143
|
+
label: "Matched edges",
|
|
144
|
+
value: block.matchedEdgeIds.join(", ") || "none",
|
|
145
|
+
code: true
|
|
146
|
+
})]
|
|
147
|
+
})
|
|
148
|
+
]
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function Fact({ label, value, code = false, wide = false }) {
|
|
152
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
153
|
+
className: wide ? "sm:col-span-2" : "",
|
|
154
|
+
children: [/* @__PURE__ */ jsx("dt", {
|
|
155
|
+
className: "text-xs font-semibold uppercase text-mocha-light",
|
|
156
|
+
children: label
|
|
157
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
158
|
+
className: "mt-1 break-words",
|
|
159
|
+
children: code ? /* @__PURE__ */ jsx("code", {
|
|
160
|
+
className: "break-all",
|
|
161
|
+
children: value
|
|
162
|
+
}) : value
|
|
163
|
+
})]
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function endpoint(kind, id) {
|
|
167
|
+
return id ? `${kind}:${id}` : kind;
|
|
168
|
+
}
|
|
169
|
+
//#endregion
|
|
170
|
+
export { ActivityPage as component };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { t as RecoveryState } from "./RecoveryState-B2SG-mrY.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/routes/teams/$id/activity.tsx?tsr-split=errorComponent
|
|
4
|
+
var SplitErrorComponent = ({ error, reset }) => /* @__PURE__ */ jsx(RecoveryState, {
|
|
5
|
+
title: "Policy activity unavailable",
|
|
6
|
+
error,
|
|
7
|
+
reset,
|
|
8
|
+
fallbackHref: "/teams"
|
|
9
|
+
});
|
|
10
|
+
//#endregion
|
|
11
|
+
export { SplitErrorComponent as errorComponent };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
|
|
3
|
+
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
|
+
//#region src/routes/teams/$id/activity.tsx
|
|
5
|
+
var $$splitErrorComponentImporter = () => import("./activity-CGCf8BQf.js");
|
|
6
|
+
var $$splitComponentImporter = () => import("./activity-C2ZKg1Q9.js");
|
|
7
|
+
var fetchActivity = createServerFn({ method: "POST" }).validator((data) => data).handler(createSsrRpc("5cdb81f2b930818ee9ab1d626ac99828ea652ff447fcbfc21b24dea415f8b39e"));
|
|
8
|
+
var Route = createFileRoute("/teams/$id/activity")({
|
|
9
|
+
loader: ({ params }) => fetchActivity({ data: params }),
|
|
10
|
+
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
11
|
+
errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent")
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Route as t };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { t as createServerFn } from "../server.js";
|
|
2
|
+
import { t as createServerRpc } from "./createServerRpc-CeKECg65.js";
|
|
3
|
+
import { n as daemonClient } from "./daemon-client-2NRMzlTr.js";
|
|
4
|
+
//#region src/routes/teams/$id/activity.tsx?tss-serverfn-split
|
|
5
|
+
var fetchActivity_createServerFn_handler = createServerRpc({
|
|
6
|
+
id: "5cdb81f2b930818ee9ab1d626ac99828ea652ff447fcbfc21b24dea415f8b39e",
|
|
7
|
+
name: "fetchActivity",
|
|
8
|
+
filename: "src/routes/teams/$id/activity.tsx"
|
|
9
|
+
}, (opts) => fetchActivity.__executeServer(opts));
|
|
10
|
+
var fetchActivity = createServerFn({ method: "POST" }).validator((data) => data).handler(fetchActivity_createServerFn_handler, ({ data }) => daemonClient().get(`/api/teams/${encodeURIComponent(data.id)}/policy/blocks?limit=25`));
|
|
11
|
+
//#endregion
|
|
12
|
+
export { fetchActivity_createServerFn_handler };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
|
-
//#region src/routes/
|
|
5
|
-
var $$splitComponentImporter = () => import("./
|
|
6
|
-
var fetchProfiles = createServerFn({ method: "GET" }).handler(createSsrRpc("
|
|
7
|
-
var Route = createFileRoute("/
|
|
4
|
+
//#region src/routes/templates/agents/index.tsx
|
|
5
|
+
var $$splitComponentImporter = () => import("./agents-CUQmWhTp.js");
|
|
6
|
+
var fetchProfiles = createServerFn({ method: "GET" }).handler(createSsrRpc("bc31355f2be9889a616d03c35062d483ea77c3f967af9432d721626a81078ef3"));
|
|
7
|
+
var Route = createFileRoute("/templates/agents/")({
|
|
8
8
|
loader: () => fetchProfiles(),
|
|
9
9
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
10
10
|
});
|
|
@@ -9,17 +9,17 @@ var fetchAgents_createServerFn_handler = createServerRpc({
|
|
|
9
9
|
}, (opts) => fetchAgents.__executeServer(opts));
|
|
10
10
|
var fetchAgents = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(fetchAgents_createServerFn_handler, async ({ data }) => {
|
|
11
11
|
const c = daemonClient();
|
|
12
|
-
const [agents, profiles,
|
|
12
|
+
const [agents, profiles, teams, models] = await Promise.all([
|
|
13
13
|
c.get(`/api/agents?includeArchived=${data.all}`),
|
|
14
14
|
c.get("/api/profiles"),
|
|
15
|
-
c.get("/api/
|
|
15
|
+
c.get("/api/teams"),
|
|
16
16
|
c.get("/api/config/available-models")
|
|
17
17
|
]);
|
|
18
18
|
return {
|
|
19
19
|
agents,
|
|
20
20
|
profiles,
|
|
21
|
-
|
|
22
|
-
modelGroups: models.
|
|
21
|
+
teams,
|
|
22
|
+
modelGroups: models.teams
|
|
23
23
|
};
|
|
24
24
|
});
|
|
25
25
|
//#endregion
|
|
@@ -2,7 +2,7 @@ import { t as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/agents/index.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./agents-
|
|
5
|
+
var $$splitComponentImporter = () => import("./agents-DU9Hqs58.js");
|
|
6
6
|
var fetchAgents = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("f715bab0037380aa3db7e237e7cf1e74168c363f48a960bb1ddfa5560de3a74e"));
|
|
7
7
|
var Route = createFileRoute("/agents/")({
|
|
8
8
|
validateSearch: (s) => ({ all: s.all === "1" ? "1" : void 0 }),
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { t as Route } from "./
|
|
1
|
+
import { t as Route } from "./agents-B8kinIPW.js";
|
|
2
2
|
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
3
|
-
import { t as
|
|
3
|
+
import { t as DEFAULT_PROFILE_COMMUNICATION } from "./team-policy-Csvc5EDd.js";
|
|
4
|
+
import { t as ProfileCommunicationEditor } from "./ProfileCommunicationEditor-C2RU-2QB.js";
|
|
5
|
+
import { t as TemplatesTabs } from "./TemplatesTabs-zf4YhStd.js";
|
|
4
6
|
import { useState } from "react";
|
|
5
7
|
import { useRouter } from "@tanstack/react-router";
|
|
6
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
7
|
-
//#region src/routes/
|
|
9
|
+
//#region src/routes/templates/agents/index.tsx?tsr-split=component
|
|
8
10
|
function ProfilesPage() {
|
|
9
11
|
const { profiles, modelGroups, skills, templates } = Route.useLoaderData();
|
|
10
12
|
const router = useRouter();
|
|
@@ -20,10 +22,10 @@ function ProfilesPage() {
|
|
|
20
22
|
}
|
|
21
23
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
22
24
|
/* @__PURE__ */ jsx(TemplatesTabs, {}),
|
|
23
|
-
/* @__PURE__ */ jsx("h1", { children: "
|
|
25
|
+
/* @__PURE__ */ jsx("h1", { children: "agent templates" }),
|
|
24
26
|
/* @__PURE__ */ jsx("p", {
|
|
25
27
|
className: "muted",
|
|
26
|
-
children: "
|
|
28
|
+
children: "An agent template is a spawn template — SOUL/IDENTITY templates, a default model, a skills policy. Agents choose a Team at spawn time, independent of their Agent template."
|
|
27
29
|
}),
|
|
28
30
|
/* @__PURE__ */ jsx(CreateProfileForm, {
|
|
29
31
|
modelGroups,
|
|
@@ -41,12 +43,12 @@ function ProfilesPage() {
|
|
|
41
43
|
] }) }), /* @__PURE__ */ jsxs("tbody", { children: [profiles.length === 0 && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", {
|
|
42
44
|
colSpan: 6,
|
|
43
45
|
className: "muted",
|
|
44
|
-
children: "no
|
|
46
|
+
children: "no agent templates yet"
|
|
45
47
|
}) }), profiles.map((p) => {
|
|
46
48
|
const skillsLabel = p.skillsMode === "all" ? "all" : p.defaultSkills.length === 0 ? "—" : p.defaultSkills.join(", ");
|
|
47
49
|
return /* @__PURE__ */ jsxs("tr", { children: [
|
|
48
50
|
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx("a", {
|
|
49
|
-
href: `/
|
|
51
|
+
href: `/templates/agents/${p.id}`,
|
|
50
52
|
children: /* @__PURE__ */ jsx("code", { children: p.id })
|
|
51
53
|
}) }),
|
|
52
54
|
/* @__PURE__ */ jsx("td", { children: p.name }),
|
|
@@ -89,6 +91,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
|
|
|
89
91
|
if (!on && tab === key) setTab("basics");
|
|
90
92
|
}
|
|
91
93
|
const [skillsMode, setSkillsMode] = useState("all");
|
|
94
|
+
const [communication, setCommunication] = useState(DEFAULT_PROFILE_COMMUNICATION);
|
|
92
95
|
const [picked, setPicked] = useState(/* @__PURE__ */ new Set());
|
|
93
96
|
const [error, setError] = useState(null);
|
|
94
97
|
const [submitting, setSubmitting] = useState(false);
|
|
@@ -124,7 +127,8 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
|
|
|
124
127
|
bootstrap: enableBootstrap ? bootstrap : null,
|
|
125
128
|
agents: enableAgents ? agentsTpl : null,
|
|
126
129
|
tools: enableTools ? toolsTpl : null,
|
|
127
|
-
heartbeat: enableHeartbeat ? heartbeatTpl : null
|
|
130
|
+
heartbeat: enableHeartbeat ? heartbeatTpl : null,
|
|
131
|
+
communicationDefaults: communication
|
|
128
132
|
};
|
|
129
133
|
const res = await fetch("/api/profiles", {
|
|
130
134
|
method: "POST",
|
|
@@ -147,6 +151,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
|
|
|
147
151
|
setEnableHeartbeat(false);
|
|
148
152
|
setPicked(/* @__PURE__ */ new Set());
|
|
149
153
|
setSkillsMode("all");
|
|
154
|
+
setCommunication(DEFAULT_PROFILE_COMMUNICATION);
|
|
150
155
|
setTab("basics");
|
|
151
156
|
onCreated();
|
|
152
157
|
} catch (err) {
|
|
@@ -159,7 +164,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
|
|
|
159
164
|
className: "card",
|
|
160
165
|
onSubmit: submit,
|
|
161
166
|
children: [
|
|
162
|
-
/* @__PURE__ */ jsx("h3", { children: "create
|
|
167
|
+
/* @__PURE__ */ jsx("h3", { children: "create agent template" }),
|
|
163
168
|
error && /* @__PURE__ */ jsx("div", {
|
|
164
169
|
className: "err",
|
|
165
170
|
children: error
|
|
@@ -201,6 +206,10 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
|
|
|
201
206
|
{
|
|
202
207
|
id: "skills",
|
|
203
208
|
label: "skills"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
id: "communication",
|
|
212
|
+
label: "communication"
|
|
204
213
|
}
|
|
205
214
|
],
|
|
206
215
|
active: tab,
|
|
@@ -270,7 +279,7 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
|
|
|
270
279
|
}),
|
|
271
280
|
/* @__PURE__ */ jsx("p", {
|
|
272
281
|
className: "muted mt-2 text-[0.8em]",
|
|
273
|
-
children: "Disabled files aren't created for this
|
|
282
|
+
children: "Disabled files aren't created for this Agent template. Each spawned agent gets its own copy of the enabled files at spawn time."
|
|
274
283
|
})
|
|
275
284
|
]
|
|
276
285
|
}),
|
|
@@ -410,6 +419,23 @@ function CreateProfileForm({ modelGroups, skills, templates, onCreated }) {
|
|
|
410
419
|
}, s.name))
|
|
411
420
|
})
|
|
412
421
|
] }),
|
|
422
|
+
tab === "communication" && /* @__PURE__ */ jsxs("div", { children: [
|
|
423
|
+
/* @__PURE__ */ jsx("div", {
|
|
424
|
+
className: "mb-3 flex items-center gap-2",
|
|
425
|
+
children: /* @__PURE__ */ jsx("h4", {
|
|
426
|
+
className: "text-sm font-semibold text-chocolate",
|
|
427
|
+
children: "Communication defaults"
|
|
428
|
+
})
|
|
429
|
+
}),
|
|
430
|
+
/* @__PURE__ */ jsx("p", {
|
|
431
|
+
className: "muted mb-4",
|
|
432
|
+
children: "Materialized when a Team or live policy snapshot is created. Existing snapshots never inherit later changes."
|
|
433
|
+
}),
|
|
434
|
+
/* @__PURE__ */ jsx(ProfileCommunicationEditor, {
|
|
435
|
+
value: communication,
|
|
436
|
+
onChange: setCommunication
|
|
437
|
+
})
|
|
438
|
+
] }),
|
|
413
439
|
/* @__PURE__ */ jsx("div", {
|
|
414
440
|
className: "mt-5 flex gap-2",
|
|
415
441
|
children: /* @__PURE__ */ jsx(Button, {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { t as Route } from "./agents-
|
|
1
|
+
import { t as Route } from "./agents-Bp1nsVs2.js";
|
|
2
2
|
import { t as AgentAvatar } from "./AgentAvatar-8gTAy_tP.js";
|
|
3
3
|
import { useState } from "react";
|
|
4
4
|
import { useRouter } from "@tanstack/react-router";
|
|
5
5
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
//#region src/routes/agents/index.tsx?tsr-split=component
|
|
7
7
|
function AgentsPage() {
|
|
8
|
-
const { agents, profiles,
|
|
8
|
+
const { agents, profiles, teams, modelGroups } = Route.useLoaderData();
|
|
9
9
|
const { all } = Route.useSearch();
|
|
10
10
|
const showAll = all === "1";
|
|
11
11
|
const router = useRouter();
|
|
@@ -20,14 +20,19 @@ function AgentsPage() {
|
|
|
20
20
|
}
|
|
21
21
|
async function del(id) {
|
|
22
22
|
if (!confirm("permanently delete this agent and all its data?")) return;
|
|
23
|
-
|
|
23
|
+
const agent = agents.find((candidate) => candidate.id === id);
|
|
24
|
+
if (!agent) return;
|
|
25
|
+
const policyResponse = await fetch(`/api/teams/${encodeURIComponent(agent.teamId)}/policy`);
|
|
26
|
+
if (!policyResponse.ok) return;
|
|
27
|
+
const policy = await policyResponse.json();
|
|
28
|
+
await fetch(`/api/agents/${encodeURIComponent(id)}?expectedTeamRevision=${policy.teamPolicy.revision}`, { method: "DELETE" });
|
|
24
29
|
await router.invalidate();
|
|
25
30
|
}
|
|
26
31
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
27
32
|
/* @__PURE__ */ jsx("h1", { children: "agents" }),
|
|
28
33
|
/* @__PURE__ */ jsx(SpawnForm, {
|
|
29
34
|
profiles,
|
|
30
|
-
|
|
35
|
+
teams,
|
|
31
36
|
modelGroups,
|
|
32
37
|
onSpawned: router.invalidate
|
|
33
38
|
}),
|
|
@@ -89,11 +94,12 @@ function AgentsPage() {
|
|
|
89
94
|
] }, a.id))] })] })
|
|
90
95
|
] });
|
|
91
96
|
}
|
|
92
|
-
function SpawnForm({ profiles,
|
|
97
|
+
function SpawnForm({ profiles, teams, modelGroups, onSpawned }) {
|
|
93
98
|
const [profileId, setProfileId] = useState("");
|
|
94
99
|
const [name, setName] = useState("");
|
|
95
100
|
const [model, setModel] = useState("");
|
|
96
|
-
const [
|
|
101
|
+
const [teamId, setTeamId] = useState(teams.find((g) => g.id === "default")?.id ?? "");
|
|
102
|
+
const [placement, setPlacement] = useState("profile_defaults");
|
|
97
103
|
const [submitting, setSubmitting] = useState(false);
|
|
98
104
|
const [err, setErr] = useState(null);
|
|
99
105
|
async function submit(e) {
|
|
@@ -108,7 +114,14 @@ function SpawnForm({ profiles, groups, modelGroups, onSpawned }) {
|
|
|
108
114
|
const body = { profile: profileId };
|
|
109
115
|
if (name) body.name = name;
|
|
110
116
|
if (model) body.model = model;
|
|
111
|
-
if (
|
|
117
|
+
if (teamId) {
|
|
118
|
+
const policyResponse = await fetch(`/api/teams/${encodeURIComponent(teamId)}/policy`);
|
|
119
|
+
if (!policyResponse.ok) throw new Error("The selected Team policy is unavailable.");
|
|
120
|
+
const current = await policyResponse.json();
|
|
121
|
+
body.teamId = teamId;
|
|
122
|
+
body.teamExpectedRevision = current.teamPolicy.revision;
|
|
123
|
+
body.placement = placement;
|
|
124
|
+
}
|
|
112
125
|
const res = await fetch("/api/agents", {
|
|
113
126
|
method: "POST",
|
|
114
127
|
headers: { "content-type": "application/json" },
|
|
@@ -118,6 +131,7 @@ function SpawnForm({ profiles, groups, modelGroups, onSpawned }) {
|
|
|
118
131
|
const b = await res.json().catch(() => null);
|
|
119
132
|
throw new Error(b?.error ?? res.statusText);
|
|
120
133
|
}
|
|
134
|
+
await res.json();
|
|
121
135
|
setName("");
|
|
122
136
|
setModel("");
|
|
123
137
|
onSpawned();
|
|
@@ -182,13 +196,13 @@ function SpawnForm({ profiles, groups, modelGroups, onSpawned }) {
|
|
|
182
196
|
}, m))
|
|
183
197
|
}, g.provider))]
|
|
184
198
|
})] }),
|
|
185
|
-
/* @__PURE__ */ jsxs("label", { children: ["
|
|
199
|
+
/* @__PURE__ */ jsxs("label", { children: ["team", teams.length === 0 ? /* @__PURE__ */ jsx("select", {
|
|
186
200
|
disabled: true,
|
|
187
|
-
children: /* @__PURE__ */ jsx("option", { children: "(no
|
|
201
|
+
children: /* @__PURE__ */ jsx("option", { children: "(no teams — register one on /teams)" })
|
|
188
202
|
}) : /* @__PURE__ */ jsx("select", {
|
|
189
|
-
value:
|
|
190
|
-
onChange: (e) =>
|
|
191
|
-
children:
|
|
203
|
+
value: teamId,
|
|
204
|
+
onChange: (e) => setTeamId(e.target.value),
|
|
205
|
+
children: teams.map((g) => /* @__PURE__ */ jsxs("option", {
|
|
192
206
|
value: g.id,
|
|
193
207
|
children: [
|
|
194
208
|
g.id,
|
|
@@ -198,6 +212,31 @@ function SpawnForm({ profiles, groups, modelGroups, onSpawned }) {
|
|
|
198
212
|
]
|
|
199
213
|
}, g.id))
|
|
200
214
|
})] }),
|
|
215
|
+
/* @__PURE__ */ jsxs("label", { children: [
|
|
216
|
+
"initial policy placement",
|
|
217
|
+
/* @__PURE__ */ jsxs("select", {
|
|
218
|
+
value: placement,
|
|
219
|
+
onChange: (e) => setPlacement(e.target.value),
|
|
220
|
+
children: [
|
|
221
|
+
/* @__PURE__ */ jsx("option", {
|
|
222
|
+
value: "profile_defaults",
|
|
223
|
+
children: "agent-template defaults"
|
|
224
|
+
}),
|
|
225
|
+
/* @__PURE__ */ jsx("option", {
|
|
226
|
+
value: "isolated",
|
|
227
|
+
children: "isolated"
|
|
228
|
+
}),
|
|
229
|
+
/* @__PURE__ */ jsx("option", {
|
|
230
|
+
value: "open",
|
|
231
|
+
children: "open to current members and boundaries"
|
|
232
|
+
})
|
|
233
|
+
]
|
|
234
|
+
}),
|
|
235
|
+
/* @__PURE__ */ jsx("span", {
|
|
236
|
+
className: "muted mt-1 block text-xs",
|
|
237
|
+
children: "Submit uses the latest displayed Team revision; a concurrent policy change is shown as a conflict and never overwritten."
|
|
238
|
+
})
|
|
239
|
+
] }),
|
|
201
240
|
/* @__PURE__ */ jsx("button", {
|
|
202
241
|
type: "submit",
|
|
203
242
|
disabled: submitting,
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
2
|
import { t as createServerRpc } from "./createServerRpc-CeKECg65.js";
|
|
3
3
|
import { n as daemonClient } from "./daemon-client-2NRMzlTr.js";
|
|
4
|
-
//#region src/routes/
|
|
4
|
+
//#region src/routes/templates/agents/index.tsx?tss-serverfn-split
|
|
5
5
|
var fetchProfiles_createServerFn_handler = createServerRpc({
|
|
6
|
-
id: "
|
|
6
|
+
id: "bc31355f2be9889a616d03c35062d483ea77c3f967af9432d721626a81078ef3",
|
|
7
7
|
name: "fetchProfiles",
|
|
8
|
-
filename: "src/routes/
|
|
8
|
+
filename: "src/routes/templates/agents/index.tsx"
|
|
9
9
|
}, (opts) => fetchProfiles.__executeServer(opts));
|
|
10
10
|
var fetchProfiles = createServerFn({ method: "GET" }).handler(fetchProfiles_createServerFn_handler, async () => {
|
|
11
11
|
const c = daemonClient();
|
|
@@ -17,7 +17,7 @@ var fetchProfiles = createServerFn({ method: "GET" }).handler(fetchProfiles_crea
|
|
|
17
17
|
]);
|
|
18
18
|
return {
|
|
19
19
|
profiles,
|
|
20
|
-
modelGroups: models.
|
|
20
|
+
modelGroups: models.teams,
|
|
21
21
|
skills,
|
|
22
22
|
templates
|
|
23
23
|
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { t as RecoveryState } from "./RecoveryState-B2SG-mrY.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/routes/approvals/index.tsx?tsr-split=errorComponent
|
|
4
|
+
var SplitErrorComponent = ({ error, reset }) => /* @__PURE__ */ jsx(RecoveryState, {
|
|
5
|
+
title: "Approval queue unavailable",
|
|
6
|
+
error,
|
|
7
|
+
reset,
|
|
8
|
+
fallbackHref: "/"
|
|
9
|
+
});
|
|
10
|
+
//#endregion
|
|
11
|
+
export { SplitErrorComponent as errorComponent };
|