paperclip-plugin-telegram 0.3.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.
@@ -1 +1 @@
1
- {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"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"}
package/dist/manifest.js CHANGED
@@ -9,6 +9,7 @@ const manifest = {
9
9
  categories: ["connector", "automation"],
10
10
  capabilities: [
11
11
  "companies.read",
12
+ "projects.read",
12
13
  "issues.read",
13
14
  "issues.create",
14
15
  "issues.update",
@@ -30,9 +31,22 @@ const manifest = {
30
31
  "activity.log.write",
31
32
  "metrics.write",
32
33
  "jobs.schedule",
34
+ "instance.settings.register",
35
+ "ui.page.register",
33
36
  ],
34
37
  entrypoints: {
35
38
  worker: "./dist/worker.js",
39
+ ui: "./dist/ui",
40
+ },
41
+ ui: {
42
+ slots: [
43
+ {
44
+ type: "settingsPage",
45
+ id: "telegram-settings",
46
+ displayName: "Telegram Settings",
47
+ exportName: "TelegramSettingsPage",
48
+ },
49
+ ],
36
50
  },
37
51
  instanceConfigSchema: {
38
52
  type: "object",
@@ -51,6 +65,13 @@ const manifest = {
51
65
  description: "Internal URL of the Paperclip API server. Used for API calls (approvals, comments). Keep as localhost for same-server deployments.",
52
66
  default: DEFAULT_CONFIG.paperclipBaseUrl,
53
67
  },
68
+ paperclipBoardApiTokenRef: {
69
+ type: "string",
70
+ format: "secret-ref",
71
+ title: "Paperclip Board API Token (secret reference)",
72
+ description: "Secret UUID for a Paperclip board API token. Used by Telegram approval buttons and /approve commands to resolve approvals as a board actor.",
73
+ default: DEFAULT_CONFIG.paperclipBoardApiTokenRef,
74
+ },
54
75
  paperclipPublicUrl: {
55
76
  type: "string",
56
77
  title: "Paperclip Public URL",
@@ -70,12 +91,36 @@ const manifest = {
70
91
  description: "Chat ID for approval requests. Falls back to default chat.",
71
92
  default: DEFAULT_CONFIG.approvalsChatId,
72
93
  },
94
+ approvalsTopicId: {
95
+ type: "string",
96
+ title: "Approvals topic ID",
97
+ description: "Optional Telegram forum topic/thread ID for approval notifications inside the selected approvals/default chat.",
98
+ default: DEFAULT_CONFIG.approvalsTopicId,
99
+ },
73
100
  errorsChatId: {
74
101
  type: "string",
75
102
  title: "Errors Chat ID",
76
103
  description: "Chat ID for agent error notifications. Falls back to default chat.",
77
104
  default: DEFAULT_CONFIG.errorsChatId,
78
105
  },
106
+ errorsTopicId: {
107
+ type: "string",
108
+ title: "Errors topic ID",
109
+ description: "Optional Telegram forum topic/thread ID for agent error notifications inside the selected errors/default chat.",
110
+ default: DEFAULT_CONFIG.errorsTopicId,
111
+ },
112
+ digestChatId: {
113
+ type: "string",
114
+ title: "Digest Chat ID",
115
+ description: "Chat ID for digest notifications. Falls back to the company/default chat.",
116
+ default: DEFAULT_CONFIG.digestChatId,
117
+ },
118
+ digestTopicId: {
119
+ type: "string",
120
+ title: "Digest topic ID",
121
+ description: "Optional Telegram forum topic/thread ID for digest notifications inside the selected digest/company/default chat.",
122
+ default: DEFAULT_CONFIG.digestTopicId,
123
+ },
79
124
  escalationChatId: {
80
125
  type: "string",
81
126
  title: "Escalation Chat ID",
@@ -99,11 +144,29 @@ const manifest = {
99
144
  title: "Notify on issue completed",
100
145
  default: DEFAULT_CONFIG.notifyOnIssueDone,
101
146
  },
147
+ notifyOnIssueAssigned: {
148
+ type: "boolean",
149
+ title: "Notify on issue assignment changes",
150
+ description: "Send a message when an existing issue's assigneeUserId or assigneeAgentId changes. Complements notifyOnIssueCreated (which covers initial assignment on creation).",
151
+ default: DEFAULT_CONFIG.notifyOnIssueAssigned,
152
+ },
153
+ onlyNotifyIfAssignedTo: {
154
+ type: "string",
155
+ title: "Only notify when assigned to this user (user ID)",
156
+ description: "Optional. Paste your Paperclip user ID here to restrict assignment notifications to items newly assigned to you. Leave empty to notify on every assignment change. To find your user ID: sign in to Paperclip in a browser and visit /api/cli-auth/me — copy the `userId` field (a string like `mrvhBEpPds85TGeEjlAHviP0VdOHgymm`).",
157
+ default: DEFAULT_CONFIG.onlyNotifyIfAssignedTo,
158
+ },
102
159
  notifyOnApprovalCreated: {
103
160
  type: "boolean",
104
161
  title: "Notify on approval requested",
105
162
  default: DEFAULT_CONFIG.notifyOnApprovalCreated,
106
163
  },
164
+ onlyNotifyBoardApprovals: {
165
+ type: "boolean",
166
+ title: "Only notify board approval requests",
167
+ description: "When enabled, Telegram approval notifications are sent only for request_board_approval approvals. Leave disabled to notify for every approval request.",
168
+ default: DEFAULT_CONFIG.onlyNotifyBoardApprovals,
169
+ },
107
170
  notifyOnAgentError: {
108
171
  type: "boolean",
109
172
  title: "Notify on agent error",
@@ -139,15 +202,29 @@ const manifest = {
139
202
  enableCommands: {
140
203
  type: "boolean",
141
204
  title: "Enable bot commands",
142
- description: "Allow users to interact with Paperclip via Telegram bot commands (/status, /issues, /agents).",
205
+ description: "Allow users to interact with Paperclip via Telegram bot commands (/status, /issues, /agents). If this is enabled, consider configuring the Telegram user/chat allowlists below.",
143
206
  default: DEFAULT_CONFIG.enableCommands,
144
207
  },
145
208
  enableInbound: {
146
209
  type: "boolean",
147
210
  title: "Enable inbound message routing",
148
- description: "Route Telegram messages to Paperclip issue comments. Messages sent in reply to a notification get attached to that issue.",
211
+ description: "Route Telegram messages to Paperclip issue comments. Messages sent in reply to a notification get attached to that issue. If this is enabled, consider configuring the Telegram user/chat allowlists below.",
149
212
  default: DEFAULT_CONFIG.enableInbound,
150
213
  },
214
+ allowedTelegramUserIds: {
215
+ type: "array",
216
+ items: { type: "string" },
217
+ title: "Allowed Telegram user IDs",
218
+ description: "Optional allowlist of Telegram user IDs allowed to interact with the bot. Leave empty to allow any user. Applies to bot commands, inbound replies, media intake, and inline button callbacks. If both user and chat allowlists are set, both must match. Save the config and restart the plugin if changes are not picked up immediately.",
219
+ default: DEFAULT_CONFIG.allowedTelegramUserIds,
220
+ },
221
+ allowedTelegramChatIds: {
222
+ type: "array",
223
+ items: { type: "string" },
224
+ title: "Allowed Telegram chat IDs",
225
+ description: "Optional allowlist of Telegram chat IDs where inbound bot interactions are accepted. Leave empty to allow any chat. Use private DM IDs and/or private group IDs to restrict where commands, replies, media intake, and callbacks are accepted. If both user and chat allowlists are set, both must match. Save the config and restart the plugin if changes are not picked up immediately.",
226
+ default: DEFAULT_CONFIG.allowedTelegramChatIds,
227
+ },
151
228
  // --- Escalation ---
152
229
  escalationTimeoutMs: {
153
230
  type: "number",
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
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"}
@@ -0,0 +1,4 @@
1
+ import type { PluginContext } from "@paperclipai/plugin-sdk";
2
+ export declare const TELEGRAM_LAST_UPDATE_ID_STATE_KEY = "telegram-last-update-id";
3
+ export declare function getPersistedTelegramUpdateOffset(ctx: PluginContext): Promise<number>;
4
+ export declare function persistTelegramUpdateOffset(ctx: PluginContext, updateId: number): Promise<void>;
@@ -0,0 +1,24 @@
1
+ export const TELEGRAM_LAST_UPDATE_ID_STATE_KEY = "telegram-last-update-id";
2
+ export async function getPersistedTelegramUpdateOffset(ctx) {
3
+ const saved = await ctx.state.get({
4
+ scopeKind: "instance",
5
+ stateKey: TELEGRAM_LAST_UPDATE_ID_STATE_KEY,
6
+ });
7
+ const updateId = typeof saved === "number"
8
+ ? saved
9
+ : typeof saved === "string"
10
+ ? Number.parseInt(saved, 10)
11
+ : null;
12
+ return updateId !== null && Number.isSafeInteger(updateId) && updateId >= 0
13
+ ? updateId
14
+ : 0;
15
+ }
16
+ export async function persistTelegramUpdateOffset(ctx, updateId) {
17
+ if (!Number.isSafeInteger(updateId) || updateId < 0)
18
+ return;
19
+ await ctx.state.set({
20
+ scopeKind: "instance",
21
+ stateKey: TELEGRAM_LAST_UPDATE_ID_STATE_KEY,
22
+ }, updateId);
23
+ }
24
+ //# sourceMappingURL=polling-offset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polling-offset.js","sourceRoot":"","sources":["../src/polling-offset.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,iCAAiC,GAAG,yBAAyB,CAAC;AAE3E,MAAM,CAAC,KAAK,UAAU,gCAAgC,CAAC,GAAkB;IACvE,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;QAChC,SAAS,EAAE,UAAU;QACrB,QAAQ,EAAE,iCAAiC;KAC5C,CAAC,CAAC;IAEH,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,QAAQ;QACvB,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5B,CAAC,CAAC,IAAI,CAAC;IAEb,OAAO,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC;QACzE,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,CAAC,CAAC;AACR,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,GAAkB,EAClB,QAAgB;IAEhB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO;IAE5D,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CACjB;QACE,SAAS,EAAE,UAAU;QACrB,QAAQ,EAAE,iCAAiC;KAC5C,EACD,QAAQ,CACT,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { type PluginSettingsPageProps } from "@paperclipai/plugin-sdk/ui";
2
+ export declare function TelegramSettingsPage({ context }: PluginSettingsPageProps): React.JSX.Element;
@@ -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