bazilion 0.7.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 +1257 -638
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +5334 -1594
- 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-BSAVT-17.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-D8lNr2SX.js → login-Bk2wwIHQ.js} +1 -1
- package/dist/web/client/assets/{mcp-BLnngDsj.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-B__fLZjx.js +1 -0
- 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-D2_O9ARe.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-D0ytyXGY.js → _id-B6g9wmPR.js} +167 -31
- 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-81NrHA5d.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-BpBZgRwn.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/{skills-dLyBZb3B.js → skills-D89ND2kR.js} +67 -7
- package/dist/web/server/assets/{skills-CpsyR_WA.js → skills-l2cyQ3zS.js} +1 -1
- 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-Da7mg9FI.js +0 -1
- package/dist/web/client/assets/_id-BdKmo0gb.js +0 -1
- package/dist/web/client/assets/_id-LT6Ejjr0.js +0 -1
- package/dist/web/client/assets/_id-MR2XjWh0.js +0 -1
- package/dist/web/client/assets/_id-_6jIt0_-.js +0 -1
- package/dist/web/client/assets/agents-0arKbVYG.js +0 -1
- package/dist/web/client/assets/groups-BqTkhHes.js +0 -1
- package/dist/web/client/assets/inbox-ozoCXzr5.js +0 -1
- package/dist/web/client/assets/index-iayCEuU2.js +0 -12
- package/dist/web/client/assets/memory-D1GQjEvN.js +0 -1
- package/dist/web/client/assets/profile-groups-C2yJPTaE.js +0 -1
- package/dist/web/client/assets/profiles-BV7AAZjj.js +0 -1
- package/dist/web/client/assets/routes-DSHQLA7K.js +0 -1
- package/dist/web/client/assets/services-BbCJe1Du.js +0 -1
- package/dist/web/client/assets/skills-C6czKR5I.js +0 -1
- package/dist/web/client/assets/styles-C06axZZk.css +0 -2
- package/dist/web/client/assets/telegram-gE4j8gte.js +0 -1
- package/dist/web/client/assets/triggers-WljnfEfJ.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-DBlFH2gg.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
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import { t as Route } from "./_id-
|
|
1
|
+
import { t as Route } from "./_id-DkFgCIb-.js";
|
|
2
2
|
import { t as AgentTabs } from "./AgentTabs-BOjTN7QF.js";
|
|
3
3
|
import { t as AgentAvatar } from "./AgentAvatar-8gTAy_tP.js";
|
|
4
|
-
import { t as ChatPane } from "./ChatPane-
|
|
5
|
-
import { r as REASONING_LEVELS } from "./wire-constants-
|
|
4
|
+
import { t as ChatPane } from "./ChatPane-Dh3qxzdb.js";
|
|
5
|
+
import { r as REASONING_LEVELS } from "./wire-constants-C8nBJcU3.js";
|
|
6
6
|
import { useState } from "react";
|
|
7
7
|
import { useRouter } from "@tanstack/react-router";
|
|
8
8
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { ArrowLeft } from "lucide-react";
|
|
9
10
|
//#region src/components/CopyButton.tsx
|
|
10
11
|
function CopyButton({ value, className, ariaLabel = "Copy to clipboard", title = "Copy to clipboard" }) {
|
|
11
12
|
const [copied, setCopied] = useState(false);
|
|
@@ -48,7 +49,8 @@ function CopyButton({ value, className, ariaLabel = "Copy to clipboard", title =
|
|
|
48
49
|
//#endregion
|
|
49
50
|
//#region src/routes/agents/$id/index.tsx?tsr-split=component
|
|
50
51
|
function AgentDetailPage() {
|
|
51
|
-
const { resolved, initialMessages, sessionHead,
|
|
52
|
+
const { resolved, initialMessages, sessionHead, teams, skills, modelGroups, telegramConfigured } = Route.useLoaderData();
|
|
53
|
+
const search = Route.useSearch();
|
|
52
54
|
const router = useRouter();
|
|
53
55
|
async function archive() {
|
|
54
56
|
if (!confirm(`archive "${resolved.agent.name}"? (reversible)`)) return;
|
|
@@ -62,7 +64,13 @@ function AgentDetailPage() {
|
|
|
62
64
|
async function del() {
|
|
63
65
|
const msg = `Permanently delete agent "${resolved.agent.name}"?\n\nThis removes the DB rows (messages, triggers, skill attachments) AND the agent's on-disk directory (memory, templates, state, sessions). This cannot be undone.`;
|
|
64
66
|
if (!confirm(msg)) return;
|
|
65
|
-
const
|
|
67
|
+
const policyResponse = await fetch(`/api/teams/${encodeURIComponent(resolved.team.id)}/policy`);
|
|
68
|
+
if (!policyResponse.ok) {
|
|
69
|
+
alert("The current Team policy is unavailable. Nothing was deleted.");
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const current = await policyResponse.json();
|
|
73
|
+
const res = await fetch(`/api/agents/${resolved.agent.id}?expectedTeamRevision=${current.teamPolicy.revision}`, { method: "DELETE" });
|
|
66
74
|
if (res.ok || res.status === 204) window.location.assign("/agents");
|
|
67
75
|
else alert(`failed: ${res.statusText}`);
|
|
68
76
|
}
|
|
@@ -70,6 +78,17 @@ function AgentDetailPage() {
|
|
|
70
78
|
/* @__PURE__ */ jsxs("header", {
|
|
71
79
|
className: "mb-8",
|
|
72
80
|
children: [
|
|
81
|
+
search.teamPolicy && /* @__PURE__ */ jsxs("div", {
|
|
82
|
+
className: "mb-4 flex flex-wrap items-center gap-2",
|
|
83
|
+
children: [/* @__PURE__ */ jsxs("a", {
|
|
84
|
+
href: `/teams/${encodeURIComponent(search.teamPolicy)}/policy?view=${search.view ?? "flow"}&selected=${encodeURIComponent(search.selected ?? "")}&vx=${search.vx ?? 0}&vy=${search.vy ?? 0}&vz=${search.vz ?? .9}`,
|
|
85
|
+
className: "ghost-btn",
|
|
86
|
+
children: [/* @__PURE__ */ jsx(ArrowLeft, { className: "h-4 w-4" }), " back to Team policy"]
|
|
87
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
88
|
+
className: "text-xs text-mocha-light",
|
|
89
|
+
children: "Returns to the same projection, viewport, and selection."
|
|
90
|
+
})]
|
|
91
|
+
}),
|
|
73
92
|
/* @__PURE__ */ jsxs("div", {
|
|
74
93
|
className: "flex items-center gap-3",
|
|
75
94
|
children: [/* @__PURE__ */ jsx(AgentAvatar, {
|
|
@@ -103,18 +122,18 @@ function AgentDetailPage() {
|
|
|
103
122
|
children: resolved.profile.id
|
|
104
123
|
})] }),
|
|
105
124
|
/* @__PURE__ */ jsxs(Tag, { children: [
|
|
106
|
-
"
|
|
125
|
+
"team:",
|
|
107
126
|
" ",
|
|
108
127
|
/* @__PURE__ */ jsx("a", {
|
|
109
|
-
href: `/
|
|
128
|
+
href: `/teams/${encodeURIComponent(resolved.team.id)}`,
|
|
110
129
|
className: "ml-1 bg-transparent px-0 font-mono underline",
|
|
111
|
-
children: resolved.
|
|
130
|
+
children: resolved.team.id
|
|
112
131
|
}),
|
|
113
132
|
" ",
|
|
114
133
|
"·",
|
|
115
134
|
" ",
|
|
116
135
|
/* @__PURE__ */ jsx("a", {
|
|
117
|
-
href: `/
|
|
136
|
+
href: `/teams/${encodeURIComponent(resolved.team.id)}/memory`,
|
|
118
137
|
className: "ml-0.5 underline",
|
|
119
138
|
children: "shared memory →"
|
|
120
139
|
})
|
|
@@ -198,29 +217,29 @@ function AgentDetailPage() {
|
|
|
198
217
|
/* @__PURE__ */ jsxs("section", {
|
|
199
218
|
className: "mt-10",
|
|
200
219
|
children: [
|
|
201
|
-
/* @__PURE__ */ jsx(SectionTitle, { children: "
|
|
220
|
+
/* @__PURE__ */ jsx(SectionTitle, { children: "Team" }),
|
|
202
221
|
/* @__PURE__ */ jsxs("p", {
|
|
203
222
|
className: "text-[0.9em] text-mocha-light",
|
|
204
223
|
children: [
|
|
205
|
-
"Current
|
|
206
|
-
/* @__PURE__ */ jsx("code", { children: resolved.
|
|
224
|
+
"Current team: ",
|
|
225
|
+
/* @__PURE__ */ jsx("code", { children: resolved.team.id }),
|
|
207
226
|
" (",
|
|
208
|
-
resolved.
|
|
227
|
+
resolved.team.name,
|
|
209
228
|
") —",
|
|
210
229
|
" ",
|
|
211
|
-
/* @__PURE__ */ jsx("code", { children: resolved.
|
|
230
|
+
/* @__PURE__ */ jsx("code", { children: resolved.team.path }),
|
|
212
231
|
".",
|
|
213
232
|
" ",
|
|
214
233
|
/* @__PURE__ */ jsx("a", {
|
|
215
|
-
href: `/
|
|
234
|
+
href: `/teams/${resolved.team.id}`,
|
|
216
235
|
children: "view / edit USER.md"
|
|
217
236
|
})
|
|
218
237
|
]
|
|
219
238
|
}),
|
|
220
239
|
/* @__PURE__ */ jsx(MoveGroupForm, {
|
|
221
240
|
agentId: resolved.agent.id,
|
|
222
|
-
|
|
223
|
-
|
|
241
|
+
currentTeamId: resolved.team.id,
|
|
242
|
+
teams
|
|
224
243
|
})
|
|
225
244
|
]
|
|
226
245
|
}),
|
|
@@ -356,21 +375,50 @@ function SettingsDetails({ agentId, currentModelOverride, profileDefaultModel, c
|
|
|
356
375
|
})]
|
|
357
376
|
});
|
|
358
377
|
}
|
|
359
|
-
function MoveGroupForm({ agentId,
|
|
378
|
+
function MoveGroupForm({ agentId, currentTeamId, teams }) {
|
|
360
379
|
const router = useRouter();
|
|
361
|
-
const [
|
|
380
|
+
const [teamId, setTeamId] = useState(currentTeamId);
|
|
362
381
|
const [moving, setMoving] = useState(false);
|
|
382
|
+
const [placement, setPlacement] = useState("profile_defaults");
|
|
363
383
|
const [err, setErr] = useState(null);
|
|
384
|
+
const [preview, setPreview] = useState(null);
|
|
364
385
|
async function move(e) {
|
|
365
386
|
e.preventDefault();
|
|
366
|
-
if (
|
|
387
|
+
if (teamId === currentTeamId) return;
|
|
367
388
|
setMoving(true);
|
|
368
389
|
setErr(null);
|
|
369
390
|
try {
|
|
370
|
-
const
|
|
391
|
+
const [sourceResponse, destinationResponse] = await Promise.all([fetch(`/api/teams/${encodeURIComponent(currentTeamId)}/policy`), fetch(`/api/teams/${encodeURIComponent(teamId)}/policy`)]);
|
|
392
|
+
if (!sourceResponse.ok || !destinationResponse.ok) throw new Error("A Team policy is unavailable. Nothing was moved.");
|
|
393
|
+
const source = await sourceResponse.json();
|
|
394
|
+
const destination = await destinationResponse.json();
|
|
395
|
+
const request = {
|
|
396
|
+
teamId,
|
|
397
|
+
sourceExpectedRevision: source.teamPolicy.revision,
|
|
398
|
+
destinationExpectedRevision: destination.teamPolicy.revision,
|
|
399
|
+
placement
|
|
400
|
+
};
|
|
401
|
+
if (!preview) {
|
|
402
|
+
const response = await fetch(`/api/agents/${encodeURIComponent(agentId)}/team/preview`, {
|
|
403
|
+
method: "POST",
|
|
404
|
+
headers: { "content-type": "application/json" },
|
|
405
|
+
body: JSON.stringify(request)
|
|
406
|
+
});
|
|
407
|
+
if (!response.ok) {
|
|
408
|
+
const body = await response.json().catch(() => null);
|
|
409
|
+
throw new Error(body?.error ?? response.statusText);
|
|
410
|
+
}
|
|
411
|
+
setPreview(await response.json());
|
|
412
|
+
return;
|
|
413
|
+
}
|
|
414
|
+
const res = await fetch(`/api/agents/${encodeURIComponent(agentId)}/team`, {
|
|
371
415
|
method: "PATCH",
|
|
372
416
|
headers: { "content-type": "application/json" },
|
|
373
|
-
body: JSON.stringify({
|
|
417
|
+
body: JSON.stringify({
|
|
418
|
+
...request,
|
|
419
|
+
sourceExpectedRevision: preview.source.currentRevision,
|
|
420
|
+
destinationExpectedRevision: preview.destination.currentRevision
|
|
421
|
+
})
|
|
374
422
|
});
|
|
375
423
|
if (!res.ok) {
|
|
376
424
|
const body = await res.json().catch(() => null);
|
|
@@ -390,10 +438,13 @@ function MoveGroupForm({ agentId, currentGroupId, groups }) {
|
|
|
390
438
|
/* @__PURE__ */ jsxs("label", {
|
|
391
439
|
className: "flex flex-col gap-1 text-[0.85em] text-mocha-light",
|
|
392
440
|
children: ["move to:", /* @__PURE__ */ jsx("select", {
|
|
393
|
-
value:
|
|
394
|
-
onChange: (e) =>
|
|
441
|
+
value: teamId,
|
|
442
|
+
onChange: (e) => {
|
|
443
|
+
setTeamId(e.target.value);
|
|
444
|
+
setPreview(null);
|
|
445
|
+
},
|
|
395
446
|
className: "min-w-[18rem] rounded-sm border border-frost bg-snow px-2 py-1.5",
|
|
396
|
-
children:
|
|
447
|
+
children: teams.map((g) => /* @__PURE__ */ jsxs("option", {
|
|
397
448
|
value: g.id,
|
|
398
449
|
children: [
|
|
399
450
|
g.id,
|
|
@@ -403,14 +454,62 @@ function MoveGroupForm({ agentId, currentGroupId, groups }) {
|
|
|
403
454
|
}, g.id))
|
|
404
455
|
})]
|
|
405
456
|
}),
|
|
457
|
+
/* @__PURE__ */ jsxs("label", {
|
|
458
|
+
className: "flex flex-col gap-1 text-[0.85em] text-mocha-light",
|
|
459
|
+
children: ["destination placement:", /* @__PURE__ */ jsxs("select", {
|
|
460
|
+
value: placement,
|
|
461
|
+
onChange: (e) => {
|
|
462
|
+
setPlacement(e.target.value);
|
|
463
|
+
setPreview(null);
|
|
464
|
+
},
|
|
465
|
+
className: "rounded-sm border border-frost bg-snow px-2 py-1.5",
|
|
466
|
+
children: [
|
|
467
|
+
/* @__PURE__ */ jsx("option", {
|
|
468
|
+
value: "profile_defaults",
|
|
469
|
+
children: "agent-template defaults"
|
|
470
|
+
}),
|
|
471
|
+
/* @__PURE__ */ jsx("option", {
|
|
472
|
+
value: "isolated",
|
|
473
|
+
children: "isolated"
|
|
474
|
+
}),
|
|
475
|
+
/* @__PURE__ */ jsx("option", {
|
|
476
|
+
value: "open",
|
|
477
|
+
children: "open"
|
|
478
|
+
})
|
|
479
|
+
]
|
|
480
|
+
})]
|
|
481
|
+
}),
|
|
406
482
|
/* @__PURE__ */ jsx("button", {
|
|
407
483
|
type: "submit",
|
|
408
|
-
disabled: moving ||
|
|
409
|
-
children: moving ? "
|
|
484
|
+
disabled: moving || teamId === currentTeamId,
|
|
485
|
+
children: moving ? "working…" : preview ? "commit reviewed move" : "review move"
|
|
410
486
|
}),
|
|
411
487
|
err && /* @__PURE__ */ jsx("span", {
|
|
412
488
|
className: "text-[0.85em] text-[#9B3D3D]",
|
|
413
489
|
children: err
|
|
490
|
+
}),
|
|
491
|
+
preview && /* @__PURE__ */ jsxs("div", {
|
|
492
|
+
className: "basis-full rounded-md border border-sapphire-light bg-sapphire-glow p-3 text-sm",
|
|
493
|
+
children: [/* @__PURE__ */ jsxs("p", { children: [
|
|
494
|
+
"Source revision ",
|
|
495
|
+
preview.source.currentRevision,
|
|
496
|
+
" → ",
|
|
497
|
+
/* @__PURE__ */ jsx("strong", { children: preview.source.resultingRevision }),
|
|
498
|
+
", removing ",
|
|
499
|
+
preview.source.removedEdges.length,
|
|
500
|
+
" incident edges. Destination revision ",
|
|
501
|
+
preview.destination.currentRevision,
|
|
502
|
+
" → ",
|
|
503
|
+
/* @__PURE__ */ jsx("strong", { children: preview.destination.resultingRevision }),
|
|
504
|
+
", adding ",
|
|
505
|
+
preview.destination.addedEdges.length,
|
|
506
|
+
" edges to ",
|
|
507
|
+
preview.destination.existingEdges.length,
|
|
508
|
+
" existing edges."
|
|
509
|
+
] }), /* @__PURE__ */ jsx("p", {
|
|
510
|
+
className: "mt-1 muted",
|
|
511
|
+
children: preview.lineage
|
|
512
|
+
})]
|
|
414
513
|
})
|
|
415
514
|
]
|
|
416
515
|
});
|
|
@@ -419,14 +518,19 @@ function SkillsTable({ agentId, attached, all }) {
|
|
|
419
518
|
const router = useRouter();
|
|
420
519
|
const [pending, setPending] = useState(null);
|
|
421
520
|
const [err, setErr] = useState(null);
|
|
422
|
-
async function attach(
|
|
423
|
-
|
|
521
|
+
async function attach(skill) {
|
|
522
|
+
const findings = skill.scanFindings ?? [];
|
|
523
|
+
if (!(findings.length === 0 || confirm(`Skill "${skill.name}" has ${findings.length} scan finding${findings.length === 1 ? "" : "s"}. Attach it anyway?`))) return;
|
|
524
|
+
setPending(skill.name);
|
|
424
525
|
setErr(null);
|
|
425
526
|
try {
|
|
426
527
|
const res = await fetch(`/api/agents/${encodeURIComponent(agentId)}/skills`, {
|
|
427
528
|
method: "POST",
|
|
428
529
|
headers: { "content-type": "application/json" },
|
|
429
|
-
body: JSON.stringify({
|
|
530
|
+
body: JSON.stringify({
|
|
531
|
+
skill: skill.name,
|
|
532
|
+
allowFindings: findings.length > 0
|
|
533
|
+
})
|
|
430
534
|
});
|
|
431
535
|
if (!res.ok) {
|
|
432
536
|
const body = await res.json().catch(() => null);
|
|
@@ -465,6 +569,7 @@ function SkillsTable({ agentId, attached, all }) {
|
|
|
465
569
|
}), /* @__PURE__ */ jsxs("table", { children: [/* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { children: [
|
|
466
570
|
/* @__PURE__ */ jsx("th", { children: "name" }),
|
|
467
571
|
/* @__PURE__ */ jsx("th", { children: "description" }),
|
|
572
|
+
/* @__PURE__ */ jsx("th", { children: "scan" }),
|
|
468
573
|
/* @__PURE__ */ jsx("th", {})
|
|
469
574
|
] }) }), /* @__PURE__ */ jsx("tbody", { children: all.map((s) => {
|
|
470
575
|
const isAttached = attached.has(s.name);
|
|
@@ -475,6 +580,7 @@ function SkillsTable({ agentId, attached, all }) {
|
|
|
475
580
|
className: "text-mocha-light",
|
|
476
581
|
children: "—"
|
|
477
582
|
}) }),
|
|
583
|
+
/* @__PURE__ */ jsx("td", { children: /* @__PURE__ */ jsx(SkillFindingSummary, { findings: s.scanFindings ?? [] }) }),
|
|
478
584
|
/* @__PURE__ */ jsx("td", { children: isAttached ? /* @__PURE__ */ jsx("button", {
|
|
479
585
|
type: "button",
|
|
480
586
|
className: "ghost-btn",
|
|
@@ -485,12 +591,42 @@ function SkillsTable({ agentId, attached, all }) {
|
|
|
485
591
|
type: "button",
|
|
486
592
|
className: "ghost-btn",
|
|
487
593
|
disabled: busy,
|
|
488
|
-
onClick: () => attach(s
|
|
594
|
+
onClick: () => attach(s),
|
|
489
595
|
children: busy ? "…" : "attach"
|
|
490
596
|
}) })
|
|
491
597
|
] }, s.name);
|
|
492
598
|
}) })] })] });
|
|
493
599
|
}
|
|
600
|
+
function SkillFindingSummary({ findings }) {
|
|
601
|
+
if (findings.length === 0) return /* @__PURE__ */ jsx("span", {
|
|
602
|
+
className: "text-mocha-light",
|
|
603
|
+
children: "clean"
|
|
604
|
+
});
|
|
605
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
606
|
+
className: "text-[0.82em]",
|
|
607
|
+
children: [/* @__PURE__ */ jsxs("summary", {
|
|
608
|
+
className: findings.some((f) => f.severity === "danger") ? "cursor-pointer text-[#9B3D3D]" : "cursor-pointer text-mocha",
|
|
609
|
+
children: [
|
|
610
|
+
findings.length,
|
|
611
|
+
" finding",
|
|
612
|
+
findings.length === 1 ? "" : "s"
|
|
613
|
+
]
|
|
614
|
+
}), /* @__PURE__ */ jsx("ul", {
|
|
615
|
+
className: "m-0 list-disc pl-4",
|
|
616
|
+
children: findings.map((f, i) => /* @__PURE__ */ jsxs("li", { children: [
|
|
617
|
+
/* @__PURE__ */ jsx("span", {
|
|
618
|
+
className: "font-mono",
|
|
619
|
+
children: f.severity
|
|
620
|
+
}),
|
|
621
|
+
": ",
|
|
622
|
+
f.code,
|
|
623
|
+
f.line ? ` line ${f.line}` : "",
|
|
624
|
+
" - ",
|
|
625
|
+
f.message
|
|
626
|
+
] }, `${f.code}-${f.line ?? 0}-${i}`))
|
|
627
|
+
})]
|
|
628
|
+
});
|
|
629
|
+
}
|
|
494
630
|
function TelegramSection({ agent }) {
|
|
495
631
|
const router = useRouter();
|
|
496
632
|
const [busy, setBusy] = useState(false);
|
|
@@ -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/templates/teams/$id/index.tsx
|
|
5
|
+
var $$splitErrorComponentImporter = () => import("./_id-A8Xiv6Lc.js");
|
|
6
|
+
var $$splitComponentImporter = () => import("./_id-C4AOhstq.js");
|
|
7
|
+
var fetchTeam = createServerFn({ method: "POST" }).validator((data) => data).handler(createSsrRpc("a0bbbee5d0c1240a05e35c04d56a0e95ec78f05265e4e937eec48c8ac2041e58"));
|
|
8
|
+
var Route = createFileRoute("/templates/teams/$id/")({
|
|
9
|
+
loader: ({ params }) => fetchTeam({ data: params }),
|
|
10
|
+
component: lazyRouteComponent($$splitComponentImporter, "component"),
|
|
11
|
+
errorComponent: lazyRouteComponent($$splitErrorComponentImporter, "errorComponent")
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
export { Route as t };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { t as Route } from "./_id-ButXHnRH.js";
|
|
2
|
+
import { t as RecoveryState } from "./RecoveryState-B2SG-mrY.js";
|
|
3
|
+
import { t as ProductionTeamPolicyEditor } from "./ProductionTeamPolicyEditor-Bke5doyl.js";
|
|
4
|
+
import { t as TemplatesTabs } from "./TemplatesTabs-zf4YhStd.js";
|
|
5
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
6
|
+
//#region src/routes/templates/teams/$id/index.tsx?tsr-split=component
|
|
7
|
+
function TeamDetailPage() {
|
|
8
|
+
const result = Route.useLoaderData();
|
|
9
|
+
if (!result.ok) return /* @__PURE__ */ jsx(RecoveryState, {
|
|
10
|
+
title: "Team template unavailable",
|
|
11
|
+
error: new Error(result.error),
|
|
12
|
+
reset: () => window.location.reload(),
|
|
13
|
+
fallbackHref: "/templates/teams"
|
|
14
|
+
});
|
|
15
|
+
const { detail, profiles } = result.value;
|
|
16
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
17
|
+
className: "space-y-5",
|
|
18
|
+
children: [
|
|
19
|
+
/* @__PURE__ */ jsx(TemplatesTabs, {}),
|
|
20
|
+
/* @__PURE__ */ jsx("p", { children: /* @__PURE__ */ jsx("a", {
|
|
21
|
+
href: "/templates/teams",
|
|
22
|
+
children: "← team templates"
|
|
23
|
+
}) }),
|
|
24
|
+
detail.template.deletedAt && /* @__PURE__ */ jsx("div", {
|
|
25
|
+
role: "alert",
|
|
26
|
+
className: "err rounded-md border p-3",
|
|
27
|
+
children: "Source deleted — lineage is read-only and cannot be edited or spawned."
|
|
28
|
+
}),
|
|
29
|
+
/* @__PURE__ */ jsx(ProductionTeamPolicyEditor, {
|
|
30
|
+
source: {
|
|
31
|
+
kind: "template",
|
|
32
|
+
detail
|
|
33
|
+
},
|
|
34
|
+
profiles
|
|
35
|
+
}),
|
|
36
|
+
/* @__PURE__ */ jsx("p", {
|
|
37
|
+
className: "muted text-xs",
|
|
38
|
+
children: "Stable slot IDs remain distinct from live Agent IDs. Every successful save creates a new immutable revision; the reconciled editor badge is authoritative."
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { TeamDetailPage as component };
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { t as Route } from "./_id-
|
|
1
|
+
import { t as Route } from "./_id-B04VaQlh.js";
|
|
2
|
+
import { t as DEFAULT_PROFILE_COMMUNICATION } from "./team-policy-Csvc5EDd.js";
|
|
3
|
+
import { t as ProfileCommunicationEditor } from "./ProfileCommunicationEditor-C2RU-2QB.js";
|
|
2
4
|
import { useState } from "react";
|
|
3
5
|
import { useRouter } from "@tanstack/react-router";
|
|
4
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
|
-
//#region src/routes/
|
|
7
|
+
//#region src/routes/templates/agents/$id/index.tsx?tsr-split=component
|
|
6
8
|
function ProfileDetailPage() {
|
|
7
9
|
const { loaded, modelGroups, skills } = Route.useLoaderData();
|
|
8
10
|
const [tab, setTab] = useState("basics");
|
|
@@ -11,9 +13,9 @@ function ProfileDetailPage() {
|
|
|
11
13
|
className: "mb-1",
|
|
12
14
|
children: [
|
|
13
15
|
/* @__PURE__ */ jsx("a", {
|
|
14
|
-
href: "/
|
|
16
|
+
href: "/templates/agents",
|
|
15
17
|
className: "mb-1 inline-block text-[0.85em] text-mocha-light hover:text-sapphire",
|
|
16
|
-
children: "←
|
|
18
|
+
children: "← agent templates"
|
|
17
19
|
}),
|
|
18
20
|
/* @__PURE__ */ jsx("h1", { children: loaded.profile.name }),
|
|
19
21
|
/* @__PURE__ */ jsxs("div", {
|
|
@@ -29,20 +31,27 @@ function ProfileDetailPage() {
|
|
|
29
31
|
/* @__PURE__ */ jsxs("p", {
|
|
30
32
|
className: "muted my-6",
|
|
31
33
|
children: [
|
|
32
|
-
"These settings and files seed every agent spawned from this
|
|
34
|
+
"These settings and files seed every agent spawned from this Agent template going forward.",
|
|
33
35
|
" ",
|
|
34
36
|
/* @__PURE__ */ jsx("strong", { children: "Existing agents keep their own copies" }),
|
|
35
37
|
" — edits here don't propagate to already-spawned agents."
|
|
36
38
|
]
|
|
37
39
|
}),
|
|
38
40
|
/* @__PURE__ */ jsx(Tabs, {
|
|
39
|
-
items: [
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
items: [
|
|
42
|
+
{
|
|
43
|
+
id: "basics",
|
|
44
|
+
label: "1. basics"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "skills",
|
|
48
|
+
label: "2. skills"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
id: "communication",
|
|
52
|
+
label: "3. communication"
|
|
53
|
+
}
|
|
54
|
+
],
|
|
46
55
|
active: tab,
|
|
47
56
|
onChange: (t) => setTab(t)
|
|
48
57
|
}),
|
|
@@ -104,9 +113,60 @@ function ProfileDetailPage() {
|
|
|
104
113
|
initialMode: loaded.profile.skillsMode,
|
|
105
114
|
initialPicked: new Set(loaded.defaultSkills),
|
|
106
115
|
skills
|
|
116
|
+
}),
|
|
117
|
+
tab === "communication" && /* @__PURE__ */ jsx(ProfileCommunicationCard, {
|
|
118
|
+
profileId: loaded.profile.id,
|
|
119
|
+
initial: loaded.profile.communicationDefaults ?? DEFAULT_PROFILE_COMMUNICATION
|
|
107
120
|
})
|
|
108
121
|
] });
|
|
109
122
|
}
|
|
123
|
+
function ProfileCommunicationCard({ profileId, initial }) {
|
|
124
|
+
const [value, setValue] = useState(initial);
|
|
125
|
+
const [savedAt, setSavedAt] = useState(null);
|
|
126
|
+
const dirty = JSON.stringify(value) !== JSON.stringify(initial);
|
|
127
|
+
const save = async () => {
|
|
128
|
+
const response = await fetch(`/api/profiles/${encodeURIComponent(profileId)}`, {
|
|
129
|
+
method: "PATCH",
|
|
130
|
+
headers: { "content-type": "application/json" },
|
|
131
|
+
body: JSON.stringify({ communicationDefaults: value })
|
|
132
|
+
});
|
|
133
|
+
if (!response.ok) throw new Error((await response.json().catch(() => null))?.error ?? response.statusText);
|
|
134
|
+
setSavedAt(Date.now());
|
|
135
|
+
};
|
|
136
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
137
|
+
className: "rounded-md border border-frost bg-snow p-5 shadow-baziu-sm",
|
|
138
|
+
children: [
|
|
139
|
+
/* @__PURE__ */ jsx("div", {
|
|
140
|
+
className: "mb-2 flex flex-wrap items-center gap-2",
|
|
141
|
+
children: /* @__PURE__ */ jsx("h3", {
|
|
142
|
+
className: "m-0 font-body text-[0.95rem] font-semibold normal-case text-chocolate",
|
|
143
|
+
children: "Communication defaults"
|
|
144
|
+
})
|
|
145
|
+
}),
|
|
146
|
+
/* @__PURE__ */ jsx("p", {
|
|
147
|
+
className: "muted mb-4",
|
|
148
|
+
children: "Materialized into new Team and Team policy snapshots after preset resolution. Existing snapshots never inherit later changes. Stored by the daemon."
|
|
149
|
+
}),
|
|
150
|
+
/* @__PURE__ */ jsx(ProfileCommunicationEditor, {
|
|
151
|
+
value,
|
|
152
|
+
onChange: setValue
|
|
153
|
+
}),
|
|
154
|
+
/* @__PURE__ */ jsxs("div", {
|
|
155
|
+
className: "mt-4 flex items-center gap-3",
|
|
156
|
+
children: [/* @__PURE__ */ jsx("button", {
|
|
157
|
+
type: "button",
|
|
158
|
+
className: "btn-primary",
|
|
159
|
+
disabled: !dirty,
|
|
160
|
+
onClick: save,
|
|
161
|
+
children: "save communication defaults"
|
|
162
|
+
}), savedAt && /* @__PURE__ */ jsx("span", {
|
|
163
|
+
className: "text-xs text-sapphire",
|
|
164
|
+
children: "saved to daemon"
|
|
165
|
+
})]
|
|
166
|
+
})
|
|
167
|
+
]
|
|
168
|
+
});
|
|
169
|
+
}
|
|
110
170
|
function Tabs({ items, active, onChange }) {
|
|
111
171
|
return /* @__PURE__ */ jsx("nav", {
|
|
112
172
|
role: "tablist",
|
|
@@ -1,25 +1,25 @@
|
|
|
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, r as ApiClientError } from "./daemon-client-2NRMzlTr.js";
|
|
4
|
-
//#region src/routes/
|
|
4
|
+
//#region src/routes/teams/$id/index.tsx?tss-serverfn-split
|
|
5
5
|
var fetchGroup_createServerFn_handler = createServerRpc({
|
|
6
|
-
id: "
|
|
6
|
+
id: "4773184b3ddd3656fb80ec74375a6d304e25acb56b79f1d349dcabf9f0914359",
|
|
7
7
|
name: "fetchGroup",
|
|
8
|
-
filename: "src/routes/
|
|
8
|
+
filename: "src/routes/teams/$id/index.tsx"
|
|
9
9
|
}, (opts) => fetchGroup.__executeServer(opts));
|
|
10
10
|
var fetchGroup = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(fetchGroup_createServerFn_handler, async ({ data }) => {
|
|
11
11
|
const c = daemonClient();
|
|
12
|
-
let
|
|
12
|
+
let team;
|
|
13
13
|
try {
|
|
14
|
-
|
|
14
|
+
team = await c.get(`/api/teams/${encodeURIComponent(data.id)}`);
|
|
15
15
|
} catch (err) {
|
|
16
16
|
if (err instanceof ApiClientError && err.status === 404) return null;
|
|
17
17
|
throw err;
|
|
18
18
|
}
|
|
19
|
-
const [all, profileGroups] = await Promise.all([c.get("/api/agents?includeArchived=true"), c.get("/api/
|
|
20
|
-
const members = all.filter((a) => a.
|
|
19
|
+
const [all, profileGroups] = await Promise.all([c.get("/api/agents?includeArchived=true"), c.get("/api/team-templates")]);
|
|
20
|
+
const members = all.filter((a) => a.teamId === team.id);
|
|
21
21
|
return {
|
|
22
|
-
|
|
22
|
+
team,
|
|
23
23
|
members,
|
|
24
24
|
profileGroups
|
|
25
25
|
};
|
|
@@ -0,0 +1,42 @@
|
|
|
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/templates/teams/$id/index.tsx?tss-serverfn-split
|
|
5
|
+
var fetchTeam_createServerFn_handler = createServerRpc({
|
|
6
|
+
id: "a0bbbee5d0c1240a05e35c04d56a0e95ec78f05265e4e937eec48c8ac2041e58",
|
|
7
|
+
name: "fetchTeam",
|
|
8
|
+
filename: "src/routes/templates/teams/$id/index.tsx"
|
|
9
|
+
}, (opts) => fetchTeam.__executeServer(opts));
|
|
10
|
+
var fetchTeam = createServerFn({ method: "POST" }).validator((data) => data).handler(fetchTeam_createServerFn_handler, async ({ data }) => {
|
|
11
|
+
try {
|
|
12
|
+
const client = daemonClient();
|
|
13
|
+
const [detail, profiles] = await Promise.all([client.get(`/api/team-templates/${encodeURIComponent(data.id)}`), client.get("/api/profiles")]);
|
|
14
|
+
return {
|
|
15
|
+
ok: true,
|
|
16
|
+
value: {
|
|
17
|
+
detail: {
|
|
18
|
+
...detail,
|
|
19
|
+
slots: detail.slots.map((slot) => ({
|
|
20
|
+
...slot,
|
|
21
|
+
display: null
|
|
22
|
+
})),
|
|
23
|
+
currentSnapshot: {
|
|
24
|
+
...detail.currentSnapshot,
|
|
25
|
+
slots: detail.currentSnapshot.slots.map((slot) => ({
|
|
26
|
+
...slot,
|
|
27
|
+
display: null
|
|
28
|
+
}))
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
profiles
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
} catch (error) {
|
|
35
|
+
return {
|
|
36
|
+
ok: false,
|
|
37
|
+
error: error instanceof Error ? error.message : String(error)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//#endregion
|
|
42
|
+
export { fetchTeam_createServerFn_handler };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { t as createServerFn } from "../server.js";
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
|
|
4
|
-
//#region src/routes/
|
|
5
|
-
var $$splitComponentImporter = () => import("./_id-
|
|
6
|
-
var fetchGroup = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("
|
|
7
|
-
var Route = createFileRoute("/
|
|
4
|
+
//#region src/routes/teams/$id/index.tsx
|
|
5
|
+
var $$splitComponentImporter = () => import("./_id-5lLzLwcv.js");
|
|
6
|
+
var fetchGroup = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("4773184b3ddd3656fb80ec74375a6d304e25acb56b79f1d349dcabf9f0914359"));
|
|
7
|
+
var Route = createFileRoute("/teams/$id/")({
|
|
8
8
|
loader: async ({ params }) => {
|
|
9
9
|
const data = await fetchGroup({ data: { id: params.id } });
|
|
10
|
-
if (!data) throw redirect({ to: "/
|
|
10
|
+
if (!data) throw redirect({ to: "/teams" });
|
|
11
11
|
return data;
|
|
12
12
|
},
|
|
13
13
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
@@ -2,9 +2,17 @@ import { t as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-ZBGxhl8t.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/agents/$id/index.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./_id-
|
|
5
|
+
var $$splitComponentImporter = () => import("./_id-B6g9wmPR.js");
|
|
6
6
|
var fetchAgent = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(createSsrRpc("846c9081aed17057351730985f133b0aab67a5dabfca9562552829a90ff30849"));
|
|
7
7
|
var Route = createFileRoute("/agents/$id/")({
|
|
8
|
+
validateSearch: (search) => ({
|
|
9
|
+
...typeof search.teamPolicy === "string" && search.teamPolicy ? { teamPolicy: search.teamPolicy } : {},
|
|
10
|
+
...search.view === "matrix" || search.view === "flow" ? { view: search.view } : {},
|
|
11
|
+
...typeof search.selected === "string" ? { selected: search.selected } : {},
|
|
12
|
+
...Number.isFinite(Number(search.vx)) ? { vx: Number(search.vx) } : {},
|
|
13
|
+
...Number.isFinite(Number(search.vy)) ? { vy: Number(search.vy) } : {},
|
|
14
|
+
...Number.isFinite(Number(search.vz)) ? { vz: Number(search.vz) } : {}
|
|
15
|
+
}),
|
|
8
16
|
loader: async ({ params }) => {
|
|
9
17
|
const data = await fetchAgent({ data: { id: params.id } });
|
|
10
18
|
if (!data) throw redirect({ to: "/agents" });
|
|
@@ -1,11 +1,12 @@
|
|
|
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, r as ApiClientError } from "./daemon-client-2NRMzlTr.js";
|
|
4
|
-
|
|
4
|
+
import "react";
|
|
5
|
+
//#region src/routes/templates/agents/$id/index.tsx?tss-serverfn-split
|
|
5
6
|
var fetchProfile_createServerFn_handler = createServerRpc({
|
|
6
|
-
id: "
|
|
7
|
+
id: "032d74b7d41c718191dbdde6b06ba44993340ce1154af1fa6723a6d4f7a7236e",
|
|
7
8
|
name: "fetchProfile",
|
|
8
|
-
filename: "src/routes/
|
|
9
|
+
filename: "src/routes/templates/agents/$id/index.tsx"
|
|
9
10
|
}, (opts) => fetchProfile.__executeServer(opts));
|
|
10
11
|
var fetchProfile = createServerFn({ method: "POST" }).inputValidator((d) => d).handler(fetchProfile_createServerFn_handler, async ({ data }) => {
|
|
11
12
|
const c = daemonClient();
|
|
@@ -19,7 +20,7 @@ var fetchProfile = createServerFn({ method: "POST" }).inputValidator((d) => d).h
|
|
|
19
20
|
const [models, skills] = await Promise.all([c.get("/api/config/available-models"), c.get("/api/skills")]);
|
|
20
21
|
return {
|
|
21
22
|
loaded,
|
|
22
|
-
modelGroups: models.
|
|
23
|
+
modelGroups: models.teams,
|
|
23
24
|
skills
|
|
24
25
|
};
|
|
25
26
|
});
|