bazilion 0.14.1 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/cli.js +1129 -337
- package/dist/cli.js.map +1 -1
- package/dist/daemon.js +8180 -3651
- package/dist/daemon.js.map +1 -1
- package/dist/migrations/0001_init.sql +171 -3
- package/dist/web/client/assets/ChatPane-55j13bBj.js +74 -0
- package/dist/web/client/assets/{ConfirmDialog-BAiyYC8w.js → ConfirmDialog-CGZzom9E.js} +1 -1
- package/dist/web/client/assets/{FieldRow-DsWhqiIQ.js → FieldRow-DYNU9gWb.js} +1 -1
- package/dist/web/client/assets/{ProductionTeamPolicyEditor-CHBKZMpY.js → ProductionTeamPolicyEditor-DT5Sl8jd.js} +1 -1
- package/dist/web/client/assets/{ProfileCommunicationEditor-DZ8yTQvV.js → ProfileCommunicationEditor-TyCU5vXX.js} +1 -1
- package/dist/web/client/assets/ResultCard-Cps_lXVN.js +1 -0
- package/dist/web/client/assets/ResultSourceConversation-CGhKTSTD.js +1 -0
- package/dist/web/client/assets/TeamTabs-BZHyRnbd.js +1 -0
- package/dist/web/client/assets/{TemplatesTabs-BwsLjN0Q.js → TemplatesTabs-BHzkPMRC.js} +1 -1
- package/dist/web/client/assets/{UnsavedChangesGuard-C7U9rsPw.js → UnsavedChangesGuard-CFQcKsrf.js} +1 -1
- package/dist/web/client/assets/_id-9nCIhbVd.js +1 -0
- package/dist/web/client/assets/{_id-CG9YM1tY.js → _id-BSu3AqKA.js} +1 -1
- package/dist/web/client/assets/_id-CGd21j3k.js +1 -0
- package/dist/web/client/assets/{_id-DtHL-U-0.js → _id-D_eKokkd.js} +1 -1
- package/dist/web/client/assets/{_id-J0kM-98d.js → _id-SRMFlIgP.js} +1 -1
- package/dist/web/client/assets/{activity-CBQGMwWo.js → activity-Cn2-9PpZ.js} +1 -1
- package/dist/web/client/assets/{agents-BWGBjF2Y.js → agents-CCmiZek6.js} +1 -1
- package/dist/web/client/assets/{agents-DTY5RXgO.js → agents-NY3VrZgB.js} +1 -1
- package/dist/web/client/assets/{approvals-DwMk9S4Z.js → approvals-CPDAPgrM.js} +1 -1
- package/dist/web/client/assets/{attention-7qYFtwOW.js → attention-Qra_9_OI.js} +1 -1
- package/dist/web/client/assets/chevron-right-DXE4CWf2.js +1 -0
- package/dist/web/client/assets/{config-D59MT3Y5.js → config-D8EO0LPB.js} +2 -2
- package/dist/web/client/assets/{inbox-CpKuNfOj.js → inbox-C5W-sm1q.js} +1 -1
- package/dist/web/client/assets/{index-BVfpuiby.js → index-BUhhk_u9.js} +2 -2
- package/dist/web/client/assets/{learning-631_q6a9.js → learning-Dr-7_7J4.js} +1 -1
- package/dist/web/client/assets/login-Bu5UxbJh.js +1 -0
- package/dist/web/client/assets/{mcp-DHgUOUPG.js → mcp-BueuwQiv.js} +1 -1
- package/dist/web/client/assets/{members-CLCUdo-h.js → members-ZikuYNcy.js} +1 -1
- package/dist/web/client/assets/{memory-paAiM6ix.js → memory-1JUJlPrn.js} +1 -1
- package/dist/web/client/assets/{policy-Fy_Wnq6p.js → policy-DbkhsFNA.js} +1 -1
- package/dist/web/client/assets/results-mMr8Ar2u.js +1 -0
- package/dist/web/client/assets/routes-DJYB-MS9.js +1 -0
- package/dist/web/client/assets/{services-i_RmJYAO.js → services-kfQA9cpJ.js} +1 -1
- package/dist/web/client/assets/{skills-BX42OGpp.js → skills-C6pcgxaC.js} +1 -1
- package/dist/web/client/assets/styles-CcNf8jT_.css +2 -0
- package/dist/web/client/assets/{teams-D6nIPyC0.js → teams-C6_Noz5X.js} +1 -1
- package/dist/web/client/assets/{teams-4ySkP31k.js → teams-LB0KBXY9.js} +1 -1
- package/dist/web/client/assets/telegram-A2jaI1QM.js +1 -0
- package/dist/web/client/assets/{tokens-2j3NQudt.js → tokens-BGlUpJcL.js} +1 -1
- package/dist/web/client/assets/{triggers-sDA075Nu.js → triggers-C54_feGg.js} +1 -1
- package/dist/web/client/assets/{welcome-Do427w4M.js → welcome-DyUIswRi.js} +1 -1
- package/dist/web/client/assets/wire-constants-CBD-lTaa.js +1 -0
- package/dist/web/client/assets/{x-CbAF-3_T.js → x-BY2MPLr9.js} +1 -1
- package/dist/web/server/assets/{ChatPane-CgSe7tsy.js → ChatPane-DJ30FdFG.js} +1122 -107
- package/dist/web/server/assets/ResultCard-B3zD9N0t.js +143 -0
- package/dist/web/server/assets/ResultSourceConversation-zYogeOWp.js +64 -0
- package/dist/web/server/assets/{TeamTabs-Co3n2exj.js → TeamTabs-TCKjCvMA.js} +4 -0
- package/dist/web/server/assets/{_id-sNu5aXZt.js → _id-1LwoHhJg.js} +2 -1
- package/dist/web/server/assets/{_id-BeKhPKw3.js → _id-1hTvnKLN2.js} +7 -3
- package/dist/web/server/assets/{_id-BAA9KJBU.js → _id-B2EEyStS.js} +1 -1
- package/dist/web/server/assets/_id-BDEpe6k0.js +6 -0
- package/dist/web/server/assets/{_id-BqWTB8Wl.js → _id-B_-CDHOi2.js} +1 -1
- package/dist/web/server/assets/{_id-DxCnEFpm.js → _id-BvSWsPI5.js} +3 -4
- package/dist/web/server/assets/{_id-ndxFHx0t.js → _id-CDBtO_jL.js} +2 -2
- package/dist/web/server/assets/{_id-DvlDkk04.js → _id-DDNVQx3y.js} +1 -1
- package/dist/web/server/assets/{_id-BYKpT2Tu.js → _id-DFHB9JFQ.js} +1 -1
- package/dist/web/server/assets/{_id-HMy7jM3P.js → _id-DxFLSIio.js} +1 -1
- package/dist/web/server/assets/{_id-DYU6uIBx.js → _id-T_8btpbB.js} +1 -1
- package/dist/web/server/assets/_id-wyjrf0JG.js +17 -0
- package/dist/web/server/assets/{_tanstack-start-manifest_v-DR7wyKcH.js → _tanstack-start-manifest_v-DP4ZUBw3.js} +102 -75
- package/dist/web/server/assets/{activity-BWv1goK6.js → activity-5fWKPDxj.js} +2 -2
- package/dist/web/server/assets/{activity-LjpblbDL.js → activity-C88qrNqv.js} +1 -1
- package/dist/web/server/assets/{activity-9VP6QDTH.js → activity-D73w4mkZ.js} +1 -1
- package/dist/web/server/assets/{agents-DjyQk94u.js → agents-DB5hCSAI.js} +1 -1
- package/dist/web/server/assets/{agents-BJAv919x.js → agents-DRSo7lRX.js} +1 -1
- package/dist/web/server/assets/{approvals-BYi84gwl.js → approvals-4y9bZF4r.js} +1 -1
- package/dist/web/server/assets/{approvals-7JOoBchn.js → approvals-DTdrltyk.js} +1 -1
- package/dist/web/server/assets/{approvals-Bz123liE.js → approvals-DXoN-T57.js} +15 -1
- package/dist/web/server/assets/{attention-UhqPK_Ro.js → attention-BFx8ZkmH.js} +1 -1
- package/dist/web/server/assets/{auth-7BHTH-KS.js → auth-_eaCwhyq.js} +1 -1
- package/dist/web/server/assets/{config-BMiajTZP.js → config-B7JIfv_7.js} +1 -1
- package/dist/web/server/assets/{config-XSTLuRaT.js → config-BmLq53tq.js} +3 -3
- package/dist/web/server/assets/{config-DQ8n0AwF.js → config-Wy6hnZ-Z.js} +1 -1
- package/dist/web/server/assets/{daemon-client-CI5NHwNC.js → daemon-client-B06W1Qa2.js} +54 -0
- package/dist/web/server/assets/{inbox-Dv55rGYq.js → inbox-YRpDQcvp.js} +1 -1
- package/dist/web/server/assets/{learning-C2upa1CE.js → learning-UBZb6h6M.js} +1 -1
- package/dist/web/server/assets/{login-BNj3U6ok.js → login-B_-9L8TU.js} +7 -2
- package/dist/web/server/assets/{login-Be8eP4Jp.js → login-rDox7PRD.js} +5 -2
- package/dist/web/server/assets/{mcp-BvnvlVFd.js → mcp-Dv6RXMaS.js} +1 -1
- package/dist/web/server/assets/{members-BP3UTqu1.js → members-BFTKSlOe.js} +1 -1
- package/dist/web/server/assets/{members-DiYtr-zm.js → members-CD3GiTfF.js} +1 -1
- package/dist/web/server/assets/{members-DHYTVgwb.js → members-cc5SeEaW.js} +2 -2
- package/dist/web/server/assets/{memory-CkXUgf5s.js → memory-C5i_GxlY.js} +2 -2
- package/dist/web/server/assets/{memory-DTFEmfF3.js → memory-CVqnyUaM.js} +1 -1
- package/dist/web/server/assets/{memory-BqV-Afy1.js → memory-D0PQgZAn.js} +1 -1
- package/dist/web/server/assets/{policy-18fdTFO4.js → policy-C-p8HIhA.js} +1 -1
- package/dist/web/server/assets/{policy-Bvvav8fh.js → policy-Dgjb0_gK.js} +2 -2
- package/dist/web/server/assets/{policy-BddK4xom.js → policy-bLKwvnja.js} +1 -1
- package/dist/web/server/assets/results-Cfev4KNt.js +12 -0
- package/dist/web/server/assets/results-Cj-Dlw3C.js +173 -0
- package/dist/web/server/assets/results-CwEQ5EUL.js +12 -0
- package/dist/web/server/assets/{router-M0lutIDA.js → router-d3sTMpMX.js} +62 -45
- package/dist/web/server/assets/{routes-DAU2g7Uz.js → routes-B765DVhj.js} +1 -1
- package/dist/web/server/assets/{routes-BgHisAxH.js → routes-MIZz6uMr.js} +2 -2
- package/dist/web/server/assets/{routes-COtkyZG1.js → routes-cW4MWU18.js} +3 -3
- package/dist/web/server/assets/{services-DozuJtzX.js → services-BCbdn3R9.js} +1 -1
- package/dist/web/server/assets/{skills-DfGSJTCB.js → skills-Bpoa8MIp.js} +1 -1
- package/dist/web/server/assets/{teams-be05ci17.js → teams-CXzwqzcE.js} +1 -1
- package/dist/web/server/assets/{teams-DPnAX4wD.js → teams-hWGjbpUA.js} +1 -1
- package/dist/web/server/assets/{telegram-Dj4Wwhd6.js → telegram-CoNeOgqZ.js} +465 -1
- package/dist/web/server/assets/{telegram-1AWL6lFw.js → telegram-DhpvtGUc.js} +1 -1
- package/dist/web/server/assets/{telegram-DbOFpTFm.js → telegram-Zd1rIZxg.js} +1 -1
- package/dist/web/server/assets/{tokens-DjM8GsgS.js → tokens-Bjp19Vkn.js} +1 -1
- package/dist/web/server/assets/{triggers-Nezfw-Bd.js → triggers-DJlcvXzn.js} +1 -1
- package/dist/web/server/assets/{welcome-B8nchXdF.js → welcome-BdQGR68o.js} +1 -1
- package/dist/web/server/server.js +31 -27
- package/dist/worker.js +294 -104
- package/dist/worker.js.map +1 -1
- package/package.json +6 -6
- package/dist/web/client/assets/TeamTabs-BfC1pfQe.js +0 -1
- package/dist/web/client/assets/_id-DfzTSFBA.js +0 -1
- package/dist/web/client/assets/chevron-right-DK703skW.js +0 -1
- package/dist/web/client/assets/login-JjfTCGIb.js +0 -1
- package/dist/web/client/assets/routes-DciiC6QA.js +0 -1
- package/dist/web/client/assets/styles-B5vcgXln.css +0 -2
- package/dist/web/client/assets/telegram-CphoIRWP.js +0 -1
- package/dist/web/client/assets/wire-constants-B7b2CQp1.js +0 -74
|
@@ -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 } from "./daemon-client-
|
|
3
|
+
import { n as daemonClient } from "./daemon-client-B06W1Qa2.js";
|
|
4
4
|
//#region src/routes/teams/index.tsx?tss-serverfn-split
|
|
5
5
|
var fetchTeamsData_createServerFn_handler = createServerRpc({
|
|
6
6
|
id: "1ab05a58944792f34ad279deeaa56f70e9360687856b18327f335b022e8d21a5",
|
|
@@ -1,10 +1,473 @@
|
|
|
1
|
-
import { t as Route } from "./telegram-
|
|
1
|
+
import { t as Route } from "./telegram-Zd1rIZxg.js";
|
|
2
2
|
import { t as Button } from "./Button-Dsnw22OF.js";
|
|
3
3
|
import { t as ConfirmDialog } from "./ConfirmDialog-C-MPYYSU.js";
|
|
4
4
|
import { t as ConfigPage } from "./ConfigPage-CiQ-gxmJ.js";
|
|
5
5
|
import { useEffect, useState } from "react";
|
|
6
6
|
import { useRouter } from "@tanstack/react-router";
|
|
7
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
|
+
//#region src/components/NotificationSettings.tsx
|
|
9
|
+
var kinds = {
|
|
10
|
+
communication_approval: "Communication approvals",
|
|
11
|
+
lesson_proposal: "Lesson proposals",
|
|
12
|
+
review_failure: "Review failures",
|
|
13
|
+
trigger_failure: "Scheduled trigger failures",
|
|
14
|
+
agent_loop_break: "Agent message loop breaks"
|
|
15
|
+
};
|
|
16
|
+
async function request(path, method = "GET", body) {
|
|
17
|
+
const response = await fetch(`/api/notifications${path}`, {
|
|
18
|
+
method,
|
|
19
|
+
cache: "no-store",
|
|
20
|
+
...body === void 0 ? {} : {
|
|
21
|
+
headers: { "Content-Type": "application/json" },
|
|
22
|
+
body: JSON.stringify(body)
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const value = await response.json();
|
|
26
|
+
if (!response.ok) throw new Error(value.error ?? "Notification request failed");
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
function NotificationSettings() {
|
|
30
|
+
const [state, setState] = useState(null);
|
|
31
|
+
const [enabled, setEnabled] = useState(false);
|
|
32
|
+
const [destination, setDestination] = useState("");
|
|
33
|
+
const [selected, setSelected] = useState([]);
|
|
34
|
+
const [timezone, setTimezone] = useState("UTC");
|
|
35
|
+
const [quiet, setQuiet] = useState(false);
|
|
36
|
+
const [start, setStart] = useState("22:00");
|
|
37
|
+
const [end, setEnd] = useState("07:00");
|
|
38
|
+
const [page, setPage] = useState({
|
|
39
|
+
receipts: [],
|
|
40
|
+
nextCursor: null
|
|
41
|
+
});
|
|
42
|
+
const [busy, setBusy] = useState(false);
|
|
43
|
+
const [error, setError] = useState(null);
|
|
44
|
+
const [notice, setNotice] = useState(null);
|
|
45
|
+
const [preview, setPreview] = useState(null);
|
|
46
|
+
const [retry, setRetry] = useState(null);
|
|
47
|
+
async function refresh() {
|
|
48
|
+
const [value, receipts] = await Promise.all([request(""), request("/receipts")]);
|
|
49
|
+
setState(value);
|
|
50
|
+
setPage(receipts);
|
|
51
|
+
setEnabled(value.settings.enabled);
|
|
52
|
+
setDestination(value.settings.destination?.id ?? "");
|
|
53
|
+
setSelected(value.settings.kinds);
|
|
54
|
+
setTimezone(value.settings.timezone);
|
|
55
|
+
setQuiet(value.settings.quietHours !== null);
|
|
56
|
+
setStart(value.settings.quietHours?.start ?? "22:00");
|
|
57
|
+
setEnd(value.settings.quietHours?.end ?? "07:00");
|
|
58
|
+
}
|
|
59
|
+
useEffect(() => {
|
|
60
|
+
refresh().catch((error) => setError(String(error.message)));
|
|
61
|
+
}, []);
|
|
62
|
+
async function action(work) {
|
|
63
|
+
setBusy(true);
|
|
64
|
+
setError(null);
|
|
65
|
+
setNotice(null);
|
|
66
|
+
try {
|
|
67
|
+
await work();
|
|
68
|
+
} catch (error) {
|
|
69
|
+
setError(error instanceof Error ? error.message : "Notification request failed");
|
|
70
|
+
} finally {
|
|
71
|
+
setBusy(false);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
async function save(includeOpenPreview) {
|
|
75
|
+
if (!state) return;
|
|
76
|
+
await request("", "PUT", {
|
|
77
|
+
expectedRevision: state.settings.revision,
|
|
78
|
+
enabled,
|
|
79
|
+
destinationId: destination || void 0,
|
|
80
|
+
kinds: selected,
|
|
81
|
+
timezone,
|
|
82
|
+
quietHours: quiet ? {
|
|
83
|
+
start,
|
|
84
|
+
end
|
|
85
|
+
} : null,
|
|
86
|
+
includeOpenPreview
|
|
87
|
+
});
|
|
88
|
+
await refresh();
|
|
89
|
+
setPreview(null);
|
|
90
|
+
setNotice("Notification settings saved. Delivery does not resolve Attention items.");
|
|
91
|
+
}
|
|
92
|
+
return /* @__PURE__ */ jsxs("section", {
|
|
93
|
+
className: "card",
|
|
94
|
+
style: {
|
|
95
|
+
marginTop: "1.5rem",
|
|
96
|
+
padding: "1.25rem",
|
|
97
|
+
minWidth: 0
|
|
98
|
+
},
|
|
99
|
+
"aria-labelledby": "notification-title",
|
|
100
|
+
children: [
|
|
101
|
+
/* @__PURE__ */ jsx("h2", {
|
|
102
|
+
id: "notification-title",
|
|
103
|
+
children: "Attention notifications"
|
|
104
|
+
}),
|
|
105
|
+
/* @__PURE__ */ jsx("p", {
|
|
106
|
+
className: "muted",
|
|
107
|
+
children: "Optional Telegram notices for items that need your attention. New enablement sends future items only. Agent-topic error mirrors may also report the same failure."
|
|
108
|
+
}),
|
|
109
|
+
error && /* @__PURE__ */ jsxs("p", {
|
|
110
|
+
role: "alert",
|
|
111
|
+
children: [error, ". Refresh settings before retrying a conflicting change."]
|
|
112
|
+
}),
|
|
113
|
+
notice && /* @__PURE__ */ jsx("p", {
|
|
114
|
+
role: "status",
|
|
115
|
+
children: notice
|
|
116
|
+
}),
|
|
117
|
+
!state ? /* @__PURE__ */ jsx("p", { children: "Loading notification settings…" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
118
|
+
state.settings.restorePaused && /* @__PURE__ */ jsx("p", {
|
|
119
|
+
role: "status",
|
|
120
|
+
children: "Paused after restore. Telegram may have newer messages than this backup. Re-enable for future items, or explicitly preview old open items with possible duplicates."
|
|
121
|
+
}),
|
|
122
|
+
!state.readiness.ready && /* @__PURE__ */ jsx("p", { children: "Destination unavailable. Configure and pair the private Telegram forum, start the bot, then refresh." }),
|
|
123
|
+
state.diagnostic && /* @__PURE__ */ jsxs("p", {
|
|
124
|
+
role: "status",
|
|
125
|
+
children: ["Delivery status: ", state.diagnostic]
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ jsx("form", {
|
|
128
|
+
onSubmit: (event) => {
|
|
129
|
+
event.preventDefault();
|
|
130
|
+
action(() => save());
|
|
131
|
+
},
|
|
132
|
+
children: /* @__PURE__ */ jsxs("fieldset", {
|
|
133
|
+
disabled: busy,
|
|
134
|
+
style: {
|
|
135
|
+
border: 0,
|
|
136
|
+
padding: 0,
|
|
137
|
+
minWidth: 0
|
|
138
|
+
},
|
|
139
|
+
children: [
|
|
140
|
+
/* @__PURE__ */ jsxs("label", {
|
|
141
|
+
style: {
|
|
142
|
+
display: "block",
|
|
143
|
+
marginBlock: ".75rem"
|
|
144
|
+
},
|
|
145
|
+
children: [
|
|
146
|
+
/* @__PURE__ */ jsx("input", {
|
|
147
|
+
type: "checkbox",
|
|
148
|
+
checked: enabled,
|
|
149
|
+
onChange: (event) => setEnabled(event.target.checked)
|
|
150
|
+
}),
|
|
151
|
+
" ",
|
|
152
|
+
"Enable Attention notifications"
|
|
153
|
+
]
|
|
154
|
+
}),
|
|
155
|
+
/* @__PURE__ */ jsxs("label", {
|
|
156
|
+
style: {
|
|
157
|
+
display: "grid",
|
|
158
|
+
gap: ".35rem",
|
|
159
|
+
marginBlock: ".75rem"
|
|
160
|
+
},
|
|
161
|
+
children: ["Destination", /* @__PURE__ */ jsxs("select", {
|
|
162
|
+
value: destination,
|
|
163
|
+
onChange: (event) => setDestination(event.target.value),
|
|
164
|
+
required: enabled,
|
|
165
|
+
style: { maxWidth: "100%" },
|
|
166
|
+
children: [
|
|
167
|
+
/* @__PURE__ */ jsx("option", {
|
|
168
|
+
value: "",
|
|
169
|
+
children: "Choose the paired service topic"
|
|
170
|
+
}),
|
|
171
|
+
state.readiness.destination && /* @__PURE__ */ jsx("option", {
|
|
172
|
+
value: state.readiness.destination.id,
|
|
173
|
+
children: "Paired group · Bazilion service topic"
|
|
174
|
+
}),
|
|
175
|
+
state.settings.destination && state.settings.destination.id !== state.readiness.destination?.id && /* @__PURE__ */ jsx("option", {
|
|
176
|
+
value: state.settings.destination.id,
|
|
177
|
+
children: "Previous destination (unavailable)"
|
|
178
|
+
})
|
|
179
|
+
]
|
|
180
|
+
})]
|
|
181
|
+
}),
|
|
182
|
+
/* @__PURE__ */ jsx("p", {
|
|
183
|
+
className: "m-0 text-sm text-mocha",
|
|
184
|
+
children: "Notices go to the operational thread in your paired Telegram group."
|
|
185
|
+
}),
|
|
186
|
+
state.readiness.destination && /* @__PURE__ */ jsxs("details", {
|
|
187
|
+
className: "mt-2 text-xs text-mocha",
|
|
188
|
+
children: [/* @__PURE__ */ jsx("summary", {
|
|
189
|
+
className: "cursor-pointer",
|
|
190
|
+
children: "Telegram destination IDs"
|
|
191
|
+
}), /* @__PURE__ */ jsxs("p", {
|
|
192
|
+
className: "mt-2 break-all",
|
|
193
|
+
children: [
|
|
194
|
+
"Group ",
|
|
195
|
+
state.readiness.destination.chatId,
|
|
196
|
+
" · Topic ",
|
|
197
|
+
state.readiness.destination.topicId
|
|
198
|
+
]
|
|
199
|
+
})]
|
|
200
|
+
}),
|
|
201
|
+
/* @__PURE__ */ jsxs("fieldset", {
|
|
202
|
+
style: {
|
|
203
|
+
marginBlock: "1rem",
|
|
204
|
+
minWidth: 0
|
|
205
|
+
},
|
|
206
|
+
children: [/* @__PURE__ */ jsx("legend", { children: "Include these Attention kinds" }), Object.keys(kinds).map((kind) => /* @__PURE__ */ jsxs("label", {
|
|
207
|
+
style: {
|
|
208
|
+
display: "block",
|
|
209
|
+
marginBlock: ".5rem"
|
|
210
|
+
},
|
|
211
|
+
children: [
|
|
212
|
+
/* @__PURE__ */ jsx("input", {
|
|
213
|
+
type: "checkbox",
|
|
214
|
+
checked: selected.includes(kind),
|
|
215
|
+
onChange: (event) => setSelected(event.target.checked ? [...selected, kind] : selected.filter((value) => value !== kind))
|
|
216
|
+
}),
|
|
217
|
+
" ",
|
|
218
|
+
kinds[kind]
|
|
219
|
+
]
|
|
220
|
+
}, kind))]
|
|
221
|
+
}),
|
|
222
|
+
/* @__PURE__ */ jsxs("label", {
|
|
223
|
+
style: {
|
|
224
|
+
display: "grid",
|
|
225
|
+
gap: ".35rem"
|
|
226
|
+
},
|
|
227
|
+
children: ["Timezone (IANA)", /* @__PURE__ */ jsx("input", {
|
|
228
|
+
value: timezone,
|
|
229
|
+
onChange: (event) => setTimezone(event.target.value),
|
|
230
|
+
placeholder: "Europe/Warsaw",
|
|
231
|
+
required: true,
|
|
232
|
+
style: {
|
|
233
|
+
maxWidth: "100%",
|
|
234
|
+
minWidth: 0
|
|
235
|
+
}
|
|
236
|
+
})]
|
|
237
|
+
}),
|
|
238
|
+
/* @__PURE__ */ jsxs("label", {
|
|
239
|
+
style: {
|
|
240
|
+
display: "block",
|
|
241
|
+
marginBlock: ".75rem"
|
|
242
|
+
},
|
|
243
|
+
children: [
|
|
244
|
+
/* @__PURE__ */ jsx("input", {
|
|
245
|
+
type: "checkbox",
|
|
246
|
+
checked: quiet,
|
|
247
|
+
onChange: (event) => setQuiet(event.target.checked)
|
|
248
|
+
}),
|
|
249
|
+
" ",
|
|
250
|
+
"Use quiet hours for all selected kinds"
|
|
251
|
+
]
|
|
252
|
+
}),
|
|
253
|
+
quiet && /* @__PURE__ */ jsxs("div", {
|
|
254
|
+
style: {
|
|
255
|
+
display: "flex",
|
|
256
|
+
flexWrap: "wrap",
|
|
257
|
+
gap: "1rem"
|
|
258
|
+
},
|
|
259
|
+
children: [/* @__PURE__ */ jsxs("label", { children: [
|
|
260
|
+
"Start",
|
|
261
|
+
" ",
|
|
262
|
+
/* @__PURE__ */ jsx("input", {
|
|
263
|
+
type: "time",
|
|
264
|
+
value: start,
|
|
265
|
+
required: true,
|
|
266
|
+
onChange: (event) => setStart(event.target.value)
|
|
267
|
+
})
|
|
268
|
+
] }), /* @__PURE__ */ jsxs("label", { children: [
|
|
269
|
+
"End",
|
|
270
|
+
" ",
|
|
271
|
+
/* @__PURE__ */ jsx("input", {
|
|
272
|
+
type: "time",
|
|
273
|
+
value: end,
|
|
274
|
+
required: true,
|
|
275
|
+
onChange: (event) => setEnd(event.target.value)
|
|
276
|
+
})
|
|
277
|
+
] })]
|
|
278
|
+
}),
|
|
279
|
+
/* @__PURE__ */ jsxs("div", {
|
|
280
|
+
style: {
|
|
281
|
+
display: "flex",
|
|
282
|
+
flexWrap: "wrap",
|
|
283
|
+
gap: ".5rem",
|
|
284
|
+
marginTop: "1rem"
|
|
285
|
+
},
|
|
286
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
287
|
+
variant: "primary",
|
|
288
|
+
type: "submit",
|
|
289
|
+
disabled: !selected.length || enabled && (!state.readiness.ready || !destination),
|
|
290
|
+
children: "Save settings"
|
|
291
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
292
|
+
variant: "ghost",
|
|
293
|
+
disabled: !enabled || !state.readiness.ready || !destination || !selected.length,
|
|
294
|
+
onClick: () => void action(async () => setPreview(await request("/preview", "POST", { kinds: selected }))),
|
|
295
|
+
children: "Preview open items"
|
|
296
|
+
})]
|
|
297
|
+
})
|
|
298
|
+
]
|
|
299
|
+
})
|
|
300
|
+
}),
|
|
301
|
+
/* @__PURE__ */ jsxs("section", {
|
|
302
|
+
"aria-label": "Delivery receipts",
|
|
303
|
+
className: "mt-6 flex min-w-0 flex-col gap-4 border-t border-frost pt-5",
|
|
304
|
+
children: [
|
|
305
|
+
/* @__PURE__ */ jsxs("div", {
|
|
306
|
+
className: "flex flex-wrap items-center justify-between gap-3",
|
|
307
|
+
children: [/* @__PURE__ */ jsx("h3", {
|
|
308
|
+
className: "m-0",
|
|
309
|
+
children: "Delivery receipts"
|
|
310
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
311
|
+
variant: "ghost",
|
|
312
|
+
disabled: busy,
|
|
313
|
+
onClick: () => void action(async () => setPage(await request("/receipts"))),
|
|
314
|
+
children: "Refresh receipts"
|
|
315
|
+
})]
|
|
316
|
+
}),
|
|
317
|
+
/* @__PURE__ */ jsx("p", {
|
|
318
|
+
className: "m-0 text-sm text-mocha",
|
|
319
|
+
children: "Delivery confirms Telegram received the notice. It does not approve or resolve the Attention item."
|
|
320
|
+
}),
|
|
321
|
+
page.receipts.length === 0 && /* @__PURE__ */ jsx("p", {
|
|
322
|
+
className: "m-0",
|
|
323
|
+
children: "No notification receipts yet."
|
|
324
|
+
}),
|
|
325
|
+
/* @__PURE__ */ jsx("ul", {
|
|
326
|
+
className: "m-0 grid list-none gap-3 p-0",
|
|
327
|
+
children: page.receipts.map((item) => /* @__PURE__ */ jsxs("li", {
|
|
328
|
+
className: "flex min-w-0 flex-col gap-3 rounded-lg border border-frost bg-ivory p-4 [overflow-wrap:anywhere]",
|
|
329
|
+
children: [
|
|
330
|
+
/* @__PURE__ */ jsxs("div", {
|
|
331
|
+
className: "flex flex-wrap items-center justify-between gap-2",
|
|
332
|
+
children: [/* @__PURE__ */ jsx("strong", { children: kinds[item.sourceKind] }), /* @__PURE__ */ jsx("span", {
|
|
333
|
+
className: "rounded-full bg-frost px-2 py-1 text-xs font-semibold capitalize",
|
|
334
|
+
children: item.state
|
|
335
|
+
})]
|
|
336
|
+
}),
|
|
337
|
+
/* @__PURE__ */ jsxs("p", {
|
|
338
|
+
className: "m-0 text-xs text-mocha",
|
|
339
|
+
children: [
|
|
340
|
+
new Date(item.updatedAt).toLocaleString(),
|
|
341
|
+
" · ",
|
|
342
|
+
item.attempts,
|
|
343
|
+
" ",
|
|
344
|
+
item.attempts === 1 ? "attempt" : "attempts"
|
|
345
|
+
]
|
|
346
|
+
}),
|
|
347
|
+
item.state === "uncertain" && /* @__PURE__ */ jsx("p", {
|
|
348
|
+
className: "m-0 text-sm",
|
|
349
|
+
children: "Telegram may have received this notice. Retrying could send a duplicate."
|
|
350
|
+
}),
|
|
351
|
+
item.state === "deferred" && /* @__PURE__ */ jsx("p", {
|
|
352
|
+
className: "m-0 text-sm",
|
|
353
|
+
children: "Waiting for an eligible delivery opportunity."
|
|
354
|
+
}),
|
|
355
|
+
item.state === "failed" && /* @__PURE__ */ jsx("p", {
|
|
356
|
+
className: "m-0 text-sm",
|
|
357
|
+
children: "Delivery failed. Check the details before retrying."
|
|
358
|
+
}),
|
|
359
|
+
/* @__PURE__ */ jsxs("details", {
|
|
360
|
+
className: "text-xs text-mocha",
|
|
361
|
+
children: [/* @__PURE__ */ jsx("summary", {
|
|
362
|
+
className: "cursor-pointer",
|
|
363
|
+
children: "Technical details"
|
|
364
|
+
}), /* @__PURE__ */ jsxs("dl", {
|
|
365
|
+
className: "mt-3 grid min-w-0 gap-2",
|
|
366
|
+
children: [
|
|
367
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
|
|
368
|
+
className: "font-semibold",
|
|
369
|
+
children: "Source"
|
|
370
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
371
|
+
className: "m-0",
|
|
372
|
+
children: item.sourceId
|
|
373
|
+
})] }),
|
|
374
|
+
/* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
|
|
375
|
+
className: "font-semibold",
|
|
376
|
+
children: "Receipt"
|
|
377
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
378
|
+
className: "m-0",
|
|
379
|
+
children: item.id
|
|
380
|
+
})] }),
|
|
381
|
+
item.telegramMessageId && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
|
|
382
|
+
className: "font-semibold",
|
|
383
|
+
children: "Telegram message"
|
|
384
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
385
|
+
className: "m-0",
|
|
386
|
+
children: item.telegramMessageId
|
|
387
|
+
})] }),
|
|
388
|
+
item.diagnostic && /* @__PURE__ */ jsxs("div", { children: [/* @__PURE__ */ jsx("dt", {
|
|
389
|
+
className: "font-semibold",
|
|
390
|
+
children: "Diagnostic"
|
|
391
|
+
}), /* @__PURE__ */ jsx("dd", {
|
|
392
|
+
className: "m-0",
|
|
393
|
+
children: item.diagnostic
|
|
394
|
+
})] })
|
|
395
|
+
]
|
|
396
|
+
})]
|
|
397
|
+
}),
|
|
398
|
+
["failed", "uncertain"].includes(item.state) && /* @__PURE__ */ jsx("div", {
|
|
399
|
+
className: "flex flex-wrap gap-2",
|
|
400
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
401
|
+
variant: "ghost",
|
|
402
|
+
disabled: busy || !state.settings.enabled || state.settings.restorePaused,
|
|
403
|
+
onClick: () => setRetry(item),
|
|
404
|
+
children: "Retry notice"
|
|
405
|
+
})
|
|
406
|
+
})
|
|
407
|
+
]
|
|
408
|
+
}, item.id))
|
|
409
|
+
})
|
|
410
|
+
]
|
|
411
|
+
}),
|
|
412
|
+
page.nextCursor && /* @__PURE__ */ jsx(Button, {
|
|
413
|
+
variant: "ghost",
|
|
414
|
+
disabled: busy,
|
|
415
|
+
onClick: () => void action(async () => {
|
|
416
|
+
const more = await request(`/receipts?cursor=${encodeURIComponent(page.nextCursor)}`);
|
|
417
|
+
setPage({
|
|
418
|
+
receipts: [...page.receipts, ...more.receipts],
|
|
419
|
+
nextCursor: more.nextCursor
|
|
420
|
+
});
|
|
421
|
+
}),
|
|
422
|
+
children: "More receipts"
|
|
423
|
+
})
|
|
424
|
+
] }),
|
|
425
|
+
/* @__PURE__ */ jsx(Button, {
|
|
426
|
+
variant: "ghost",
|
|
427
|
+
className: "mt-4",
|
|
428
|
+
disabled: busy,
|
|
429
|
+
onClick: () => void action(refresh),
|
|
430
|
+
children: "Refresh settings and destination"
|
|
431
|
+
}),
|
|
432
|
+
/* @__PURE__ */ jsx(ConfirmDialog, {
|
|
433
|
+
open: preview !== null,
|
|
434
|
+
title: "Include currently open items?",
|
|
435
|
+
confirmLabel: "Save and include preview",
|
|
436
|
+
confirmVariant: "primary",
|
|
437
|
+
description: /* @__PURE__ */ jsxs("p", { children: [
|
|
438
|
+
preview?.count ?? 0,
|
|
439
|
+
" currently eligible items will be considered. Resolved items are omitted.",
|
|
440
|
+
" ",
|
|
441
|
+
preview?.possibleDuplicates ? "This restored backup may be missing later Telegram receipts, so duplicate messages are possible." : "Confirmed deliveries will not be repeated."
|
|
442
|
+
] }),
|
|
443
|
+
onOpenChange: (open) => {
|
|
444
|
+
if (!open) setPreview(null);
|
|
445
|
+
},
|
|
446
|
+
onConfirm: () => save(preview?.id)
|
|
447
|
+
}),
|
|
448
|
+
/* @__PURE__ */ jsx(ConfirmDialog, {
|
|
449
|
+
open: retry !== null,
|
|
450
|
+
title: "Retry this notification?",
|
|
451
|
+
confirmLabel: "Retry, allowing a possible duplicate",
|
|
452
|
+
confirmVariant: "primary",
|
|
453
|
+
description: "Telegram may already have received this notice. Retry only if you accept a possible duplicate. The source, destination and policy will be checked again.",
|
|
454
|
+
onOpenChange: (open) => {
|
|
455
|
+
if (!open) setRetry(null);
|
|
456
|
+
},
|
|
457
|
+
onConfirm: async () => {
|
|
458
|
+
if (!retry) return;
|
|
459
|
+
await request(`/receipts/${encodeURIComponent(retry.id)}/retry`, "POST", {
|
|
460
|
+
expectedUpdatedAt: retry.updatedAt,
|
|
461
|
+
acknowledgePossibleDuplicate: true
|
|
462
|
+
});
|
|
463
|
+
setPage(await request("/receipts"));
|
|
464
|
+
setRetry(null);
|
|
465
|
+
}
|
|
466
|
+
})
|
|
467
|
+
]
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
//#endregion
|
|
8
471
|
//#region src/routes/config/integrations/telegram.tsx?tsr-split=component
|
|
9
472
|
function TelegramIntegrationPage() {
|
|
10
473
|
const initial = Route.useLoaderData();
|
|
@@ -240,6 +703,7 @@ function TelegramIntegrationPage() {
|
|
|
240
703
|
]
|
|
241
704
|
}),
|
|
242
705
|
initial.configured && /* @__PURE__ */ jsx(OwnerPairingCard, {}),
|
|
706
|
+
/* @__PURE__ */ jsx(NotificationSettings, {}),
|
|
243
707
|
initial.configured && /* @__PURE__ */ jsx(AccessControlCard, {}),
|
|
244
708
|
/* @__PURE__ */ jsx(ConfirmDialog, {
|
|
245
709
|
open: confirmDisconnect,
|
|
@@ -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 } from "./daemon-client-
|
|
3
|
+
import { n as daemonClient } from "./daemon-client-B06W1Qa2.js";
|
|
4
4
|
//#region src/routes/config/integrations/telegram.tsx?tss-serverfn-split
|
|
5
5
|
var fetchTelegramConfig_createServerFn_handler = createServerRpc({
|
|
6
6
|
id: "00a157dd07824e1f126f06646effd1d876f280f6fc64c144d2f6429414a4e58a",
|
|
@@ -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 } from "@tanstack/react-router";
|
|
4
4
|
//#region src/routes/config/integrations/telegram.tsx
|
|
5
|
-
var $$splitComponentImporter = () => import("./telegram-
|
|
5
|
+
var $$splitComponentImporter = () => import("./telegram-CoNeOgqZ.js");
|
|
6
6
|
var fetchTelegramConfig = createServerFn({ method: "GET" }).handler(createSsrRpc("00a157dd07824e1f126f06646effd1d876f280f6fc64c144d2f6429414a4e58a"));
|
|
7
7
|
var Route = createFileRoute("/config/integrations/telegram")({
|
|
8
8
|
loader: () => fetchTelegramConfig(),
|
|
@@ -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 } from "./daemon-client-
|
|
3
|
+
import { n as daemonClient } from "./daemon-client-B06W1Qa2.js";
|
|
4
4
|
//#region src/routes/config/tokens.tsx?tss-serverfn-split
|
|
5
5
|
var fetchTokens_createServerFn_handler = createServerRpc({
|
|
6
6
|
id: "46e35c9f1afc79423cb49703b454ef684344db08ec19775efd70a8768c7837f1",
|
|
@@ -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-B06W1Qa2.js";
|
|
4
4
|
//#region src/routes/agents/$id/triggers.tsx?tss-serverfn-split
|
|
5
5
|
var fetchTriggers_createServerFn_handler = createServerRpc({
|
|
6
6
|
id: "57ebf437fdb3fcfc63b176e796a55f04bdfec0b230059673196e98d413d15c4d",
|
|
@@ -46,7 +46,7 @@ function WelcomePage() {
|
|
|
46
46
|
" ",
|
|
47
47
|
/* @__PURE__ */ jsx("code", { children: "claude-opus-5" }),
|
|
48
48
|
", ",
|
|
49
|
-
/* @__PURE__ */ jsx("code", { children: "gpt-
|
|
49
|
+
/* @__PURE__ */ jsx("code", { children: "gpt-6-astra" }),
|
|
50
50
|
", or ",
|
|
51
51
|
/* @__PURE__ */ jsx("code", { children: "llama3.3" }),
|
|
52
52
|
") and press ",
|