bazilion 0.15.0 → 0.17.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 +1138 -687
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +8401 -4401
- package/dist/daemon.js.map +1 -1
- package/dist/migrations/0001_init.sql +109 -0
- package/dist/web/client/assets/ChatPane-BI3QVX2A.js +76 -0
- package/dist/web/client/assets/{ConfirmDialog-CGZzom9E.js → ConfirmDialog-Qam6Ut08.js} +1 -1
- package/dist/web/client/assets/{FieldRow-DYNU9gWb.js → FieldRow-swJ5qn2h.js} +1 -1
- package/dist/web/client/assets/ProductionTeamPolicyEditor-LGw1UuF-.js +7 -0
- package/dist/web/client/assets/ProfileCommunicationEditor-raoau_YB.js +1 -0
- package/dist/web/client/assets/{ResultSourceConversation-CGhKTSTD.js → ResultSourceConversation-BEwkhFog.js} +1 -1
- package/dist/web/client/assets/TeamTabs-BDdTLGIf.js +1 -0
- package/dist/web/client/assets/TemplatesTabs-BX5hhEJ7.js +1 -0
- package/dist/web/client/assets/{UnsavedChangesGuard-CFQcKsrf.js → UnsavedChangesGuard-CVJtmR1D.js} +1 -1
- package/dist/web/client/assets/{_id-D_eKokkd.js → _id-BQPOE3gj.js} +1 -1
- package/dist/web/client/assets/{_id-9nCIhbVd.js → _id-BkYrUP0R.js} +1 -1
- package/dist/web/client/assets/_id-CriixlZD.js +1 -0
- package/dist/web/client/assets/_id-DHqq2W34.js +1 -0
- package/dist/web/client/assets/{_id-BSu3AqKA.js → _id-DmEVZIlx.js} +1 -1
- package/dist/web/client/assets/activity-Bzr8R18n.js +1 -0
- package/dist/web/client/assets/{agents-NY3VrZgB.js → agents-13oafeOA.js} +1 -1
- package/dist/web/client/assets/{agents-CCmiZek6.js → agents-DF4NALmJ.js} +1 -1
- package/dist/web/client/assets/{approvals-CPDAPgrM.js → approvals-DsG0Ijls.js} +1 -1
- package/dist/web/client/assets/{attention-Qra_9_OI.js → attention-DG7K25mz.js} +1 -1
- package/dist/web/client/assets/chevron-right-DFqFHtLy.js +1 -0
- package/dist/web/client/assets/config-DAaDbFhS.js +3 -0
- package/dist/web/client/assets/createServerFn-Dzfjt7mA.js +3 -0
- package/dist/web/client/assets/git-review-presentation-CzHQulDk.js +1 -0
- package/dist/web/client/assets/{inbox-C5W-sm1q.js → inbox-C9e7QjsX.js} +1 -1
- package/dist/web/client/assets/index-Dsstm2hf.js +50 -0
- package/dist/web/client/assets/{learning-Dr-7_7J4.js → learning-23arTd21.js} +1 -1
- package/dist/web/client/assets/login-BIXnBsuj.js +1 -0
- package/dist/web/client/assets/{mcp-BueuwQiv.js → mcp-Cdx9qAl8.js} +1 -1
- package/dist/web/client/assets/{members-ZikuYNcy.js → members-fotOz4rR.js} +1 -1
- package/dist/web/client/assets/{memory-1JUJlPrn.js → memory-C7UznVot.js} +1 -1
- package/dist/web/client/assets/policy-CactLW1X.js +1 -0
- package/dist/web/client/assets/{results-mMr8Ar2u.js → results-DqEuYnQH.js} +1 -1
- package/dist/web/client/assets/review-CnBSYclb.js +1 -0
- package/dist/web/client/assets/routes-COxMuwVz.js +1 -0
- package/dist/web/client/assets/{services-kfQA9cpJ.js → services-xEANwZAu.js} +1 -1
- package/dist/web/client/assets/{skills-C6pcgxaC.js → skills-CamV6wYM.js} +1 -1
- package/dist/web/client/assets/styles-C6br2xxl.css +2 -0
- package/dist/web/client/assets/{teams-LB0KBXY9.js → teams-B12dMSjW.js} +1 -1
- package/dist/web/client/assets/{teams-C6_Noz5X.js → teams-CbH43zSG.js} +1 -1
- package/dist/web/client/assets/{telegram-A2jaI1QM.js → telegram-muIql4u-.js} +1 -1
- package/dist/web/client/assets/{tokens-BGlUpJcL.js → tokens-DGFmApdF.js} +1 -1
- package/dist/web/client/assets/{triggers-C54_feGg.js → triggers-D8n3sCBW.js} +1 -1
- package/dist/web/client/assets/welcome-CMHWRZhs.js +1 -0
- package/dist/web/client/assets/x-BGCHwZOH.js +1 -0
- package/dist/web/server/assets/{ChatPane-DJ30FdFG.js → ChatPane-DybH39WK.js} +524 -15
- package/dist/web/server/assets/{ResultSourceConversation-zYogeOWp.js → ResultSourceConversation-BmXTcEOA.js} +1 -1
- package/dist/web/server/assets/{TeamTabs-TCKjCvMA.js → TeamTabs-DQXh-3ij.js} +4 -0
- package/dist/web/server/assets/{_id-1LwoHhJg.js → _id-BN1BPEDI.js} +1 -1
- package/dist/web/server/assets/{_id-DFHB9JFQ.js → _id-BYKpT2Tu.js} +1 -1
- package/dist/web/server/assets/{_id-B_-CDHOi2.js → _id-BqWTB8Wl.js} +1 -1
- package/dist/web/server/assets/{_id-BvSWsPI5.js → _id-CPfILjMa.js} +1 -1
- package/dist/web/server/assets/{_id-1hTvnKLN2.js → _id-C_2er0_G.js} +3 -3
- package/dist/web/server/assets/{_id-B2EEyStS.js → _id-DDyA9CGX.js} +1 -1
- package/dist/web/server/assets/{_id-DxFLSIio.js → _id-DSPFJMzf.js} +1 -1
- package/dist/web/server/assets/_id-DtJn-yzu.js +779 -0
- package/dist/web/server/assets/{_id-DDNVQx3y.js → _id-Dw3gKOGv.js} +1 -1
- package/dist/web/server/assets/{_id-T_8btpbB.js → _id-XkxlX036.js} +1 -1
- package/dist/web/server/assets/{_tanstack-start-manifest_v-DP4ZUBw3.js → _tanstack-start-manifest_v-vOXRfKJD.js} +97 -84
- package/dist/web/server/assets/{activity-C88qrNqv.js → activity-BX1jZBPQ.js} +1 -1
- package/dist/web/server/assets/{activity-5fWKPDxj.js → activity-bozPMU2v.js} +2 -2
- package/dist/web/server/assets/{activity-D73w4mkZ.js → activity-pYQPT3QT.js} +1 -1
- package/dist/web/server/assets/{agents-DRSo7lRX.js → agents-BKBfW700.js} +1 -1
- package/dist/web/server/assets/{agents-DB5hCSAI.js → agents-CVCfxnE2.js} +1 -1
- package/dist/web/server/assets/{approvals-4y9bZF4r.js → approvals-C3ya6B6U.js} +1 -1
- package/dist/web/server/assets/{attention-BFx8ZkmH.js → attention-l28hGCHS.js} +1 -1
- package/dist/web/server/assets/{auth-_eaCwhyq.js → auth-AvDFNeOv.js} +1 -1
- package/dist/web/server/assets/{config-B7JIfv_7.js → config-BWKn4XII.js} +1 -1
- package/dist/web/server/assets/{daemon-client-B06W1Qa2.js → daemon-client-Cgx-YW4l.js} +35 -0
- package/dist/web/server/assets/git-review-BB3M9nYg.js +26 -0
- package/dist/web/server/assets/git-review-f_uta4Mx.js +179 -0
- package/dist/web/server/assets/git-review-presentation-TJiHJhen.js +81 -0
- package/dist/web/server/assets/{inbox-YRpDQcvp.js → inbox-BBZiOOQs.js} +1 -1
- package/dist/web/server/assets/{learning-UBZb6h6M.js → learning-CheVay1i.js} +1 -1
- package/dist/web/server/assets/{mcp-Dv6RXMaS.js → mcp-DCBDmNtQ.js} +1 -1
- package/dist/web/server/assets/{members-BFTKSlOe.js → members-C2He8mrU.js} +1 -1
- package/dist/web/server/assets/{members-CD3GiTfF.js → members-C5FQruRZ.js} +1 -1
- package/dist/web/server/assets/{members-cc5SeEaW.js → members-C_2xB9pr.js} +2 -2
- package/dist/web/server/assets/{memory-CVqnyUaM.js → memory-4tI-UbOf.js} +1 -1
- package/dist/web/server/assets/{memory-C5i_GxlY.js → memory-BTcmf0sD.js} +2 -2
- package/dist/web/server/assets/{memory-D0PQgZAn.js → memory-rmiFNj7T.js} +1 -1
- package/dist/web/server/assets/{policy-Dgjb0_gK.js → policy-BGILKGHz.js} +2 -2
- package/dist/web/server/assets/{policy-bLKwvnja.js → policy-C3D2Q1EA.js} +1 -1
- package/dist/web/server/assets/{policy-C-p8HIhA.js → policy-DS7LGe--.js} +1 -1
- package/dist/web/server/assets/{results-Cfev4KNt.js → results-C6H42tjq.js} +1 -1
- package/dist/web/server/assets/{results-Cj-Dlw3C.js → results-Cgx7SrFt.js} +3 -3
- package/dist/web/server/assets/{results-CwEQ5EUL.js → results-_6K_zXQS.js} +1 -1
- package/dist/web/server/assets/review-DHhiL-JQ.js +393 -0
- package/dist/web/server/assets/review-DSTMCwP4.js +14 -0
- package/dist/web/server/assets/{router-d3sTMpMX.js → router-ElARvZzI.js} +34 -27
- package/dist/web/server/assets/{routes-B765DVhj.js → routes-B6x3pEW8.js} +1 -1
- package/dist/web/server/assets/{routes-cW4MWU18.js → routes-BgMvLvS-.js} +1 -1
- package/dist/web/server/assets/{routes-MIZz6uMr.js → routes-DsUzzxk4.js} +2 -2
- package/dist/web/server/assets/{services-BCbdn3R9.js → services-yHZroxsi.js} +1 -1
- package/dist/web/server/assets/{skills-Bpoa8MIp.js → skills--bIKID1Q.js} +1 -1
- package/dist/web/server/assets/{teams-hWGjbpUA.js → teams--a956vWL.js} +1 -1
- package/dist/web/server/assets/{teams-CXzwqzcE.js → teams-BbRfuVXY.js} +1 -1
- package/dist/web/server/assets/{telegram-DhpvtGUc.js → telegram-4kMxRtVZ.js} +1 -1
- package/dist/web/server/assets/{tokens-Bjp19Vkn.js → tokens-BYwTN9JZ.js} +1 -1
- package/dist/web/server/assets/{triggers-DJlcvXzn.js → triggers-BM6mzLuH.js} +1 -1
- package/dist/web/server/server.js +56 -28
- package/dist/worker.js +2214 -1132
- package/dist/worker.js.map +1 -1
- package/package.json +3 -3
- package/dist/web/client/assets/ChatPane-55j13bBj.js +0 -74
- package/dist/web/client/assets/ProductionTeamPolicyEditor-DT5Sl8jd.js +0 -7
- package/dist/web/client/assets/ProfileCommunicationEditor-TyCU5vXX.js +0 -1
- package/dist/web/client/assets/TeamTabs-BZHyRnbd.js +0 -1
- package/dist/web/client/assets/TemplatesTabs-BHzkPMRC.js +0 -1
- package/dist/web/client/assets/_id-CGd21j3k.js +0 -1
- package/dist/web/client/assets/_id-SRMFlIgP.js +0 -1
- package/dist/web/client/assets/activity-Cn2-9PpZ.js +0 -1
- package/dist/web/client/assets/chevron-right-DXE4CWf2.js +0 -1
- package/dist/web/client/assets/config-D8EO0LPB.js +0 -3
- package/dist/web/client/assets/index-BUhhk_u9.js +0 -52
- package/dist/web/client/assets/login-Bu5UxbJh.js +0 -1
- package/dist/web/client/assets/policy-DbkhsFNA.js +0 -1
- package/dist/web/client/assets/routes-DJYB-MS9.js +0 -1
- package/dist/web/client/assets/styles-CcNf8jT_.css +0 -2
- package/dist/web/client/assets/welcome-DyUIswRi.js +0 -1
- package/dist/web/client/assets/x-BY2MPLr9.js +0 -1
- package/dist/web/server/assets/_id-CDBtO_jL.js +0 -381
|
@@ -1,9 +1,395 @@
|
|
|
1
|
+
import { r as fetchSnapshotApplicability } from "./git-review-BB3M9nYg.js";
|
|
1
2
|
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
3
|
+
import { n as applicabilityWarns, t as applicabilityLabel } from "./git-review-presentation-TJiHJhen.js";
|
|
2
4
|
import { t as ResultCard } from "./ResultCard-B3zD9N0t.js";
|
|
3
5
|
import { forwardRef, useCallback, useEffect, useImperativeHandle, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
|
|
4
6
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
5
7
|
import DOMPurify from "dompurify";
|
|
6
8
|
import { marked } from "marked";
|
|
9
|
+
//#region src/lib/coding-presentation.ts
|
|
10
|
+
/** Presentation only: excerpts are never used for authorization or receipt validity. */
|
|
11
|
+
function codingFailureSummary(diagnostic) {
|
|
12
|
+
const error = diagnostic.split("\n").map((line) => line.trim()).find((line) => /^(?:[A-Za-z]*Error(?: \[[A-Z_]+\])?:|ERR_[A-Z_]+\b)/.test(line));
|
|
13
|
+
if (!error) return null;
|
|
14
|
+
return error.length > 240 ? `${error.slice(0, 237)}…` : error;
|
|
15
|
+
}
|
|
16
|
+
function inboxUpdateLabel(body) {
|
|
17
|
+
const header = body.split("\n").find((line) => line.startsWith("--- from "));
|
|
18
|
+
if (!header) return "Teammate update received";
|
|
19
|
+
const match = /^--- from (.+?) \(message [0-9a-f-]+(?:, reply to [0-9a-f-]+)?\) ---$/.exec(header);
|
|
20
|
+
if (!match) return "Teammate update received";
|
|
21
|
+
const name = match[1]?.replace(/ \([0-9a-f-]{36}\)$/, "").trim();
|
|
22
|
+
if (!name || /^[0-9a-f-]{36}$/.test(name)) return "Teammate update received";
|
|
23
|
+
return `Update from ${name.slice(0, 100)}`;
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
//#region src/lib/coding-log.ts
|
|
27
|
+
/** Bounded first page. Larger reads and search are a later iteration. */
|
|
28
|
+
var CODING_LOG_PAGE_BYTES = 65536;
|
|
29
|
+
/**
|
|
30
|
+
* Read a retained coding log through the same-origin `/api` proxy.
|
|
31
|
+
*
|
|
32
|
+
* The daemon stays the authority: it re-checks Team membership and disclosure
|
|
33
|
+
* state on every call, so holding an opaque reference in history grants nothing
|
|
34
|
+
* on its own. `fetchImpl` is injectable for tests.
|
|
35
|
+
*/
|
|
36
|
+
async function fetchRetainedCodingLog(reference, fetchImpl = fetch) {
|
|
37
|
+
const base = `/api/teams/${encodeURIComponent(reference.teamId)}/coding-commands/${encodeURIComponent(reference.commandId)}/log`;
|
|
38
|
+
try {
|
|
39
|
+
const response = await fetchImpl(`${base}?limit=${CODING_LOG_PAGE_BYTES}`, { headers: { accept: "application/json" } });
|
|
40
|
+
if (response.status === 403) return { status: "not-shared" };
|
|
41
|
+
if (response.status === 404) return { status: "missing" };
|
|
42
|
+
if (!response.ok) return {
|
|
43
|
+
status: "unavailable",
|
|
44
|
+
message: `Request failed (${response.status}).`
|
|
45
|
+
};
|
|
46
|
+
const body = await response.json();
|
|
47
|
+
const view = readView(body);
|
|
48
|
+
if (!view) return {
|
|
49
|
+
status: "unavailable",
|
|
50
|
+
message: "Unexpected response from the daemon."
|
|
51
|
+
};
|
|
52
|
+
if (field(body, "page") === null) return { status: "not-shared" };
|
|
53
|
+
const page = readPage(field(body, "page"));
|
|
54
|
+
if (!page) return {
|
|
55
|
+
status: "unavailable",
|
|
56
|
+
message: "Unexpected response from the daemon."
|
|
57
|
+
};
|
|
58
|
+
return {
|
|
59
|
+
status: "available",
|
|
60
|
+
page,
|
|
61
|
+
view
|
|
62
|
+
};
|
|
63
|
+
} catch {
|
|
64
|
+
return {
|
|
65
|
+
status: "unavailable",
|
|
66
|
+
message: "The daemon could not be reached."
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
function readView(body) {
|
|
71
|
+
const view = field(body, "view");
|
|
72
|
+
if (!isRecord(view)) return null;
|
|
73
|
+
if (typeof view.commandId !== "string" || typeof view.availability !== "string") return null;
|
|
74
|
+
if (typeof view.byteLength !== "number") return null;
|
|
75
|
+
return view;
|
|
76
|
+
}
|
|
77
|
+
function readPage(page) {
|
|
78
|
+
if (!isRecord(page)) return null;
|
|
79
|
+
if (typeof page.text !== "string" || typeof page.availability !== "string") return null;
|
|
80
|
+
if (typeof page.offset !== "number" || typeof page.hasMore !== "boolean") return null;
|
|
81
|
+
if (typeof page.byteLength !== "number") return null;
|
|
82
|
+
return page;
|
|
83
|
+
}
|
|
84
|
+
function field(body, key) {
|
|
85
|
+
return isRecord(body) ? body[key] : void 0;
|
|
86
|
+
}
|
|
87
|
+
function isRecord(value) {
|
|
88
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
89
|
+
}
|
|
90
|
+
//#endregion
|
|
91
|
+
//#region src/components/CodingToolResult.tsx
|
|
92
|
+
/**
|
|
93
|
+
* Presents already-authorized chat text. A masked history card may additionally
|
|
94
|
+
* offer retained output, but that read is an explicit operator action through
|
|
95
|
+
* the daemon's releasing route — nothing is disclosed by rendering the card.
|
|
96
|
+
*/
|
|
97
|
+
function CodingToolResult({ name, body, pending = false, log }) {
|
|
98
|
+
if (!pending && body === "Coding context or command evidence retained privately. Captured transport output follows its communication approval; ask the Agent for the relevant result.") return /* @__PURE__ */ jsxs("details", {
|
|
99
|
+
className: "py-1 text-xs font-sans",
|
|
100
|
+
"aria-label": "Private command details",
|
|
101
|
+
children: [
|
|
102
|
+
/* @__PURE__ */ jsx("summary", {
|
|
103
|
+
className: "cursor-pointer",
|
|
104
|
+
children: "Detailed output isn’t included in this history view"
|
|
105
|
+
}),
|
|
106
|
+
/* @__PURE__ */ jsx("p", {
|
|
107
|
+
className: "mt-1",
|
|
108
|
+
children: "The Agent’s summary is shown in the conversation. Ask the Agent to summarize its retained command result if you need more detail."
|
|
109
|
+
}),
|
|
110
|
+
log && /* @__PURE__ */ jsx(RetainedLogControl, { reference: log })
|
|
111
|
+
]
|
|
112
|
+
});
|
|
113
|
+
let parsed;
|
|
114
|
+
try {
|
|
115
|
+
parsed = JSON.parse(body);
|
|
116
|
+
} catch {
|
|
117
|
+
return /* @__PURE__ */ jsx("span", { children: body });
|
|
118
|
+
}
|
|
119
|
+
if (!parsed || typeof parsed !== "object") return /* @__PURE__ */ jsx("span", { children: body });
|
|
120
|
+
if (pending) {
|
|
121
|
+
const input = parsed;
|
|
122
|
+
return /* @__PURE__ */ jsxs("p", {
|
|
123
|
+
className: "py-1 break-words",
|
|
124
|
+
children: [
|
|
125
|
+
name === "coding_command" ? "Running" : "Inspecting",
|
|
126
|
+
":",
|
|
127
|
+
" ",
|
|
128
|
+
typeof input.command === "string" ? input.command : typeof input.target === "string" ? input.target : "command evidence"
|
|
129
|
+
]
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (name === "repository_context") {
|
|
133
|
+
const report = parsed;
|
|
134
|
+
if (!Array.isArray(report.instructions?.files)) return /* @__PURE__ */ jsx("span", { children: body });
|
|
135
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
136
|
+
className: "py-1",
|
|
137
|
+
children: [
|
|
138
|
+
/* @__PURE__ */ jsxs("summary", {
|
|
139
|
+
className: "cursor-pointer",
|
|
140
|
+
children: [
|
|
141
|
+
"Repository: ",
|
|
142
|
+
report.target,
|
|
143
|
+
" ·",
|
|
144
|
+
" ",
|
|
145
|
+
report.instructions.state === "complete" ? `${report.instructions.files.length} instruction files` : "instructions unavailable"
|
|
146
|
+
]
|
|
147
|
+
}),
|
|
148
|
+
report.instructions.files.map((file) => /* @__PURE__ */ jsx("p", { children: file.path }, file.path)),
|
|
149
|
+
/* @__PURE__ */ jsxs("p", { children: [
|
|
150
|
+
report.commands?.candidates?.length ?? 0,
|
|
151
|
+
" suggested commands ·",
|
|
152
|
+
" ",
|
|
153
|
+
report.git?.state === "available" ? report.git.branch : "Git unavailable"
|
|
154
|
+
] }),
|
|
155
|
+
/* @__PURE__ */ jsx("pre", {
|
|
156
|
+
className: "max-h-64 overflow-auto whitespace-pre-wrap break-words",
|
|
157
|
+
children: body
|
|
158
|
+
})
|
|
159
|
+
]
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
if (name === "coding_log") {
|
|
163
|
+
const page = parsed;
|
|
164
|
+
if (typeof page.text !== "string" || typeof page.availability !== "string") return /* @__PURE__ */ jsx("span", { children: body });
|
|
165
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
166
|
+
className: "py-1",
|
|
167
|
+
"aria-label": "Retained command output",
|
|
168
|
+
children: [
|
|
169
|
+
/* @__PURE__ */ jsxs("summary", {
|
|
170
|
+
className: "cursor-pointer",
|
|
171
|
+
children: [
|
|
172
|
+
"Retained output: ",
|
|
173
|
+
page.availability,
|
|
174
|
+
page.hasMore ? " · more available" : ""
|
|
175
|
+
]
|
|
176
|
+
}),
|
|
177
|
+
/* @__PURE__ */ jsx("pre", {
|
|
178
|
+
className: "max-h-64 overflow-auto whitespace-pre-wrap break-words",
|
|
179
|
+
children: page.text
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ jsxs("p", {
|
|
182
|
+
className: "text-xs",
|
|
183
|
+
children: [
|
|
184
|
+
"bytes ",
|
|
185
|
+
typeof page.offset === "number" ? page.offset : 0,
|
|
186
|
+
"–",
|
|
187
|
+
(typeof page.offset === "number" ? page.offset : 0) + page.text.length,
|
|
188
|
+
" of",
|
|
189
|
+
" ",
|
|
190
|
+
typeof page.byteLength === "number" ? page.byteLength : 0
|
|
191
|
+
]
|
|
192
|
+
})
|
|
193
|
+
]
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
if (name === "coding_environment") {
|
|
197
|
+
const value = parsed;
|
|
198
|
+
if (typeof value.posture !== "string") return /* @__PURE__ */ jsx("span", { children: body });
|
|
199
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
200
|
+
className: "py-1",
|
|
201
|
+
children: [
|
|
202
|
+
/* @__PURE__ */ jsxs("summary", {
|
|
203
|
+
className: "cursor-pointer",
|
|
204
|
+
children: [
|
|
205
|
+
"Environment: ",
|
|
206
|
+
value.posture,
|
|
207
|
+
" · ",
|
|
208
|
+
value.cwd
|
|
209
|
+
]
|
|
210
|
+
}),
|
|
211
|
+
/* @__PURE__ */ jsx("p", {
|
|
212
|
+
className: "break-all",
|
|
213
|
+
children: value.imageId ?? "Host runtime"
|
|
214
|
+
}),
|
|
215
|
+
Array.isArray(value.restrictions) && value.restrictions.filter((x) => typeof x === "string").map((text) => /* @__PURE__ */ jsx("p", { children: text }, text))
|
|
216
|
+
]
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
const view = parsed;
|
|
220
|
+
const receipt = name === "coding_receipt" ? view.receipt : parsed;
|
|
221
|
+
if (!receipt || typeof receipt.state !== "string" || typeof receipt.input?.command !== "string" || typeof receipt.input?.cwd !== "string") return /* @__PURE__ */ jsx("span", { children: body });
|
|
222
|
+
const failure = receipt.state === "failed" && typeof receipt.diagnostic === "string" ? codingFailureSummary(receipt.diagnostic) : null;
|
|
223
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
224
|
+
className: "py-2",
|
|
225
|
+
"aria-label": "Coding command result",
|
|
226
|
+
children: [
|
|
227
|
+
/* @__PURE__ */ jsxs("p", {
|
|
228
|
+
className: "font-sans",
|
|
229
|
+
children: [
|
|
230
|
+
/* @__PURE__ */ jsx("strong", {
|
|
231
|
+
className: receipt.state === "succeeded" ? "text-sapphire-deep" : "text-mocha",
|
|
232
|
+
children: receipt.state.replaceAll("_", " ")
|
|
233
|
+
}),
|
|
234
|
+
" ",
|
|
235
|
+
"· ",
|
|
236
|
+
receipt.input.purpose,
|
|
237
|
+
typeof receipt.exitCode === "number" ? ` · exit ${receipt.exitCode}` : "",
|
|
238
|
+
name === "coding_receipt" ? ` · ${view.applicability}` : ""
|
|
239
|
+
]
|
|
240
|
+
}),
|
|
241
|
+
/* @__PURE__ */ jsx("p", {
|
|
242
|
+
className: "whitespace-pre-wrap break-words",
|
|
243
|
+
children: receipt.input.command
|
|
244
|
+
}),
|
|
245
|
+
/* @__PURE__ */ jsxs("p", {
|
|
246
|
+
className: "text-xs",
|
|
247
|
+
children: [
|
|
248
|
+
receipt.input.cwd,
|
|
249
|
+
" · ",
|
|
250
|
+
receipt.environment?.posture,
|
|
251
|
+
" · result at execution time"
|
|
252
|
+
]
|
|
253
|
+
}),
|
|
254
|
+
failure && /* @__PURE__ */ jsx("p", {
|
|
255
|
+
className: "mt-1 font-sans text-rose-baziu",
|
|
256
|
+
"aria-label": "Command failure summary",
|
|
257
|
+
children: failure
|
|
258
|
+
}),
|
|
259
|
+
typeof receipt.reason === "string" && /* @__PURE__ */ jsx("p", { children: receipt.reason }),
|
|
260
|
+
/* @__PURE__ */ jsxs("details", { children: [
|
|
261
|
+
/* @__PURE__ */ jsx("summary", {
|
|
262
|
+
className: "cursor-pointer",
|
|
263
|
+
children: "Output and evidence"
|
|
264
|
+
}),
|
|
265
|
+
/* @__PURE__ */ jsx("pre", {
|
|
266
|
+
className: "max-h-64 overflow-auto whitespace-pre-wrap break-words",
|
|
267
|
+
children: receipt.diagnostic
|
|
268
|
+
}),
|
|
269
|
+
receipt.truncated && /* @__PURE__ */ jsx("p", { children: "Output truncated." }),
|
|
270
|
+
/* @__PURE__ */ jsxs("p", {
|
|
271
|
+
className: "break-all",
|
|
272
|
+
children: ["coding-receipt:", receipt.id]
|
|
273
|
+
}),
|
|
274
|
+
/* @__PURE__ */ jsx(SourceApplicability, {
|
|
275
|
+
teamId: receipt.teamId,
|
|
276
|
+
after: receipt.sourceAfter ?? null,
|
|
277
|
+
before: receipt.sourceBefore ?? null
|
|
278
|
+
}),
|
|
279
|
+
receipt.environment?.imageId && /* @__PURE__ */ jsx("p", {
|
|
280
|
+
className: "break-all",
|
|
281
|
+
children: receipt.environment.imageId
|
|
282
|
+
})
|
|
283
|
+
] })
|
|
284
|
+
]
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Whether this result's tested source still matches the current source (BAZ-042 criterion 4).
|
|
289
|
+
*
|
|
290
|
+
* Nothing is assumed from the fact that a result exists: a receipt with no captured source reads as
|
|
291
|
+
* **Not checked**, and the verdict is loaded only when the operator asks for it.
|
|
292
|
+
*/
|
|
293
|
+
function SourceApplicability({ teamId, after, before }) {
|
|
294
|
+
const [state, setState] = useState(null);
|
|
295
|
+
const [loading, setLoading] = useState(false);
|
|
296
|
+
async function check() {
|
|
297
|
+
if (!after) return;
|
|
298
|
+
setLoading(true);
|
|
299
|
+
try {
|
|
300
|
+
setState(await fetchSnapshotApplicability({ data: {
|
|
301
|
+
teamId,
|
|
302
|
+
snapshotId: after.id
|
|
303
|
+
} }));
|
|
304
|
+
} finally {
|
|
305
|
+
setLoading(false);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
const verdict = state?.status === "ok" ? state : null;
|
|
309
|
+
const label = applicabilityLabel(verdict);
|
|
310
|
+
return /* @__PURE__ */ jsxs("p", {
|
|
311
|
+
className: applicabilityWarns(verdict) ? "text-rose-baziu" : void 0,
|
|
312
|
+
children: [
|
|
313
|
+
label,
|
|
314
|
+
after ? /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
315
|
+
" · tested version ",
|
|
316
|
+
/* @__PURE__ */ jsx("span", {
|
|
317
|
+
className: "break-all font-mono",
|
|
318
|
+
children: after.id.slice(0, 12)
|
|
319
|
+
}),
|
|
320
|
+
after.complete ? "" : " (incomplete)",
|
|
321
|
+
verdict === null && /* @__PURE__ */ jsxs(Fragment, { children: [" ", /* @__PURE__ */ jsx(Button, {
|
|
322
|
+
variant: "ghost",
|
|
323
|
+
disabled: loading,
|
|
324
|
+
onClick: () => void check(),
|
|
325
|
+
children: loading ? "Checking…" : "Check applicability"
|
|
326
|
+
})] }),
|
|
327
|
+
state?.status === "unavailable" && /* @__PURE__ */ jsxs("span", { children: [" · ", state.message] })
|
|
328
|
+
] }) : " · no source snapshot was captured for this result",
|
|
329
|
+
before && /* @__PURE__ */ jsxs(Fragment, { children: [" · started from ", /* @__PURE__ */ jsx("span", {
|
|
330
|
+
className: "break-all font-mono",
|
|
331
|
+
children: before.id.slice(0, 12)
|
|
332
|
+
})] })
|
|
333
|
+
]
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
/**
|
|
337
|
+
* Explicit operator read of a retained log. Loads a single bounded first page
|
|
338
|
+
* on demand; the daemon re-authorizes every call and reports a held log as
|
|
339
|
+
* `not-shared` so it can never be mistaken for an empty result.
|
|
340
|
+
*/
|
|
341
|
+
function RetainedLogControl({ reference }) {
|
|
342
|
+
const [result, setResult] = useState(null);
|
|
343
|
+
const [loading, setLoading] = useState(false);
|
|
344
|
+
async function load() {
|
|
345
|
+
setLoading(true);
|
|
346
|
+
try {
|
|
347
|
+
setResult(await fetchRetainedCodingLog(reference));
|
|
348
|
+
} finally {
|
|
349
|
+
setLoading(false);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
if (result === null) return /* @__PURE__ */ jsx("p", {
|
|
353
|
+
className: "mt-2",
|
|
354
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
355
|
+
variant: "ghost",
|
|
356
|
+
disabled: loading,
|
|
357
|
+
onClick: () => void load(),
|
|
358
|
+
children: loading ? "Loading…" : "Show retained output"
|
|
359
|
+
})
|
|
360
|
+
});
|
|
361
|
+
if (result.status === "not-shared") return /* @__PURE__ */ jsx("p", {
|
|
362
|
+
className: "mt-2",
|
|
363
|
+
children: "This command’s output hasn’t been shared with the conversation yet."
|
|
364
|
+
});
|
|
365
|
+
if (result.status === "missing") return /* @__PURE__ */ jsx("p", {
|
|
366
|
+
className: "mt-2",
|
|
367
|
+
children: "This retained output is no longer available."
|
|
368
|
+
});
|
|
369
|
+
if (result.status === "unavailable") return /* @__PURE__ */ jsx("p", {
|
|
370
|
+
className: "mt-2",
|
|
371
|
+
role: "alert",
|
|
372
|
+
children: result.message
|
|
373
|
+
});
|
|
374
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
375
|
+
className: "mt-2",
|
|
376
|
+
children: [/* @__PURE__ */ jsx("pre", {
|
|
377
|
+
className: "max-h-64 overflow-auto whitespace-pre-wrap break-words rounded-sm bg-[rgba(42,31,22,0.04)] p-2",
|
|
378
|
+
children: result.page.text
|
|
379
|
+
}), /* @__PURE__ */ jsxs("p", { children: [
|
|
380
|
+
"Retained output: ",
|
|
381
|
+
result.page.availability,
|
|
382
|
+
result.page.hasMore ? " · earlier output omitted" : "",
|
|
383
|
+
" · bytes ",
|
|
384
|
+
result.page.offset,
|
|
385
|
+
"–",
|
|
386
|
+
result.page.offset + result.page.text.length,
|
|
387
|
+
" of ",
|
|
388
|
+
result.page.byteLength
|
|
389
|
+
] })]
|
|
390
|
+
});
|
|
391
|
+
}
|
|
392
|
+
//#endregion
|
|
7
393
|
//#region src/lib/md.ts
|
|
8
394
|
var installed = false;
|
|
9
395
|
function install() {
|
|
@@ -1094,7 +1480,8 @@ function projectMessages(msgs) {
|
|
|
1094
1480
|
kind: isError ? "error" : "result",
|
|
1095
1481
|
id: m.toolCallId ?? "",
|
|
1096
1482
|
name: m.toolName ?? "",
|
|
1097
|
-
body: m.content
|
|
1483
|
+
body: m.content,
|
|
1484
|
+
...m.codingLog ? { codingLog: m.codingLog } : {}
|
|
1098
1485
|
});
|
|
1099
1486
|
if (m.result) {
|
|
1100
1487
|
entries.push({
|
|
@@ -1117,6 +1504,7 @@ function ChatPane({ agentId, agentName, initialMessages, initialSessionHead }) {
|
|
|
1117
1504
|
const markdownReady = useSyncExternalStore(subscribeToHydration, browserMarkdownReady, serverMarkdownReady);
|
|
1118
1505
|
const [serverMessages, setServerMessages] = useState(initialMessages);
|
|
1119
1506
|
const [liveEntries, setLiveEntries] = useState([]);
|
|
1507
|
+
const deliveredCoding = useRef(/* @__PURE__ */ new Map());
|
|
1120
1508
|
const [systemBubbles, setSystemBubbles] = useState([]);
|
|
1121
1509
|
const [thinking, setThinking] = useState(false);
|
|
1122
1510
|
const [streaming, setStreaming] = useState(false);
|
|
@@ -1154,6 +1542,7 @@ function ChatPane({ agentId, agentName, initialMessages, initialSessionHead }) {
|
|
|
1154
1542
|
currentAbortRef.current?.abort();
|
|
1155
1543
|
currentAbortRef.current = null;
|
|
1156
1544
|
commandApprovalTurnRef.current = false;
|
|
1545
|
+
deliveredCoding.current.clear();
|
|
1157
1546
|
setServerMessages(initialMessages);
|
|
1158
1547
|
setLiveEntries([]);
|
|
1159
1548
|
setSystemBubbles([]);
|
|
@@ -1673,6 +2062,10 @@ function ChatPane({ agentId, agentName, initialMessages, initialSessionHead }) {
|
|
|
1673
2062
|
setLiveEntries((entries) => upsertCommandApprovalEntry(entries, ev.approval));
|
|
1674
2063
|
return;
|
|
1675
2064
|
}
|
|
2065
|
+
if (ev.type === "coding_progress") {
|
|
2066
|
+
setLiveEntries((prev) => upsertCodingProgress(prev, ev));
|
|
2067
|
+
return;
|
|
2068
|
+
}
|
|
1676
2069
|
if (ev.type === "tool_call" || ev.type === "tool_result" || ev.type === "tool_error") {
|
|
1677
2070
|
setThinking(ev.type !== "tool_call");
|
|
1678
2071
|
const item = ev.type === "tool_call" ? {
|
|
@@ -1691,9 +2084,23 @@ function ChatPane({ agentId, agentName, initialMessages, initialSessionHead }) {
|
|
|
1691
2084
|
name: ev.name,
|
|
1692
2085
|
body: ev.error
|
|
1693
2086
|
};
|
|
2087
|
+
if (ev.type === "tool_result" && [
|
|
2088
|
+
"repository_context",
|
|
2089
|
+
"coding_environment",
|
|
2090
|
+
"coding_command",
|
|
2091
|
+
"coding_receipt",
|
|
2092
|
+
"coding_log",
|
|
2093
|
+
"source_snapshot"
|
|
2094
|
+
].includes(ev.name)) {
|
|
2095
|
+
deliveredCoding.current.set(`${ev.name}:${ev.id}`, ev.result);
|
|
2096
|
+
while (deliveredCoding.current.size > 20) deliveredCoding.current.delete(deliveredCoding.current.keys().next().value);
|
|
2097
|
+
}
|
|
1694
2098
|
const images = ev.type === "tool_result" ? ev.images : void 0;
|
|
1695
2099
|
setLiveEntries((prev) => {
|
|
1696
|
-
const next = [...prev
|
|
2100
|
+
const next = [...prev.map((entry) => entry.type === "tool" ? {
|
|
2101
|
+
...entry,
|
|
2102
|
+
items: entry.items.filter((i) => !(i.kind === "progress" && i.id === ev.id))
|
|
2103
|
+
} : entry)];
|
|
1697
2104
|
const last = next[next.length - 1];
|
|
1698
2105
|
if (last?.type === "tool") next[next.length - 1] = {
|
|
1699
2106
|
type: "tool",
|
|
@@ -1802,7 +2209,14 @@ function ChatPane({ agentId, agentName, initialMessages, initialSessionHead }) {
|
|
|
1802
2209
|
send(input);
|
|
1803
2210
|
}
|
|
1804
2211
|
}
|
|
1805
|
-
const baseEntries = projectMessages(serverMessages)
|
|
2212
|
+
const baseEntries = projectMessages(serverMessages.map((message) => {
|
|
2213
|
+
if (message.role !== "tool" || !message.toolCallId || !message.toolName) return message;
|
|
2214
|
+
const body = deliveredCoding.current.get(`${message.toolName}:${message.toolCallId}`);
|
|
2215
|
+
return body === void 0 ? message : {
|
|
2216
|
+
...message,
|
|
2217
|
+
content: body
|
|
2218
|
+
};
|
|
2219
|
+
}));
|
|
1806
2220
|
visibleEntryCountRef.current = baseEntries.length + liveEntries.length;
|
|
1807
2221
|
const lastUserIdx = (() => {
|
|
1808
2222
|
if (liveEntries.length > 0 || turnBusy) return -1;
|
|
@@ -2108,15 +2522,23 @@ function Bubble({ entry, markdownReady, isLastUser, isWillDrop, onEdit, onComman
|
|
|
2108
2522
|
if (entry.type === "user") {
|
|
2109
2523
|
if (entry.content.startsWith(INBOX_WAKE_PREFIX)) {
|
|
2110
2524
|
const body = entry.content.slice(24);
|
|
2111
|
-
return /* @__PURE__ */ jsxs("
|
|
2112
|
-
className: `my-
|
|
2113
|
-
|
|
2114
|
-
|
|
2115
|
-
|
|
2116
|
-
|
|
2117
|
-
|
|
2118
|
-
|
|
2119
|
-
|
|
2525
|
+
return /* @__PURE__ */ jsxs("details", {
|
|
2526
|
+
className: `my-3 rounded-lg border border-fawn bg-ivory px-3 py-2 text-sm text-mocha ${dropCls}`,
|
|
2527
|
+
"aria-label": "Teammate update",
|
|
2528
|
+
children: [
|
|
2529
|
+
/* @__PURE__ */ jsx("summary", {
|
|
2530
|
+
className: "cursor-pointer font-medium",
|
|
2531
|
+
children: inboxUpdateLabel(body)
|
|
2532
|
+
}),
|
|
2533
|
+
/* @__PURE__ */ jsx("p", {
|
|
2534
|
+
className: "mt-2 text-xs",
|
|
2535
|
+
children: "Original message and Agent instructions"
|
|
2536
|
+
}),
|
|
2537
|
+
/* @__PURE__ */ jsx("pre", {
|
|
2538
|
+
className: "mt-1 max-h-64 overflow-auto whitespace-pre-wrap break-words text-xs",
|
|
2539
|
+
children: body
|
|
2540
|
+
})
|
|
2541
|
+
]
|
|
2120
2542
|
});
|
|
2121
2543
|
}
|
|
2122
2544
|
return /* @__PURE__ */ jsxs("div", {
|
|
@@ -2354,7 +2776,52 @@ function commandApprovalStatusFromConflict(message) {
|
|
|
2354
2776
|
default: return null;
|
|
2355
2777
|
}
|
|
2356
2778
|
}
|
|
2779
|
+
/** Insert or replace the live progress tail for one coding tool call. */
|
|
2780
|
+
function upsertCodingProgress(entries, ev) {
|
|
2781
|
+
const progress = {
|
|
2782
|
+
kind: "progress",
|
|
2783
|
+
id: ev.id,
|
|
2784
|
+
name: "coding_command",
|
|
2785
|
+
body: ev.output,
|
|
2786
|
+
elapsedMs: ev.elapsedMs,
|
|
2787
|
+
truncated: ev.truncated
|
|
2788
|
+
};
|
|
2789
|
+
for (let i = entries.length - 1; i >= 0; i--) {
|
|
2790
|
+
const entry = entries[i];
|
|
2791
|
+
if (entry?.type !== "tool") continue;
|
|
2792
|
+
const at = entry.items.findIndex((item) => item.id === ev.id);
|
|
2793
|
+
if (at < 0) continue;
|
|
2794
|
+
const items = [...entry.items];
|
|
2795
|
+
items[at] = progress;
|
|
2796
|
+
const next = [...entries];
|
|
2797
|
+
next[i] = {
|
|
2798
|
+
type: "tool",
|
|
2799
|
+
items
|
|
2800
|
+
};
|
|
2801
|
+
return next;
|
|
2802
|
+
}
|
|
2803
|
+
const last = entries[entries.length - 1];
|
|
2804
|
+
if (last?.type === "tool") return [...entries.slice(0, -1), {
|
|
2805
|
+
type: "tool",
|
|
2806
|
+
items: [...last.items, progress]
|
|
2807
|
+
}];
|
|
2808
|
+
return [...entries, {
|
|
2809
|
+
type: "tool",
|
|
2810
|
+
items: [progress]
|
|
2811
|
+
}];
|
|
2812
|
+
}
|
|
2357
2813
|
function ToolGroup({ items, dropCls }) {
|
|
2814
|
+
const codingNames = [
|
|
2815
|
+
"repository_context",
|
|
2816
|
+
"coding_command",
|
|
2817
|
+
"coding_environment",
|
|
2818
|
+
"coding_receipt",
|
|
2819
|
+
"coding_log",
|
|
2820
|
+
"source_snapshot",
|
|
2821
|
+
"send_message"
|
|
2822
|
+
];
|
|
2823
|
+
const hasCoding = items.some((item) => codingNames.includes(item.name));
|
|
2824
|
+
const visibleItems = items.filter((item) => !(item.kind === "call" && codingNames.includes(item.name) && items.some((other) => other.id === item.id && other.kind !== "call")));
|
|
2358
2825
|
const [expanded, setExpanded] = useState(false);
|
|
2359
2826
|
const contentRef = useRef(null);
|
|
2360
2827
|
const [overflows, setOverflows] = useState(false);
|
|
@@ -2368,12 +2835,12 @@ function ToolGroup({ items, dropCls }) {
|
|
|
2368
2835
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
2369
2836
|
ref: contentRef,
|
|
2370
2837
|
className: "relative overflow-hidden",
|
|
2371
|
-
style: { maxHeight: expanded ? "none" : `${TOOL_GROUP_MAX_HEIGHT_PX}px` },
|
|
2372
|
-
children: [
|
|
2838
|
+
style: { maxHeight: expanded || hasCoding ? "none" : `${TOOL_GROUP_MAX_HEIGHT_PX}px` },
|
|
2839
|
+
children: [visibleItems.map((it, i) => /* @__PURE__ */ jsx(ToolLine, { item: it }, i)), overflows && !expanded && !hasCoding && /* @__PURE__ */ jsx("div", {
|
|
2373
2840
|
className: "pointer-events-none absolute inset-x-0 bottom-0 h-10",
|
|
2374
2841
|
style: { background: "linear-gradient(to bottom, rgba(247,240,229,0), var(--color-ivory))" }
|
|
2375
2842
|
})]
|
|
2376
|
-
}), overflows && /* @__PURE__ */ jsx("button", {
|
|
2843
|
+
}), overflows && !hasCoding && /* @__PURE__ */ jsx("button", {
|
|
2377
2844
|
type: "button",
|
|
2378
2845
|
onClick: () => setExpanded((v) => !v),
|
|
2379
2846
|
className: "mt-2 rounded-sm border border-fawn bg-transparent px-2 py-0.5 text-[0.9em] text-mocha hover:border-sapphire hover:text-sapphire-deep",
|
|
@@ -2382,6 +2849,48 @@ function ToolGroup({ items, dropCls }) {
|
|
|
2382
2849
|
});
|
|
2383
2850
|
}
|
|
2384
2851
|
function ToolLine({ item }) {
|
|
2852
|
+
if (item.name === "send_message" && item.kind !== "error") return /* @__PURE__ */ jsxs("details", {
|
|
2853
|
+
className: "py-1 font-sans text-sm",
|
|
2854
|
+
children: [/* @__PURE__ */ jsx("summary", {
|
|
2855
|
+
className: "cursor-pointer",
|
|
2856
|
+
children: item.kind === "call" ? "Sending teammate message…" : item.body.startsWith("sent message ") ? "Teammate message sent" : "Teammate message status"
|
|
2857
|
+
}), /* @__PURE__ */ jsx("pre", {
|
|
2858
|
+
className: "mt-1 max-h-64 overflow-auto whitespace-pre-wrap break-words text-xs",
|
|
2859
|
+
children: item.body
|
|
2860
|
+
})]
|
|
2861
|
+
});
|
|
2862
|
+
if (item.kind === "progress") return /* @__PURE__ */ jsxs("div", {
|
|
2863
|
+
className: "py-1",
|
|
2864
|
+
"aria-label": "Live coding progress",
|
|
2865
|
+
children: [
|
|
2866
|
+
/* @__PURE__ */ jsxs("p", {
|
|
2867
|
+
className: "font-sans",
|
|
2868
|
+
children: [
|
|
2869
|
+
"Running coding command · ",
|
|
2870
|
+
Math.max(0, Math.round((item.elapsedMs ?? 0) / 1e3)),
|
|
2871
|
+
"s"
|
|
2872
|
+
]
|
|
2873
|
+
}),
|
|
2874
|
+
/* @__PURE__ */ jsx("pre", {
|
|
2875
|
+
className: "max-h-64 overflow-auto whitespace-pre-wrap break-words",
|
|
2876
|
+
children: item.body
|
|
2877
|
+
}),
|
|
2878
|
+
item.truncated && /* @__PURE__ */ jsx("p", { children: "Earlier output omitted; the retained log holds more." })
|
|
2879
|
+
]
|
|
2880
|
+
});
|
|
2881
|
+
if (item.kind !== "error" && [
|
|
2882
|
+
"repository_context",
|
|
2883
|
+
"coding_command",
|
|
2884
|
+
"coding_environment",
|
|
2885
|
+
"coding_receipt",
|
|
2886
|
+
"coding_log",
|
|
2887
|
+
"source_snapshot"
|
|
2888
|
+
].includes(item.name)) return /* @__PURE__ */ jsx(CodingToolResult, {
|
|
2889
|
+
name: item.name,
|
|
2890
|
+
body: item.body,
|
|
2891
|
+
pending: item.kind === "call",
|
|
2892
|
+
log: item.codingLog
|
|
2893
|
+
});
|
|
2385
2894
|
if (item.kind === "call") {
|
|
2386
2895
|
const args = prettyArgs(item.body);
|
|
2387
2896
|
const multiLine = args.includes("\n");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
2
|
-
import { n as ResultTranscript } from "./ChatPane-
|
|
2
|
+
import { n as ResultTranscript } from "./ChatPane-DybH39WK.js";
|
|
3
3
|
import { useEffect, useState } from "react";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
5
5
|
//#region src/components/ResultSourceConversation.tsx
|
|
@@ -2,7 +2,7 @@ import { n as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.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-C_2er0_G.js");
|
|
6
6
|
var fetchAgent = createServerFn({ method: "POST" }).validator((d) => d).handler(createSsrRpc("846c9081aed17057351730985f133b0aab67a5dabfca9562552829a90ff30849"));
|
|
7
7
|
var Route = createFileRoute("/agents/$id/")({
|
|
8
8
|
validateSearch: (search) => ({
|
|
@@ -2,7 +2,7 @@ import { n as createServerFn } from "../server.js";
|
|
|
2
2
|
import { t as createSsrRpc } from "./createSsrRpc-6LHNEsSK.js";
|
|
3
3
|
import { createFileRoute, lazyRouteComponent, redirect } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/templates/agents/$id/index.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./_id-
|
|
5
|
+
var $$splitComponentImporter = () => import("./_id-BqWTB8Wl.js");
|
|
6
6
|
var fetchProfile = createServerFn({ method: "POST" }).validator((d) => d).handler(createSsrRpc("032d74b7d41c718191dbdde6b06ba44993340ce1154af1fa6723a6d4f7a7236e"));
|
|
7
7
|
var Route = createFileRoute("/templates/agents/$id/")({
|
|
8
8
|
loader: async ({ params }) => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Route } from "./_id-
|
|
1
|
+
import { t as Route } from "./_id-BYKpT2Tu.js";
|
|
2
2
|
import { r as PageShell } from "./Page-Bz-ydB8j.js";
|
|
3
3
|
import { t as UnsavedChangesGuard } from "./UnsavedChangesGuard-CiStXyBI.js";
|
|
4
4
|
import { t as DEFAULT_PROFILE_COMMUNICATION } from "./team-policy-vPG01onj.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as createServerFn } from "../server.js";
|
|
2
2
|
import { t as createServerRpc } from "./createServerRpc-B7Yr1K8i.js";
|
|
3
|
-
import { n as daemonClient, r as ApiClientError } from "./daemon-client-
|
|
3
|
+
import { n as daemonClient, r as ApiClientError } from "./daemon-client-Cgx-YW4l.js";
|
|
4
4
|
//#region src/routes/agents/$id/index.tsx?tss-serverfn-split
|
|
5
5
|
var fetchAgent_createServerFn_handler = createServerRpc({
|
|
6
6
|
id: "846c9081aed17057351730985f133b0aab67a5dabfca9562552829a90ff30849",
|