sidebud 0.1.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 +31 -0
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/dist/cli.js +7 -0
- package/dist/main.js +12201 -0
- package/package.json +41 -0
- package/packs/BRAND_ASSETS.md +8 -0
- package/packs/calendar/logo.png +0 -0
- package/packs/calendar/pack.json +127 -0
- package/packs/discord/pack.json +107 -0
- package/packs/filesystem/pack.json +84 -0
- package/packs/github/pack.json +127 -0
- package/packs/gmail/logo.png +0 -0
- package/packs/gmail/pack.json +274 -0
- package/packs/obsidian/pack.json +88 -0
- package/packs/t3-agents/logo.png +0 -0
- package/packs/t3-agents/pack.json +492 -0
- package/packs/telegram/pack.json +137 -0
- package/packs/trello/pack.json +102 -0
- package/packs/whatsapp/pack.json +118 -0
- package/src/manage/favicon.png +0 -0
- package/src/manage/index.html +91 -0
- package/src/manage/manage.css +1246 -0
- package/src/manage/manage.js +1054 -0
- package/src/manage/settings.js +112 -0
- package/src/manage/setup.js +210 -0
- package/src/manage/sidebud-icon.png +0 -0
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../../docs/schemas/pack-v2.schema.json",
|
|
3
|
+
"schemaVersion": 2,
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Sidebud"
|
|
7
|
+
},
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"logo": {
|
|
10
|
+
"kind": "icon",
|
|
11
|
+
"name": "chat"
|
|
12
|
+
},
|
|
13
|
+
"id": "app.sidebud.trello",
|
|
14
|
+
"name": "Trello",
|
|
15
|
+
"description": "Read a selected board, lists, and cards through a companion-local MCP adapter over the official Trello REST API.",
|
|
16
|
+
"mcp": {
|
|
17
|
+
"transport": "builtin",
|
|
18
|
+
"service": "trello"
|
|
19
|
+
},
|
|
20
|
+
"secrets": [
|
|
21
|
+
{
|
|
22
|
+
"name": "TRELLO_API_KEY",
|
|
23
|
+
"description": "API key from your Trello Power-Up administration page."
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "TRELLO_TOKEN",
|
|
27
|
+
"description": "User token authorized with scope=read only. The token may access more boards than this pack exposes."
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"settings": [
|
|
31
|
+
{
|
|
32
|
+
"id": "boardId",
|
|
33
|
+
"label": "Board ID",
|
|
34
|
+
"type": "text",
|
|
35
|
+
"required": true,
|
|
36
|
+
"description": "Board ID or the short ID from the board URL."
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
"permissions": {
|
|
40
|
+
"tools": [
|
|
41
|
+
{
|
|
42
|
+
"name": "get_board",
|
|
43
|
+
"access": "read",
|
|
44
|
+
"argumentSettings": {
|
|
45
|
+
"boardId": "boardId"
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "list_lists",
|
|
50
|
+
"access": "read",
|
|
51
|
+
"argumentSettings": {
|
|
52
|
+
"boardId": "boardId"
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "list_cards",
|
|
57
|
+
"access": "read",
|
|
58
|
+
"argumentSettings": {
|
|
59
|
+
"boardId": "boardId"
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
"network": [
|
|
64
|
+
"api.trello.com"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"data": [
|
|
68
|
+
{
|
|
69
|
+
"id": "cards",
|
|
70
|
+
"tool": "list_cards",
|
|
71
|
+
"arguments": {
|
|
72
|
+
"boardId": "{{setting.boardId}}",
|
|
73
|
+
"limit": 20
|
|
74
|
+
},
|
|
75
|
+
"refreshSeconds": 300
|
|
76
|
+
}
|
|
77
|
+
],
|
|
78
|
+
"glance": {
|
|
79
|
+
"line": "{{cards/total|default:0}} open cards"
|
|
80
|
+
},
|
|
81
|
+
"blocks": [
|
|
82
|
+
{
|
|
83
|
+
"type": "list",
|
|
84
|
+
"items": "{{cards/cards}}",
|
|
85
|
+
"item": {
|
|
86
|
+
"title": "{{item/name}}",
|
|
87
|
+
"subtitle": "{{item/due|default:No due date}}"
|
|
88
|
+
},
|
|
89
|
+
"limit": 8,
|
|
90
|
+
"emptyText": "No open cards"
|
|
91
|
+
}
|
|
92
|
+
],
|
|
93
|
+
"controls": [
|
|
94
|
+
{
|
|
95
|
+
"id": "summary",
|
|
96
|
+
"kind": "prompt",
|
|
97
|
+
"label": "Summarize board",
|
|
98
|
+
"prompt": "Summarize open cards and upcoming deadlines on my configured Trello board.",
|
|
99
|
+
"default": true
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "../../../../docs/schemas/pack-v1.schema.json",
|
|
3
|
+
"schemaVersion": 1,
|
|
4
|
+
"id": "dev.remotevoiceagent.whatsapp",
|
|
5
|
+
"name": "WhatsApp",
|
|
6
|
+
"description": "Your personal WhatsApp through verygoodplugins/whatsapp-mcp (linked as a device by QR). Recent messages on the phone, alerts for chosen contacts, and search. Read-only here: nothing is sent.",
|
|
7
|
+
"version": "1.0.0",
|
|
8
|
+
"author": {
|
|
9
|
+
"name": "Sidebud"
|
|
10
|
+
},
|
|
11
|
+
"license": "MIT",
|
|
12
|
+
"logo": {
|
|
13
|
+
"kind": "icon",
|
|
14
|
+
"name": "chat"
|
|
15
|
+
},
|
|
16
|
+
"tile": {
|
|
17
|
+
"size": "small"
|
|
18
|
+
},
|
|
19
|
+
"mcp": {
|
|
20
|
+
"transport": "stdio",
|
|
21
|
+
"command": "uv",
|
|
22
|
+
"args": [
|
|
23
|
+
"--directory",
|
|
24
|
+
"{{setting.serverDir}}",
|
|
25
|
+
"run",
|
|
26
|
+
"main.py"
|
|
27
|
+
],
|
|
28
|
+
"env": {}
|
|
29
|
+
},
|
|
30
|
+
"permissions": {
|
|
31
|
+
"tools": [
|
|
32
|
+
{
|
|
33
|
+
"name": "list_messages",
|
|
34
|
+
"access": "read",
|
|
35
|
+
"description": "Recent and matching messages"
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "list_chats",
|
|
39
|
+
"access": "read",
|
|
40
|
+
"description": "Chats with unread state"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"name": "search_contacts",
|
|
44
|
+
"access": "read",
|
|
45
|
+
"description": "Find a contact"
|
|
46
|
+
}
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
"settings": [
|
|
50
|
+
{
|
|
51
|
+
"id": "serverDir",
|
|
52
|
+
"label": "whatsapp-mcp-server folder",
|
|
53
|
+
"type": "text",
|
|
54
|
+
"default": "",
|
|
55
|
+
"description": "Absolute path to the whatsapp-mcp-server folder of verygoodplugins/whatsapp-mcp. Its Go bridge must be running (see the repo's launchd script)."
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
"data": [
|
|
59
|
+
{
|
|
60
|
+
"id": "recent",
|
|
61
|
+
"tool": "list_messages",
|
|
62
|
+
"arguments": {
|
|
63
|
+
"limit": 30,
|
|
64
|
+
"include_context": false,
|
|
65
|
+
"sort_by": "newest"
|
|
66
|
+
},
|
|
67
|
+
"refreshSeconds": 20
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"id": "chats",
|
|
71
|
+
"tool": "list_chats",
|
|
72
|
+
"arguments": {
|
|
73
|
+
"limit": 20,
|
|
74
|
+
"include_last_message": true
|
|
75
|
+
},
|
|
76
|
+
"refreshSeconds": 60
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"glance": {
|
|
80
|
+
"line": "{{recent/result/0/sender_name|default:No messages}}: {{recent/result/0/content|truncate:50}}"
|
|
81
|
+
},
|
|
82
|
+
"blocks": [
|
|
83
|
+
{
|
|
84
|
+
"type": "list",
|
|
85
|
+
"items": "{{chats/result}}",
|
|
86
|
+
"item": {
|
|
87
|
+
"title": "{{item/name}}",
|
|
88
|
+
"subtitle": "{{item/last_message|truncate:80}}",
|
|
89
|
+
"status": "{{item/unread}}"
|
|
90
|
+
},
|
|
91
|
+
"limit": 8,
|
|
92
|
+
"emptyText": "No chats yet"
|
|
93
|
+
}
|
|
94
|
+
],
|
|
95
|
+
"controls": [
|
|
96
|
+
{
|
|
97
|
+
"id": "summarize",
|
|
98
|
+
"kind": "prompt",
|
|
99
|
+
"label": "Summarize WhatsApp",
|
|
100
|
+
"prompt": "Summarize my recent WhatsApp messages and tell me what needs a reply.",
|
|
101
|
+
"default": true
|
|
102
|
+
}
|
|
103
|
+
],
|
|
104
|
+
"alerts": [
|
|
105
|
+
{
|
|
106
|
+
"id": "incoming",
|
|
107
|
+
"items": "{{recent/result}}",
|
|
108
|
+
"key": "{{item/id}}",
|
|
109
|
+
"sender": [
|
|
110
|
+
"{{item/sender_phone}}",
|
|
111
|
+
"{{item/sender_name}}",
|
|
112
|
+
"{{item/sender_jid}}"
|
|
113
|
+
],
|
|
114
|
+
"text": "{{item/content}}",
|
|
115
|
+
"fromMe": "{{item/is_from_me}}"
|
|
116
|
+
}
|
|
117
|
+
]
|
|
118
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" data-theme="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
|
6
|
+
<meta name="color-scheme" content="dark light" />
|
|
7
|
+
<title>Sidebud · Computer</title>
|
|
8
|
+
<link rel="icon" type="image/png" href="/favicon.png" />
|
|
9
|
+
<link rel="stylesheet" href="/manage.css" />
|
|
10
|
+
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<div class="shell">
|
|
13
|
+
<aside class="sidebar">
|
|
14
|
+
<div class="brand">
|
|
15
|
+
<img class="mark" src="/sidebud-icon.png" alt="" width="40" height="40" />
|
|
16
|
+
<div>
|
|
17
|
+
<h1>Sidebud</h1>
|
|
18
|
+
<small>Companion</small>
|
|
19
|
+
</div>
|
|
20
|
+
</div>
|
|
21
|
+
<nav aria-label="Sections">
|
|
22
|
+
<a href="#setup"
|
|
23
|
+
><svg viewBox="0 0 24 24" aria-hidden="true"><path d="m5 12 4 4 10-10" /></svg
|
|
24
|
+
>Setup</a
|
|
25
|
+
>
|
|
26
|
+
<a href="#connection"
|
|
27
|
+
><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="7" y="2.5" width="10" height="19" rx="2.5" /><path d="M11 18.5h2" /></svg
|
|
28
|
+
>Connection</a
|
|
29
|
+
>
|
|
30
|
+
<a href="#voice"
|
|
31
|
+
><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 10v4M8 7v10M12 4v16M16 7v10M20 10v4" /></svg
|
|
32
|
+
>Voice</a
|
|
33
|
+
>
|
|
34
|
+
<a href="#execution"
|
|
35
|
+
><svg viewBox="0 0 24 24" aria-hidden="true"><path d="m5 8 4 4-4 4M12 17h7" /></svg
|
|
36
|
+
>Execution</a
|
|
37
|
+
>
|
|
38
|
+
<a href="#mcp"
|
|
39
|
+
><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3.5" y="3.5" width="7" height="7" rx="1.5" /><rect x="13.5" y="3.5" width="7" height="7" rx="1.5" /><rect x="3.5" y="13.5" width="7" height="7" rx="1.5" /><path d="M17 14v6M14 17h6" /></svg
|
|
40
|
+
>MCP & widgets</a
|
|
41
|
+
>
|
|
42
|
+
<a href="#layouts"
|
|
43
|
+
><svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3.5" y="3.5" width="17" height="17" rx="2.5" /><path d="M3.5 10h17M10 10v10.5" /></svg
|
|
44
|
+
>Phone layouts</a
|
|
45
|
+
>
|
|
46
|
+
<a href="#settings" class="nav-end"
|
|
47
|
+
><svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="3" /><path d="M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1.1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1.1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3H9a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8V9a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1Z" /></svg
|
|
48
|
+
>Settings</a
|
|
49
|
+
>
|
|
50
|
+
</nav>
|
|
51
|
+
<div class="sidebar-footer">
|
|
52
|
+
<div class="local" id="computer-card">
|
|
53
|
+
<span class="dot" aria-hidden="true"></span>
|
|
54
|
+
<div class="local-text">
|
|
55
|
+
<strong id="companion-name">This computer</strong>
|
|
56
|
+
<span id="account-line">Local only</span>
|
|
57
|
+
</div>
|
|
58
|
+
<button
|
|
59
|
+
type="button"
|
|
60
|
+
class="icon-button"
|
|
61
|
+
data-action="rename-inline"
|
|
62
|
+
aria-label="Rename this computer"
|
|
63
|
+
title="Rename this computer"
|
|
64
|
+
>
|
|
65
|
+
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M4 20h4L19 9l-4-4L4 16v4ZM13.5 6.5l4 4" /></svg>
|
|
66
|
+
</button>
|
|
67
|
+
</div>
|
|
68
|
+
<button
|
|
69
|
+
type="button"
|
|
70
|
+
class="theme-toggle"
|
|
71
|
+
data-theme-toggle
|
|
72
|
+
aria-label="Switch to light mode"
|
|
73
|
+
>
|
|
74
|
+
<svg class="icon-sun" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4" /><path d="M12 2v2M12 20v2M4.9 4.9l1.4 1.4M17.7 17.7l1.4 1.4M2 12h2M20 12h2M4.9 19.1l1.4-1.4M17.7 6.3l1.4-1.4" /></svg>
|
|
75
|
+
<svg class="icon-moon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20 14.5A8 8 0 1 1 9.5 4a6.5 6.5 0 0 0 10.5 10.5Z" /></svg>
|
|
76
|
+
</button>
|
|
77
|
+
</div>
|
|
78
|
+
</aside>
|
|
79
|
+
<div class="content">
|
|
80
|
+
<div id="message" role="status"></div>
|
|
81
|
+
<main id="app"><p class="muted">Loading companion settings…</p></main>
|
|
82
|
+
<footer>
|
|
83
|
+
Credentials and MCP calls stay on this computer.
|
|
84
|
+
</footer>
|
|
85
|
+
</div>
|
|
86
|
+
</div>
|
|
87
|
+
<script src="/manage.js" defer></script>
|
|
88
|
+
<script src="/setup.js" defer></script>
|
|
89
|
+
<script src="/settings.js" defer></script>
|
|
90
|
+
</body>
|
|
91
|
+
</html>
|