bazilion 0.16.0 → 0.18.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.
Files changed (128) hide show
  1. package/dist/cli.js +672 -87
  2. package/dist/cli.js.map +1 -1
  3. package/dist/daemon.js +3759 -432
  4. package/dist/daemon.js.map +1 -1
  5. package/dist/migrations/0001_init.sql +169 -0
  6. package/dist/web/client/assets/ChatPane-CAYS_fIQ.js +76 -0
  7. package/dist/web/client/assets/ConfirmDialog-BzIiABOP.js +1 -0
  8. package/dist/web/client/assets/{FieldRow-DJ2Gx4Du.js → FieldRow-W_54rw5c.js} +1 -1
  9. package/dist/web/client/assets/ProductionTeamPolicyEditor-DNXVX8Lz.js +7 -0
  10. package/dist/web/client/assets/ProfileCommunicationEditor-DN0fOzqn.js +1 -0
  11. package/dist/web/client/assets/{ResultSourceConversation-CtzJ8QA-.js → ResultSourceConversation-DoU4tOWc.js} +1 -1
  12. package/dist/web/client/assets/TeamTabs-BmTZRI4T.js +1 -0
  13. package/dist/web/client/assets/TemplatesTabs-Bs_OXKwx.js +1 -0
  14. package/dist/web/client/assets/{UnsavedChangesGuard-BCsLw-mU.js → UnsavedChangesGuard-CPRtFReU.js} +1 -1
  15. package/dist/web/client/assets/{_id-DxopIW-y.js → _id-CxAB4TDr.js} +1 -1
  16. package/dist/web/client/assets/_id-DL4tJFQB.js +1 -0
  17. package/dist/web/client/assets/{_id-BEDmIXVf.js → _id-DR9eFC17.js} +1 -1
  18. package/dist/web/client/assets/{_id-BFM_tn_s.js → _id-Dbmei5tg.js} +1 -1
  19. package/dist/web/client/assets/{_id-B5Ov7cdO.js → _id-ybF-pqmr.js} +1 -1
  20. package/dist/web/client/assets/activity-oUyy77jD.js +1 -0
  21. package/dist/web/client/assets/{agents-CMPOFcs-.js → agents-D_TrEqAg.js} +1 -1
  22. package/dist/web/client/assets/{agents-O4soKZND.js → agents-DkjJp7JP.js} +1 -1
  23. package/dist/web/client/assets/{approvals-CwDu_lrA.js → approvals-DhOerWdt.js} +1 -1
  24. package/dist/web/client/assets/{attention-BY8MMuM_.js → attention-DGwiF-Jy.js} +1 -1
  25. package/dist/web/client/assets/chevron-right-DSa4xPTs.js +1 -0
  26. package/dist/web/client/assets/config-BJ2ZzHPR.js +3 -0
  27. package/dist/web/client/assets/createServerFn-Dzfjt7mA.js +3 -0
  28. package/dist/web/client/assets/git-review-presentation-CzHQulDk.js +1 -0
  29. package/dist/web/client/assets/{inbox-CWXql0K3.js → inbox-BUElnGep.js} +1 -1
  30. package/dist/web/client/assets/index-Bi-HxcPG.js +50 -0
  31. package/dist/web/client/assets/{learning-DAm4dyyc.js → learning-BiTHNwB3.js} +1 -1
  32. package/dist/web/client/assets/login-BmcZvAH2.js +1 -0
  33. package/dist/web/client/assets/{mcp-loLB0wuh.js → mcp-Cwk9V82W.js} +1 -1
  34. package/dist/web/client/assets/{members-BJ0ikkTl.js → members-CHDNabFh.js} +1 -1
  35. package/dist/web/client/assets/{memory-Drn9Gv53.js → memory-Cx_Fpd4e.js} +1 -1
  36. package/dist/web/client/assets/policy-C0nMdwcG.js +1 -0
  37. package/dist/web/client/assets/{results-9exU6f7m.js → results-Bz3jASs-.js} +1 -1
  38. package/dist/web/client/assets/review-AK9WGmpv.js +1 -0
  39. package/dist/web/client/assets/routes-DsMY_6oy.js +1 -0
  40. package/dist/web/client/assets/{services-BLso1BhA.js → services-DItA6fJ7.js} +1 -1
  41. package/dist/web/client/assets/{skills-BodqX3OI.js → skills-DbNV2vgL.js} +1 -1
  42. package/dist/web/client/assets/{styles-d1yjBpud.css → styles-C6br2xxl.css} +1 -1
  43. package/dist/web/client/assets/{teams-ByQedXZi.js → teams-D83scDxw.js} +1 -1
  44. package/dist/web/client/assets/{teams-SYsF1bOR.js → teams-DAny1ypN.js} +1 -1
  45. package/dist/web/client/assets/{telegram-DC9PLFbB.js → telegram-BOmf9vUh.js} +1 -1
  46. package/dist/web/client/assets/{tokens-DGy8Ijpo.js → tokens-DBGH6Bw5.js} +1 -1
  47. package/dist/web/client/assets/{triggers-BXpVmHDG.js → triggers-D1_pseI3.js} +1 -1
  48. package/dist/web/client/assets/verifications-CBTo-FyV.js +2 -0
  49. package/dist/web/client/assets/welcome-DAfPOm15.js +1 -0
  50. package/dist/web/client/assets/x-CWY-gUaM.js +1 -0
  51. package/dist/web/server/assets/{ChatPane-CS5oI7ef.js → ChatPane-DybH39WK.js} +301 -14
  52. package/dist/web/server/assets/{ResultSourceConversation-BpVWBRYq.js → ResultSourceConversation-BmXTcEOA.js} +1 -1
  53. package/dist/web/server/assets/{TeamTabs-TCKjCvMA.js → TeamTabs-Dg4v6x0-.js} +8 -0
  54. package/dist/web/server/assets/{_id-DtIYuJJX.js → _id--onriuvj.js} +1 -1
  55. package/dist/web/server/assets/{_id-DOnInzLb.js → _id--zoh1vv7.js} +1 -1
  56. package/dist/web/server/assets/{_id-CeyHEsCZ.js → _id-6p-mDmI8.js} +1 -1
  57. package/dist/web/server/assets/{_id-5pgKoid8.js → _id-BN1BPEDI.js} +1 -1
  58. package/dist/web/server/assets/{_id-DFHB9JFQ.js → _id-BYKpT2Tu.js} +1 -1
  59. package/dist/web/server/assets/{_id-B_-CDHOi2.js → _id-BqWTB8Wl.js} +1 -1
  60. package/dist/web/server/assets/{_id-BnqodC1c2.js → _id-C_2er0_G.js} +3 -3
  61. package/dist/web/server/assets/{_id-BG2nkGxa.js → _id-DptBl3X8.js} +1 -1
  62. package/dist/web/server/assets/{_id-DwZXhLlL.js → _id-EAjRXNbD.js} +2 -2
  63. package/dist/web/server/assets/{_id-DrB9uR1b.js → _id-dUnXL-My2.js} +1 -1
  64. package/dist/web/server/assets/{_tanstack-start-manifest_v-D7gKv6m6.js → _tanstack-start-manifest_v-B3M-dfRO.js} +108 -84
  65. package/dist/web/server/assets/{activity-0VUkStOu.js → activity-C5jpoEQI.js} +1 -1
  66. package/dist/web/server/assets/{activity-C88qrNqv.js → activity-Cu7zKPGD.js} +1 -1
  67. package/dist/web/server/assets/{activity-5fWKPDxj.js → activity-Dn50vkQP.js} +2 -2
  68. package/dist/web/server/assets/{agents-CSXLaM2W.js → agents-RE6aYOb-.js} +1 -1
  69. package/dist/web/server/assets/{agents-C86K6HvS.js → agents-nAOx_H7s.js} +1 -1
  70. package/dist/web/server/assets/{approvals-C3MysI6l.js → approvals-DhHxIDrL.js} +1 -1
  71. package/dist/web/server/assets/{attention-DLeLCKah.js → attention-CBWzWRni.js} +1 -1
  72. package/dist/web/server/assets/{auth-CDZp9aEk.js → auth-tB3i6cFd.js} +1 -1
  73. package/dist/web/server/assets/{config-BVTHvljR.js → config-D1k_tTAw.js} +1 -1
  74. package/dist/web/server/assets/{daemon-client-xWyYKAcx.js → daemon-client-C7qjQ2iO.js} +45 -0
  75. package/dist/web/server/assets/git-review-BB3M9nYg.js +26 -0
  76. package/dist/web/server/assets/git-review-Bf5ABFJg.js +179 -0
  77. package/dist/web/server/assets/git-review-presentation-TJiHJhen.js +81 -0
  78. package/dist/web/server/assets/{inbox-PQTrjtOw.js → inbox-Dw4pTevh.js} +1 -1
  79. package/dist/web/server/assets/{learning-K0cmDsZR.js → learning-CF8ZzFVD.js} +1 -1
  80. package/dist/web/server/assets/{mcp-Rtraochg.js → mcp-D5dmBT82.js} +1 -1
  81. package/dist/web/server/assets/{members-CD3GiTfF.js → members-Bd0OtiTr.js} +1 -1
  82. package/dist/web/server/assets/{members-grAKFWgv.js → members-CvwEN9pm.js} +1 -1
  83. package/dist/web/server/assets/{members-cc5SeEaW.js → members-xSXoYUOd.js} +2 -2
  84. package/dist/web/server/assets/{memory-egFpBD1g.js → memory-CcPK7um7.js} +1 -1
  85. package/dist/web/server/assets/{memory-C5i_GxlY.js → memory-UP6AsRkO.js} +2 -2
  86. package/dist/web/server/assets/{memory-CVqnyUaM.js → memory-lo2vHRNw.js} +1 -1
  87. package/dist/web/server/assets/{policy-bLKwvnja.js → policy-B62WXIFo.js} +1 -1
  88. package/dist/web/server/assets/{policy-Dgjb0_gK.js → policy-Bze9Krhg.js} +2 -2
  89. package/dist/web/server/assets/{policy-ooSBgiDS.js → policy-Dh6wd2wN.js} +1 -1
  90. package/dist/web/server/assets/{results-N-kP4iFT.js → results-BFqs2iOu.js} +1 -1
  91. package/dist/web/server/assets/{results-DXdYtHaq.js → results-BWnu3gXP.js} +1 -1
  92. package/dist/web/server/assets/{results-CfNsFncJ.js → results-CzZk50Fu.js} +3 -3
  93. package/dist/web/server/assets/review-DUe3vHPU.js +393 -0
  94. package/dist/web/server/assets/review-c_-cFi7H.js +14 -0
  95. package/dist/web/server/assets/{router-B6g_s7W3.js → router-Deq94UJQ.js} +41 -27
  96. package/dist/web/server/assets/{routes-pcRy_Sf8.js → routes-B6x3pEW8.js} +1 -1
  97. package/dist/web/server/assets/{routes-BqSaZvlu.js → routes-CVKkvFVv.js} +1 -1
  98. package/dist/web/server/assets/{routes-Dsh8F_7i.js → routes-DsUzzxk4.js} +2 -2
  99. package/dist/web/server/assets/{services-DlZA8fRL.js → services-CEr61xb5.js} +1 -1
  100. package/dist/web/server/assets/{skills-i2duvgW-.js → skills-BImC3LTO.js} +1 -1
  101. package/dist/web/server/assets/{teams-6RYIj1Xm.js → teams-8zEIo08E.js} +1 -1
  102. package/dist/web/server/assets/{teams-B1AI3NfN.js → teams-D-yaAWLV.js} +1 -1
  103. package/dist/web/server/assets/{telegram-C4q0YTVn.js → telegram-CGl_LFtJ.js} +1 -1
  104. package/dist/web/server/assets/{tokens-RFquA2Bx.js → tokens-cB-uf7qm.js} +1 -1
  105. package/dist/web/server/assets/{triggers-DVD-iE-N.js → triggers-CtSj79L0.js} +1 -1
  106. package/dist/web/server/assets/verification-B5QjcpIo.js +97 -0
  107. package/dist/web/server/assets/verifications-BfQsfwSE.js +268 -0
  108. package/dist/web/server/assets/verifications-CUq_6ZqL.js +26 -0
  109. package/dist/web/server/server.js +72 -28
  110. package/dist/worker.js +470 -79
  111. package/dist/worker.js.map +1 -1
  112. package/package.json +3 -3
  113. package/dist/web/client/assets/ChatPane-CQZzxOir.js +0 -76
  114. package/dist/web/client/assets/ConfirmDialog-MicTTwdy.js +0 -1
  115. package/dist/web/client/assets/ProductionTeamPolicyEditor-DqUnN_ce.js +0 -7
  116. package/dist/web/client/assets/ProfileCommunicationEditor-DArXub0b.js +0 -1
  117. package/dist/web/client/assets/TeamTabs-DbIk5vvT.js +0 -1
  118. package/dist/web/client/assets/TemplatesTabs-CatJIjGi.js +0 -1
  119. package/dist/web/client/assets/_id-CrnEVcw8.js +0 -1
  120. package/dist/web/client/assets/activity-CrG8Bg60.js +0 -1
  121. package/dist/web/client/assets/chevron-right-Cf6vKeLq.js +0 -1
  122. package/dist/web/client/assets/config-Cn4iBJFz.js +0 -3
  123. package/dist/web/client/assets/index-Bq2zrG2_.js +0 -52
  124. package/dist/web/client/assets/login-BsABI8Ux.js +0 -1
  125. package/dist/web/client/assets/policy-pQadZyk0.js +0 -1
  126. package/dist/web/client/assets/routes-jw1PuqiR.js +0 -1
  127. package/dist/web/client/assets/welcome-BKsnsCxJ.js +0 -1
  128. package/dist/web/client/assets/x-BK4xNCzS.js +0 -1
@@ -0,0 +1,97 @@
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
3
+ import { n as daemonClient, r as ApiClientError } from "./daemon-client-C7qjQ2iO.js";
4
+ //#region src/lib/verification.ts?tss-serverfn-split
5
+ function failure(error, fallback) {
6
+ if (!(error instanceof ApiClientError)) throw error;
7
+ const body = error.body;
8
+ return {
9
+ code: body.code,
10
+ message: body.error ?? fallback
11
+ };
12
+ }
13
+ var fetchTeamVerifications_createServerFn_handler = createServerRpc({
14
+ id: "2a72cbadf7e2fa943de062817aed454cd746f9ab8b95fce78f94d327756363b1",
15
+ name: "fetchTeamVerifications",
16
+ filename: "src/lib/verification.ts"
17
+ }, (opts) => fetchTeamVerifications.__executeServer(opts));
18
+ var fetchTeamVerifications = createServerFn({ method: "POST" }).validator((input) => input).handler(fetchTeamVerifications_createServerFn_handler, async ({ data }) => {
19
+ const client = daemonClient();
20
+ try {
21
+ const [listed, agents] = await Promise.all([client.get(`/api/teams/${encodeURIComponent(data.id)}/verifications`), client.get("/api/agents")]);
22
+ return {
23
+ requests: listed.requests,
24
+ members: agents.filter((agent) => agent.teamId === data.id).map((agent) => ({
25
+ id: agent.id,
26
+ name: agent.name
27
+ })),
28
+ unavailable: null
29
+ };
30
+ } catch (error) {
31
+ return {
32
+ requests: [],
33
+ members: [],
34
+ unavailable: failure(error, "Verifications unavailable")
35
+ };
36
+ }
37
+ });
38
+ var fetchVerification_createServerFn_handler = createServerRpc({
39
+ id: "9160671c06186ff835338f053559f4fad74360808e5cdb399e45c3a198f57f59",
40
+ name: "fetchVerification",
41
+ filename: "src/lib/verification.ts"
42
+ }, (opts) => fetchVerification.__executeServer(opts));
43
+ var fetchVerification = createServerFn({ method: "POST" }).validator((input) => input).handler(fetchVerification_createServerFn_handler, async ({ data }) => {
44
+ try {
45
+ return { report: (await daemonClient().get(`/api/teams/${encodeURIComponent(data.id)}/verifications/${encodeURIComponent(data.requestId)}`)).request };
46
+ } catch (error) {
47
+ const unavailable = failure(error, "Verification request could not be loaded");
48
+ if (unavailable) return unavailable;
49
+ throw error;
50
+ }
51
+ });
52
+ var createVerification_createServerFn_handler = createServerRpc({
53
+ id: "74977c4474f1c4e67bbd844d3c182cb5ceeda6e70b71cda2ad0ba046bb53e67a",
54
+ name: "createVerification",
55
+ filename: "src/lib/verification.ts"
56
+ }, (opts) => createVerification.__executeServer(opts));
57
+ var createVerification = createServerFn({ method: "POST" }).validator((input) => input).handler(createVerification_createServerFn_handler, async ({ data }) => {
58
+ try {
59
+ await daemonClient().post(`/api/teams/${encodeURIComponent(data.id)}/verifications`, {
60
+ recipientAgentId: data.recipientAgentId,
61
+ snapshotId: data.snapshotId,
62
+ checks: data.checks,
63
+ summary: data.summary ?? null
64
+ });
65
+ return { ok: true };
66
+ } catch (error) {
67
+ if (error instanceof ApiClientError && error.status === 409) {
68
+ const body = error.body;
69
+ if (body.blocked) return {
70
+ ok: false,
71
+ blocker: body.blocked
72
+ };
73
+ }
74
+ const unavailable = failure(error, "Verification could not be requested");
75
+ if (unavailable) return unavailable;
76
+ throw error;
77
+ }
78
+ });
79
+ var cancelVerification_createServerFn_handler = createServerRpc({
80
+ id: "8f81bc274b3fa565cdb912454629cacae4686a46b7e672331432b113484722c3",
81
+ name: "cancelVerification",
82
+ filename: "src/lib/verification.ts"
83
+ }, (opts) => cancelVerification.__executeServer(opts));
84
+ var cancelVerification = createServerFn({ method: "POST" }).validator((input) => input).handler(cancelVerification_createServerFn_handler, async ({ data }) => {
85
+ try {
86
+ await daemonClient().post(`/api/teams/${encodeURIComponent(data.id)}/verifications/${encodeURIComponent(data.requestId)}/cancel`, {});
87
+ return { ok: true };
88
+ } catch (error) {
89
+ if (error instanceof ApiClientError) return {
90
+ ok: false,
91
+ message: error.body?.error ?? `cancel failed (${error.status})`
92
+ };
93
+ throw error;
94
+ }
95
+ });
96
+ //#endregion
97
+ export { cancelVerification_createServerFn_handler, createVerification_createServerFn_handler, fetchTeamVerifications_createServerFn_handler, fetchVerification_createServerFn_handler };
@@ -0,0 +1,268 @@
1
+ import { a as fetchVerification, i as fetchTeamVerifications, n as cancelVerification, r as createVerification, t as Route } from "./verifications-CUq_6ZqL.js";
2
+ import { r as PageShell } from "./Page-Bz-ydB8j.js";
3
+ import { t as Button } from "./Button-Dsnw22OF.js";
4
+ import { t as TeamTabs } from "./TeamTabs-Dg4v6x0-.js";
5
+ import { useState } from "react";
6
+ import { Link } from "@tanstack/react-router";
7
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
8
+ //#region src/routes/teams/$id/verifications.tsx?tsr-split=component
9
+ /** Three-valued and never a badge: "changed" proves the source moved, not that it was relevant. */
10
+ function applicabilityLabel(comparison) {
11
+ if (comparison === "identical") return "unchanged since capture";
12
+ if (comparison === "changed") return "changed since capture — re-verify";
13
+ return "not checked";
14
+ }
15
+ function outcomeLabel(state, exitCode) {
16
+ if (state === "not_executed") return "not run";
17
+ if (state === "succeeded") return `ok${exitCode === null ? "" : ` (exit ${exitCode})`}`;
18
+ if (state === "failed") return `failed${exitCode === null ? "" : ` (exit ${exitCode})`}`;
19
+ return state.replace(/_/g, " ");
20
+ }
21
+ function VerificationsPage() {
22
+ const loaded = Route.useLoaderData();
23
+ const teamId = Route.useParams().id;
24
+ const [requests, setRequests] = useState(loaded.requests);
25
+ const [unavailable, setUnavailable] = useState(loaded.unavailable);
26
+ const [agentId, setAgentId] = useState(() => loaded.members[0]?.id ?? "");
27
+ const [snapshotId, setSnapshotId] = useState("");
28
+ const [checks, setChecks] = useState("pnpm test :: unit suite");
29
+ const [summary, setSummary] = useState("");
30
+ const [status, setStatus] = useState(null);
31
+ const [busy, setBusy] = useState(false);
32
+ const [applicability, setApplicability] = useState({});
33
+ async function reload() {
34
+ const next = await fetchTeamVerifications({ data: { id: teamId } });
35
+ if (next) {
36
+ setRequests(next.requests);
37
+ setUnavailable(next.unavailable);
38
+ }
39
+ }
40
+ async function request() {
41
+ setBusy(true);
42
+ setStatus({
43
+ kind: "info",
44
+ message: "Capturing the request…"
45
+ });
46
+ try {
47
+ const result = await createVerification({ data: {
48
+ id: teamId,
49
+ recipientAgentId: agentId,
50
+ snapshotId,
51
+ checks: checks.split("\n").map((line) => line.trim()).filter(Boolean).map((line) => {
52
+ const [command, purpose, cwd, seconds] = line.split("::").map((part) => part?.trim());
53
+ return {
54
+ command: command ?? "",
55
+ purpose: purpose ?? "",
56
+ cwd: cwd || ".",
57
+ timeoutMs: Math.round((seconds ? Number(seconds) : 120) * 1e3)
58
+ };
59
+ }),
60
+ ...summary ? { summary } : {}
61
+ } });
62
+ if ("blocker" in result && result.blocker) {
63
+ setStatus({
64
+ kind: "error",
65
+ message: `Blocked: ${result.blocker.detail}`
66
+ });
67
+ return;
68
+ }
69
+ if ("ok" in result && result.ok) {
70
+ setStatus({
71
+ kind: "info",
72
+ message: "Captured. The specialist is admitted by the scheduler."
73
+ });
74
+ setSnapshotId("");
75
+ await reload();
76
+ return;
77
+ }
78
+ setStatus({
79
+ kind: "error",
80
+ message: "message" in result ? result.message ?? "Request failed" : "Request failed"
81
+ });
82
+ } finally {
83
+ setBusy(false);
84
+ }
85
+ }
86
+ async function checkApplicability(requestId) {
87
+ setBusy(true);
88
+ try {
89
+ const result = await fetchVerification({ data: {
90
+ id: teamId,
91
+ requestId
92
+ } });
93
+ setApplicability((current) => ({
94
+ ...current,
95
+ [requestId]: "report" in result ? applicabilityLabel(result.report.applicability.comparison) : "unavailable"
96
+ }));
97
+ } finally {
98
+ setBusy(false);
99
+ }
100
+ }
101
+ async function cancel(requestId) {
102
+ setBusy(true);
103
+ try {
104
+ const result = await cancelVerification({ data: {
105
+ id: teamId,
106
+ requestId
107
+ } });
108
+ setStatus(result.ok ? {
109
+ kind: "info",
110
+ message: "Cancellation requested."
111
+ } : {
112
+ kind: "error",
113
+ message: result.message ?? "Cancel failed"
114
+ });
115
+ await reload();
116
+ } finally {
117
+ setBusy(false);
118
+ }
119
+ }
120
+ return /* @__PURE__ */ jsxs(PageShell, { children: [
121
+ /* @__PURE__ */ jsx(TeamTabs, { teamId }),
122
+ /* @__PURE__ */ jsx("h2", { children: "Specialist verification" }),
123
+ unavailable ? /* @__PURE__ */ jsx("p", {
124
+ className: "muted",
125
+ children: unavailable.message
126
+ }) : null,
127
+ status ? /* @__PURE__ */ jsx("p", {
128
+ className: status.kind === "error" ? "error" : "muted",
129
+ role: "status",
130
+ children: status.message
131
+ }) : null,
132
+ /* @__PURE__ */ jsxs("section", {
133
+ "aria-label": "Request verification",
134
+ className: "card",
135
+ children: [
136
+ /* @__PURE__ */ jsx("h3", { children: "Request verification of a captured change" }),
137
+ /* @__PURE__ */ jsxs("p", {
138
+ className: "muted",
139
+ children: [
140
+ "Capture a source snapshot on the",
141
+ " ",
142
+ /* @__PURE__ */ jsx(Link, {
143
+ to: "/teams/$id/review",
144
+ params: { id: teamId },
145
+ children: "Review"
146
+ }),
147
+ " ",
148
+ "page first, then name it here with the checks you want run. Nothing runs until the daemon admits the request."
149
+ ]
150
+ }),
151
+ /* @__PURE__ */ jsxs("label", { children: ["Specialist", /* @__PURE__ */ jsx("select", {
152
+ value: agentId,
153
+ onChange: (event) => setAgentId(event.target.value),
154
+ children: loaded.members.map((member) => /* @__PURE__ */ jsx("option", {
155
+ value: member.id,
156
+ children: member.name
157
+ }, member.id))
158
+ })] }),
159
+ /* @__PURE__ */ jsxs("label", { children: ["Snapshot id", /* @__PURE__ */ jsx("input", {
160
+ value: snapshotId,
161
+ onChange: (event) => setSnapshotId(event.target.value),
162
+ placeholder: "captured snapshot id"
163
+ })] }),
164
+ /* @__PURE__ */ jsxs("label", { children: ["Checks (one per line: command :: purpose [:: cwd] [:: seconds])", /* @__PURE__ */ jsx("textarea", {
165
+ value: checks,
166
+ onChange: (event) => setChecks(event.target.value),
167
+ rows: 4
168
+ })] }),
169
+ /* @__PURE__ */ jsxs("label", { children: ["Acceptance summary (optional)", /* @__PURE__ */ jsx("input", {
170
+ value: summary,
171
+ onChange: (event) => setSummary(event.target.value)
172
+ })] }),
173
+ /* @__PURE__ */ jsx(Button, {
174
+ variant: "primary",
175
+ disabled: busy || !agentId || !snapshotId || !checks.trim(),
176
+ onClick: request,
177
+ children: "Request verification"
178
+ })
179
+ ]
180
+ }),
181
+ /* @__PURE__ */ jsxs("section", {
182
+ "aria-label": "Verification requests",
183
+ children: [/* @__PURE__ */ jsx("h3", { children: "Requests" }), requests.length === 0 ? /* @__PURE__ */ jsx("p", {
184
+ className: "muted",
185
+ children: "No verification requests yet."
186
+ }) : /* @__PURE__ */ jsx("ul", {
187
+ className: "list",
188
+ children: requests.map((report) => {
189
+ const attempt = [...report.attempts].sort((a, b) => b.attemptNumber - a.attemptNumber)[0];
190
+ const outcomes = new Map((attempt?.outcomes ?? []).map((outcome) => [outcome.ordinal, outcome]));
191
+ const cancellable = report.request.state === "pending" || report.request.state === "awaiting_approval" || report.request.state === "running";
192
+ return /* @__PURE__ */ jsxs("li", {
193
+ className: "card",
194
+ children: [
195
+ /* @__PURE__ */ jsxs("div", { children: [
196
+ /* @__PURE__ */ jsx("strong", { children: report.request.state }),
197
+ " ",
198
+ /* @__PURE__ */ jsxs("span", {
199
+ className: "muted",
200
+ children: [
201
+ report.request.recipientAgentId,
202
+ " · ",
203
+ report.request.id
204
+ ]
205
+ })
206
+ ] }),
207
+ /* @__PURE__ */ jsxs("p", {
208
+ className: "muted",
209
+ children: [
210
+ "change ",
211
+ report.request.snapshot.id.slice(0, 12),
212
+ " ·",
213
+ " ",
214
+ report.request.environment.image,
215
+ " (shell ",
216
+ report.request.environment.sandbox,
217
+ ")"
218
+ ]
219
+ }),
220
+ /* @__PURE__ */ jsx("ul", { children: report.checks.map((check) => {
221
+ const outcome = outcomes.get(check.ordinal);
222
+ return /* @__PURE__ */ jsxs("li", { children: [
223
+ "[",
224
+ check.ordinal,
225
+ "] ",
226
+ outcomeLabel(outcome?.state ?? "not_executed", outcome?.exitCode ?? null),
227
+ " ",
228
+ "— ",
229
+ /* @__PURE__ */ jsx("code", { children: check.command }),
230
+ outcome?.commandId ? /* @__PURE__ */ jsxs(Fragment, { children: [" ", /* @__PURE__ */ jsxs("span", {
231
+ className: "muted",
232
+ children: ["receipt ", outcome.commandId.slice(0, 8)]
233
+ })] }) : outcome?.receiptUnavailable ? /* @__PURE__ */ jsxs(Fragment, { children: [" ", /* @__PURE__ */ jsx("span", {
234
+ className: "muted",
235
+ children: "receipt no longer available"
236
+ })] }) : null
237
+ ] }, check.ordinal);
238
+ }) }),
239
+ attempt?.error ? /* @__PURE__ */ jsxs("p", {
240
+ className: "muted",
241
+ children: ["note: ", attempt.error]
242
+ }) : null,
243
+ /* @__PURE__ */ jsxs("p", {
244
+ className: "muted",
245
+ children: ["applicability: ", applicability[report.request.id] ?? "not checked"]
246
+ }),
247
+ /* @__PURE__ */ jsx(Button, {
248
+ variant: "ghost",
249
+ disabled: busy,
250
+ onClick: () => checkApplicability(report.request.id),
251
+ children: "Check applicability"
252
+ }),
253
+ " ",
254
+ cancellable ? /* @__PURE__ */ jsx(Button, {
255
+ variant: "danger",
256
+ disabled: busy,
257
+ onClick: () => cancel(report.request.id),
258
+ children: "Cancel"
259
+ }) : null
260
+ ]
261
+ }, report.request.id);
262
+ })
263
+ })]
264
+ })
265
+ ] });
266
+ }
267
+ //#endregion
268
+ export { VerificationsPage as component };
@@ -0,0 +1,26 @@
1
+ import { n as createServerFn } from "../server.js";
2
+ import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
3
+ import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
4
+ //#region src/lib/verification.ts
5
+ var fetchTeamVerifications = createServerFn({ method: "POST" }).validator((input) => input).handler(createSsrRpc("2a72cbadf7e2fa943de062817aed454cd746f9ab8b95fce78f94d327756363b1"));
6
+ /**
7
+ * One request's detail, including current applicability. Kept separate from the list because
8
+ * establishing applicability compares the live tree against the capture.
9
+ */
10
+ var fetchVerification = createServerFn({ method: "POST" }).validator((input) => input).handler(createSsrRpc("9160671c06186ff835338f053559f4fad74360808e5cdb399e45c3a198f57f59"));
11
+ var createVerification = createServerFn({ method: "POST" }).validator((input) => input).handler(createSsrRpc("74977c4474f1c4e67bbd844d3c182cb5ceeda6e70b71cda2ad0ba046bb53e67a"));
12
+ var cancelVerification = createServerFn({ method: "POST" }).validator((input) => input).handler(createSsrRpc("8f81bc274b3fa565cdb912454629cacae4686a46b7e672331432b113484722c3"));
13
+ //#endregion
14
+ //#region src/routes/teams/$id/verifications.tsx
15
+ var $$splitComponentImporter = () => import("./verifications-BfQsfwSE.js");
16
+ var Route = createFileRoute("/teams/$id/verifications")({
17
+ loader: async ({ params }) => {
18
+ const data = await fetchTeamVerifications({ data: { id: params.id } });
19
+ if (!data) throw redirect({ to: "/teams" });
20
+ return data;
21
+ },
22
+ component: lazyRouteComponent($$splitComponentImporter, "component")
23
+ });
24
+ /** Three-valued and never a badge: "changed" proves the source moved, not that it was relevant. */
25
+ //#endregion
26
+ export { fetchVerification as a, fetchTeamVerifications as i, cancelVerification as n, createVerification as r, Route as t };
@@ -3558,7 +3558,7 @@ var defaultSerovalPlugins = [
3558
3558
  * the dev styles URL for route-scoped CSS collection.
3559
3559
  */
3560
3560
  async function getStartManifest(matchedRoutes) {
3561
- const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-D7gKv6m6.js");
3561
+ const { tsrStartManifest } = await import("./assets/_tanstack-start-manifest_v-B3M-dfRO.js");
3562
3562
  const startManifest = tsrStartManifest();
3563
3563
  let routes = startManifest.routes;
3564
3564
  routes[rootRouteId];
@@ -3582,107 +3582,151 @@ async function getStartManifest(matchedRoutes) {
3582
3582
  var manifest = {
3583
3583
  "00a157dd07824e1f126f06646effd1d876f280f6fc64c144d2f6429414a4e58a": {
3584
3584
  functionName: "fetchTelegramConfig_createServerFn_handler",
3585
- importer: () => import("./assets/telegram-C4q0YTVn.js")
3585
+ importer: () => import("./assets/telegram-CGl_LFtJ.js")
3586
+ },
3587
+ "02c73d4452ed9650535784fb09231e39498bb4cb53c19ff2285bc964ee104fc4": {
3588
+ functionName: "prepareReviewFeedback_createServerFn_handler",
3589
+ importer: () => import("./assets/git-review-Bf5ABFJg.js")
3586
3590
  },
3587
3591
  "032d74b7d41c718191dbdde6b06ba44993340ce1154af1fa6723a6d4f7a7236e": {
3588
3592
  functionName: "fetchProfile_createServerFn_handler",
3589
- importer: () => import("./assets/_id-DOnInzLb.js")
3593
+ importer: () => import("./assets/_id--zoh1vv7.js")
3590
3594
  },
3591
3595
  "0a6e766d2b4ea526da34cefed5342a6ecc5ff35ad1ce38fba4129b8c24d8e6e5": {
3592
3596
  functionName: "fetchMembers_createServerFn_handler",
3593
- importer: () => import("./assets/members-grAKFWgv.js")
3597
+ importer: () => import("./assets/members-CvwEN9pm.js")
3594
3598
  },
3595
3599
  "1ab05a58944792f34ad279deeaa56f70e9360687856b18327f335b022e8d21a5": {
3596
3600
  functionName: "fetchTeamsData_createServerFn_handler",
3597
- importer: () => import("./assets/teams-B1AI3NfN.js")
3601
+ importer: () => import("./assets/teams-D-yaAWLV.js")
3598
3602
  },
3599
3603
  "1bb12262aaa902fa208aafaa70b69c63da34c1fe523ab0322fe766903fc6b4c1": {
3600
3604
  functionName: "fetchTeams_createServerFn_handler",
3601
- importer: () => import("./assets/teams-6RYIj1Xm.js")
3605
+ importer: () => import("./assets/teams-8zEIo08E.js")
3602
3606
  },
3603
3607
  "26dbbcbe40063e8aedfd343cf1dfd4dfe5589f24591c0ba35e80c611d7c57c7c": {
3604
3608
  functionName: "fetchHomeData_createServerFn_handler",
3605
- importer: () => import("./assets/routes-BqSaZvlu.js")
3609
+ importer: () => import("./assets/routes-CVKkvFVv.js")
3606
3610
  },
3607
3611
  "278849457893891c3d22806d15e11a0a42cc3630b30e9e62b74cf2d3b982ded7": {
3608
3612
  functionName: "fetchServers_createServerFn_handler",
3609
- importer: () => import("./assets/mcp-Rtraochg.js")
3613
+ importer: () => import("./assets/mcp-D5dmBT82.js")
3614
+ },
3615
+ "2a72cbadf7e2fa943de062817aed454cd746f9ab8b95fce78f94d327756363b1": {
3616
+ functionName: "fetchTeamVerifications_createServerFn_handler",
3617
+ importer: () => import("./assets/verification-B5QjcpIo.js")
3610
3618
  },
3611
3619
  "2cd8c6ec40e2e2d9518b5f127a518ecd83a2222d85665cc61d5144bcf59ed4fb": {
3612
3620
  functionName: "fetchInbox_createServerFn_handler",
3613
- importer: () => import("./assets/inbox-PQTrjtOw.js")
3621
+ importer: () => import("./assets/inbox-Dw4pTevh.js")
3614
3622
  },
3615
3623
  "46e35c9f1afc79423cb49703b454ef684344db08ec19775efd70a8768c7837f1": {
3616
3624
  functionName: "fetchTokens_createServerFn_handler",
3617
- importer: () => import("./assets/tokens-RFquA2Bx.js")
3625
+ importer: () => import("./assets/tokens-cB-uf7qm.js")
3618
3626
  },
3619
3627
  "4773184b3ddd3656fb80ec74375a6d304e25acb56b79f1d349dcabf9f0914359": {
3620
3628
  functionName: "fetchGroup_createServerFn_handler",
3621
- importer: () => import("./assets/_id-CeyHEsCZ.js")
3629
+ importer: () => import("./assets/_id-6p-mDmI8.js")
3622
3630
  },
3623
3631
  "57ebf437fdb3fcfc63b176e796a55f04bdfec0b230059673196e98d413d15c4d": {
3624
3632
  functionName: "fetchTriggers_createServerFn_handler",
3625
- importer: () => import("./assets/triggers-DVD-iE-N.js")
3633
+ importer: () => import("./assets/triggers-CtSj79L0.js")
3626
3634
  },
3627
3635
  "5cdb81f2b930818ee9ab1d626ac99828ea652ff447fcbfc21b24dea415f8b39e": {
3628
3636
  functionName: "fetchActivity_createServerFn_handler",
3629
- importer: () => import("./assets/activity-0VUkStOu.js")
3637
+ importer: () => import("./assets/activity-C5jpoEQI.js")
3630
3638
  },
3631
3639
  "6650438083b26964e4d4f7bf27caa6fe94c74a008e5b37a4d609180a9bf98b59": {
3632
3640
  functionName: "fetchTeam_createServerFn_handler",
3633
- importer: () => import("./assets/results-DXdYtHaq.js")
3641
+ importer: () => import("./assets/results-BWnu3gXP.js")
3634
3642
  },
3635
3643
  "6afd81bef0ee381d6e3641cd8e269968429c874e2f9d56c8f818cc9d180ee477": {
3636
3644
  functionName: "fetchServices_createServerFn_handler",
3637
- importer: () => import("./assets/services-DlZA8fRL.js")
3645
+ importer: () => import("./assets/services-CEr61xb5.js")
3646
+ },
3647
+ "6e1e5dbdf3d8a469dbabab94d492969e688abf38413493d78eea220588e1c6c1": {
3648
+ functionName: "fetchFileDiff_createServerFn_handler",
3649
+ importer: () => import("./assets/git-review-Bf5ABFJg.js")
3650
+ },
3651
+ "735ff1d3cd2b2c166114532550a784f626afc1b26f9dea3aea17796bc9e08124": {
3652
+ functionName: "captureTeamSnapshot_createServerFn_handler",
3653
+ importer: () => import("./assets/git-review-Bf5ABFJg.js")
3654
+ },
3655
+ "74977c4474f1c4e67bbd844d3c182cb5ceeda6e70b71cda2ad0ba046bb53e67a": {
3656
+ functionName: "createVerification_createServerFn_handler",
3657
+ importer: () => import("./assets/verification-B5QjcpIo.js")
3638
3658
  },
3639
3659
  "816fcbc7b3c7f2952660d3a2c8f49bb0c91084627a284c185b333b1d418fadf8": {
3640
3660
  functionName: "loadApprovals_createServerFn_handler",
3641
- importer: () => import("./assets/approvals-C3MysI6l.js")
3661
+ importer: () => import("./assets/approvals-DhHxIDrL.js")
3642
3662
  },
3643
3663
  "846c9081aed17057351730985f133b0aab67a5dabfca9562552829a90ff30849": {
3644
3664
  functionName: "fetchAgent_createServerFn_handler",
3645
- importer: () => import("./assets/_id-BG2nkGxa.js")
3665
+ importer: () => import("./assets/_id-DptBl3X8.js")
3646
3666
  },
3647
3667
  "883b401299422096ee31ee824f9a24b49d06bdcedce398789778c4c549a92f3a": {
3648
3668
  functionName: "loadAttention_createServerFn_handler",
3649
- importer: () => import("./assets/attention-DLeLCKah.js")
3669
+ importer: () => import("./assets/attention-CBWzWRni.js")
3670
+ },
3671
+ "8f81bc274b3fa565cdb912454629cacae4686a46b7e672331432b113484722c3": {
3672
+ functionName: "cancelVerification_createServerFn_handler",
3673
+ importer: () => import("./assets/verification-B5QjcpIo.js")
3674
+ },
3675
+ "9160671c06186ff835338f053559f4fad74360808e5cdb399e45c3a198f57f59": {
3676
+ functionName: "fetchVerification_createServerFn_handler",
3677
+ importer: () => import("./assets/verification-B5QjcpIo.js")
3678
+ },
3679
+ "9a8661a3c685ee418f1fcc86715772f45831c758764baa8a0a5a7e071797b17e": {
3680
+ functionName: "sendReviewFeedback_createServerFn_handler",
3681
+ importer: () => import("./assets/git-review-Bf5ABFJg.js")
3650
3682
  },
3651
3683
  "a0bbbee5d0c1240a05e35c04d56a0e95ec78f05265e4e937eec48c8ac2041e58": {
3652
3684
  functionName: "fetchTeam_createServerFn_handler",
3653
- importer: () => import("./assets/_id-DrB9uR1b.js")
3685
+ importer: () => import("./assets/_id-dUnXL-My2.js")
3654
3686
  },
3655
3687
  "a5d3825fc69573bb55bab6df578c750ebb0240dd394c3acee3adea02918a5dc2": {
3656
3688
  functionName: "fetchAuthState_createServerFn_handler",
3657
- importer: () => import("./assets/auth-CDZp9aEk.js")
3689
+ importer: () => import("./assets/auth-tB3i6cFd.js")
3690
+ },
3691
+ "aafdc541f3ce0218b08e13928281a9422b3917d8bcedc687e73a9fec2984124c": {
3692
+ functionName: "fetchTeamSnapshot_createServerFn_handler",
3693
+ importer: () => import("./assets/git-review-Bf5ABFJg.js")
3694
+ },
3695
+ "abd437df3a2fa92f958ae178941f5c068556ee48f7236d50b56e400013023cf9": {
3696
+ functionName: "fetchSnapshotApplicability_createServerFn_handler",
3697
+ importer: () => import("./assets/git-review-Bf5ABFJg.js")
3658
3698
  },
3659
3699
  "ae1d30575b229c1e2622fbaf2252800a9a7acc84afdd68cba025ca890b8d52c5": {
3660
3700
  functionName: "fetchSkills_createServerFn_handler",
3661
- importer: () => import("./assets/skills-i2duvgW-.js")
3701
+ importer: () => import("./assets/skills-BImC3LTO.js")
3662
3702
  },
3663
3703
  "b18a227687dba45b99ea5a2ac7a5bf8efcd9bc54387bc279cd87510fd2f83f7e": {
3664
3704
  functionName: "fetchProvidersData_createServerFn_handler",
3665
- importer: () => import("./assets/config-BVTHvljR.js")
3705
+ importer: () => import("./assets/config-D1k_tTAw.js")
3666
3706
  },
3667
3707
  "b96a98e3ed6c8a3ab5f6a4ed8458e93da753ffd74e2912ef1724bb6e58030cb5": {
3668
3708
  functionName: "fetchMemory_createServerFn_handler",
3669
- importer: () => import("./assets/memory-egFpBD1g.js")
3709
+ importer: () => import("./assets/memory-CcPK7um7.js")
3710
+ },
3711
+ "bb4ccf9a1b372d6a1a53bd79690c50e3e1af2e641a96eead1f906da580df8656": {
3712
+ functionName: "fetchTeamReview_createServerFn_handler",
3713
+ importer: () => import("./assets/git-review-Bf5ABFJg.js")
3670
3714
  },
3671
3715
  "bc31355f2be9889a616d03c35062d483ea77c3f967af9432d721626a81078ef3": {
3672
3716
  functionName: "fetchProfiles_createServerFn_handler",
3673
- importer: () => import("./assets/agents-CSXLaM2W.js")
3717
+ importer: () => import("./assets/agents-RE6aYOb-.js")
3674
3718
  },
3675
3719
  "f715bab0037380aa3db7e237e7cf1e74168c363f48a960bb1ddfa5560de3a74e": {
3676
3720
  functionName: "fetchAgents_createServerFn_handler",
3677
- importer: () => import("./assets/agents-C86K6HvS.js")
3721
+ importer: () => import("./assets/agents-nAOx_H7s.js")
3678
3722
  },
3679
3723
  "fc940d6dec5305aa64bdb9b9f5f7d4f925b2ba0608cb6d39af854a94872fc867": {
3680
3724
  functionName: "fetchPolicy_createServerFn_handler",
3681
- importer: () => import("./assets/policy-ooSBgiDS.js")
3725
+ importer: () => import("./assets/policy-Dh6wd2wN.js")
3682
3726
  },
3683
3727
  "fcdd0f08b635c7c501caa840d01d1376ace6683e26cc5ac7dead28d7870f98b9": {
3684
3728
  functionName: "fetchLearning_createServerFn_handler",
3685
- importer: () => import("./assets/learning-K0cmDsZR.js")
3729
+ importer: () => import("./assets/learning-CF8ZzFVD.js")
3686
3730
  }
3687
3731
  };
3688
3732
  async function getServerFnById(id, access) {
@@ -5560,7 +5604,7 @@ var getBaseManifest = getProdBaseManifest;
5560
5604
  var createEarlyHintsForRequest = createEarlyHintsCollector;
5561
5605
  async function loadEntries() {
5562
5606
  const [routerEntry, startEntry, pluginAdapters] = await Promise.all([
5563
- import("./assets/router-B6g_s7W3.js"),
5607
+ import("./assets/router-Deq94UJQ.js"),
5564
5608
  import("./assets/start-D4Wq9iTa.js"),
5565
5609
  import("./assets/empty-plugin-adapters-Cq4--YW-.js")
5566
5610
  ]);