thepopebot 1.2.74 → 1.2.75-beta.2
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 +11 -0
- package/api/CLAUDE.md +2 -0
- package/api/index.js +95 -3
- package/bin/cli.js +1 -1
- package/bin/managed-paths.js +1 -1
- package/bin/sync.js +7 -2
- package/config/instrumentation.js +4 -0
- package/lib/chat/actions.js +4 -4
- package/lib/chat/components/chat-input.js +2 -2
- package/lib/chat/components/chat-input.jsx +2 -2
- package/lib/chat/components/settings-chat-page.js +41 -37
- package/lib/chat/components/settings-chat-page.jsx +39 -37
- package/lib/chat/components/settings-jobs-page.js +68 -10
- package/lib/chat/components/settings-jobs-page.jsx +99 -34
- package/lib/code/code-page.js +2 -1
- package/lib/code/code-page.jsx +2 -1
- package/lib/code/terminal-view.js +6 -3
- package/lib/code/terminal-view.jsx +6 -3
- package/lib/db/api-keys.js +35 -2
- package/lib/db/config.js +40 -4
- package/lib/maintenance.js +35 -0
- package/lib/oauth/helper.js +34 -0
- package/lib/tools/create-agent-job.js +3 -0
- package/lib/tools/docker.js +12 -5
- package/package.json +3 -2
- package/templates/docker-compose.custom.yml +1 -0
- package/templates/docker-compose.litellm.yml +1 -0
- package/templates/docker-compose.yml +2 -0
- package/templates/skills/agent-job-secrets/SKILL.md +25 -0
- package/templates/skills/agent-job-secrets/agent-job-secrets.js +66 -0
- package/templates/skills/playwright-cli/SKILL.md +294 -0
- package/templates/skills/brave-search/SKILL.md +0 -79
- package/templates/skills/brave-search/content.js +0 -86
- package/templates/skills/brave-search/package-lock.json +0 -621
- package/templates/skills/brave-search/package.json +0 -14
- package/templates/skills/brave-search/search.js +0 -199
- package/templates/skills/browser-tools/SKILL.md +0 -196
- package/templates/skills/browser-tools/browser-content.js +0 -103
- package/templates/skills/browser-tools/browser-cookies.js +0 -35
- package/templates/skills/browser-tools/browser-eval.js +0 -53
- package/templates/skills/browser-tools/browser-hn-scraper.js +0 -108
- package/templates/skills/browser-tools/browser-nav.js +0 -44
- package/templates/skills/browser-tools/browser-pick.js +0 -162
- package/templates/skills/browser-tools/browser-screenshot.js +0 -34
- package/templates/skills/browser-tools/browser-start.js +0 -87
- package/templates/skills/browser-tools/package-lock.json +0 -2556
- package/templates/skills/browser-tools/package.json +0 -19
- package/templates/skills/get-secret/SKILL.md +0 -34
- package/templates/skills/get-secret/get-secret.js +0 -33
- package/templates/skills/google-docs/SKILL.md +0 -23
- package/templates/skills/google-docs/create.sh +0 -69
- package/templates/skills/google-drive/SKILL.md +0 -47
- package/templates/skills/google-drive/delete.sh +0 -47
- package/templates/skills/google-drive/download.sh +0 -50
- package/templates/skills/google-drive/list.sh +0 -41
- package/templates/skills/google-drive/upload.sh +0 -76
- package/templates/skills/kie-ai/SKILL.md +0 -38
- package/templates/skills/kie-ai/generate-image.sh +0 -77
- package/templates/skills/kie-ai/generate-video.sh +0 -69
- package/templates/skills/youtube-transcript/SKILL.md +0 -41
- package/templates/skills/youtube-transcript/package-lock.json +0 -24
- package/templates/skills/youtube-transcript/package.json +0 -8
- package/templates/skills/youtube-transcript/transcript.js +0 -84
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "youtube-transcript-skill",
|
|
3
|
-
"version": "1.0.0",
|
|
4
|
-
"lockfileVersion": 3,
|
|
5
|
-
"requires": true,
|
|
6
|
-
"packages": {
|
|
7
|
-
"": {
|
|
8
|
-
"name": "youtube-transcript-skill",
|
|
9
|
-
"version": "1.0.0",
|
|
10
|
-
"dependencies": {
|
|
11
|
-
"youtube-transcript-plus": "^1.2.0"
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
"node_modules/youtube-transcript-plus": {
|
|
15
|
-
"version": "1.2.0",
|
|
16
|
-
"resolved": "https://registry.npmjs.org/youtube-transcript-plus/-/youtube-transcript-plus-1.2.0.tgz",
|
|
17
|
-
"integrity": "sha512-SRjVft8V+vUulMKgakgfzC+pnFLSy4tolX7xGnSvp9juUNocikMFmUx5GlhzLDILzxYrijcYtmNqz0qyklnPmA==",
|
|
18
|
-
"license": "MIT",
|
|
19
|
-
"engines": {
|
|
20
|
-
"node": ">=18.0.0"
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import { YoutubeTranscript } from 'youtube-transcript-plus';
|
|
4
|
-
|
|
5
|
-
function extractVideoId(input) {
|
|
6
|
-
if (!input) return null;
|
|
7
|
-
|
|
8
|
-
// Already a plain video ID (11 characters, alphanumeric + dash/underscore)
|
|
9
|
-
if (/^[A-Za-z0-9_-]{11}$/.test(input)) {
|
|
10
|
-
return input;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
try {
|
|
14
|
-
const url = new URL(input);
|
|
15
|
-
|
|
16
|
-
// youtu.be/VIDEO_ID
|
|
17
|
-
if (url.hostname === 'youtu.be') {
|
|
18
|
-
return url.pathname.slice(1);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// youtube.com/watch?v=VIDEO_ID
|
|
22
|
-
if (url.hostname === 'www.youtube.com' || url.hostname === 'youtube.com') {
|
|
23
|
-
return url.searchParams.get('v');
|
|
24
|
-
}
|
|
25
|
-
} catch {
|
|
26
|
-
// Not a URL — treat as video ID anyway
|
|
27
|
-
return input;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function decodeHtmlEntities(str) {
|
|
34
|
-
return str
|
|
35
|
-
.replace(/'/g, "'")
|
|
36
|
-
.replace(/&/g, '&')
|
|
37
|
-
.replace(/</g, '<')
|
|
38
|
-
.replace(/>/g, '>')
|
|
39
|
-
.replace(/"/g, '"')
|
|
40
|
-
.replace(/&#(\d+);/g, (_, num) => String.fromCharCode(Number(num)));
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
function formatTime(seconds) {
|
|
44
|
-
const totalSeconds = Math.floor(seconds);
|
|
45
|
-
const mins = Math.floor(totalSeconds / 60);
|
|
46
|
-
const secs = totalSeconds % 60;
|
|
47
|
-
return `${mins}:${secs.toString().padStart(2, '0')}`;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
async function main() {
|
|
51
|
-
const input = process.argv[2];
|
|
52
|
-
|
|
53
|
-
if (!input) {
|
|
54
|
-
console.error('Usage: transcript.js <video-id-or-url>');
|
|
55
|
-
process.exit(1);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const videoId = extractVideoId(input);
|
|
59
|
-
|
|
60
|
-
if (!videoId) {
|
|
61
|
-
console.error(`Error: Could not extract video ID from "${input}"`);
|
|
62
|
-
process.exit(1);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
try {
|
|
66
|
-
const transcript = await YoutubeTranscript.fetchTranscript(videoId);
|
|
67
|
-
|
|
68
|
-
if (!transcript || transcript.length === 0) {
|
|
69
|
-
console.error('No transcript available for this video.');
|
|
70
|
-
process.exit(1);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
for (const entry of transcript) {
|
|
74
|
-
const time = formatTime(entry.offset);
|
|
75
|
-
const text = decodeHtmlEntities(entry.text.replace(/\n/g, ' ')).trim();
|
|
76
|
-
console.log(`[${time}] ${text}`);
|
|
77
|
-
}
|
|
78
|
-
} catch (err) {
|
|
79
|
-
console.error(`Error fetching transcript: ${err.message}`);
|
|
80
|
-
process.exit(1);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
main();
|