paperclip-plugin-telegram 0.2.2 → 0.2.4
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/LICENSE +21 -0
- package/README.md +28 -3
- package/dist/acp-bridge.js +1 -1
- package/dist/acp-bridge.js.map +1 -1
- package/dist/commands.d.ts +1 -1
- package/dist/commands.js +56 -18
- package/dist/commands.js.map +1 -1
- package/dist/constants.d.ts +5 -2
- package/dist/constants.js +5 -2
- package/dist/constants.js.map +1 -1
- package/dist/formatters.d.ts +10 -6
- package/dist/formatters.js +95 -23
- package/dist/formatters.js.map +1 -1
- package/dist/manifest.js +68 -38
- package/dist/manifest.js.map +1 -1
- package/dist/media-pipeline.d.ts +1 -0
- package/dist/media-pipeline.js +14 -7
- package/dist/media-pipeline.js.map +1 -1
- package/dist/worker.js +173 -48
- package/dist/worker.js.map +1 -1
- package/package.json +11 -5
package/dist/formatters.js
CHANGED
|
@@ -8,7 +8,29 @@ function bold(s) {
|
|
|
8
8
|
function code(s) {
|
|
9
9
|
return `\`${esc(s)}\``;
|
|
10
10
|
}
|
|
11
|
-
|
|
11
|
+
function isExternalUrl(url) {
|
|
12
|
+
return !!url && url.startsWith("https://");
|
|
13
|
+
}
|
|
14
|
+
function issueLink(identifier, opts) {
|
|
15
|
+
if (opts?.baseUrl && opts?.issuePrefix) {
|
|
16
|
+
const url = `${opts.baseUrl}/${opts.issuePrefix}/issues/${identifier}`;
|
|
17
|
+
return `[${esc(identifier)}](${url})`;
|
|
18
|
+
}
|
|
19
|
+
return bold(identifier);
|
|
20
|
+
}
|
|
21
|
+
function issueButton(identifier, opts) {
|
|
22
|
+
if (opts?.baseUrl && opts?.issuePrefix && isExternalUrl(opts.baseUrl)) {
|
|
23
|
+
return { text: `Open ${identifier} ↗`, url: `${opts.baseUrl}/${opts.issuePrefix}/issues/${identifier}` };
|
|
24
|
+
}
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
function agentButton(agentId, label, publicUrl) {
|
|
28
|
+
if (publicUrl && isExternalUrl(publicUrl)) {
|
|
29
|
+
return { text: label, url: `${publicUrl}/agents/${agentId}` };
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
export function formatIssueCreated(event, opts) {
|
|
12
34
|
const p = event.payload;
|
|
13
35
|
const identifier = String(p.identifier ?? event.entityId);
|
|
14
36
|
const title = String(p.title ?? "Untitled");
|
|
@@ -17,7 +39,7 @@ export function formatIssueCreated(event) {
|
|
|
17
39
|
const assigneeName = p.assigneeName ? String(p.assigneeName) : null;
|
|
18
40
|
const projectName = p.projectName ? String(p.projectName) : null;
|
|
19
41
|
const lines = [
|
|
20
|
-
`${esc("📋")} ${bold("Issue Created")}: ${
|
|
42
|
+
`${esc("📋")} ${bold("Issue Created")}: ${issueLink(identifier, opts)}`,
|
|
21
43
|
bold(title),
|
|
22
44
|
];
|
|
23
45
|
const meta = [];
|
|
@@ -35,24 +57,32 @@ export function formatIssueCreated(event) {
|
|
|
35
57
|
const desc = truncateAtWord(String(p.description), 200);
|
|
36
58
|
lines.push(`\n${esc(">")} ${esc(desc)}`);
|
|
37
59
|
}
|
|
60
|
+
const button = issueButton(identifier, opts);
|
|
38
61
|
return {
|
|
39
62
|
text: lines.join("\n"),
|
|
40
|
-
options: {
|
|
63
|
+
options: {
|
|
64
|
+
parseMode: "MarkdownV2",
|
|
65
|
+
...(button ? { inlineKeyboard: [[button]] } : {}),
|
|
66
|
+
},
|
|
41
67
|
};
|
|
42
68
|
}
|
|
43
|
-
export function formatIssueDone(event) {
|
|
69
|
+
export function formatIssueDone(event, opts) {
|
|
44
70
|
const p = event.payload;
|
|
45
71
|
const identifier = String(p.identifier ?? event.entityId);
|
|
46
72
|
const title = String(p.title ?? "");
|
|
73
|
+
const button = issueButton(identifier, opts);
|
|
47
74
|
return {
|
|
48
75
|
text: [
|
|
49
|
-
`${esc("✅")} ${bold("Issue Completed")}: ${
|
|
76
|
+
`${esc("✅")} ${bold("Issue Completed")}: ${issueLink(identifier, opts)}`,
|
|
50
77
|
`${bold(title)} ${esc("is now done.")}`,
|
|
51
78
|
].join("\n"),
|
|
52
|
-
options: {
|
|
79
|
+
options: {
|
|
80
|
+
parseMode: "MarkdownV2",
|
|
81
|
+
...(button ? { inlineKeyboard: [[button]] } : {}),
|
|
82
|
+
},
|
|
53
83
|
};
|
|
54
84
|
}
|
|
55
|
-
export function formatApprovalCreated(event) {
|
|
85
|
+
export function formatApprovalCreated(event, opts) {
|
|
56
86
|
const p = event.payload;
|
|
57
87
|
const approvalType = String(p.type ?? "unknown");
|
|
58
88
|
const approvalId = String(p.approvalId ?? event.entityId);
|
|
@@ -72,7 +102,8 @@ export function formatApprovalCreated(event) {
|
|
|
72
102
|
if (linkedIssues.length > 0) {
|
|
73
103
|
lines.push(`\n${bold(`Linked Issues (${String(linkedIssues.length)})`)}`);
|
|
74
104
|
for (const issue of linkedIssues.slice(0, 5)) {
|
|
75
|
-
const
|
|
105
|
+
const issueId = String(issue.identifier ?? "?");
|
|
106
|
+
const issueParts = [`${issueLink(issueId, opts)} ${esc(String(issue.title ?? ""))}`];
|
|
76
107
|
const issueMeta = [];
|
|
77
108
|
if (issue.status)
|
|
78
109
|
issueMeta.push(String(issue.status));
|
|
@@ -85,46 +116,87 @@ export function formatApprovalCreated(event) {
|
|
|
85
116
|
lines.push(issueParts.join(" "));
|
|
86
117
|
}
|
|
87
118
|
}
|
|
119
|
+
const keyboard = [
|
|
120
|
+
[
|
|
121
|
+
{ text: "Approve", callback_data: `approve_${approvalId}` },
|
|
122
|
+
{ text: "Reject", callback_data: `reject_${approvalId}` },
|
|
123
|
+
],
|
|
124
|
+
];
|
|
125
|
+
// Add deep link to the first linked issue if available
|
|
126
|
+
if (linkedIssues.length > 0) {
|
|
127
|
+
const firstIssueId = String(linkedIssues[0].identifier ?? "");
|
|
128
|
+
if (firstIssueId) {
|
|
129
|
+
const btn = issueButton(firstIssueId, opts);
|
|
130
|
+
if (btn)
|
|
131
|
+
keyboard.push([btn]);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
88
134
|
return {
|
|
89
135
|
text: lines.join("\n"),
|
|
90
136
|
options: {
|
|
91
137
|
parseMode: "MarkdownV2",
|
|
92
|
-
inlineKeyboard:
|
|
93
|
-
[
|
|
94
|
-
{ text: "Approve", callback_data: `approve_${approvalId}` },
|
|
95
|
-
{ text: "Reject", callback_data: `reject_${approvalId}` },
|
|
96
|
-
],
|
|
97
|
-
],
|
|
138
|
+
inlineKeyboard: keyboard,
|
|
98
139
|
},
|
|
99
140
|
};
|
|
100
141
|
}
|
|
101
|
-
export function formatAgentError(event) {
|
|
142
|
+
export function formatAgentError(event, opts) {
|
|
102
143
|
const p = event.payload;
|
|
103
|
-
const
|
|
144
|
+
const agentId = String(p.agentId ?? event.entityId);
|
|
145
|
+
const agentName = String(p.agentName ?? p.name ?? agentId);
|
|
104
146
|
const errorMessage = String(p.error ?? p.message ?? "Unknown error");
|
|
147
|
+
const btn = agentButton(agentId, "View Agent ↗", opts?.baseUrl);
|
|
105
148
|
return {
|
|
106
149
|
text: [
|
|
107
150
|
`${esc("❌")} ${bold("Agent Error")}`,
|
|
108
151
|
`${bold(agentName)} ${esc("encountered an error")}`,
|
|
109
152
|
`\n${code(truncateAtWord(errorMessage, 500))}`,
|
|
110
153
|
].join("\n"),
|
|
111
|
-
options: {
|
|
154
|
+
options: {
|
|
155
|
+
parseMode: "MarkdownV2",
|
|
156
|
+
...(btn ? { inlineKeyboard: [[btn]] } : {}),
|
|
157
|
+
},
|
|
112
158
|
};
|
|
113
159
|
}
|
|
114
|
-
export function formatAgentRunStarted(event) {
|
|
160
|
+
export function formatAgentRunStarted(event, opts) {
|
|
115
161
|
const p = event.payload;
|
|
116
|
-
const
|
|
162
|
+
const agentId = String(p.agentId ?? event.entityId);
|
|
163
|
+
const agentName = String(p.agentName ?? agentId);
|
|
164
|
+
const runId = p.runId ? String(p.runId) : null;
|
|
165
|
+
const buttons = [];
|
|
166
|
+
if (opts?.baseUrl && isExternalUrl(opts.baseUrl)) {
|
|
167
|
+
const url = runId
|
|
168
|
+
? `${opts.baseUrl}/agents/${agentId}/runs/${runId}`
|
|
169
|
+
: `${opts.baseUrl}/agents/${agentId}`;
|
|
170
|
+
buttons.push({ text: "View Run ↗", url });
|
|
171
|
+
}
|
|
117
172
|
return {
|
|
118
173
|
text: `${esc("▶️")} ${bold(agentName)} ${esc("started a new run")}`,
|
|
119
|
-
options: {
|
|
174
|
+
options: {
|
|
175
|
+
parseMode: "MarkdownV2",
|
|
176
|
+
disableNotification: true,
|
|
177
|
+
...(buttons.length > 0 ? { inlineKeyboard: [buttons] } : {}),
|
|
178
|
+
},
|
|
120
179
|
};
|
|
121
180
|
}
|
|
122
|
-
export function formatAgentRunFinished(event) {
|
|
181
|
+
export function formatAgentRunFinished(event, opts) {
|
|
123
182
|
const p = event.payload;
|
|
124
|
-
const
|
|
183
|
+
const agentId = String(p.agentId ?? event.entityId);
|
|
184
|
+
const agentName = String(p.agentName ?? agentId);
|
|
185
|
+
const runId = p.runId ? String(p.runId) : null;
|
|
186
|
+
const buttons = [];
|
|
187
|
+
if (opts?.baseUrl && isExternalUrl(opts.baseUrl)) {
|
|
188
|
+
const url = runId
|
|
189
|
+
? `${opts.baseUrl}/agents/${agentId}/runs/${runId}`
|
|
190
|
+
: `${opts.baseUrl}/agents/${agentId}`;
|
|
191
|
+
buttons.push({ text: "View Run ↗", url });
|
|
192
|
+
}
|
|
125
193
|
return {
|
|
126
194
|
text: `${esc("⏹️")} ${bold(agentName)} ${esc("completed successfully")}`,
|
|
127
|
-
options: {
|
|
195
|
+
options: {
|
|
196
|
+
parseMode: "MarkdownV2",
|
|
197
|
+
disableNotification: true,
|
|
198
|
+
...(buttons.length > 0 ? { inlineKeyboard: [buttons] } : {}),
|
|
199
|
+
},
|
|
128
200
|
};
|
|
129
201
|
}
|
|
130
202
|
//# sourceMappingURL=formatters.js.map
|
package/dist/formatters.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUrE,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAkB;
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../src/formatters.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAUrE,SAAS,GAAG,CAAC,CAAS;IACpB,OAAO,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AACvB,CAAC;AAED,SAAS,IAAI,CAAC,CAAS;IACrB,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACzB,CAAC;AAID,SAAS,aAAa,CAAC,GAAY;IACjC,OAAO,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,UAAkB,EAAE,IAAqB;IAC1D,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,WAAW,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,WAAW,UAAU,EAAE,CAAC;QACvE,OAAO,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,GAAG,CAAC;IACxC,CAAC;IACD,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,WAAW,CAAC,UAAkB,EAAE,IAAqB;IAC5D,IAAI,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,WAAW,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,IAAI,EAAE,QAAQ,UAAU,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,WAAW,UAAU,EAAE,EAAE,CAAC;IAC3G,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,OAAe,EAAE,KAAa,EAAE,SAAkB;IACrE,IAAI,SAAS,IAAI,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,SAAS,WAAW,OAAO,EAAE,EAAE,CAAC;IAChE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAkB,EAAE,IAAqB;IAC1E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAkB,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,MAAM,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpE,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEjE,MAAM,KAAK,GAAa;QACtB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;QACvE,IAAI,CAAC,KAAK,CAAC;KACZ,CAAC;IAEF,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,IAAI,MAAM;QAAE,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,IAAI,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACvD,IAAI,YAAY;QAAE,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC9D,IAAI,WAAW;QAAE,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;IAEpD,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;QACxD,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE;YACP,SAAS,EAAE,YAAY;YACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAkB,EAAE,IAAqB;IACvE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAkB,CAAC;IACnC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,OAAO;QACL,IAAI,EAAE;YACJ,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;YACxE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,EAAE;SACxC,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,OAAO,EAAE;YACP,SAAS,EAAE,YAAY;YACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAClD;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAkB,EAAE,IAAqB;IAC7E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAkB,CAAC;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,oBAAoB,CAAC,CAAC;IACtD,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjE,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE3D,MAAM,KAAK,GAAa;QACtB,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE;QAC5C,IAAI,CAAC,KAAK,CAAC;KACZ,CAAC;IAEF,IAAI,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,CAAC,cAAc,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IACtF,IAAI,WAAW;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,cAAc,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAE1E,+BAA+B;IAC/B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAA8B,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,kBAAkB,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1E,KAAK,MAAM,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,CAAC,GAAG,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACrF,MAAM,SAAS,GAAa,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,MAAM;gBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3D,IAAI,KAAK,CAAC,QAAQ;gBAAE,SAAS,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACnE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;YACjF,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAyE;QACrF;YACE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,UAAU,EAAE,EAAE;YAC3D,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,UAAU,EAAE,EAAE;SAC1D;KACF,CAAC;IAEF,uDAAuD;IACvD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAC/D,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,GAAG;gBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,EAAE;YACP,SAAS,EAAE,YAAY;YACvB,cAAc,EAAE,QAAQ;SACzB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAkB,EAAE,IAAqB;IACxE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAkB,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC;IAC3D,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;IAErE,MAAM,GAAG,GAAG,WAAW,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO;QACL,IAAI,EAAE;YACJ,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;YACpC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,sBAAsB,CAAC,EAAE;YACnD,KAAK,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE;SAC/C,CAAC,IAAI,CAAC,IAAI,CAAC;QACZ,OAAO,EAAE;YACP,SAAS,EAAE,YAAY;YACvB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAkB,EAAE,IAAqB;IAC7E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAkB,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/C,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,IAAI,IAAI,EAAE,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,OAAO,SAAS,KAAK,EAAE;YACnD,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,OAAO,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,mBAAmB,CAAC,EAAE;QACnE,OAAO,EAAE;YACP,SAAS,EAAE,YAAY;YACvB,mBAAmB,EAAE,IAAI;YACzB,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAkB,EAAE,IAAqB;IAC9E,MAAM,CAAC,GAAG,KAAK,CAAC,OAAkB,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/C,MAAM,OAAO,GAAyC,EAAE,CAAC;IACzD,IAAI,IAAI,EAAE,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,KAAK;YACf,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,OAAO,SAAS,KAAK,EAAE;YACnD,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,WAAW,OAAO,EAAE,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,OAAO;QACL,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,wBAAwB,CAAC,EAAE;QACxE,OAAO,EAAE;YACP,SAAS,EAAE,YAAY;YACvB,mBAAmB,EAAE,IAAI;YACzB,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D;KACF,CAAC;AACJ,CAAC"}
|
package/dist/manifest.js
CHANGED
|
@@ -34,16 +34,31 @@ const manifest = {
|
|
|
34
34
|
instanceConfigSchema: {
|
|
35
35
|
type: "object",
|
|
36
36
|
properties: {
|
|
37
|
+
// --- Connection ---
|
|
37
38
|
telegramBotTokenRef: {
|
|
38
39
|
type: "string",
|
|
40
|
+
format: "secret-ref",
|
|
39
41
|
title: "Telegram Bot Token (secret reference)",
|
|
40
|
-
description: "
|
|
42
|
+
description: "Secret UUID for your Telegram Bot token. Create the secret in Settings > Secrets, then paste its UUID here. Get a token from @BotFather.",
|
|
41
43
|
default: DEFAULT_CONFIG.telegramBotTokenRef,
|
|
42
44
|
},
|
|
45
|
+
paperclipBaseUrl: {
|
|
46
|
+
type: "string",
|
|
47
|
+
title: "Paperclip API URL (internal)",
|
|
48
|
+
description: "Internal URL of the Paperclip API server. Used for API calls (approvals, comments). Keep as localhost for same-server deployments.",
|
|
49
|
+
default: DEFAULT_CONFIG.paperclipBaseUrl,
|
|
50
|
+
},
|
|
51
|
+
paperclipPublicUrl: {
|
|
52
|
+
type: "string",
|
|
53
|
+
title: "Paperclip Public URL",
|
|
54
|
+
description: "Public URL for issue links in Telegram messages (e.g. https://pc.example.com). Falls back to API URL if empty.",
|
|
55
|
+
default: DEFAULT_CONFIG.paperclipPublicUrl,
|
|
56
|
+
},
|
|
57
|
+
// --- Chat routing ---
|
|
43
58
|
defaultChatId: {
|
|
44
59
|
type: "string",
|
|
45
|
-
title: "Default Chat ID",
|
|
46
|
-
description: "Telegram chat ID
|
|
60
|
+
title: "Default Chat ID (fallback)",
|
|
61
|
+
description: "Fallback Telegram chat ID for notifications when no per-company chat is configured. Use /connect in a chat to set per-company routing.",
|
|
47
62
|
default: DEFAULT_CONFIG.defaultChatId,
|
|
48
63
|
},
|
|
49
64
|
approvalsChatId: {
|
|
@@ -58,6 +73,19 @@ const manifest = {
|
|
|
58
73
|
description: "Chat ID for agent error notifications. Falls back to default chat.",
|
|
59
74
|
default: DEFAULT_CONFIG.errorsChatId,
|
|
60
75
|
},
|
|
76
|
+
escalationChatId: {
|
|
77
|
+
type: "string",
|
|
78
|
+
title: "Escalation Chat ID",
|
|
79
|
+
description: "Telegram chat ID where escalations are sent for human review. If empty, escalations are logged but not forwarded.",
|
|
80
|
+
default: DEFAULT_CONFIG.escalationChatId,
|
|
81
|
+
},
|
|
82
|
+
topicRouting: {
|
|
83
|
+
type: "boolean",
|
|
84
|
+
title: "Forum topic routing",
|
|
85
|
+
description: "Map Telegram forum topics to Paperclip projects. Requires the bot to be in a group with forum topics enabled.",
|
|
86
|
+
default: DEFAULT_CONFIG.topicRouting,
|
|
87
|
+
},
|
|
88
|
+
// --- Notifications ---
|
|
61
89
|
notifyOnIssueCreated: {
|
|
62
90
|
type: "boolean",
|
|
63
91
|
title: "Notify on issue created",
|
|
@@ -78,6 +106,33 @@ const manifest = {
|
|
|
78
106
|
title: "Notify on agent error",
|
|
79
107
|
default: DEFAULT_CONFIG.notifyOnAgentError,
|
|
80
108
|
},
|
|
109
|
+
// --- Digest ---
|
|
110
|
+
digestMode: {
|
|
111
|
+
type: "string",
|
|
112
|
+
title: "Digest mode",
|
|
113
|
+
description: "off = disabled, daily = once per day, bidaily = twice per day, tridaily = three times per day.",
|
|
114
|
+
enum: ["off", "daily", "bidaily", "tridaily"],
|
|
115
|
+
default: DEFAULT_CONFIG.digestMode,
|
|
116
|
+
},
|
|
117
|
+
dailyDigestTime: {
|
|
118
|
+
type: "string",
|
|
119
|
+
title: "Digest time (HH:MM UTC)",
|
|
120
|
+
description: "Time to send the digest. Used for daily mode and first slot of bidaily mode.",
|
|
121
|
+
default: DEFAULT_CONFIG.dailyDigestTime,
|
|
122
|
+
},
|
|
123
|
+
bidailySecondTime: {
|
|
124
|
+
type: "string",
|
|
125
|
+
title: "Bidaily second time (HH:MM UTC)",
|
|
126
|
+
description: "Second digest time for bidaily mode.",
|
|
127
|
+
default: DEFAULT_CONFIG.bidailySecondTime,
|
|
128
|
+
},
|
|
129
|
+
tridailyTimes: {
|
|
130
|
+
type: "string",
|
|
131
|
+
title: "Tridaily times (HH:MM,HH:MM,HH:MM UTC)",
|
|
132
|
+
description: "Three comma-separated times for tridaily mode.",
|
|
133
|
+
default: DEFAULT_CONFIG.tridailyTimes,
|
|
134
|
+
},
|
|
135
|
+
// --- Bot interaction ---
|
|
81
136
|
enableCommands: {
|
|
82
137
|
type: "boolean",
|
|
83
138
|
title: "Enable bot commands",
|
|
@@ -90,36 +145,7 @@ const manifest = {
|
|
|
90
145
|
description: "Route Telegram messages to Paperclip issue comments. Messages sent in reply to a notification get attached to that issue.",
|
|
91
146
|
default: DEFAULT_CONFIG.enableInbound,
|
|
92
147
|
},
|
|
93
|
-
|
|
94
|
-
type: "boolean",
|
|
95
|
-
title: "Daily digest",
|
|
96
|
-
description: "Send a daily summary of agent activity.",
|
|
97
|
-
default: DEFAULT_CONFIG.dailyDigestEnabled,
|
|
98
|
-
},
|
|
99
|
-
dailyDigestTime: {
|
|
100
|
-
type: "string",
|
|
101
|
-
title: "Digest time (HH:MM UTC)",
|
|
102
|
-
description: "Time to send the daily digest in UTC.",
|
|
103
|
-
default: DEFAULT_CONFIG.dailyDigestTime,
|
|
104
|
-
},
|
|
105
|
-
topicRouting: {
|
|
106
|
-
type: "boolean",
|
|
107
|
-
title: "Forum topic routing",
|
|
108
|
-
description: "Map Telegram forum topics to Paperclip projects. Requires the bot to be in a group with forum topics enabled.",
|
|
109
|
-
default: DEFAULT_CONFIG.topicRouting,
|
|
110
|
-
},
|
|
111
|
-
paperclipBaseUrl: {
|
|
112
|
-
type: "string",
|
|
113
|
-
title: "Paperclip Base URL",
|
|
114
|
-
description: "Base URL of the Paperclip API server.",
|
|
115
|
-
default: DEFAULT_CONFIG.paperclipBaseUrl,
|
|
116
|
-
},
|
|
117
|
-
escalationChatId: {
|
|
118
|
-
type: "string",
|
|
119
|
-
title: "Escalation Chat ID",
|
|
120
|
-
description: "Telegram chat ID where escalations are sent for human review. If empty, escalations are logged but not forwarded.",
|
|
121
|
-
default: DEFAULT_CONFIG.escalationChatId,
|
|
122
|
-
},
|
|
148
|
+
// --- Escalation ---
|
|
123
149
|
escalationTimeoutMs: {
|
|
124
150
|
type: "number",
|
|
125
151
|
title: "Escalation Timeout (ms)",
|
|
@@ -139,12 +165,14 @@ const manifest = {
|
|
|
139
165
|
description: "Message sent to the user when their conversation is escalated to a human.",
|
|
140
166
|
default: DEFAULT_CONFIG.escalationHoldMessage,
|
|
141
167
|
},
|
|
168
|
+
// --- Agent sessions ---
|
|
142
169
|
maxAgentsPerThread: {
|
|
143
170
|
type: "number",
|
|
144
171
|
title: "Max Agents Per Thread",
|
|
145
172
|
description: "Maximum number of concurrent agent sessions allowed in a single thread.",
|
|
146
173
|
default: MAX_AGENTS_PER_THREAD,
|
|
147
174
|
},
|
|
175
|
+
// --- Media pipeline ---
|
|
148
176
|
briefAgentId: {
|
|
149
177
|
type: "string",
|
|
150
178
|
title: "Brief Agent ID",
|
|
@@ -160,10 +188,12 @@ const manifest = {
|
|
|
160
188
|
},
|
|
161
189
|
transcriptionApiKeyRef: {
|
|
162
190
|
type: "string",
|
|
191
|
+
format: "secret-ref",
|
|
163
192
|
title: "Transcription API Key (secret reference)",
|
|
164
|
-
description: "
|
|
193
|
+
description: "Secret UUID for your OpenAI API key used for Whisper transcription. Create the secret in Settings > Secrets, then paste its UUID here.",
|
|
165
194
|
default: DEFAULT_CONFIG.transcriptionApiKeyRef,
|
|
166
195
|
},
|
|
196
|
+
// --- Proactive watches ---
|
|
167
197
|
maxSuggestionsPerHourPerCompany: {
|
|
168
198
|
type: "number",
|
|
169
199
|
title: "Max Suggestions per Hour per Company",
|
|
@@ -177,14 +207,14 @@ const manifest = {
|
|
|
177
207
|
default: DEFAULT_CONFIG.watchDeduplicationWindowMs,
|
|
178
208
|
},
|
|
179
209
|
},
|
|
180
|
-
required: ["telegramBotTokenRef"
|
|
210
|
+
required: ["telegramBotTokenRef"],
|
|
181
211
|
},
|
|
182
212
|
jobs: [
|
|
183
213
|
{
|
|
184
214
|
jobKey: "telegram-daily-digest",
|
|
185
|
-
displayName: "Telegram
|
|
186
|
-
description: "Send a
|
|
187
|
-
schedule: "0
|
|
215
|
+
displayName: "Telegram Digest",
|
|
216
|
+
description: "Send a summary of agent activity to Telegram (daily or bidaily).",
|
|
217
|
+
schedule: "0 * * * *",
|
|
188
218
|
},
|
|
189
219
|
{
|
|
190
220
|
jobKey: "check-escalation-timeouts",
|
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,aAAa;QACb,eAAe;QACf,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;KAChB;IACD,WAAW,EAAE;QACX,MAAM,EAAE,kBAAkB;KAC3B;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,mBAAmB,EAAE;gBACnB,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,uCAAuC;gBAC9C,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"manifest.js","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"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"}
|
package/dist/media-pipeline.d.ts
CHANGED
package/dist/media-pipeline.js
CHANGED
|
@@ -47,10 +47,15 @@ export async function handleMediaMessage(ctx, token, msg, config, companyId) {
|
|
|
47
47
|
prompt,
|
|
48
48
|
reason: "media_intake",
|
|
49
49
|
});
|
|
50
|
+
const hasPublicUrl = config.publicUrl && config.publicUrl.startsWith("https://");
|
|
51
|
+
const inlineKeyboard = hasPublicUrl
|
|
52
|
+
? [[{ text: "View Run ↗", url: `${config.publicUrl}/agents/${config.briefAgentId}/runs/${runId}` }]]
|
|
53
|
+
: undefined;
|
|
50
54
|
await sendMessage(ctx, token, chatId, `${escapeMarkdownV2("\ud83d\udcdd")} Media sent to Brief Agent \\(run: \`${escapeMarkdownV2(runId)}\`\\)`, {
|
|
51
55
|
parseMode: "MarkdownV2",
|
|
52
56
|
messageThreadId: threadId,
|
|
53
57
|
replyToMessageId: msg.message_id,
|
|
58
|
+
inlineKeyboard,
|
|
54
59
|
});
|
|
55
60
|
ctx.logger.info("Media routed to brief agent", { runId, briefAgentId: config.briefAgentId });
|
|
56
61
|
}
|
|
@@ -108,23 +113,25 @@ function extractFileId(msg) {
|
|
|
108
113
|
return null;
|
|
109
114
|
}
|
|
110
115
|
async function transcribeAudio(ctx, botToken, fileId, transcriptionApiKeyRef) {
|
|
111
|
-
// 1. Get file path from Telegram
|
|
116
|
+
// 1. Get file path from Telegram (JSON response — ctx.http.fetch works fine for this)
|
|
112
117
|
const fileRes = await ctx.http.fetch(`${TELEGRAM_API}/bot${botToken}/getFile?file_id=${fileId}`, { method: "GET" });
|
|
113
118
|
const fileData = (await fileRes.json());
|
|
114
119
|
if (!fileData.ok || !fileData.result?.file_path) {
|
|
115
120
|
ctx.logger.error("Failed to get file path from Telegram", { fileId });
|
|
116
121
|
return null;
|
|
117
122
|
}
|
|
118
|
-
// 2. Download
|
|
123
|
+
// 2. Download binary audio using native fetch (bypasses RPC bridge UTF-8 corruption)
|
|
119
124
|
const downloadUrl = `${TELEGRAM_API}/file/bot${botToken}/${fileData.result.file_path}`;
|
|
120
|
-
const audioRes = await
|
|
121
|
-
const
|
|
122
|
-
// 3.
|
|
125
|
+
const audioRes = await fetch(downloadUrl);
|
|
126
|
+
const audioBuffer = Buffer.from(await audioRes.arrayBuffer());
|
|
127
|
+
// 3. Resolve the OpenAI API key from Paperclip secrets
|
|
123
128
|
const apiKey = await ctx.secrets.resolve(transcriptionApiKeyRef);
|
|
129
|
+
// 4. Build multipart form data manually (native FormData + Blob works in Node 18+)
|
|
124
130
|
const formData = new FormData();
|
|
125
|
-
formData.append("file",
|
|
131
|
+
formData.append("file", new Blob([audioBuffer], { type: "audio/ogg" }), "audio.ogg");
|
|
126
132
|
formData.append("model", "whisper-1");
|
|
127
|
-
|
|
133
|
+
// 5. Send to Whisper API using native fetch (FormData can't be serialized through RPC bridge)
|
|
134
|
+
const whisperRes = await fetch("https://api.openai.com/v1/audio/transcriptions", {
|
|
128
135
|
method: "POST",
|
|
129
136
|
headers: {
|
|
130
137
|
Authorization: `Bearer ${apiKey}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-pipeline.js","sourceRoot":"","sources":["../src/media-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,YAAY,GAAG,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"media-pipeline.js","sourceRoot":"","sources":["../src/media-pipeline.ts"],"names":[],"mappings":"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"}
|