@agent-link/server 0.1.57 → 0.1.59
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/package.json +1 -1
- package/web/app.js +0 -28
- package/web/modules/connection.js +2 -4
- package/web/modules/sidebar.js +0 -49
- package/web/style.css +0 -71
package/package.json
CHANGED
package/web/app.js
CHANGED
|
@@ -68,10 +68,6 @@ const App = {
|
|
|
68
68
|
const deleteConfirmOpen = ref(false);
|
|
69
69
|
const deleteConfirmTitle = ref('');
|
|
70
70
|
|
|
71
|
-
// Working directory history state
|
|
72
|
-
const workDirHistory = ref([]);
|
|
73
|
-
const workDirHistoryOpen = ref(false);
|
|
74
|
-
|
|
75
71
|
// Authentication state
|
|
76
72
|
const authRequired = ref(false);
|
|
77
73
|
const authPassword = ref('');
|
|
@@ -152,7 +148,6 @@ const App = {
|
|
|
152
148
|
folderPickerOpen, folderPickerPath, folderPickerEntries,
|
|
153
149
|
folderPickerLoading, folderPickerSelected, streaming,
|
|
154
150
|
deleteConfirmOpen, deleteConfirmTitle,
|
|
155
|
-
workDirHistory, workDirHistoryOpen,
|
|
156
151
|
});
|
|
157
152
|
|
|
158
153
|
const { connect, wsSend, closeWs, submitPassword } = createConnection({
|
|
@@ -291,12 +286,6 @@ const App = {
|
|
|
291
286
|
deleteSession: sidebar.deleteSession,
|
|
292
287
|
confirmDeleteSession: sidebar.confirmDeleteSession,
|
|
293
288
|
cancelDeleteSession: sidebar.cancelDeleteSession,
|
|
294
|
-
// Working directory history
|
|
295
|
-
workDirHistory, workDirHistoryOpen,
|
|
296
|
-
selectWorkDirHistory: sidebar.selectWorkDirHistory,
|
|
297
|
-
removeWorkDirHistory: sidebar.removeWorkDirHistory,
|
|
298
|
-
toggleWorkDirHistory: sidebar.toggleWorkDirHistory,
|
|
299
|
-
selectRecentDir: sidebar.selectRecentDir,
|
|
300
289
|
// Authentication
|
|
301
290
|
authRequired, authPassword, authError, authAttempts, authLocked,
|
|
302
291
|
submitPassword,
|
|
@@ -632,23 +621,6 @@ const App = {
|
|
|
632
621
|
</button>
|
|
633
622
|
<input class="folder-picker-path-input" type="text" v-model="folderPickerPath" @keydown.enter="folderPickerGoToPath" placeholder="Enter path..." spellcheck="false" />
|
|
634
623
|
</div>
|
|
635
|
-
<div v-if="workDirHistory.length > 0" class="folder-picker-recent">
|
|
636
|
-
<div class="folder-picker-recent-label">Recent</div>
|
|
637
|
-
<div
|
|
638
|
-
v-for="dir in workDirHistory" :key="dir"
|
|
639
|
-
:class="['folder-picker-recent-item', { active: dir === workDir }]"
|
|
640
|
-
@click="selectRecentDir(dir)"
|
|
641
|
-
:title="dir"
|
|
642
|
-
>
|
|
643
|
-
<svg viewBox="0 0 24 24" width="13" height="13"><path fill="currentColor" d="M13 3a9 9 0 0 0-9 9H1l3.89 3.89.07.14L9 12H6c0-3.87 3.13-7 7-7s7 3.13 7 7-3.13 7-7 7c-1.93 0-3.68-.79-4.94-2.06l-1.42 1.42A8.954 8.954 0 0 0 13 21a9 9 0 0 0 0-18zm-1 5v5l4.28 2.54.72-1.21-3.5-2.08V8H12z"/></svg>
|
|
644
|
-
<span class="folder-picker-recent-path">{{ dir }}</span>
|
|
645
|
-
<button
|
|
646
|
-
class="folder-picker-recent-remove"
|
|
647
|
-
@click.stop="removeWorkDirHistory(dir)"
|
|
648
|
-
title="Remove from history"
|
|
649
|
-
>×</button>
|
|
650
|
-
</div>
|
|
651
|
-
</div>
|
|
652
624
|
<div class="folder-picker-list">
|
|
653
625
|
<div v-if="folderPickerLoading" class="folder-picker-loading">
|
|
654
626
|
<div class="history-loading-spinner"></div>
|
|
@@ -185,8 +185,7 @@ export function createConnection(deps) {
|
|
|
185
185
|
hostname.value = msg.agent.hostname || '';
|
|
186
186
|
workDir.value = msg.agent.workDir;
|
|
187
187
|
agentVersion.value = msg.agent.version || '';
|
|
188
|
-
|
|
189
|
-
const savedDir = localStorage.getItem('agentlink-workdir');
|
|
188
|
+
const savedDir = localStorage.getItem(`agentlink-workdir-${sessionId.value}`);
|
|
190
189
|
if (savedDir && savedDir !== msg.agent.workDir) {
|
|
191
190
|
wsSend({ type: 'change_workdir', workDir: savedDir });
|
|
192
191
|
}
|
|
@@ -381,8 +380,7 @@ export function createConnection(deps) {
|
|
|
381
380
|
if (msg.dirPath != null) folderPickerPath.value = msg.dirPath;
|
|
382
381
|
} else if (msg.type === 'workdir_changed') {
|
|
383
382
|
workDir.value = msg.workDir;
|
|
384
|
-
localStorage.setItem(
|
|
385
|
-
sidebar.addToWorkDirHistory(msg.workDir);
|
|
383
|
+
localStorage.setItem(`agentlink-workdir-${sessionId.value}`, msg.workDir);
|
|
386
384
|
messages.value = [];
|
|
387
385
|
toolMsgMap.clear();
|
|
388
386
|
visibleLimit.value = 50;
|
package/web/modules/sidebar.js
CHANGED
|
@@ -31,53 +31,6 @@ export function createSidebar(deps) {
|
|
|
31
31
|
folderPickerLoading, folderPickerSelected, streaming,
|
|
32
32
|
} = deps;
|
|
33
33
|
|
|
34
|
-
// ── Working directory history ──
|
|
35
|
-
|
|
36
|
-
const WORKDIR_HISTORY_KEY = 'agentlink-workdir-history';
|
|
37
|
-
const MAX_HISTORY = 10;
|
|
38
|
-
const workDirHistory = deps.workDirHistory;
|
|
39
|
-
const workDirHistoryOpen = deps.workDirHistoryOpen;
|
|
40
|
-
|
|
41
|
-
// Load from localStorage on init
|
|
42
|
-
try {
|
|
43
|
-
const saved = localStorage.getItem(WORKDIR_HISTORY_KEY);
|
|
44
|
-
if (saved) workDirHistory.value = JSON.parse(saved);
|
|
45
|
-
} catch { /* ignore */ }
|
|
46
|
-
|
|
47
|
-
function addToWorkDirHistory(dir) {
|
|
48
|
-
if (!dir) return;
|
|
49
|
-
const list = workDirHistory.value.filter(d => d !== dir);
|
|
50
|
-
list.unshift(dir);
|
|
51
|
-
if (list.length > MAX_HISTORY) list.length = MAX_HISTORY;
|
|
52
|
-
workDirHistory.value = list;
|
|
53
|
-
localStorage.setItem(WORKDIR_HISTORY_KEY, JSON.stringify(list));
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function selectWorkDirHistory(dir) {
|
|
57
|
-
workDirHistoryOpen.value = false;
|
|
58
|
-
if (dir === workDir.value) return;
|
|
59
|
-
wsSend({ type: 'change_workdir', workDir: dir });
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function selectRecentDir(dir) {
|
|
63
|
-
if (dir === workDir.value) {
|
|
64
|
-
folderPickerOpen.value = false;
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
folderPickerOpen.value = false;
|
|
68
|
-
wsSend({ type: 'change_workdir', workDir: dir });
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function removeWorkDirHistory(dir) {
|
|
72
|
-
const list = workDirHistory.value.filter(d => d !== dir);
|
|
73
|
-
workDirHistory.value = list;
|
|
74
|
-
localStorage.setItem(WORKDIR_HISTORY_KEY, JSON.stringify(list));
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
function toggleWorkDirHistory() {
|
|
78
|
-
workDirHistoryOpen.value = !workDirHistoryOpen.value;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
34
|
// ── Session management ──
|
|
82
35
|
|
|
83
36
|
function requestSessionList() {
|
|
@@ -254,8 +207,6 @@ export function createSidebar(deps) {
|
|
|
254
207
|
return {
|
|
255
208
|
requestSessionList, resumeSession, newConversation, toggleSidebar,
|
|
256
209
|
deleteSession, confirmDeleteSession, cancelDeleteSession,
|
|
257
|
-
addToWorkDirHistory, selectWorkDirHistory, removeWorkDirHistory, toggleWorkDirHistory,
|
|
258
|
-
selectRecentDir,
|
|
259
210
|
openFolderPicker, folderPickerNavigateUp, folderPickerSelectItem,
|
|
260
211
|
folderPickerEnter, folderPickerGoToPath, confirmFolderPicker,
|
|
261
212
|
groupedSessions,
|
package/web/style.css
CHANGED
|
@@ -1845,77 +1845,6 @@ body {
|
|
|
1845
1845
|
cursor: not-allowed;
|
|
1846
1846
|
}
|
|
1847
1847
|
|
|
1848
|
-
/* ── Folder Picker: Recent directories ── */
|
|
1849
|
-
.folder-picker-recent {
|
|
1850
|
-
border-bottom: 1px solid var(--border);
|
|
1851
|
-
padding: 6px 0;
|
|
1852
|
-
}
|
|
1853
|
-
|
|
1854
|
-
.folder-picker-recent-label {
|
|
1855
|
-
padding: 4px 16px 2px;
|
|
1856
|
-
font-size: 0.7rem;
|
|
1857
|
-
font-weight: 600;
|
|
1858
|
-
text-transform: uppercase;
|
|
1859
|
-
letter-spacing: 0.04em;
|
|
1860
|
-
color: var(--text-secondary);
|
|
1861
|
-
}
|
|
1862
|
-
|
|
1863
|
-
.folder-picker-recent-item {
|
|
1864
|
-
display: flex;
|
|
1865
|
-
align-items: center;
|
|
1866
|
-
gap: 8px;
|
|
1867
|
-
padding: 5px 16px;
|
|
1868
|
-
font-size: 0.82rem;
|
|
1869
|
-
cursor: pointer;
|
|
1870
|
-
color: var(--text-primary);
|
|
1871
|
-
transition: background 0.1s;
|
|
1872
|
-
user-select: none;
|
|
1873
|
-
}
|
|
1874
|
-
|
|
1875
|
-
.folder-picker-recent-item:hover {
|
|
1876
|
-
background: var(--bg-tertiary);
|
|
1877
|
-
}
|
|
1878
|
-
|
|
1879
|
-
.folder-picker-recent-item.active {
|
|
1880
|
-
color: var(--accent);
|
|
1881
|
-
}
|
|
1882
|
-
|
|
1883
|
-
.folder-picker-recent-item svg {
|
|
1884
|
-
flex-shrink: 0;
|
|
1885
|
-
color: var(--text-secondary);
|
|
1886
|
-
}
|
|
1887
|
-
|
|
1888
|
-
.folder-picker-recent-item.active svg {
|
|
1889
|
-
color: var(--accent);
|
|
1890
|
-
}
|
|
1891
|
-
|
|
1892
|
-
.folder-picker-recent-path {
|
|
1893
|
-
flex: 1;
|
|
1894
|
-
overflow: hidden;
|
|
1895
|
-
text-overflow: ellipsis;
|
|
1896
|
-
white-space: nowrap;
|
|
1897
|
-
}
|
|
1898
|
-
|
|
1899
|
-
.folder-picker-recent-remove {
|
|
1900
|
-
background: none;
|
|
1901
|
-
border: none;
|
|
1902
|
-
color: var(--text-secondary);
|
|
1903
|
-
font-size: 1rem;
|
|
1904
|
-
cursor: pointer;
|
|
1905
|
-
padding: 0 4px;
|
|
1906
|
-
line-height: 1;
|
|
1907
|
-
opacity: 0;
|
|
1908
|
-
transition: opacity 0.15s, color 0.15s;
|
|
1909
|
-
}
|
|
1910
|
-
|
|
1911
|
-
.folder-picker-recent-item:hover .folder-picker-recent-remove {
|
|
1912
|
-
opacity: 1;
|
|
1913
|
-
}
|
|
1914
|
-
|
|
1915
|
-
.folder-picker-recent-remove:hover {
|
|
1916
|
-
color: var(--error);
|
|
1917
|
-
}
|
|
1918
|
-
|
|
1919
1848
|
/* ── File Upload: Attachment Bar ── */
|
|
1920
1849
|
.attachment-bar {
|
|
1921
1850
|
display: flex;
|