agentopia 1.0.0 → 1.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.
@@ -3,14 +3,14 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Argus - User Management</title>
6
+ <title>Agentopia - User Management</title>
7
7
  <link rel="stylesheet" href="/public/css/style.css">
8
8
  </head>
9
9
  <body>
10
10
  <div class="overlay" id="overlay" onclick="closeDrawer()"></div>
11
11
  <div class="drawer" id="drawer">
12
12
  <div class="drawer-header">
13
- <h3><span style="color:var(--accent)">Argus</span></h3>
13
+ <h3><span style="color:var(--accent)">Agentopia</span></h3>
14
14
  <button class="drawer-close" onclick="closeDrawer()">&times;</button>
15
15
  </div>
16
16
  <div class="drawer-content">
@@ -42,7 +42,7 @@
42
42
  <button class="menu-btn" onclick="toggleDrawer()">
43
43
  <span></span><span></span><span></span>
44
44
  </button>
45
- <h1><a href="/" style="color:var(--accent);text-decoration:none">Argus</a></h1>
45
+ <h1><a href="/" style="color:var(--accent);text-decoration:none">Agentopia</a></h1>
46
46
  <div class="breadcrumb" style="margin-left:12px">
47
47
  <a href="/">Home</a> / <span>User Management</span>
48
48
  </div>
package/public/agent.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Argus - Agent Terminal</title>
6
+ <title>Agentopia - Agent Terminal</title>
7
7
  <link rel="stylesheet" href="/public/css/style.css">
8
8
  <link rel="stylesheet" href="/public/vendor/xterm.css">
9
9
  </head>
@@ -11,7 +11,7 @@
11
11
  <div class="overlay" id="overlay" onclick="closeDrawer()"></div>
12
12
  <div class="drawer" id="drawer">
13
13
  <div class="drawer-header">
14
- <h3><span style="color:var(--accent)">Argus</span></h3>
14
+ <h3><span style="color:var(--accent)">Agentopia</span></h3>
15
15
  <button class="drawer-close" onclick="closeDrawer()">&times;</button>
16
16
  </div>
17
17
  <div class="drawer-content">
@@ -55,7 +55,7 @@
55
55
  <button class="menu-btn" onclick="toggleDrawer()">
56
56
  <span></span><span></span><span></span>
57
57
  </button>
58
- <h1><a href="/" style="color:var(--accent);text-decoration:none">Argus</a></h1>
58
+ <h1><a href="/" style="color:var(--accent);text-decoration:none">Agentopia</a></h1>
59
59
  <div class="breadcrumb" style="margin-left:12px">
60
60
  <a href="/">Projects</a> / <a id="project-link" href="#">Project</a> / <span id="agent-name">Agent</span>
61
61
  </div>
package/public/index.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Argus - Multi-Agent Platform</title>
6
+ <title>Agentopia - Multi-Agent Platform</title>
7
7
  <link rel="stylesheet" href="/public/css/style.css">
8
8
  <link rel="stylesheet" href="/public/css/issues.css">
9
9
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css">
@@ -15,7 +15,7 @@
15
15
  <!-- Drawer -->
16
16
  <div class="drawer" id="drawer">
17
17
  <div class="drawer-header">
18
- <h3><span style="color:var(--accent)">Argus</span></h3>
18
+ <h3><span style="color:var(--accent)">Agentopia</span></h3>
19
19
  <button class="drawer-close" onclick="closeDrawer()">&times;</button>
20
20
  </div>
21
21
  <div class="drawer-content">
@@ -60,7 +60,7 @@
60
60
  <button class="menu-btn" onclick="toggleDrawer()">
61
61
  <span></span><span></span><span></span>
62
62
  </button>
63
- <h1><a href="/" style="color:var(--accent);text-decoration:none">Argus</a></h1>
63
+ <h1><a href="/" style="color:var(--accent);text-decoration:none">Agentopia</a></h1>
64
64
  <div class="header-right">
65
65
  <button class="btn btn-primary btn-sm" onclick="showCreateModal()">+ New Project</button>
66
66
  </div>
package/public/issue.html CHANGED
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Argus - Issue</title>
6
+ <title>Agentopia - Issue</title>
7
7
  <link rel="stylesheet" href="/public/css/style.css">
8
8
  <link rel="stylesheet" href="/public/css/issues.css">
9
9
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css">
@@ -12,7 +12,7 @@
12
12
  <div class="overlay" id="overlay" onclick="closeDrawer()"></div>
13
13
  <div class="drawer" id="drawer">
14
14
  <div class="drawer-header">
15
- <h3><span style="color:var(--accent)">Argus</span></h3>
15
+ <h3><span style="color:var(--accent)">Agentopia</span></h3>
16
16
  <button class="drawer-close" onclick="closeDrawer()">&times;</button>
17
17
  </div>
18
18
  <div class="drawer-content">
@@ -56,7 +56,7 @@
56
56
  <button class="menu-btn" onclick="toggleDrawer()">
57
57
  <span></span><span></span><span></span>
58
58
  </button>
59
- <h1><a href="/" style="color:var(--accent);text-decoration:none">Argus</a></h1>
59
+ <h1><a href="/" style="color:var(--accent);text-decoration:none">Agentopia</a></h1>
60
60
  <div class="breadcrumb" style="margin-left:12px">
61
61
  <a href="/">Projects</a> / <a id="project-link" href="#">Project</a> / <a id="issues-link" href="#">Issues</a> / <span id="issue-title-breadcrumb">Issue</span>
62
62
  </div>
@@ -6,13 +6,13 @@ async function initUserMenu() {
6
6
  try {
7
7
  const res = await fetch('/api/auth/me', { cache: 'no-cache' });
8
8
  if (!res.ok) {
9
- console.warn('[Argus] initUserMenu: /api/auth/me returned', res.status, '— avatar will not show');
9
+ console.warn('[Agentopia] initUserMenu: /api/auth/me returned', res.status, '— avatar will not show');
10
10
  return;
11
11
  }
12
12
  _currentUser = await res.json();
13
- window.dispatchEvent(new CustomEvent('argus:user-ready', { detail: _currentUser }));
13
+ window.dispatchEvent(new CustomEvent('agentopia:user-ready', { detail: _currentUser }));
14
14
  } catch (e) {
15
- console.warn('[Argus] initUserMenu: fetch failed —', e.message || e);
15
+ console.warn('[Agentopia] initUserMenu: fetch failed —', e.message || e);
16
16
  return;
17
17
  }
18
18
 
@@ -335,7 +335,7 @@ const themes = {
335
335
 
336
336
  function applyTheme(name) {
337
337
  // Backward compat: 'nord' was renamed to 'nord-dark'
338
- if (name === 'nord') { name = 'nord-dark'; localStorage.setItem('argus-theme', name); }
338
+ if (name === 'nord') { name = 'nord-dark'; localStorage.setItem('agentopia-theme', name); }
339
339
  const t = themes[name] || themes['github-dark'];
340
340
  const r = document.documentElement;
341
341
  r.style.setProperty('--bg', t.bg);
@@ -352,7 +352,7 @@ function applyTheme(name) {
352
352
  }
353
353
 
354
354
  function changeTheme(name) {
355
- localStorage.setItem('argus-theme', name);
355
+ localStorage.setItem('agentopia-theme', name);
356
356
  applyTheme(name);
357
357
  }
358
358
 
@@ -446,7 +446,7 @@ function _playDingSound(ctx) {
446
446
 
447
447
  function playNotificationSound() {
448
448
  // Check setting
449
- if (localStorage.getItem('argus-notification-sound') === 'off') return;
449
+ if (localStorage.getItem('agentopia-notification-sound') === 'off') return;
450
450
 
451
451
  // Throttle: no more than once per 5 seconds
452
452
  var now = Date.now();
@@ -473,9 +473,9 @@ function playNotificationSound() {
473
473
  }
474
474
 
475
475
  function toggleNotificationSound() {
476
- const current = localStorage.getItem('argus-notification-sound') !== 'off';
476
+ const current = localStorage.getItem('agentopia-notification-sound') !== 'off';
477
477
  const newVal = current ? 'off' : 'on';
478
- localStorage.setItem('argus-notification-sound', newVal);
478
+ localStorage.setItem('agentopia-notification-sound', newVal);
479
479
  // Update all toggles on the page
480
480
  document.querySelectorAll('.notif-sound-toggle').forEach(function(el) {
481
481
  el.classList.toggle('on', newVal === 'on');
@@ -484,7 +484,7 @@ function toggleNotificationSound() {
484
484
 
485
485
  // Init notification sound toggles on page load
486
486
  document.addEventListener('DOMContentLoaded', function() {
487
- const isOn = localStorage.getItem('argus-notification-sound') !== 'off';
487
+ const isOn = localStorage.getItem('agentopia-notification-sound') !== 'off';
488
488
  document.querySelectorAll('.notif-sound-toggle').forEach(function(el) {
489
489
  el.classList.toggle('on', isOn);
490
490
  });
@@ -492,7 +492,7 @@ document.addEventListener('DOMContentLoaded', function() {
492
492
 
493
493
  // Init theme
494
494
  (function() {
495
- const saved = localStorage.getItem('argus-theme') || 'solarized-light';
495
+ const saved = localStorage.getItem('agentopia-theme') || 'solarized-light';
496
496
  applyTheme(saved);
497
497
  const sel = document.getElementById('theme-select');
498
498
  if (sel) sel.value = saved;
@@ -701,7 +701,7 @@ loadDashboard();
701
701
  setInterval(() => { loadDashboardSummary(); loadNotifications(); }, 10000);
702
702
  setInterval(loadProjects, 30000);
703
703
  setInterval(loadUsageByProject, 60000);
704
- window.addEventListener('argus:user-ready', () => { loadProjects(); });
704
+ window.addEventListener('agentopia:user-ready', () => { loadProjects(); });
705
705
 
706
706
  // ─── Floating Issue Panel ───
707
707
 
@@ -695,7 +695,7 @@
695
695
  }
696
696
  }
697
697
 
698
- window.ArgusFilesPanel = {
698
+ window.AgentopiaFilesPanel = {
699
699
  create(options) {
700
700
  return new FilesPanel(options);
701
701
  },
@@ -176,7 +176,7 @@ async function loadAgentInfo() {
176
176
  document.getElementById('agent-name').textContent = agent.name;
177
177
  document.getElementById('agent-link').textContent = agent.name;
178
178
  document.getElementById('agent-link').href = `/agents/${agentId}`;
179
- document.title = `Argus - ${agent.name} Terminal`;
179
+ document.title = `Agentopia - ${agent.name} Terminal`;
180
180
 
181
181
  // Load project info
182
182
  const pres = await fetch(`/api/projects/${agent.project_id}`, { headers: apiHeaders() });
@@ -33,7 +33,7 @@ async function loadIssue() {
33
33
  document.getElementById('issues-link').href = `/projects/${data.project_id}#issues`;
34
34
  if (projectRes.status === 'fulfilled' && projectRes.value.ok) { const p = await projectRes.value.json(); document.getElementById('project-link').textContent = p.name; }
35
35
  document.getElementById('issue-title-breadcrumb').textContent = `#${data.number} ${data.title}`;
36
- document.title = `#${data.number} ${data.title} - Argus`;
36
+ document.title = `#${data.number} ${data.title} - Agentopia`;
37
37
 
38
38
  IssueRenderer.render(issueData, agentsData, document.getElementById('issue-page'), {
39
39
  reload: loadIssue,
@@ -348,7 +348,7 @@ async function loadProject() {
348
348
  document.getElementById('project-title').textContent = projectData.name;
349
349
  document.getElementById('project-status').textContent = projectData.status;
350
350
  document.getElementById('project-status').className = `status-badge status-${projectData.status}`;
351
- document.title = `Argus - ${projectData.name}`;
351
+ document.title = `Agentopia - ${projectData.name}`;
352
352
  renderProjectAccessSummary();
353
353
  applyProjectManageState();
354
354
 
@@ -564,7 +564,7 @@ async function loadAgents() {
564
564
  const key = a.id + ':' + (a.finished_at || '');
565
565
  if (!window._notifiedErrors.has(key)) {
566
566
  window._notifiedErrors.add(key);
567
- new Notification('Argus: Agent Error', { body: `${a.name} failed. ${(errorLogs[a.id] || '').slice(0, 100)}`, tag: 'argus-error-' + a.id });
567
+ new Notification('Agentopia: Agent Error', { body: `${a.name} failed. ${(errorLogs[a.id] || '').slice(0, 100)}`, tag: 'agentopia-error-' + a.id });
568
568
  }
569
569
  }
570
570
  }
@@ -1537,8 +1537,8 @@ function switchTab(tab) {
1537
1537
  }
1538
1538
 
1539
1539
  function ensureProjectFilesPanel() {
1540
- if (projectFilesPanel || !window.ArgusFilesPanel) return;
1541
- projectFilesPanel = window.ArgusFilesPanel.create({
1540
+ if (projectFilesPanel || !window.AgentopiaFilesPanel) return;
1541
+ projectFilesPanel = window.AgentopiaFilesPanel.create({
1542
1542
  publicApiName: 'ProjectFiles',
1543
1543
  shellId: 'project-files-shell',
1544
1544
  treeId: 'project-file-tree',
@@ -2389,7 +2389,7 @@ loadProject();
2389
2389
  loadAgents();
2390
2390
  loadDashboard();
2391
2391
  loadCostChart();
2392
- window.addEventListener('argus:user-ready', () => { renderProjectAccessSummary(); });
2392
+ window.addEventListener('agentopia:user-ready', () => { renderProjectAccessSummary(); });
2393
2393
 
2394
2394
  // Slow fallback polling (WS handles real-time)
2395
2395
  setInterval(loadAgents, 30000);
@@ -250,7 +250,7 @@ async function loadAgentInfo() {
250
250
  document.getElementById('agent-started').textContent = formatLocalDateTime(agent.started_at);
251
251
  document.getElementById('agent-status').textContent = agent.status;
252
252
  document.getElementById('agent-status').className = `status-badge status-${agent.status}`;
253
- document.title = `Argus - ${agent.name}`;
253
+ document.title = `Agentopia - ${agent.name}`;
254
254
  window.currentAgentState = agent;
255
255
  if (window.AgentFiles && typeof window.AgentFiles.setAgent === 'function') {
256
256
  window.AgentFiles.setAgent(agent);
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Argus - Project</title>
6
+ <title>Agentopia - Project</title>
7
7
  <link rel="stylesheet" href="/public/css/style.css">
8
8
  <link rel="stylesheet" href="/public/css/issues.css">
9
9
  </head>
@@ -11,7 +11,7 @@
11
11
  <div class="overlay" id="overlay" onclick="closeDrawer()"></div>
12
12
  <div class="drawer" id="drawer">
13
13
  <div class="drawer-header">
14
- <h3><span style="color:var(--accent)">Argus</span></h3>
14
+ <h3><span style="color:var(--accent)">Agentopia</span></h3>
15
15
  <button class="drawer-close" onclick="closeDrawer()">&times;</button>
16
16
  </div>
17
17
  <div class="drawer-content">
@@ -55,7 +55,7 @@
55
55
  <button class="menu-btn" onclick="toggleDrawer()">
56
56
  <span></span><span></span><span></span>
57
57
  </button>
58
- <h1><a href="/" style="color:var(--accent);text-decoration:none">Argus</a></h1>
58
+ <h1><a href="/" style="color:var(--accent);text-decoration:none">Agentopia</a></h1>
59
59
  <div class="breadcrumb" style="margin-left:12px">
60
60
  <a href="/">Projects</a> / <a id="project-name" href="#" onclick="switchTab('overview');return false" style="color:var(--link);text-decoration:none">Loading...</a><span id="breadcrumb-section"></span>
61
61
  </div>
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Argus - Terminal</title>
6
+ <title>Agentopia - Terminal</title>
7
7
  <link rel="stylesheet" href="/public/css/style.css">
8
8
  <link rel="stylesheet" href="/public/vendor/xterm.css">
9
9
  <style>
@@ -26,7 +26,7 @@
26
26
  <button class="menu-btn" onclick="history.back()">
27
27
  <span></span><span></span><span></span>
28
28
  </button>
29
- <h1><a href="/" style="color:var(--accent);text-decoration:none">Argus</a></h1>
29
+ <h1><a href="/" style="color:var(--accent);text-decoration:none">Agentopia</a></h1>
30
30
  <div class="breadcrumb" style="margin-left:12px">
31
31
  <a href="/">Projects</a> / <a id="project-link" href="#">Project</a> / <a id="agent-link" href="#">Agent</a> / <span>Terminal</span>
32
32
  </div>
@@ -1,7 +1,7 @@
1
1
  const Database = require('better-sqlite3');
2
2
  const { v4: uuidv4 } = require('uuid');
3
3
 
4
- const db = new Database('/misc/projdata11/info_fil/zhfu/lin/argus/data/argus.db');
4
+ const db = new Database('/misc/projdata11/info_fil/zhfu/lin/argus/data/agentopia.db');
5
5
 
6
6
  const AGENT_ID = 'db9e98bf-91b1-4bdd-97ea-ca56cd3c9f48';
7
7
  const PROJECT_ID = 'ebf157ab-5cc9-49d2-9ff2-508652b7632c';
@@ -1,6 +1,6 @@
1
1
  const Database = require('better-sqlite3');
2
2
  const { v4: uuidv4 } = require('uuid');
3
- const db = new Database('data/argus.db');
3
+ const db = new Database('data/agentopia.db');
4
4
 
5
5
  const now = new Date().toISOString();
6
6