alvin-bot 4.4.1
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/.env.example +43 -0
- package/BACKLOG.md +223 -0
- package/CHANGELOG.md +63 -0
- package/CLAUDE.example.md +152 -0
- package/CODE_OF_CONDUCT.md +52 -0
- package/CONTRIBUTING.md +72 -0
- package/LICENSE +21 -0
- package/README.md +529 -0
- package/SECURITY.md +38 -0
- package/SOUL.example.md +60 -0
- package/TOOLS.example.md +42 -0
- package/alvin-bot.config.example.json +24 -0
- package/bin/cli.js +1088 -0
- package/dist/.metadata_never_index +0 -0
- package/dist/claude.js +102 -0
- package/dist/config.js +65 -0
- package/dist/engine.js +90 -0
- package/dist/find-claude-binary.js +98 -0
- package/dist/handlers/commands.js +1489 -0
- package/dist/handlers/document.js +187 -0
- package/dist/handlers/message.js +200 -0
- package/dist/handlers/photo.js +154 -0
- package/dist/handlers/platform-message.js +275 -0
- package/dist/handlers/video.js +237 -0
- package/dist/handlers/voice.js +148 -0
- package/dist/i18n.js +299 -0
- package/dist/index.js +442 -0
- package/dist/init-data-dir.js +81 -0
- package/dist/middleware/auth.js +215 -0
- package/dist/migrate.js +139 -0
- package/dist/paths.js +87 -0
- package/dist/platforms/discord.js +161 -0
- package/dist/platforms/index.js +130 -0
- package/dist/platforms/signal.js +205 -0
- package/dist/platforms/slack.js +318 -0
- package/dist/platforms/telegram.js +111 -0
- package/dist/platforms/types.js +8 -0
- package/dist/platforms/whatsapp.js +648 -0
- package/dist/providers/claude-sdk-provider.js +173 -0
- package/dist/providers/codex-cli-provider.js +121 -0
- package/dist/providers/index.js +7 -0
- package/dist/providers/openai-compatible.js +388 -0
- package/dist/providers/registry.js +209 -0
- package/dist/providers/tool-executor.js +450 -0
- package/dist/providers/types.js +205 -0
- package/dist/services/access.js +144 -0
- package/dist/services/asset-index.js +230 -0
- package/dist/services/browser-manager.js +161 -0
- package/dist/services/browser.js +121 -0
- package/dist/services/compaction.js +129 -0
- package/dist/services/cron.js +462 -0
- package/dist/services/custom-tools.js +317 -0
- package/dist/services/delivery-queue.js +154 -0
- package/dist/services/elevenlabs.js +58 -0
- package/dist/services/embeddings.js +386 -0
- package/dist/services/exec-guard.js +46 -0
- package/dist/services/fallback-order.js +151 -0
- package/dist/services/heartbeat.js +192 -0
- package/dist/services/hooks.js +44 -0
- package/dist/services/imagegen.js +72 -0
- package/dist/services/language-detect.js +144 -0
- package/dist/services/markdown.js +63 -0
- package/dist/services/mcp.js +252 -0
- package/dist/services/memory.js +133 -0
- package/dist/services/personality.js +227 -0
- package/dist/services/plugins.js +171 -0
- package/dist/services/reminders.js +97 -0
- package/dist/services/restart.js +48 -0
- package/dist/services/security-audit.js +66 -0
- package/dist/services/self-search.js +129 -0
- package/dist/services/session.js +93 -0
- package/dist/services/skills.js +287 -0
- package/dist/services/standing-orders.js +29 -0
- package/dist/services/subagents.js +142 -0
- package/dist/services/sudo.js +243 -0
- package/dist/services/telegram.js +113 -0
- package/dist/services/tool-discovery.js +214 -0
- package/dist/services/usage-tracker.js +137 -0
- package/dist/services/users.js +199 -0
- package/dist/services/voice.js +95 -0
- package/dist/tui/index.js +507 -0
- package/dist/web/canvas.js +30 -0
- package/dist/web/doctor-api.js +606 -0
- package/dist/web/openai-compat.js +252 -0
- package/dist/web/server.js +1351 -0
- package/dist/web/setup-api.js +1078 -0
- package/docs/mcp.example.json +16 -0
- package/docs/screenshots/00-Login.png +0 -0
- package/docs/screenshots/01-Chat-Dark-Conversation.png +0 -0
- package/docs/screenshots/02-Chat.png +0 -0
- package/docs/screenshots/03-Dashboard-Overview.png +0 -0
- package/docs/screenshots/04-AI-Models-and-Providers.png +0 -0
- package/docs/screenshots/05-Personality-Editor.png +0 -0
- package/docs/screenshots/06-Memory-Manager.png +0 -0
- package/docs/screenshots/07-Active-Sessions.png +0 -0
- package/docs/screenshots/08-File-Browser.png +0 -0
- package/docs/screenshots/09-Scheduled-Jobs.png +0 -0
- package/docs/screenshots/10-Custom-Tools.png +0 -0
- package/docs/screenshots/11-Plugins-and-MCP.png +0 -0
- package/docs/screenshots/12-Messaging-Platforms.png +0 -0
- package/docs/screenshots/12.1-Messaging-Platforms-WhatsApp-Groups-List.png +0 -0
- package/docs/screenshots/12.2-Messaging-Platforms-WA-Group-Details.png +0 -0
- package/docs/screenshots/13-User-Management.png +0 -0
- package/docs/screenshots/14-Web-Terminal.png +0 -0
- package/docs/screenshots/15-Maintenance-and-Health.png +0 -0
- package/docs/screenshots/16-Settings-and-Env.png +0 -0
- package/docs/screenshots/TG-commands.png +0 -0
- package/docs/screenshots/TG.png +0 -0
- package/docs/screenshots/_Mac-Installer.png +0 -0
- package/docs/tools.example.json +33 -0
- package/install.sh +165 -0
- package/package.json +190 -0
- package/plugins/calendar/index.js +270 -0
- package/plugins/email/index.js +231 -0
- package/plugins/finance/index.js +254 -0
- package/plugins/notes/index.js +227 -0
- package/plugins/smarthome/index.js +230 -0
- package/plugins/weather/index.js +122 -0
- package/skills/apple-notes/SKILL.md +31 -0
- package/skills/browse/SKILL.md +136 -0
- package/skills/code-project/SKILL.md +43 -0
- package/skills/data-analysis/SKILL.md +39 -0
- package/skills/document-creation/SKILL.md +48 -0
- package/skills/email-summary/SKILL.md +46 -0
- package/skills/github/SKILL.md +42 -0
- package/skills/summarize/SKILL.md +28 -0
- package/skills/system-admin/SKILL.md +39 -0
- package/skills/weather/SKILL.md +34 -0
- package/skills/web-research/SKILL.md +35 -0
- package/web/public/canvas.html +52 -0
- package/web/public/css/style.css +555 -0
- package/web/public/index.html +189 -0
- package/web/public/js/app.js +3102 -0
- package/web/public/js/i18n.js +1048 -0
- package/web/public/js/icons.js +104 -0
- package/web/public/login.html +48 -0
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
6
|
+
<title>Alvin Bot — Dashboard</title>
|
|
7
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
|
|
10
|
+
<link rel="stylesheet" href="/css/style.css">
|
|
11
|
+
</head>
|
|
12
|
+
<body>
|
|
13
|
+
|
|
14
|
+
<div class="drop-overlay" id="drop-overlay"></div>
|
|
15
|
+
|
|
16
|
+
<div class="sidebar">
|
|
17
|
+
<div class="sidebar-header">
|
|
18
|
+
<h1 id="sidebar-title"></h1>
|
|
19
|
+
<div class="status" id="bot-status"></div>
|
|
20
|
+
</div>
|
|
21
|
+
<div class="nav" id="nav-container"></div>
|
|
22
|
+
<div class="sidebar-footer" id="sidebar-footer"></div>
|
|
23
|
+
</div>
|
|
24
|
+
|
|
25
|
+
<div class="main">
|
|
26
|
+
<div class="topbar">
|
|
27
|
+
<h2 id="page-title"></h2>
|
|
28
|
+
<div class="topbar-right">
|
|
29
|
+
<span class="topbar-kbd" id="cmd-k-hint" onclick="openCommandPalette()"></span>
|
|
30
|
+
<span class="badge badge-accent" id="model-badge">loading...</span>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
|
|
34
|
+
<!-- Chat Page -->
|
|
35
|
+
<div class="page chat-container active" id="page-chat">
|
|
36
|
+
<div class="chat-header" id="chat-header"></div>
|
|
37
|
+
<div class="messages" id="messages">
|
|
38
|
+
<div class="msg system" id="chat-welcome"></div>
|
|
39
|
+
<div class="typing-indicator" id="typing-indicator">
|
|
40
|
+
<div class="typing-dot"></div>
|
|
41
|
+
<div class="typing-dot"></div>
|
|
42
|
+
<div class="typing-dot"></div>
|
|
43
|
+
</div>
|
|
44
|
+
</div>
|
|
45
|
+
<div id="reply-preview" style="display:none;padding:6px 12px;background:var(--bg3);border-left:3px solid var(--accent2);margin:0 12px;border-radius:0 6px 6px 0;font-size:0.82em;color:var(--fg2);align-items:center;gap:8px">
|
|
46
|
+
<span id="reply-preview-text" style="flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap"></span>
|
|
47
|
+
<button onclick="clearReply()" style="background:none;border:none;color:var(--fg2);cursor:pointer;font-size:1.1em;padding:0 4px" id="reply-close-btn"></button>
|
|
48
|
+
</div>
|
|
49
|
+
<div id="file-preview" style="display:none;padding:6px 12px;background:var(--bg3);border-radius:6px;margin:0 12px;font-size:0.82em;color:var(--fg2);align-items:center;gap:8px">
|
|
50
|
+
<span id="file-preview-text" style="flex:1"></span>
|
|
51
|
+
<button onclick="clearFileUpload()" style="background:none;border:none;color:var(--fg2);cursor:pointer;font-size:1.1em;padding:0 4px" id="file-close-btn"></button>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="input-area" id="chat-input-area"></div>
|
|
54
|
+
</div>
|
|
55
|
+
|
|
56
|
+
<!-- Dashboard -->
|
|
57
|
+
<div class="page content" id="page-dashboard">
|
|
58
|
+
<div class="cards" id="dashboard-cards"></div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<!-- Models -->
|
|
62
|
+
<div class="page content" id="page-models">
|
|
63
|
+
<div id="models-setup"></div>
|
|
64
|
+
</div>
|
|
65
|
+
|
|
66
|
+
<!-- Personality -->
|
|
67
|
+
<div class="page content" id="page-personality">
|
|
68
|
+
<div class="card" style="max-width:700px" id="personality-card"></div>
|
|
69
|
+
</div>
|
|
70
|
+
|
|
71
|
+
<!-- Memory -->
|
|
72
|
+
<div class="page content" id="page-memory">
|
|
73
|
+
<div class="editor-toolbar">
|
|
74
|
+
<select id="memory-file" onchange="loadMemoryFile()"></select>
|
|
75
|
+
<button class="btn btn-sm" onclick="saveMemoryFile()" id="memory-save-btn"></button>
|
|
76
|
+
</div>
|
|
77
|
+
<textarea class="editor" id="memory-editor"></textarea>
|
|
78
|
+
</div>
|
|
79
|
+
|
|
80
|
+
<!-- Sessions -->
|
|
81
|
+
<div class="page content" id="page-sessions">
|
|
82
|
+
<div id="sessions-list"></div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<!-- Files -->
|
|
86
|
+
<div class="page content" id="page-files">
|
|
87
|
+
<div class="editor-toolbar">
|
|
88
|
+
<span id="file-breadcrumb" style="flex:1;color:var(--fg2);font-size:0.85em"></span>
|
|
89
|
+
<button class="btn btn-sm btn-outline" onclick="createNewFile()" id="file-new-btn"></button>
|
|
90
|
+
<button class="btn btn-sm btn-outline" onclick="navigateFiles('..')" id="file-up-btn"></button>
|
|
91
|
+
</div>
|
|
92
|
+
<div id="file-list"></div>
|
|
93
|
+
<div id="file-editor-area" style="display:none;margin-top:16px">
|
|
94
|
+
<div class="editor-toolbar">
|
|
95
|
+
<span id="file-edit-name" style="flex:1;color:var(--accent2);font-family:monospace;font-size:0.85em"></span>
|
|
96
|
+
<button class="btn btn-sm" onclick="saveFile()" id="file-save-btn"></button>
|
|
97
|
+
<button class="btn btn-sm btn-outline" style="color:var(--red)" onclick="deleteFile(document.getElementById('file-edit-name').textContent)" id="file-delete-btn"></button>
|
|
98
|
+
<button class="btn btn-sm btn-outline" onclick="document.getElementById('file-editor-area').style.display='none'" id="file-close-editor-btn"></button>
|
|
99
|
+
</div>
|
|
100
|
+
<textarea class="editor" id="file-editor"></textarea>
|
|
101
|
+
</div>
|
|
102
|
+
</div>
|
|
103
|
+
|
|
104
|
+
<!-- Cron -->
|
|
105
|
+
<div class="page content" id="page-cron">
|
|
106
|
+
<div style="display:flex;align-items:center;gap:12px;margin-bottom:16px" id="cron-header"></div>
|
|
107
|
+
<div id="cron-create-form" style="display:none;margin-bottom:16px;padding:16px;background:var(--bg2);border:1px solid var(--glass-border);border-radius:var(--radius)">
|
|
108
|
+
<div style="display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px">
|
|
109
|
+
<input id="cron-name" class="input">
|
|
110
|
+
<select id="cron-type" class="input"></select>
|
|
111
|
+
</div>
|
|
112
|
+
<div id="cron-create-schedule-builder"></div>
|
|
113
|
+
<div style="margin-bottom:8px">
|
|
114
|
+
<input id="cron-payload" class="input" style="width:100%">
|
|
115
|
+
</div>
|
|
116
|
+
<div style="display:flex;gap:8px" id="cron-form-buttons"></div>
|
|
117
|
+
</div>
|
|
118
|
+
<div id="cron-list"></div>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
<!-- Tools -->
|
|
122
|
+
<div class="page content" id="page-tools">
|
|
123
|
+
<div style="margin-bottom:16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap">
|
|
124
|
+
<input type="text" id="tools-search" style="flex:1;min-width:200px;background:var(--bg3);border:1px solid var(--glass-border);border-radius:var(--radius-sm);padding:8px 12px;color:var(--fg);font:inherit;font-size:0.85em;outline:none" oninput="filterTools()">
|
|
125
|
+
<span class="badge badge-accent" id="tools-count">0 Tools</span>
|
|
126
|
+
</div>
|
|
127
|
+
<div id="tools-list"></div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
<!-- Plugins -->
|
|
131
|
+
<div class="page content" id="page-plugins">
|
|
132
|
+
<div id="plugins-list"></div>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<!-- Platforms -->
|
|
136
|
+
<div class="page content" id="page-platforms">
|
|
137
|
+
<div id="platforms-setup"></div>
|
|
138
|
+
</div>
|
|
139
|
+
|
|
140
|
+
<!-- Users -->
|
|
141
|
+
<div class="page content" id="page-users">
|
|
142
|
+
<div id="users-list"></div>
|
|
143
|
+
</div>
|
|
144
|
+
|
|
145
|
+
<!-- Terminal -->
|
|
146
|
+
<div class="page" id="page-terminal" style="flex-direction:column;height:100%">
|
|
147
|
+
<div class="content" style="flex:1;display:flex;flex-direction:column">
|
|
148
|
+
<div class="terminal-output" id="terminal-output" style="flex:1"></div>
|
|
149
|
+
<div style="display:flex;gap:8px;margin-top:12px;align-items:center">
|
|
150
|
+
<span style="color:var(--accent);font-family:monospace;font-weight:bold">$</span>
|
|
151
|
+
<textarea id="terminal-input" rows="1" style="flex:1;background:var(--bg3);border:1px solid transparent;border-radius:8px;padding:10px;color:var(--fg);font-family:'SF Mono',Monaco,monospace;font-size:0.85em;resize:none;outline:none;min-height:40px"></textarea>
|
|
152
|
+
<button class="btn" onclick="runCommand()" id="terminal-run-btn"></button>
|
|
153
|
+
</div>
|
|
154
|
+
</div>
|
|
155
|
+
</div>
|
|
156
|
+
|
|
157
|
+
<!-- Maintenance -->
|
|
158
|
+
<div class="page content" id="page-maintenance">
|
|
159
|
+
<div id="maintenance-content"><div style="color:var(--fg2)" id="maint-loading"></div></div>
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
<!-- Settings -->
|
|
163
|
+
<div class="page content" id="page-settings">
|
|
164
|
+
<div id="settings-content"></div>
|
|
165
|
+
</div>
|
|
166
|
+
</div>
|
|
167
|
+
|
|
168
|
+
<!-- Setup Wizard (shown on first run) -->
|
|
169
|
+
<div class="wizard-overlay" id="wizard-overlay" style="display:none">
|
|
170
|
+
<div class="wizard">
|
|
171
|
+
<div class="wizard-header" id="wizard-header"></div>
|
|
172
|
+
<div class="wizard-body" id="wizard-body"></div>
|
|
173
|
+
<div class="wizard-footer" id="wizard-footer"></div>
|
|
174
|
+
</div>
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
<!-- Command Palette -->
|
|
178
|
+
<div class="cmd-palette-overlay" id="cmd-palette-overlay" style="display:none" onclick="if(event.target===this)closeCommandPalette()">
|
|
179
|
+
<div class="cmd-palette">
|
|
180
|
+
<input class="cmd-palette-input" id="cmd-palette-input" type="text" autocomplete="off">
|
|
181
|
+
<div class="cmd-palette-results" id="cmd-palette-results"></div>
|
|
182
|
+
</div>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
<script src="/js/icons.js"></script>
|
|
186
|
+
<script src="/js/i18n.js"></script>
|
|
187
|
+
<script src="/js/app.js"></script>
|
|
188
|
+
</body>
|
|
189
|
+
</html>
|