@oddessentials/agent-guild 0.4.0 → 0.5.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/web/index.html CHANGED
@@ -16,6 +16,7 @@
16
16
  <div class="brand">
17
17
  <svg class="brand-mark" viewBox="0 0 32 32" aria-hidden="true"><rect width="32" height="32" rx="8" fill="currentColor"/><path d="M9 22l7-12 7 12" stroke="#fff" stroke-width="3" fill="none" stroke-linecap="round" stroke-linejoin="round"/></svg>
18
18
  <h1>Agent Guild</h1>
19
+ <span id="version" class="version" hidden></span>
19
20
  </div>
20
21
  <div class="topbar-end">
21
22
  <div id="connection" class="connection" role="status" aria-live="polite">
@@ -24,6 +25,7 @@
24
25
  <span id="upgrade-note" class="upgrade-note" hidden></span>
25
26
  <button id="upgrade" class="btn upgrade" type="button" hidden></button>
26
27
  <button id="theme-toggle" class="btn theme-toggle" type="button"></button>
28
+ <button id="restart-manager" class="btn restart-manager" type="button" hidden>Restart manager</button>
27
29
  <button id="stop-manager" class="btn danger stop-manager" type="button" hidden title="Stop the session manager. This ends every session.">Stop manager</button>
28
30
  </div>
29
31
  </header>
@@ -73,9 +75,15 @@
73
75
  <section id="stopped" class="auth notice" hidden aria-live="polite">
74
76
  <h2 id="stopped-title">Stopping the session manager…</h2>
75
77
  <p id="stopped-text">Ending every session. This can take a few seconds.</p>
76
- <p>To start again, run this command or double-click the launcher:</p>
77
- <pre>agent-guild open</pre>
78
- <p>This page reconnects by itself when the manager is back.</p>
78
+ <div id="stopped-help" class="stopped-help" hidden>
79
+ <p id="stopped-how">To start again, open a terminal and run:</p>
80
+ <div class="command">
81
+ <pre>agent-guild open</pre>
82
+ <button id="copy-command" class="btn" type="button" title="Copy the command">Copy</button>
83
+ </div>
84
+ <p id="stopped-launcher" hidden>Or double-click <code id="stopped-launcher-path"></code> in your file manager.</p>
85
+ <p>This page reconnects by itself when the manager is back.</p>
86
+ </div>
79
87
  </section>
80
88
 
81
89
  <div id="terminal-panel" class="terminal-panel" hidden role="dialog" aria-modal="false" aria-labelledby="panel-title">
@@ -131,6 +139,30 @@
131
139
  <p id="news-status" class="news-status" hidden></p>
132
140
  </dialog>
133
141
 
142
+ <dialog id="history" class="models history" aria-labelledby="history-title">
143
+ <div class="models-bar">
144
+ <span id="history-icon" class="provider-icon small"></span>
145
+ <div class="models-heading">
146
+ <h2 id="history-title"></h2>
147
+ <p id="history-sub" class="sub"></p>
148
+ </div>
149
+ <button id="history-close" class="btn" type="button">Close</button>
150
+ </div>
151
+ <div class="history-tools">
152
+ <input id="history-filter" type="search" placeholder="Filter by title, folder or id" aria-label="Filter sessions" spellcheck="false" autocomplete="off">
153
+ <label class="history-here"><input id="history-here" type="checkbox"><span>Working folder only</span></label>
154
+ </div>
155
+ <div class="models-body">
156
+ <div id="history-list" class="history-list" role="list"></div>
157
+ <p id="history-note" class="models-note"></p>
158
+ </div>
159
+ <form id="history-form" class="history-form">
160
+ <label for="history-id">Resume by id</label>
161
+ <input id="history-id" type="text" placeholder="Session id or name" spellcheck="false" autocomplete="off">
162
+ <button type="submit" class="btn">Resume</button>
163
+ </form>
164
+ </dialog>
165
+
134
166
  <div id="tip" class="tip" aria-hidden="true" hidden><strong id="tip-title"></strong><span id="tip-source"></span><p id="tip-text"></p></div>
135
167
 
136
168
  <div id="toast" class="toast" role="alert" hidden></div>
@@ -194,6 +226,17 @@
194
226
  </section>
195
227
  </template>
196
228
 
229
+ <template id="history-template">
230
+ <article class="history-row" role="listitem">
231
+ <div class="history-main">
232
+ <div class="history-title"></div>
233
+ <div class="history-meta"></div>
234
+ </div>
235
+ <button class="session-id" type="button"></button>
236
+ <button class="btn primary history-resume" type="button"></button>
237
+ </article>
238
+ </template>
239
+
197
240
  <template id="session-template">
198
241
  <article class="session-card" role="listitem" tabindex="0">
199
242
  <span class="level-badge" aria-hidden="true"></span>
@@ -201,7 +244,7 @@
201
244
  <span class="provider-icon"></span>
202
245
  <div class="card-title">
203
246
  <div class="name"></div>
204
- <div class="meta"></div>
247
+ <div class="meta"><span class="meta-text"></span><button class="session-id" type="button" hidden></button></div>
205
248
  </div>
206
249
  <button class="model-pill" type="button"></button>
207
250
  <span class="status-pill"></span>
@@ -213,6 +256,7 @@
213
256
  </div>
214
257
  <div class="card-actions">
215
258
  <button class="btn primary open" type="button">Open</button>
259
+ <button class="btn resume" type="button" hidden>Resume</button>
216
260
  <button class="btn rename" type="button">Rename</button>
217
261
  <button class="btn danger stop" type="button">Stop</button>
218
262
  <button class="btn remove" type="button">Remove</button>
package/web/styles.css CHANGED
@@ -49,6 +49,10 @@ code, pre { font-family: ui-monospace, "Cascadia Code", Menlo, Consolas, monospa
49
49
  }
50
50
  .brand { display: flex; align-items: center; gap: 10px; }
51
51
  .brand-mark { width: 26px; height: 26px; color: var(--accent); flex: none; }
52
+ .version {
53
+ font-size: 0.72rem; font-weight: 600; padding: 1px 7px; border-radius: 999px; white-space: nowrap;
54
+ background: var(--surface-2); color: var(--muted); border: 1px solid var(--border); font-variant-numeric: tabular-nums;
55
+ }
52
56
  .topbar-end { display: flex; align-items: center; justify-content: flex-end; gap: 14px; flex-wrap: wrap; min-width: 0; }
53
57
  .connection { display: flex; align-items: center; gap: 8px; color: var(--muted); font-size: 0.85rem; }
54
58
  .connection .dot { width: 8px; height: 8px; border-radius: 50%; background: var(--warn); }
@@ -249,8 +253,8 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
249
253
  .btn.danger { color: var(--danger); }
250
254
  .btn.danger:hover { border-color: var(--danger); }
251
255
  .btn:disabled { opacity: 0.6; cursor: progress; }
252
- .stop-manager, .theme-toggle, .upgrade { white-space: nowrap; }
253
- .btn.upgrade { color: var(--warn); border-color: var(--warn); }
256
+ .stop-manager, .restart-manager, .theme-toggle, .upgrade { white-space: nowrap; }
257
+ .btn.upgrade, .btn.restart-manager.pending { color: var(--warn); border-color: var(--warn); }
254
258
  .upgrade-note { font-size: 0.85rem; color: var(--warn); }
255
259
 
256
260
  .empty { color: var(--muted); margin: 8px 0 0; }
@@ -259,8 +263,12 @@ main { max-width: 1200px; margin: 0 auto; padding: 20px 16px 48px; display: grid
259
263
  .auth p { margin: 0; color: var(--muted); line-height: 1.5; }
260
264
  .auth pre { margin: 0; padding: 10px 12px; background: var(--surface-2); border-radius: 8px; }
261
265
  .auth form { display: flex; gap: 8px; }
266
+ .stopped-help { display: grid; gap: 12px; }
267
+ .command { display: flex; align-items: center; gap: 8px; }
268
+ .command pre { flex: 1; min-width: 0; overflow-x: auto; }
269
+ .stopped-help code { color: var(--text); overflow-wrap: anywhere; }
262
270
  .notice h2 { color: var(--danger); }
263
- .notice.stopping h2 { color: var(--warn); }
271
+ .notice.stopping h2, .notice.restarting h2 { color: var(--warn); }
264
272
  .error { color: var(--danger); min-height: 1.2em; }
265
273
 
266
274
  .terminal-panel {
@@ -394,6 +402,38 @@ a.news-link:visited { color: var(--muted); }
394
402
  .news-status { margin: 0; padding: 10px 14px; border-top: 1px solid var(--border); color: var(--muted); font-size: 0.75rem; line-height: 1.45; }
395
403
  .news-status span { display: block; }
396
404
 
405
+ .history-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 10px 14px 0; }
406
+ .history-tools input[type="search"] {
407
+ flex: 1 1 220px; min-width: 0; padding: 7px 10px; border-radius: 8px; border: 1px solid var(--border);
408
+ background: var(--surface); color: var(--text); font: inherit; font-size: 0.9rem;
409
+ }
410
+ .history-tools input:focus-visible, .history-form input:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
411
+ .history-here { display: flex; align-items: center; gap: 6px; font-size: 0.8rem; color: var(--muted); white-space: nowrap; cursor: pointer; }
412
+ .history-here:has(input:disabled) { opacity: 0.6; cursor: default; }
413
+ .history .models-body { padding-top: 6px; }
414
+ .history-row {
415
+ display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: 4px 12px;
416
+ padding: 10px 8px; border-bottom: 1px solid var(--border);
417
+ }
418
+ .history-main { min-width: 0; }
419
+ .history-title { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
420
+ .history-row.untitled .history-title { font-weight: 500; color: var(--muted); }
421
+ .history-meta { color: var(--muted); font-size: 0.78rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
422
+ .history-row.running .history-meta { color: var(--ok); }
423
+ .session-id {
424
+ font-family: ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, monospace; font-size: 0.72rem; padding: 2px 7px;
425
+ border-radius: 6px; border: 1px solid var(--border); background: var(--surface-2); color: var(--muted); cursor: copy; white-space: nowrap;
426
+ }
427
+ .session-id:hover { color: var(--text); border-color: var(--muted); }
428
+ .session-id:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
429
+ .card-title .meta { display: flex; align-items: center; gap: 8px; min-width: 0; }
430
+ .card-title .meta-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
431
+ .history-form { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-top: 1px solid var(--border); font-size: 0.85rem; color: var(--muted); }
432
+ .history-form input {
433
+ flex: 1; min-width: 0; padding: 6px 10px; border-radius: 8px; border: 1px solid var(--border);
434
+ background: var(--surface); color: var(--text); font: inherit; font-size: 0.85rem;
435
+ }
436
+
397
437
  .toast {
398
438
  position: fixed; left: 50%; bottom: 20px; transform: translateX(-50%); z-index: 20;
399
439
  max-width: min(640px, calc(100vw - 32px)); padding: 10px 14px; border-radius: 8px;
@@ -427,4 +467,7 @@ a.news-link:visited { color: var(--muted); }
427
467
  .news-row { flex-wrap: wrap; }
428
468
  .news-row .news-link { flex-basis: 100%; white-space: normal; }
429
469
  .news-panel { border-left: 0; }
470
+ .history-row { grid-template-columns: minmax(0, 1fr) auto; }
471
+ .history-row .session-id { grid-row: 2; justify-self: start; }
472
+ .history-form { flex-wrap: wrap; }
430
473
  }