paperclip-plugin-telegram 0.4.0 → 0.5.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 +57 -3
- package/dist/allowlist.d.ts +27 -0
- package/dist/allowlist.js +34 -0
- package/dist/allowlist.js.map +1 -0
- package/dist/approval-routing.d.ts +2 -0
- package/dist/approval-routing.js +7 -0
- package/dist/approval-routing.js.map +1 -0
- package/dist/command-registry.js +1 -1
- package/dist/command-registry.js.map +1 -1
- package/dist/commands.d.ts +1 -1
- package/dist/commands.js +203 -33
- package/dist/commands.js.map +1 -1
- package/dist/constants.d.ts +8 -0
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -1
- package/dist/manifest.js +66 -2
- package/dist/manifest.js.map +1 -1
- package/dist/paperclip-api.d.ts +3 -0
- package/dist/paperclip-api.js +34 -0
- package/dist/paperclip-api.js.map +1 -0
- package/dist/ui/index.d.ts +2 -0
- package/dist/ui/index.js +320 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/worker.js +171 -20
- package/dist/worker.js.map +1 -1
- package/package.json +8 -3
package/dist/manifest.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAElG,MAAM,QAAQ,GAA8B;IAC1C,EAAE,EAAE,SAAS;IACb,UAAU,EAAE,CAAC;IACb,OAAO,EAAE,cAAc;IACvB,WAAW,EAAE,cAAc;IAC3B,WAAW,EACT,iOAAiO;IACnO,MAAM,EAAE,UAAU;IAClB,UAAU,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;IACvC,YAAY,EAAE;QACZ,gBAAgB;QAChB,eAAe;QACf,aAAa;QACb,eAAe;QACf,eAAe;QACf,qBAAqB;QACrB,uBAAuB;QACvB,aAAa;QACb,eAAe;QACf,uBAAuB;QACvB,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;QACtB,sBAAsB;QACtB,kBAAkB;QAClB,aAAa;QACb,mBAAmB;QACnB,oBAAoB;QACpB,eAAe;QACf,kBAAkB;QAClB,oBAAoB;QACpB,eAAe;QACf,eAAe;
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { PluginContext } from "@paperclipai/plugin-sdk";
|
|
2
|
+
export declare function fetchPaperclipApi(ctx: PluginContext, url: string, init?: RequestInit): Promise<Response>;
|
|
3
|
+
export declare function buildPaperclipAuthHeaders(boardApiToken?: string): Record<string, string>;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
function isLoopbackUrl(url) {
|
|
2
|
+
try {
|
|
3
|
+
const parsed = new URL(url);
|
|
4
|
+
return ["localhost", "127.0.0.1", "::1", "[::1]"].includes(parsed.hostname);
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export async function fetchPaperclipApi(ctx, url, init) {
|
|
11
|
+
const response = isLoopbackUrl(url)
|
|
12
|
+
? await fetch(url, init)
|
|
13
|
+
: await ctx.http.fetch(url, init);
|
|
14
|
+
if (!response.ok) {
|
|
15
|
+
let body = "";
|
|
16
|
+
try {
|
|
17
|
+
body = await response.text();
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
body = "";
|
|
21
|
+
}
|
|
22
|
+
const detail = body ? `: ${body.slice(0, 300)}` : "";
|
|
23
|
+
throw new Error(`Paperclip API request failed with ${response.status}${detail}`);
|
|
24
|
+
}
|
|
25
|
+
return response;
|
|
26
|
+
}
|
|
27
|
+
export function buildPaperclipAuthHeaders(boardApiToken) {
|
|
28
|
+
return boardApiToken
|
|
29
|
+
? {
|
|
30
|
+
Authorization: `Bearer ${boardApiToken}`,
|
|
31
|
+
}
|
|
32
|
+
: {};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=paperclip-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paperclip-api.js","sourceRoot":"","sources":["../src/paperclip-api.ts"],"names":[],"mappings":"AAEA,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAkB,EAClB,GAAW,EACX,IAAkB;IAElB,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC;QACjC,CAAC,CAAC,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;QACxB,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAEpC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,GAAG,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,yBAAyB,CACvC,aAAsB;IAEtB,OAAO,aAAa;QAClB,CAAC,CAAC;YACE,aAAa,EAAE,UAAU,aAAa,EAAE;SACzC;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC"}
|
package/dist/ui/index.js
ADDED
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { usePluginAction, usePluginData, } from "@paperclipai/plugin-sdk/ui";
|
|
4
|
+
function getErrorMessage(error) {
|
|
5
|
+
return error instanceof Error ? error.message : String(error);
|
|
6
|
+
}
|
|
7
|
+
async function fetchHostJson(input, init = {}) {
|
|
8
|
+
const headers = new Headers(init.headers);
|
|
9
|
+
headers.set("accept", "application/json");
|
|
10
|
+
if (typeof init.body === "string" && !headers.has("content-type")) {
|
|
11
|
+
headers.set("content-type", "application/json");
|
|
12
|
+
}
|
|
13
|
+
const response = await fetch(input, {
|
|
14
|
+
...init,
|
|
15
|
+
headers,
|
|
16
|
+
credentials: init.credentials ?? "same-origin",
|
|
17
|
+
});
|
|
18
|
+
const rawBody = await response.text();
|
|
19
|
+
const normalizedBody = rawBody.trim();
|
|
20
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
21
|
+
if (contentType.includes("text/html") ||
|
|
22
|
+
normalizedBody.startsWith("<!DOCTYPE html") ||
|
|
23
|
+
normalizedBody.startsWith("<html")) {
|
|
24
|
+
throw new Error("Paperclip returned HTML instead of JSON.");
|
|
25
|
+
}
|
|
26
|
+
let payload = null;
|
|
27
|
+
if (normalizedBody) {
|
|
28
|
+
try {
|
|
29
|
+
payload = JSON.parse(normalizedBody);
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
throw new Error("Paperclip returned an unexpected response.");
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (!response.ok) {
|
|
36
|
+
const message = typeof payload === "object" &&
|
|
37
|
+
payload !== null &&
|
|
38
|
+
"error" in payload &&
|
|
39
|
+
typeof payload.error === "string"
|
|
40
|
+
? payload.error
|
|
41
|
+
: `Request failed with status ${response.status}.`;
|
|
42
|
+
throw new Error(message);
|
|
43
|
+
}
|
|
44
|
+
return payload;
|
|
45
|
+
}
|
|
46
|
+
function resolveBrowserOrigin() {
|
|
47
|
+
if (typeof window === "undefined" || typeof window.location?.origin !== "string") {
|
|
48
|
+
return null;
|
|
49
|
+
}
|
|
50
|
+
const origin = window.location.origin.trim();
|
|
51
|
+
if (!origin || origin === "null") {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
try {
|
|
55
|
+
const normalizedOrigin = new URL(origin);
|
|
56
|
+
if (normalizedOrigin.protocol !== "http:" && normalizedOrigin.protocol !== "https:") {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
return normalizedOrigin.origin;
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
function buildPaperclipUrl(input) {
|
|
66
|
+
const origin = resolveBrowserOrigin();
|
|
67
|
+
if (!origin || !input.trim() || input.trim().startsWith("//")) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
const candidate = new URL(input.trim(), origin);
|
|
72
|
+
return candidate.origin === origin ? candidate.toString() : null;
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
function resolveCliAuthUrl(url, path) {
|
|
79
|
+
if (typeof url === "string" && url.trim()) {
|
|
80
|
+
return buildPaperclipUrl(url.trim());
|
|
81
|
+
}
|
|
82
|
+
if (typeof path !== "string" || !path.trim()) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
return buildPaperclipUrl(path.trim());
|
|
86
|
+
}
|
|
87
|
+
function resolveCliAuthPollUrl(urlOrPath) {
|
|
88
|
+
if (typeof urlOrPath !== "string" || !urlOrPath.trim()) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
const trimmed = urlOrPath.trim();
|
|
92
|
+
if (/^[a-z][a-z0-9+.-]*:\/\//iu.test(trimmed)) {
|
|
93
|
+
return buildPaperclipUrl(trimmed);
|
|
94
|
+
}
|
|
95
|
+
const normalizedPath = trimmed.startsWith("/api/")
|
|
96
|
+
? trimmed
|
|
97
|
+
: `/api${trimmed.startsWith("/") ? "" : "/"}${trimmed}`;
|
|
98
|
+
return buildPaperclipUrl(normalizedPath);
|
|
99
|
+
}
|
|
100
|
+
function normalizePollIntervalMs(value) {
|
|
101
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
|
102
|
+
return 1500;
|
|
103
|
+
}
|
|
104
|
+
return Math.min(5000, Math.max(750, Math.floor(value)));
|
|
105
|
+
}
|
|
106
|
+
function waitForDuration(durationMs) {
|
|
107
|
+
return new Promise((resolve) => {
|
|
108
|
+
globalThis.setTimeout(resolve, durationMs);
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
async function requestBoardAccessChallenge(companyId) {
|
|
112
|
+
return fetchHostJson("/api/cli-auth/challenges", {
|
|
113
|
+
method: "POST",
|
|
114
|
+
body: JSON.stringify({
|
|
115
|
+
command: "paperclip plugin telegram settings",
|
|
116
|
+
clientName: "Telegram plugin",
|
|
117
|
+
requestedAccess: "board",
|
|
118
|
+
requestedCompanyId: companyId,
|
|
119
|
+
}),
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
async function waitForBoardAccessApproval(challenge) {
|
|
123
|
+
const challengeToken = typeof challenge.token === "string" ? challenge.token.trim() : "";
|
|
124
|
+
const pollUrl = resolveCliAuthPollUrl(challenge.pollUrl ?? challenge.pollPath);
|
|
125
|
+
if (!challengeToken || !pollUrl) {
|
|
126
|
+
throw new Error("Paperclip did not return a trusted board access challenge.");
|
|
127
|
+
}
|
|
128
|
+
const expiresAtTimeMs = typeof challenge.expiresAt === "string" ? Date.parse(challenge.expiresAt) : Number.NaN;
|
|
129
|
+
const pollIntervalMs = normalizePollIntervalMs(challenge.suggestedPollIntervalMs);
|
|
130
|
+
while (true) {
|
|
131
|
+
const pollUrlWithToken = new URL(pollUrl);
|
|
132
|
+
pollUrlWithToken.searchParams.set("token", challengeToken);
|
|
133
|
+
const pollResult = await fetchHostJson(pollUrlWithToken.toString());
|
|
134
|
+
const status = typeof pollResult.status === "string" ? pollResult.status.trim().toLowerCase() : "pending";
|
|
135
|
+
if (status === "approved") {
|
|
136
|
+
const boardApiToken = typeof pollResult.boardApiToken === "string" && pollResult.boardApiToken.trim()
|
|
137
|
+
? pollResult.boardApiToken.trim()
|
|
138
|
+
: typeof challenge.boardApiToken === "string" && challenge.boardApiToken.trim()
|
|
139
|
+
? challenge.boardApiToken.trim()
|
|
140
|
+
: "";
|
|
141
|
+
if (!boardApiToken) {
|
|
142
|
+
throw new Error("Paperclip approved board access but did not return a usable API token.");
|
|
143
|
+
}
|
|
144
|
+
return boardApiToken;
|
|
145
|
+
}
|
|
146
|
+
if (status === "cancelled") {
|
|
147
|
+
throw new Error("Board access approval was cancelled.");
|
|
148
|
+
}
|
|
149
|
+
if (status === "expired") {
|
|
150
|
+
throw new Error("Board access approval expired. Start the connection flow again.");
|
|
151
|
+
}
|
|
152
|
+
if (Number.isFinite(expiresAtTimeMs) && Date.now() >= expiresAtTimeMs) {
|
|
153
|
+
throw new Error("Board access approval expired. Start the connection flow again.");
|
|
154
|
+
}
|
|
155
|
+
await waitForDuration(pollIntervalMs);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function getIdentityLabel(identity) {
|
|
159
|
+
const candidates = [
|
|
160
|
+
identity.user?.displayName,
|
|
161
|
+
identity.user?.name,
|
|
162
|
+
identity.user?.login,
|
|
163
|
+
identity.user?.email,
|
|
164
|
+
identity.displayName,
|
|
165
|
+
identity.name,
|
|
166
|
+
identity.login,
|
|
167
|
+
identity.email,
|
|
168
|
+
];
|
|
169
|
+
for (const candidate of candidates) {
|
|
170
|
+
if (typeof candidate === "string" && candidate.trim()) {
|
|
171
|
+
return candidate.trim();
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
async function fetchBoardAccessIdentity(boardApiToken) {
|
|
177
|
+
const identity = await fetchHostJson("/api/cli-auth/me", {
|
|
178
|
+
headers: {
|
|
179
|
+
authorization: `Bearer ${boardApiToken.trim()}`,
|
|
180
|
+
},
|
|
181
|
+
});
|
|
182
|
+
return getIdentityLabel(identity);
|
|
183
|
+
}
|
|
184
|
+
async function resolveOrCreateCompanySecret(companyId, name, value) {
|
|
185
|
+
const existingSecrets = await fetchHostJson(`/api/companies/${encodeURIComponent(companyId)}/secrets`);
|
|
186
|
+
const existing = existingSecrets.find((secret) => secret.name.trim().toLowerCase() === name.trim().toLowerCase());
|
|
187
|
+
if (existing) {
|
|
188
|
+
return fetchHostJson(`/api/secrets/${encodeURIComponent(existing.id)}/rotate`, {
|
|
189
|
+
method: "POST",
|
|
190
|
+
body: JSON.stringify({ value }),
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
return fetchHostJson(`/api/companies/${encodeURIComponent(companyId)}/secrets`, {
|
|
194
|
+
method: "POST",
|
|
195
|
+
body: JSON.stringify({ name, value }),
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
export function TelegramSettingsPage({ context }) {
|
|
199
|
+
const boardAccess = usePluginData("board-access.read");
|
|
200
|
+
const updateBoardAccess = usePluginAction("board-access.update");
|
|
201
|
+
const [connecting, setConnecting] = useState(false);
|
|
202
|
+
const [notice, setNotice] = useState(null);
|
|
203
|
+
const companyId = context.companyId ?? "";
|
|
204
|
+
const companyLabel = context.companyPrefix?.trim() || "this company";
|
|
205
|
+
const configured = Boolean(boardAccess.data?.configured);
|
|
206
|
+
const identity = boardAccess.data?.identity?.trim() || null;
|
|
207
|
+
async function handleConnectBoardAccess() {
|
|
208
|
+
if (!companyId) {
|
|
209
|
+
setNotice({
|
|
210
|
+
tone: "error",
|
|
211
|
+
title: "Open company settings first",
|
|
212
|
+
text: "Board access tokens are saved as company secrets, so this flow needs a company context.",
|
|
213
|
+
});
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
setConnecting(true);
|
|
217
|
+
setNotice(null);
|
|
218
|
+
let approvalWindow = null;
|
|
219
|
+
try {
|
|
220
|
+
if (typeof window !== "undefined") {
|
|
221
|
+
approvalWindow = window.open("about:blank", "_blank");
|
|
222
|
+
}
|
|
223
|
+
const challenge = await requestBoardAccessChallenge(companyId);
|
|
224
|
+
const approvalUrl = resolveCliAuthUrl(challenge.approvalUrl, challenge.approvalPath);
|
|
225
|
+
if (!approvalUrl) {
|
|
226
|
+
throw new Error("Paperclip did not return a trusted board approval URL.");
|
|
227
|
+
}
|
|
228
|
+
if (!approvalWindow && typeof window !== "undefined") {
|
|
229
|
+
approvalWindow = window.open(approvalUrl, "_blank");
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
approvalWindow?.location.replace(approvalUrl);
|
|
233
|
+
}
|
|
234
|
+
if (!approvalWindow) {
|
|
235
|
+
throw new Error("Allow pop-ups for Paperclip, then try connecting board access again.");
|
|
236
|
+
}
|
|
237
|
+
const boardApiToken = await waitForBoardAccessApproval(challenge);
|
|
238
|
+
const nextIdentity = await fetchBoardAccessIdentity(boardApiToken);
|
|
239
|
+
const secretName = `telegram_board_api_${companyId.replace(/[^a-z0-9]+/gi, "_").toLowerCase()}`;
|
|
240
|
+
const secret = await resolveOrCreateCompanySecret(companyId, secretName, boardApiToken);
|
|
241
|
+
await updateBoardAccess({
|
|
242
|
+
companyId,
|
|
243
|
+
paperclipBoardApiTokenRef: secret.id,
|
|
244
|
+
identity: nextIdentity,
|
|
245
|
+
});
|
|
246
|
+
await boardAccess.refresh();
|
|
247
|
+
setNotice({
|
|
248
|
+
tone: "success",
|
|
249
|
+
title: nextIdentity ? `Connected as ${nextIdentity}` : "Board access connected",
|
|
250
|
+
text: "Telegram approval actions can now authenticate with Paperclip.",
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
catch (error) {
|
|
254
|
+
setNotice({
|
|
255
|
+
tone: "error",
|
|
256
|
+
title: "Board access could not be connected",
|
|
257
|
+
text: getErrorMessage(error),
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
finally {
|
|
261
|
+
setConnecting(false);
|
|
262
|
+
try {
|
|
263
|
+
approvalWindow?.close();
|
|
264
|
+
}
|
|
265
|
+
catch {
|
|
266
|
+
// Ignore browser close restrictions.
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
return (_jsxs("main", { style: { display: "grid", gap: 24, padding: 24, color: "#111827" }, children: [_jsxs("section", { style: { display: "grid", gap: 8 }, children: [_jsx("h1", { style: { fontSize: 24, lineHeight: "32px", margin: 0 }, children: "Telegram Bot" }), _jsx("p", { style: { color: "#6b7280", margin: 0, maxWidth: 760 }, children: "Configure board access for Telegram approval actions. Chat IDs, topics, allowlists, and notification toggles remain in the standard plugin configuration form." })] }), notice ? (_jsxs("div", { style: {
|
|
271
|
+
border: `1px solid ${notice.tone === "success" ? "#99f6e4" : "#fecaca"}`,
|
|
272
|
+
borderRadius: 8,
|
|
273
|
+
background: notice.tone === "success" ? "#f0fdfa" : "#fef2f2",
|
|
274
|
+
color: notice.tone === "success" ? "#115e59" : "#991b1b",
|
|
275
|
+
padding: 14,
|
|
276
|
+
}, children: [_jsx("strong", { children: notice.title }), notice.text ? _jsx("p", { style: { margin: "6px 0 0" }, children: notice.text }) : null] })) : null, _jsxs("section", { style: {
|
|
277
|
+
border: "1px solid #e5e7eb",
|
|
278
|
+
borderRadius: 8,
|
|
279
|
+
display: "grid",
|
|
280
|
+
gap: 18,
|
|
281
|
+
padding: 18,
|
|
282
|
+
}, children: [_jsxs("div", { style: { alignItems: "start", display: "flex", gap: 16, justifyContent: "space-between" }, children: [_jsxs("div", { style: { display: "grid", gap: 4 }, children: [_jsx("h2", { style: { fontSize: 18, lineHeight: "28px", margin: 0 }, children: "Board Access Connection" }), _jsx("p", { style: { color: "#6b7280", margin: 0 }, children: "Telegram approval buttons need board access when Paperclip requires authenticated approval mutations." })] }), _jsx("span", { style: {
|
|
283
|
+
background: configured ? "#ccfbf1" : "#f3f4f6",
|
|
284
|
+
borderRadius: 999,
|
|
285
|
+
color: configured ? "#0f766e" : "#4b5563",
|
|
286
|
+
fontSize: 12,
|
|
287
|
+
fontWeight: 700,
|
|
288
|
+
padding: "5px 10px",
|
|
289
|
+
whiteSpace: "nowrap",
|
|
290
|
+
}, children: connecting ? "Connecting" : configured ? "Connected" : "Not connected" })] }), _jsxs("div", { style: {
|
|
291
|
+
alignItems: "center",
|
|
292
|
+
background: "#f9fafb",
|
|
293
|
+
border: "1px solid #e5e7eb",
|
|
294
|
+
borderRadius: 8,
|
|
295
|
+
display: "flex",
|
|
296
|
+
gap: 16,
|
|
297
|
+
justifyContent: "space-between",
|
|
298
|
+
padding: 14,
|
|
299
|
+
}, children: [_jsxs("div", { style: { display: "grid", gap: 4 }, children: [_jsx("strong", { children: !companyId
|
|
300
|
+
? "Open this page inside a company"
|
|
301
|
+
: configured
|
|
302
|
+
? identity
|
|
303
|
+
? `Connected as ${identity}`
|
|
304
|
+
: `Connected for ${companyLabel}`
|
|
305
|
+
: `Connect board access for ${companyLabel}` }), _jsx("span", { style: { color: "#6b7280" }, children: configured
|
|
306
|
+
? "The board token is stored as a Paperclip secret; the plugin keeps only the secret reference."
|
|
307
|
+
: "This opens a Paperclip approval page, then saves the resulting board token as a company secret." })] }), _jsx("button", { disabled: !companyId || connecting || boardAccess.loading, onClick: () => {
|
|
308
|
+
void handleConnectBoardAccess();
|
|
309
|
+
}, style: {
|
|
310
|
+
background: !companyId || connecting || boardAccess.loading ? "#9ca3af" : "#111827",
|
|
311
|
+
border: 0,
|
|
312
|
+
borderRadius: 8,
|
|
313
|
+
color: "white",
|
|
314
|
+
cursor: !companyId || connecting || boardAccess.loading ? "not-allowed" : "pointer",
|
|
315
|
+
fontWeight: 700,
|
|
316
|
+
minWidth: 190,
|
|
317
|
+
padding: "10px 14px",
|
|
318
|
+
}, type: "button", children: connecting ? "Waiting for approval..." : configured ? "Reconnect board access" : "Connect board access" })] }), boardAccess.error ? (_jsxs("p", { style: { color: "#991b1b", margin: 0 }, children: ["Could not read board access state: ", boardAccess.error.message] })) : null] })] }));
|
|
319
|
+
}
|
|
320
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.tsx"],"names":[],"mappings":"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"}
|