bazilion 0.17.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +859 -79
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +4657 -552
- package/dist/daemon.js.map +1 -1
- package/dist/migrations/0001_init.sql +249 -3
- package/dist/web/client/assets/{ChatPane-BI3QVX2A.js → ChatPane-DCyGcqdh.js} +1 -1
- package/dist/web/client/assets/ConfirmDialog-C908TxS5.js +1 -0
- package/dist/web/client/assets/{FieldRow-swJ5qn2h.js → FieldRow-CELqI-1V.js} +1 -1
- package/dist/web/client/assets/{ProductionTeamPolicyEditor-LGw1UuF-.js → ProductionTeamPolicyEditor-DnTcWhG8.js} +2 -2
- package/dist/web/client/assets/{ProfileCommunicationEditor-raoau_YB.js → ProfileCommunicationEditor-BVIEaW3s.js} +1 -1
- package/dist/web/client/assets/{ResultSourceConversation-BEwkhFog.js → ResultSourceConversation-4gbZCh_s.js} +1 -1
- package/dist/web/client/assets/TeamTabs-V17b45X5.js +1 -0
- package/dist/web/client/assets/{TemplatesTabs-BX5hhEJ7.js → TemplatesTabs-BMK3Qok_.js} +1 -1
- package/dist/web/client/assets/{UnsavedChangesGuard-CVJtmR1D.js → UnsavedChangesGuard-BaE-UzyS.js} +1 -1
- package/dist/web/client/assets/{_id-BkYrUP0R.js → _id-BU1l9gP7.js} +1 -1
- package/dist/web/client/assets/{_id-DHqq2W34.js → _id-BVANQm00.js} +1 -1
- package/dist/web/client/assets/{_id-BQPOE3gj.js → _id-Bvh5LyUv.js} +1 -1
- package/dist/web/client/assets/{_id-CriixlZD.js → _id-CArZR-IO.js} +1 -1
- package/dist/web/client/assets/{_id-DmEVZIlx.js → _id-tUkSe5li.js} +1 -1
- package/dist/web/client/assets/{activity-Bzr8R18n.js → activity-CWCnqjqj.js} +1 -1
- package/dist/web/client/assets/{agents-DF4NALmJ.js → agents-CX4STmGK.js} +1 -1
- package/dist/web/client/assets/{agents-13oafeOA.js → agents-CdCnhH06.js} +1 -1
- package/dist/web/client/assets/{approvals-DsG0Ijls.js → approvals-CnNpwG78.js} +1 -1
- package/dist/web/client/assets/{attention-DG7K25mz.js → attention-CEE-wWrx.js} +1 -1
- package/dist/web/client/assets/chevron-right-CvCEwfSl.js +1 -0
- package/dist/web/client/assets/{config-DAaDbFhS.js → config-CSEtI-dq.js} +1 -1
- package/dist/web/client/assets/{inbox-C9e7QjsX.js → inbox-MYnBtPdF.js} +1 -1
- package/dist/web/client/assets/index-Ct31TjS-.js +52 -0
- package/dist/web/client/assets/{learning-23arTd21.js → learning-BIR5FTgQ.js} +1 -1
- package/dist/web/client/assets/login-DIeceuOs.js +1 -0
- package/dist/web/client/assets/{mcp-Cdx9qAl8.js → mcp-CX3kJpGu.js} +1 -1
- package/dist/web/client/assets/{members-fotOz4rR.js → members-DlhSjye1.js} +1 -1
- package/dist/web/client/assets/{memory-C7UznVot.js → memory-CsDd6b2l.js} +1 -1
- package/dist/web/client/assets/{policy-CactLW1X.js → policy-DkWDhG0x.js} +1 -1
- package/dist/web/client/assets/{results-DqEuYnQH.js → results-BHdhNHJJ.js} +1 -1
- package/dist/web/client/assets/review-Dyw47eM1.js +1 -0
- package/dist/web/client/assets/routes-DtYD4WJL.js +1 -0
- package/dist/web/client/assets/{services-xEANwZAu.js → services-WUlW7oEo.js} +1 -1
- package/dist/web/client/assets/{skills-CamV6wYM.js → skills-jNoUfUSZ.js} +1 -1
- package/dist/web/client/assets/styles-DCX6QTqJ.css +2 -0
- package/dist/web/client/assets/{teams-B12dMSjW.js → teams-C1kYRrtP.js} +1 -1
- package/dist/web/client/assets/{teams-CbH43zSG.js → teams-D3FaSKE7.js} +1 -1
- package/dist/web/client/assets/{telegram-muIql4u-.js → telegram-D86AO6V9.js} +1 -1
- package/dist/web/client/assets/{tokens-DGFmApdF.js → tokens-B42KDisP.js} +1 -1
- package/dist/web/client/assets/{triggers-D8n3sCBW.js → triggers-yEfWnQ_K.js} +1 -1
- package/dist/web/client/assets/verifications-DrHQEQFx.js +2 -0
- package/dist/web/client/assets/{welcome-CMHWRZhs.js → welcome-D8IbF_P0.js} +1 -1
- package/dist/web/client/assets/{x-BGCHwZOH.js → x-CXKABZ7C.js} +1 -1
- package/dist/web/server/assets/{TeamTabs-DQXh-3ij.js → TeamTabs-Dg4v6x0-.js} +4 -0
- package/dist/web/server/assets/{_id-DDyA9CGX.js → _id--onriuvj.js} +1 -1
- package/dist/web/server/assets/{_id-XkxlX036.js → _id-D2bDA1iV.js} +1 -1
- package/dist/web/server/assets/{_id-Dw3gKOGv.js → _id-DL-SnSnK.js} +1 -1
- package/dist/web/server/assets/{_id-DSPFJMzf.js → _id-Dab2CVtO2.js} +1 -1
- package/dist/web/server/assets/{_id-DtJn-yzu.js → _id-EAjRXNbD.js} +2 -2
- package/dist/web/server/assets/{_id-CPfILjMa.js → _id-bVispdh-.js} +1 -1
- package/dist/web/server/assets/{_tanstack-start-manifest_v-vOXRfKJD.js → _tanstack-start-manifest_v-BcTOb0oj.js} +87 -77
- package/dist/web/server/assets/{activity-pYQPT3QT.js → activity-CLDAy6rk.js} +1 -1
- package/dist/web/server/assets/{activity-BX1jZBPQ.js → activity-Cu7zKPGD.js} +1 -1
- package/dist/web/server/assets/{activity-bozPMU2v.js → activity-Dn50vkQP.js} +2 -2
- package/dist/web/server/assets/{agents-BKBfW700.js → agents-CdB2kuNN.js} +1 -1
- package/dist/web/server/assets/{agents-CVCfxnE2.js → agents-DfHcb2H2.js} +1 -1
- package/dist/web/server/assets/{approvals-C3ya6B6U.js → approvals-Bq846WaP.js} +1 -1
- package/dist/web/server/assets/{attention-l28hGCHS.js → attention-Sm-U7s_0.js} +1 -1
- package/dist/web/server/assets/{auth-AvDFNeOv.js → auth-PB5dVyvX.js} +1 -1
- package/dist/web/server/assets/{config-BWKn4XII.js → config-BNGTBu80.js} +1 -1
- package/dist/web/server/assets/{daemon-client-Cgx-YW4l.js → daemon-client-CWQvck6B.js} +50 -0
- package/dist/web/server/assets/{git-review-f_uta4Mx.js → git-review-C_h_tezf.js} +1 -1
- package/dist/web/server/assets/{inbox-BBZiOOQs.js → inbox-DJoU-bla.js} +1 -1
- package/dist/web/server/assets/{learning-CheVay1i.js → learning-DVb0I_3Z.js} +1 -1
- package/dist/web/server/assets/{mcp-DCBDmNtQ.js → mcp-CeZqOiDG.js} +1 -1
- package/dist/web/server/assets/{members-C5FQruRZ.js → members-Bd0OtiTr.js} +1 -1
- package/dist/web/server/assets/{members-C2He8mrU.js → members-CcYjuqxB.js} +1 -1
- package/dist/web/server/assets/{members-C_2xB9pr.js → members-xSXoYUOd.js} +2 -2
- package/dist/web/server/assets/{memory-rmiFNj7T.js → memory-CH2yNT89.js} +1 -1
- package/dist/web/server/assets/{memory-BTcmf0sD.js → memory-UP6AsRkO.js} +2 -2
- package/dist/web/server/assets/{memory-4tI-UbOf.js → memory-lo2vHRNw.js} +1 -1
- package/dist/web/server/assets/{policy-C3D2Q1EA.js → policy-B62WXIFo.js} +1 -1
- package/dist/web/server/assets/{policy-BGILKGHz.js → policy-Bze9Krhg.js} +2 -2
- package/dist/web/server/assets/{policy-DS7LGe--.js → policy-DrRKinMr.js} +1 -1
- package/dist/web/server/assets/{results-_6K_zXQS.js → results-BFqs2iOu.js} +1 -1
- package/dist/web/server/assets/{results-Cgx7SrFt.js → results-CzZk50Fu.js} +2 -2
- package/dist/web/server/assets/{results-C6H42tjq.js → results-fT2zyiJx.js} +1 -1
- package/dist/web/server/assets/review-CvUPk4HA.js +38 -0
- package/dist/web/server/assets/review-DYcYdUTv.js +859 -0
- package/dist/web/server/assets/review-packets-e36PsTSX.js +172 -0
- package/dist/web/server/assets/{router-ElARvZzI.js → router-NYhuYQCd.js} +34 -27
- package/dist/web/server/assets/{routes-BgMvLvS-.js → routes-RdppWPiW.js} +1 -1
- package/dist/web/server/assets/{services-yHZroxsi.js → services-Dgu7dcTC.js} +1 -1
- package/dist/web/server/assets/{skills--bIKID1Q.js → skills-DL7UIWa8.js} +1 -1
- package/dist/web/server/assets/{teams-BbRfuVXY.js → teams-Cmn7mdx9.js} +1 -1
- package/dist/web/server/assets/{teams--a956vWL.js → teams-DiC-MBg4.js} +1 -1
- package/dist/web/server/assets/{telegram-4kMxRtVZ.js → telegram-CLOFnLjF.js} +1 -1
- package/dist/web/server/assets/{tokens-BYwTN9JZ.js → tokens-BVva7GHu.js} +1 -1
- package/dist/web/server/assets/{triggers-BM6mzLuH.js → triggers-D4orksJq.js} +1 -1
- package/dist/web/server/assets/verification-C1SHMTX8.js +97 -0
- package/dist/web/server/assets/verifications-C_ycXrPK.js +26 -0
- package/dist/web/server/assets/verifications-Ci49n2Km.js +281 -0
- package/dist/web/server/server.js +87 -35
- package/dist/worker.js +597 -6
- package/dist/worker.js.map +1 -1
- package/package.json +3 -3
- package/dist/web/client/assets/ConfirmDialog-Qam6Ut08.js +0 -1
- package/dist/web/client/assets/TeamTabs-BDdTLGIf.js +0 -1
- package/dist/web/client/assets/chevron-right-DFqFHtLy.js +0 -1
- package/dist/web/client/assets/createServerFn-Dzfjt7mA.js +0 -3
- package/dist/web/client/assets/index-Dsstm2hf.js +0 -50
- package/dist/web/client/assets/login-BIXnBsuj.js +0 -1
- package/dist/web/client/assets/review-CnBSYclb.js +0 -1
- package/dist/web/client/assets/routes-COxMuwVz.js +0 -1
- package/dist/web/client/assets/styles-C6br2xxl.css +0 -2
- package/dist/web/server/assets/review-DHhiL-JQ.js +0 -393
- package/dist/web/server/assets/review-DSTMCwP4.js +0 -14
|
@@ -1,393 +0,0 @@
|
|
|
1
|
-
import { a as fetchTeamSnapshot, i as fetchTeamReview, n as fetchFileDiff, o as prepareReviewFeedback, s as sendReviewFeedback, t as captureTeamSnapshot } from "./git-review-BB3M9nYg.js";
|
|
2
|
-
import { t as Route } from "./review-DSTMCwP4.js";
|
|
3
|
-
import { r as PageShell } from "./Page-Bz-ydB8j.js";
|
|
4
|
-
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
5
|
-
import { a as referenceLabel, i as changeSummary, o as snapshotLabel, r as baseLabel, s as unavailableMessage } from "./git-review-presentation-TJiHJhen.js";
|
|
6
|
-
import { t as TeamTabs } from "./TeamTabs-DQXh-3ij.js";
|
|
7
|
-
import { useState } from "react";
|
|
8
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
-
//#region src/routes/teams/$id/review.tsx?tsr-split=component
|
|
10
|
-
function ReviewPage() {
|
|
11
|
-
const loaded = Route.useLoaderData();
|
|
12
|
-
const teamId = loaded.team.id;
|
|
13
|
-
const [base, setBase] = useState("");
|
|
14
|
-
const [appliedBase, setAppliedBase] = useState("");
|
|
15
|
-
const [review, setReview] = useState(loaded.review);
|
|
16
|
-
const [unavailable, setUnavailable] = useState(loaded.unavailable);
|
|
17
|
-
const [snapshots, setSnapshots] = useState(loaded.snapshots);
|
|
18
|
-
const [selected, setSelected] = useState(null);
|
|
19
|
-
const [diff, setDiff] = useState(null);
|
|
20
|
-
const [snapshot, setSnapshot] = useState(null);
|
|
21
|
-
const [latestSnapshotId, setLatestSnapshotId] = useState(() => loaded.snapshots[0]?.snapshotId ?? null);
|
|
22
|
-
const [note, setNote] = useState("");
|
|
23
|
-
const [agentId, setAgentId] = useState(() => loaded.members[0]?.id ?? "");
|
|
24
|
-
const [composed, setComposed] = useState(null);
|
|
25
|
-
const [status, setStatus] = useState(null);
|
|
26
|
-
const [busy, setBusy] = useState(false);
|
|
27
|
-
async function load(nextBase = appliedBase) {
|
|
28
|
-
setBusy(true);
|
|
29
|
-
setStatus({
|
|
30
|
-
kind: "info",
|
|
31
|
-
message: "Loading changes…"
|
|
32
|
-
});
|
|
33
|
-
try {
|
|
34
|
-
const data = await fetchTeamReview({ data: {
|
|
35
|
-
id: teamId,
|
|
36
|
-
...nextBase ? { base: nextBase } : {}
|
|
37
|
-
} });
|
|
38
|
-
if (!data) return;
|
|
39
|
-
setReview(data.review);
|
|
40
|
-
setUnavailable(data.unavailable);
|
|
41
|
-
setSnapshots(data.snapshots);
|
|
42
|
-
setAppliedBase(nextBase);
|
|
43
|
-
setSelected(null);
|
|
44
|
-
setDiff(null);
|
|
45
|
-
setStatus(null);
|
|
46
|
-
} finally {
|
|
47
|
-
setBusy(false);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async function openDiff(path) {
|
|
51
|
-
setSelected(path);
|
|
52
|
-
setDiff(null);
|
|
53
|
-
setStatus({
|
|
54
|
-
kind: "info",
|
|
55
|
-
message: "Loading diff…"
|
|
56
|
-
});
|
|
57
|
-
setDiff(await fetchFileDiff({ data: {
|
|
58
|
-
id: teamId,
|
|
59
|
-
path,
|
|
60
|
-
...appliedBase ? { base: appliedBase } : {}
|
|
61
|
-
} }));
|
|
62
|
-
setStatus(null);
|
|
63
|
-
}
|
|
64
|
-
async function capture() {
|
|
65
|
-
setBusy(true);
|
|
66
|
-
setStatus({
|
|
67
|
-
kind: "info",
|
|
68
|
-
message: "Capturing a source snapshot…"
|
|
69
|
-
});
|
|
70
|
-
const result = await captureTeamSnapshot({ data: { id: teamId } });
|
|
71
|
-
if ("reference" in result) {
|
|
72
|
-
setStatus({
|
|
73
|
-
kind: "info",
|
|
74
|
-
message: `Captured ${referenceLabel(result.reference)}`
|
|
75
|
-
});
|
|
76
|
-
await load();
|
|
77
|
-
} else setStatus({
|
|
78
|
-
kind: "error",
|
|
79
|
-
message: unavailableMessage(result.code, result.message)
|
|
80
|
-
});
|
|
81
|
-
setBusy(false);
|
|
82
|
-
}
|
|
83
|
-
async function prepare() {
|
|
84
|
-
if (!selected) return;
|
|
85
|
-
setBusy(true);
|
|
86
|
-
setStatus({
|
|
87
|
-
kind: "info",
|
|
88
|
-
message: "Preparing feedback…"
|
|
89
|
-
});
|
|
90
|
-
const result = await prepareReviewFeedback({ data: {
|
|
91
|
-
id: teamId,
|
|
92
|
-
path: selected,
|
|
93
|
-
...latestSnapshotId ? { snapshotId: latestSnapshotId } : {},
|
|
94
|
-
...note.trim() ? { note } : {}
|
|
95
|
-
} });
|
|
96
|
-
if ("message" in result && "reference" in result) {
|
|
97
|
-
setComposed(result);
|
|
98
|
-
setStatus(null);
|
|
99
|
-
} else setStatus({
|
|
100
|
-
kind: "error",
|
|
101
|
-
message: unavailableMessage(result.code, result.message)
|
|
102
|
-
});
|
|
103
|
-
setBusy(false);
|
|
104
|
-
}
|
|
105
|
-
async function send() {
|
|
106
|
-
if (!composed || !agentId) return;
|
|
107
|
-
setBusy(true);
|
|
108
|
-
const result = await sendReviewFeedback({ data: {
|
|
109
|
-
agentId,
|
|
110
|
-
message: composed.message
|
|
111
|
-
} });
|
|
112
|
-
setStatus("queued" in result ? {
|
|
113
|
-
kind: "info",
|
|
114
|
-
message: "Feedback queued for the Agent. It runs as the next turn."
|
|
115
|
-
} : {
|
|
116
|
-
kind: "error",
|
|
117
|
-
message: unavailableMessage(result.code, result.message)
|
|
118
|
-
});
|
|
119
|
-
if ("queued" in result) setComposed(null);
|
|
120
|
-
setBusy(false);
|
|
121
|
-
}
|
|
122
|
-
async function openSnapshot(snapshotId) {
|
|
123
|
-
setStatus({
|
|
124
|
-
kind: "info",
|
|
125
|
-
message: "Loading snapshot…"
|
|
126
|
-
});
|
|
127
|
-
const loadedSnapshot = await fetchTeamSnapshot({ data: {
|
|
128
|
-
id: teamId,
|
|
129
|
-
snapshotId
|
|
130
|
-
} });
|
|
131
|
-
setSnapshot(loadedSnapshot);
|
|
132
|
-
setStatus(loadedSnapshot ? null : {
|
|
133
|
-
kind: "error",
|
|
134
|
-
message: "That snapshot is no longer retained."
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
const changes = review?.changes;
|
|
138
|
-
return /* @__PURE__ */ jsxs(PageShell, { children: [
|
|
139
|
-
/* @__PURE__ */ jsxs("header", { children: [/* @__PURE__ */ jsxs("h1", { children: [loaded.team.name || loaded.team.id, " review"] }), /* @__PURE__ */ jsx("p", { children: "Changes since a pinned baseline, and the source snapshots taken for them. Inspection is read-only — nothing here stages, commits or reverts anything." })] }),
|
|
140
|
-
/* @__PURE__ */ jsx(TeamTabs, { teamId }),
|
|
141
|
-
/* @__PURE__ */ jsxs("section", {
|
|
142
|
-
className: "space-y-2",
|
|
143
|
-
"aria-label": "Comparison base",
|
|
144
|
-
children: [
|
|
145
|
-
/* @__PURE__ */ jsxs("div", {
|
|
146
|
-
className: "flex flex-col gap-2 sm:flex-row sm:items-end",
|
|
147
|
-
children: [/* @__PURE__ */ jsxs("label", {
|
|
148
|
-
className: "flex min-w-0 flex-1 flex-col gap-1",
|
|
149
|
-
children: [/* @__PURE__ */ jsx("span", { children: "Comparison base" }), /* @__PURE__ */ jsx("input", {
|
|
150
|
-
className: "input",
|
|
151
|
-
value: base,
|
|
152
|
-
placeholder: "HEAD",
|
|
153
|
-
onChange: (event) => setBase(event.target.value),
|
|
154
|
-
onKeyDown: (event) => {
|
|
155
|
-
if (event.key === "Enter") load(base);
|
|
156
|
-
}
|
|
157
|
-
})]
|
|
158
|
-
}), /* @__PURE__ */ jsxs("div", {
|
|
159
|
-
className: "flex gap-2",
|
|
160
|
-
children: [/* @__PURE__ */ jsx(Button, {
|
|
161
|
-
variant: "ghost",
|
|
162
|
-
disabled: busy,
|
|
163
|
-
onClick: () => void load(base),
|
|
164
|
-
children: "Apply base"
|
|
165
|
-
}), /* @__PURE__ */ jsx(Button, {
|
|
166
|
-
variant: "primary",
|
|
167
|
-
disabled: busy,
|
|
168
|
-
onClick: () => void load(),
|
|
169
|
-
children: "Refresh"
|
|
170
|
-
})]
|
|
171
|
-
})]
|
|
172
|
-
}),
|
|
173
|
-
changes && /* @__PURE__ */ jsx("p", {
|
|
174
|
-
className: "text-sm opacity-80",
|
|
175
|
-
children: baseLabel(changes.identity, changes)
|
|
176
|
-
}),
|
|
177
|
-
/* @__PURE__ */ jsx("p", {
|
|
178
|
-
className: "text-xs opacity-70",
|
|
179
|
-
children: "A branch name is resolved to a concrete commit when the review loads, so a moving tip cannot rewrite what you are looking at."
|
|
180
|
-
})
|
|
181
|
-
]
|
|
182
|
-
}),
|
|
183
|
-
status && /* @__PURE__ */ jsx("p", {
|
|
184
|
-
role: status.kind === "error" ? "alert" : "status",
|
|
185
|
-
className: "text-sm",
|
|
186
|
-
children: status.message
|
|
187
|
-
}),
|
|
188
|
-
unavailable && /* @__PURE__ */ jsxs("section", {
|
|
189
|
-
className: "rounded-sm border border-fawn bg-ivory p-3",
|
|
190
|
-
"aria-label": "Review unavailable",
|
|
191
|
-
children: [/* @__PURE__ */ jsx("p", {
|
|
192
|
-
role: "alert",
|
|
193
|
-
children: unavailableMessage(unavailable.code, unavailable.message)
|
|
194
|
-
}), unavailable.code && /* @__PURE__ */ jsxs("p", {
|
|
195
|
-
className: "text-xs opacity-70",
|
|
196
|
-
children: ["code: ", unavailable.code]
|
|
197
|
-
})]
|
|
198
|
-
}),
|
|
199
|
-
changes && /* @__PURE__ */ jsxs("section", {
|
|
200
|
-
className: "space-y-2",
|
|
201
|
-
"aria-label": "Changes since baseline",
|
|
202
|
-
children: [
|
|
203
|
-
/* @__PURE__ */ jsx("h2", { children: "Changes since baseline" }),
|
|
204
|
-
changes.changes.length === 0 && /* @__PURE__ */ jsx("p", { children: "No changes since this baseline." }),
|
|
205
|
-
changes.changes.length > 0 && /* @__PURE__ */ jsx("ul", {
|
|
206
|
-
className: "divide-y divide-fawn rounded-sm border border-fawn",
|
|
207
|
-
children: changes.changes.map((change) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsxs("button", {
|
|
208
|
-
type: "button",
|
|
209
|
-
"aria-current": selected === change.path ? "true" : void 0,
|
|
210
|
-
onClick: () => void openDiff(change.path),
|
|
211
|
-
className: "flex w-full flex-col gap-1 px-3 py-2 text-left hover:bg-sapphire-glow focus:bg-sapphire-glow",
|
|
212
|
-
children: [/* @__PURE__ */ jsx("span", {
|
|
213
|
-
className: "break-all font-mono text-sm",
|
|
214
|
-
children: change.previousPath ? `${change.previousPath} → ${change.path}` : change.path
|
|
215
|
-
}), /* @__PURE__ */ jsxs("span", {
|
|
216
|
-
className: "text-xs opacity-80",
|
|
217
|
-
children: [changeSummary(change), change.patchTruncated ? " · diff truncated" : ""]
|
|
218
|
-
})]
|
|
219
|
-
}) }, `${change.status}:${change.path}`))
|
|
220
|
-
}),
|
|
221
|
-
changes.truncated && /* @__PURE__ */ jsx("p", {
|
|
222
|
-
className: "text-sm",
|
|
223
|
-
children: "This list is incomplete: more files changed than the review limit allows."
|
|
224
|
-
}),
|
|
225
|
-
(changes.withheld.excluded > 0 || changes.withheld.untracked > 0) && /* @__PURE__ */ jsxs("p", {
|
|
226
|
-
className: "text-xs opacity-80",
|
|
227
|
-
children: [
|
|
228
|
-
changes.withheld.excluded,
|
|
229
|
-
" excluded and ",
|
|
230
|
-
changes.withheld.untracked,
|
|
231
|
-
" untracked path(s) withheld by scope policy."
|
|
232
|
-
]
|
|
233
|
-
}),
|
|
234
|
-
changes.issues.map((issue) => /* @__PURE__ */ jsxs("p", {
|
|
235
|
-
className: "text-xs opacity-80",
|
|
236
|
-
children: [
|
|
237
|
-
"note: ",
|
|
238
|
-
issue.code,
|
|
239
|
-
": ",
|
|
240
|
-
issue.message
|
|
241
|
-
]
|
|
242
|
-
}, `${issue.code}:${issue.message}`))
|
|
243
|
-
]
|
|
244
|
-
}),
|
|
245
|
-
selected && /* @__PURE__ */ jsxs("section", {
|
|
246
|
-
className: "space-y-2",
|
|
247
|
-
"aria-label": "Selected file diff",
|
|
248
|
-
children: [
|
|
249
|
-
/* @__PURE__ */ jsx("h2", {
|
|
250
|
-
className: "break-all font-mono text-base",
|
|
251
|
-
children: selected
|
|
252
|
-
}),
|
|
253
|
-
diff === null ? /* @__PURE__ */ jsx("p", {
|
|
254
|
-
className: "text-sm",
|
|
255
|
-
children: "Loading…"
|
|
256
|
-
}) : diff.patch === null ? /* @__PURE__ */ jsxs("p", {
|
|
257
|
-
className: "text-sm",
|
|
258
|
-
children: [
|
|
259
|
-
"No diff text for this file",
|
|
260
|
-
diff.omitted ? ` (${diff.omitted.replaceAll("_", " ")})` : "",
|
|
261
|
-
"."
|
|
262
|
-
]
|
|
263
|
-
}) : /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("pre", {
|
|
264
|
-
className: "max-h-96 overflow-auto whitespace-pre-wrap break-words rounded-sm bg-[rgba(42,31,22,0.04)] p-3 font-mono text-xs",
|
|
265
|
-
children: diff.patch
|
|
266
|
-
}), diff.truncated && /* @__PURE__ */ jsx("p", {
|
|
267
|
-
className: "text-xs",
|
|
268
|
-
children: "This diff was truncated at the patch limit."
|
|
269
|
-
})] }),
|
|
270
|
-
/* @__PURE__ */ jsxs("div", {
|
|
271
|
-
className: "space-y-2 rounded-sm border border-fawn p-3",
|
|
272
|
-
children: [
|
|
273
|
-
/* @__PURE__ */ jsx("h3", { children: "Send feedback about this file" }),
|
|
274
|
-
/* @__PURE__ */ jsxs("label", {
|
|
275
|
-
className: "flex flex-col gap-1",
|
|
276
|
-
children: [/* @__PURE__ */ jsx("span", { children: "Note (optional)" }), /* @__PURE__ */ jsx("textarea", {
|
|
277
|
-
className: "input",
|
|
278
|
-
rows: 2,
|
|
279
|
-
value: note,
|
|
280
|
-
onChange: (event) => setNote(event.target.value)
|
|
281
|
-
})]
|
|
282
|
-
}),
|
|
283
|
-
/* @__PURE__ */ jsxs("label", {
|
|
284
|
-
className: "flex flex-col gap-1",
|
|
285
|
-
children: [/* @__PURE__ */ jsx("span", { children: "Agent" }), /* @__PURE__ */ jsx("select", {
|
|
286
|
-
className: "input",
|
|
287
|
-
value: agentId,
|
|
288
|
-
onChange: (event) => setAgentId(event.target.value),
|
|
289
|
-
children: loaded.members.map((member) => /* @__PURE__ */ jsx("option", {
|
|
290
|
-
value: member.id,
|
|
291
|
-
children: member.name
|
|
292
|
-
}, member.id))
|
|
293
|
-
})]
|
|
294
|
-
}),
|
|
295
|
-
/* @__PURE__ */ jsxs("div", {
|
|
296
|
-
className: "flex flex-wrap gap-2",
|
|
297
|
-
children: [/* @__PURE__ */ jsx(Button, {
|
|
298
|
-
variant: "ghost",
|
|
299
|
-
disabled: busy,
|
|
300
|
-
onClick: () => void prepare(),
|
|
301
|
-
children: "Preview message"
|
|
302
|
-
}), /* @__PURE__ */ jsx(Button, {
|
|
303
|
-
variant: "primary",
|
|
304
|
-
disabled: busy || !composed || !agentId,
|
|
305
|
-
onClick: () => void send(),
|
|
306
|
-
children: "Queue for Agent"
|
|
307
|
-
})]
|
|
308
|
-
}),
|
|
309
|
-
latestSnapshotId ? /* @__PURE__ */ jsxs("p", {
|
|
310
|
-
className: "text-xs opacity-70",
|
|
311
|
-
children: [
|
|
312
|
-
"Referenced snapshot: ",
|
|
313
|
-
latestSnapshotId.slice(0, 12),
|
|
314
|
-
". It is rechecked now, and the verdict is stated in the message."
|
|
315
|
-
]
|
|
316
|
-
}) : /* @__PURE__ */ jsx("p", {
|
|
317
|
-
className: "text-xs opacity-70",
|
|
318
|
-
children: "No snapshot captured for this Team yet, so the feedback will say its source identity is unknown rather than implying the lines still match."
|
|
319
|
-
}),
|
|
320
|
-
composed && /* @__PURE__ */ jsxs(Fragment, { children: [/* @__PURE__ */ jsx("p", {
|
|
321
|
-
className: "text-sm",
|
|
322
|
-
children: composed.applicability === "current" ? "This file is unchanged since the snapshot." : composed.applicability === "stale" ? "This file changed since the snapshot — the selected lines may have moved." : `Source identity unknown (${composed.applicabilityReason}).`
|
|
323
|
-
}), /* @__PURE__ */ jsx("pre", {
|
|
324
|
-
className: "max-h-64 overflow-auto whitespace-pre-wrap break-words rounded-sm bg-[rgba(42,31,22,0.04)] p-3 font-mono text-xs",
|
|
325
|
-
children: composed.message
|
|
326
|
-
})] })
|
|
327
|
-
]
|
|
328
|
-
})
|
|
329
|
-
]
|
|
330
|
-
}),
|
|
331
|
-
/* @__PURE__ */ jsxs("section", {
|
|
332
|
-
className: "space-y-2",
|
|
333
|
-
"aria-label": "Source snapshots",
|
|
334
|
-
children: [
|
|
335
|
-
/* @__PURE__ */ jsxs("div", {
|
|
336
|
-
className: "flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between",
|
|
337
|
-
children: [/* @__PURE__ */ jsx("h2", { children: "Source snapshots" }), /* @__PURE__ */ jsx(Button, {
|
|
338
|
-
variant: "ghost",
|
|
339
|
-
disabled: busy,
|
|
340
|
-
onClick: () => void capture(),
|
|
341
|
-
children: "Capture snapshot"
|
|
342
|
-
})]
|
|
343
|
-
}),
|
|
344
|
-
/* @__PURE__ */ jsx("p", {
|
|
345
|
-
className: "text-xs opacity-70",
|
|
346
|
-
children: "A snapshot records HEAD, the index and digests of changed files — never file content. Untracked content is only included when a path is named explicitly."
|
|
347
|
-
}),
|
|
348
|
-
snapshots.length === 0 && /* @__PURE__ */ jsx("p", { children: "No retained snapshots for this Team." }),
|
|
349
|
-
snapshots.length > 0 && /* @__PURE__ */ jsx("ul", {
|
|
350
|
-
className: "divide-y divide-fawn rounded-sm border border-fawn",
|
|
351
|
-
children: snapshots.map((entry) => /* @__PURE__ */ jsx("li", { children: /* @__PURE__ */ jsx("button", {
|
|
352
|
-
type: "button",
|
|
353
|
-
onClick: () => void openSnapshot(entry.snapshotId),
|
|
354
|
-
className: "w-full px-3 py-2 text-left font-mono text-xs hover:bg-sapphire-glow focus:bg-sapphire-glow",
|
|
355
|
-
children: snapshotLabel(entry)
|
|
356
|
-
}) }, entry.snapshotId))
|
|
357
|
-
}),
|
|
358
|
-
snapshot && /* @__PURE__ */ jsxs("div", {
|
|
359
|
-
className: "space-y-1",
|
|
360
|
-
children: [
|
|
361
|
-
/* @__PURE__ */ jsxs("p", {
|
|
362
|
-
className: "text-sm",
|
|
363
|
-
children: [
|
|
364
|
-
snapshot.id.slice(0, 12),
|
|
365
|
-
" · ",
|
|
366
|
-
snapshot.complete ? "complete" : "incomplete — applicability unknown",
|
|
367
|
-
" · head ",
|
|
368
|
-
snapshot.head?.slice(0, 12) ?? "(unborn)"
|
|
369
|
-
]
|
|
370
|
-
}),
|
|
371
|
-
snapshot.entries.length > 0 && /* @__PURE__ */ jsx("ul", {
|
|
372
|
-
className: "space-y-1 font-mono text-xs",
|
|
373
|
-
children: snapshot.entries.map((entry) => /* @__PURE__ */ jsxs("li", { children: [
|
|
374
|
-
entry.layer,
|
|
375
|
-
" · ",
|
|
376
|
-
entry.kind,
|
|
377
|
-
" · ",
|
|
378
|
-
entry.path,
|
|
379
|
-
entry.bytes === null ? "" : ` · ${entry.bytes}B`
|
|
380
|
-
] }, `${entry.layer}:${entry.path}`))
|
|
381
|
-
}),
|
|
382
|
-
snapshot.exclusions.length > 0 && /* @__PURE__ */ jsxs("p", {
|
|
383
|
-
className: "text-xs opacity-80",
|
|
384
|
-
children: ["withheld: ", snapshot.exclusions.map((item) => `${item.path} (${item.reason})`).join(", ")]
|
|
385
|
-
})
|
|
386
|
-
]
|
|
387
|
-
})
|
|
388
|
-
]
|
|
389
|
-
})
|
|
390
|
-
] });
|
|
391
|
-
}
|
|
392
|
-
//#endregion
|
|
393
|
-
export { ReviewPage as component };
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { i as fetchTeamReview } from "./git-review-BB3M9nYg.js";
|
|
2
|
-
import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
|
|
3
|
-
//#region src/routes/teams/$id/review.tsx
|
|
4
|
-
var $$splitComponentImporter = () => import("./review-DHhiL-JQ.js");
|
|
5
|
-
var Route = createFileRoute("/teams/$id/review")({
|
|
6
|
-
loader: async ({ params }) => {
|
|
7
|
-
const data = await fetchTeamReview({ data: { id: params.id } });
|
|
8
|
-
if (!data) throw redirect({ to: "/teams" });
|
|
9
|
-
return data;
|
|
10
|
-
},
|
|
11
|
-
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
12
|
-
});
|
|
13
|
-
//#endregion
|
|
14
|
-
export { Route as t };
|