@monster-orange/den 0.4.11 → 0.4.13
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/CHANGELOG.md +169 -0
- package/README.md +7 -7
- package/docs/distributions.md +212 -12
- package/package.json +2 -1
- package/src/shared/agents/catalog.ts +77 -0
- package/src/shared/agents/default-pack/be-dev.md +1 -0
- package/src/shared/agents/default-pack/devops.md +1 -0
- package/src/shared/agents/default-pack/fe-dev.md +1 -0
- package/src/shared/agents/default-pack/orchestrator.md +3 -1
- package/src/shared/agents/default-pack/planner.md +1 -0
- package/src/shared/agents/default-pack/reviewer.md +1 -0
- package/src/shared/agents/default-pack/tester.md +16 -0
- package/src/shared/agents/default-pack/ux-designer.md +1 -0
- package/src/shared/agents/den-claude.ts +151 -17
- package/src/shared/agents/permissions.ts +108 -0
- package/src/shared/agents/persona-store.ts +286 -0
- package/src/shared/agents/personas.ts +116 -12
- package/src/shared/agents/records.ts +57 -0
- package/src/shared/agents/roles.ts +288 -0
- package/src/shared/agents/runtime.ts +49 -0
- package/src/shared/agents/session-name.ts +110 -0
- package/src/shared/agents/transcript-follow.ts +180 -0
- package/src/shared/den-config.ts +27 -1
- package/src/ui/cli/agent-ops.ts +578 -11
- package/src/ui/cli/agents-command.ts +12 -2
- package/src/ui/cli/env-probe.ts +4 -1
- package/src/ui/mcp/tools.ts +1 -1
- package/src/ui/server/agent-paths.ts +52 -0
- package/src/ui/server/agent-routes.ts +329 -19
- package/src/ui/server/agents-layout-pref.ts +43 -0
- package/src/ui/server/editor-open-pref.ts +41 -0
- package/src/ui/server/index.ts +22 -0
- package/src/ui/server/public/agent-start.js +3 -2
- package/src/ui/server/public/agents-page.js +1037 -67
- package/src/ui/server/public/agents-section.js +1 -1
- package/src/ui/server/public/agents.html +236 -20
- package/src/ui/server/public/header.js +2 -0
- package/src/ui/server/public/i18n/es.js +139 -0
- package/src/ui/server/public/i18n/ja.js +139 -0
- package/src/ui/server/public/persona-ui.css +539 -0
- package/src/ui/server/public/persona-ui.js +796 -0
- package/src/ui/server/public/settings-page.js +4 -9
- package/src/ui/server/public/settings-registry.js +66 -0
- package/src/ui/server/public/settings.html +1 -0
- package/src/ui/server/public/shell.js +137 -0
- package/src/ui/server/public/term-input.js +129 -0
- package/src/ui/server/public/topbar.js +22 -4
- package/src/ui/server/route-classes.ts +29 -0
- package/src/ui/server/session-routes.ts +34 -1
- package/src/ui/server/ui-assets.ts +8 -0
|
@@ -316,6 +316,7 @@
|
|
|
316
316
|
"set.language": "言語",
|
|
317
317
|
"set.appearance.org-theme": "組織の既定テーマ",
|
|
318
318
|
"set.editor": "既定の IDE",
|
|
319
|
+
"set.editor.open": "ファイルリンクを開くエディター",
|
|
319
320
|
"set.editor_overrides": "言語ごとの IDE",
|
|
320
321
|
"set.terminal": "既定のターミナル",
|
|
321
322
|
"set.shell.pages": "ページ",
|
|
@@ -330,6 +331,7 @@
|
|
|
330
331
|
"set.graph.panelWidth": "詳細パネル",
|
|
331
332
|
"set.workspace.editor": "このワークスペースの IDE",
|
|
332
333
|
"set.agents.runtimes": "ランタイム",
|
|
334
|
+
"set.agents.layout": "エージェントタブのレイアウト",
|
|
333
335
|
"set.cli.local_dev": "ローカル環境",
|
|
334
336
|
"set.cli.cli_tabs": "ターミナルのタブ",
|
|
335
337
|
"set.cli.log_window_lines": "ログ欄の行数",
|
|
@@ -423,6 +425,126 @@
|
|
|
423
425
|
"ag.resumeAll": "すべて再開",
|
|
424
426
|
"ag.review": "確認",
|
|
425
427
|
"ag.resumedAll": "エージェント {n} 件を再開しました",
|
|
428
|
+
"pe.configFirst":
|
|
429
|
+
"先に設定を直してください。ペルソナは設定から読み込まれます。",
|
|
430
|
+
"ag.new.title": "エージェントを開始",
|
|
431
|
+
"rt.missingLine": "このマシンで見つからないもの:",
|
|
432
|
+
"rt.install": "インストール…",
|
|
433
|
+
// The Start dialog and personas (AG-10 to AG-13).
|
|
434
|
+
"ag.new.what": "ペルソナとは?",
|
|
435
|
+
"ag.new.details": "詳細: {n}",
|
|
436
|
+
"ag.new.hide": "詳細を隠す",
|
|
437
|
+
"ag.new.newP": "+ 新しいペルソナ",
|
|
438
|
+
"ag.new.plain": "通常のセッション",
|
|
439
|
+
"ag.new.plainP":
|
|
440
|
+
"ワークスペースのフォルダーで開くターミナル。エージェントなし。",
|
|
441
|
+
"ag.new.task": "最初の指示(任意)",
|
|
442
|
+
"ag.new.taskPh":
|
|
443
|
+
"例: 空の状態のストーリーを担当。デザインに合わせ、テストを追加する。",
|
|
444
|
+
"ag.new.adv": "詳細設定: モデルと権限",
|
|
445
|
+
"ag.new.advNote":
|
|
446
|
+
"既定値はペルソナのものです。ここでの変更はこのセッションだけに適用され、一覧でセッションに印が付きます。",
|
|
447
|
+
"ag.new.model": "モデル",
|
|
448
|
+
"ag.new.modelDef": "ペルソナの既定({m})",
|
|
449
|
+
"ag.new.ver": "バージョン",
|
|
450
|
+
"ag.new.verDef": "ペルソナの既定({v})",
|
|
451
|
+
"ag.new.note":
|
|
452
|
+
"ワークスペースのフォルダーで開始します。ペインを閉じても実行は続きます。",
|
|
453
|
+
"ag.new.started": "{w} で {p} を開始しました",
|
|
454
|
+
"pm.ask": "すべて確認する",
|
|
455
|
+
"pm.edits": "ワークツリー内の編集を自動承認",
|
|
456
|
+
"pm.all": "すべて自動承認",
|
|
457
|
+
"pm.tag.ask": "すべて確認",
|
|
458
|
+
"pm.tag.edits": "編集を自動承認",
|
|
459
|
+
"pm.tag.all": "すべて自動承認",
|
|
460
|
+
"ov.runtime": "ランタイム: {r}",
|
|
461
|
+
"ov.model": "モデル: {m}",
|
|
462
|
+
"ov.latest": "最新",
|
|
463
|
+
"ov.tools": "カスタムツール",
|
|
464
|
+
"pe.what":
|
|
465
|
+
"ペルソナは保存されたエージェントの設定です。ロール、指示、既定のランタイムとモデル、確認なしで実行できることをまとめたものです。同じロールで名前の違うものを複数持てます。",
|
|
466
|
+
"pe.preset": "ロールのプリセット",
|
|
467
|
+
"pe.extra": "追加で許可するコマンド",
|
|
468
|
+
"pe.extraS": "追加",
|
|
469
|
+
"pe.extraP":
|
|
470
|
+
"コマンドの先頭部分を1行に1つ。パターンや正規表現は使えません。Den が各ランタイム向けに変換します。",
|
|
471
|
+
"pe.allows": "{r} で許可されること",
|
|
472
|
+
"pe.ns": "{r} では未対応",
|
|
473
|
+
"pe.nsMode": "{r} はまだ Den から権限モードを受け取れません",
|
|
474
|
+
"pe.nsModel": "{r} は Den からモデルを受け取りません",
|
|
475
|
+
"pe.nsPat": "パターンではなく単純な先頭部分を使ってください",
|
|
476
|
+
"pe.nsBad": "単純な先頭部分ではありません",
|
|
477
|
+
"pe.badCmd":
|
|
478
|
+
"「{c}」は単純なコマンドの先頭部分ではありません。英字、数字、単一の空白と . _ / : = @ % + , - を使ってください",
|
|
479
|
+
"pe.raw": "ランタイムの設定を直接編集…",
|
|
480
|
+
"pe.rawLater": "ランタイムの設定ファイルを開く機能は今後追加されます。",
|
|
481
|
+
"pe.vendor": "ベンダー固有",
|
|
482
|
+
"pe.instr": "指示",
|
|
483
|
+
"pe.runtime": "既定のランタイム",
|
|
484
|
+
"pe.model": "モデル",
|
|
485
|
+
"pe.ver": "バージョン",
|
|
486
|
+
"pe.rtDefault": "ランタイムの既定",
|
|
487
|
+
"pe.perms": "権限モード",
|
|
488
|
+
"pe.noneCmd": "なし",
|
|
489
|
+
"pe.loading": "読み込み中…",
|
|
490
|
+
"pe.loadFail": "ペルソナを読み込めませんでした。",
|
|
491
|
+
"pe.src.builtin": "組み込み",
|
|
492
|
+
"pe.src.distribution": "ディストリビューション",
|
|
493
|
+
"pe.src.local": "自分の",
|
|
494
|
+
"pe.src.hub": "hub",
|
|
495
|
+
"pe.src.builtin.p":
|
|
496
|
+
"Den に含まれています。ここでは読み取り専用です。複製してカスタマイズしてください。",
|
|
497
|
+
"pe.src.distribution.p":
|
|
498
|
+
"ディストリビューションに含まれています。ここでは読み取り専用です。複製してカスタマイズしてください。",
|
|
499
|
+
"pe.src.local.p": "このマシン上のあなたのものです。",
|
|
500
|
+
"pe.src.hub.p": "Den Hub で共有されています。ここでは読み取り専用です。",
|
|
501
|
+
"pe.new": "新しいペルソナ",
|
|
502
|
+
"pe.dupT": "ペルソナを複製",
|
|
503
|
+
"pe.edit": "ペルソナを編集",
|
|
504
|
+
"pe.dup": "複製",
|
|
505
|
+
"pe.editB": "編集",
|
|
506
|
+
"pe.view": "表示",
|
|
507
|
+
"pe.save": "ペルソナを保存",
|
|
508
|
+
"pe.del": "削除",
|
|
509
|
+
"pe.deleted": "{n} を削除しました",
|
|
510
|
+
"pe.name": "名前",
|
|
511
|
+
"pe.nameP": "例: Rita",
|
|
512
|
+
"pe.role": "ロール",
|
|
513
|
+
"pe.roleHelp":
|
|
514
|
+
"ロールはこのペルソナの初期テンプレートを決め、Den が作業を割り当てられるようにします。指示に隠れた内容は追加しません。",
|
|
515
|
+
"pe.desc": "1行の説明",
|
|
516
|
+
"pe.cat": "カテゴリー",
|
|
517
|
+
"pe.copy": "{n}(コピー)",
|
|
518
|
+
"pe.saved": "{n} を保存しました",
|
|
519
|
+
"pe.ro": "ここでは読み取り専用です。複製すると自分用のコピーを作れます。",
|
|
520
|
+
"pf.search": "名前、ロール、説明でペルソナを検索",
|
|
521
|
+
"pf.cat": "カテゴリー",
|
|
522
|
+
"pf.src": "提供元",
|
|
523
|
+
"pf.all": "すべて",
|
|
524
|
+
"pf.none":
|
|
525
|
+
"一致するペルソナはありません。フィルターを解除するか、新しく作成してください。",
|
|
526
|
+
"pf.clear": "フィルターを解除",
|
|
527
|
+
"cat.engineering": "エンジニアリング",
|
|
528
|
+
"cat.design": "デザイン",
|
|
529
|
+
"cat.product": "プロダクト",
|
|
530
|
+
"cat.marketing": "マーケティング",
|
|
531
|
+
"cat.operations": "オペレーション",
|
|
532
|
+
"rt.installed": "インストール済み",
|
|
533
|
+
"rt.missing": "未インストール",
|
|
534
|
+
"rt.notInst": "{r} は未インストール",
|
|
535
|
+
"rt.later": "今後",
|
|
536
|
+
"rt.fallback":
|
|
537
|
+
"{p} の既定のランタイム {r} はここにインストールされていないため、{f} で開始します。",
|
|
538
|
+
"ver.latest": "最新",
|
|
539
|
+
"ver.latestP": "最新(新しいリリースに追従)",
|
|
540
|
+
"ver.newer": "新しい版あり",
|
|
541
|
+
"ver.newerP":
|
|
542
|
+
"このモデルの新しいバージョンがあります。変更するまでこのバージョンに固定されます。",
|
|
543
|
+
"ver.newerOf": "新しい版: {v}",
|
|
544
|
+
"ver.use": "最新を使う",
|
|
545
|
+
"ver.pinned": "{v} に固定",
|
|
546
|
+
"ver.usedLatest": "{n} は最新バージョンに追従します",
|
|
547
|
+
"set.agents.personas": "ペルソナ",
|
|
426
548
|
// The Agents tab (AG-4a-term, agents-page.js).
|
|
427
549
|
"n.agents": "エージェント",
|
|
428
550
|
"kind.agent": "エージェント",
|
|
@@ -455,6 +577,23 @@
|
|
|
455
577
|
"ag.palStart": "エージェントを開始…",
|
|
456
578
|
"ag.cap":
|
|
457
579
|
"ペインは最大 4 つです。{id} のペインを閉じました(実行は続きます)",
|
|
580
|
+
"ag.layout": "レイアウト",
|
|
581
|
+
"ag.l.focus": "フォーカス",
|
|
582
|
+
"ag.l.tabs": "タブ",
|
|
583
|
+
"ag.l.tile": "タイル",
|
|
584
|
+
"ag.l.tip": "{name}({key})",
|
|
585
|
+
"ag.hint.keys":
|
|
586
|
+
"⌃⇧1 / ⌃⇧2 / ⌃⇧3 でレイアウトを切り替えます。⌘ クリック(Ctrl クリック)でリンクやパスを開きます。",
|
|
587
|
+
"ag.pal.layout": "レイアウト: {name}",
|
|
588
|
+
"ag.copied": "コピーしました",
|
|
589
|
+
"ag.tabs": "開いているセッション",
|
|
590
|
+
"ag.hint.focus":
|
|
591
|
+
"クリックで 1 つのセッションを表示します。Shift か ⌘ を押しながらクリックすると横に追加します。",
|
|
592
|
+
"ag.hint.tabs":
|
|
593
|
+
"クリックでセッションをタブで開きます。タブをダブルクリックすると名前を変えられます。",
|
|
594
|
+
"ag.hint.tile": "クリックでセッションをタイルに追加します(最大 4)。",
|
|
595
|
+
"ag.renameTip": "ダブルクリックで名前を変更",
|
|
596
|
+
"ag.renameName": "{id} の名前を変更",
|
|
458
597
|
"ag.rt.ready": "{name} {version} を起動:",
|
|
459
598
|
"ag.rt.readyNoVer": "{name} を起動:",
|
|
460
599
|
"ag.rt.notFound": "{name} が見つかりません。",
|
|
@@ -0,0 +1,539 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The Start dialog's persona picker, the persona editor and Settings ›
|
|
3
|
+
* Personas (persona-ui.js). Sizes are the Den Shell prototype's
|
|
4
|
+
* (den-merge-notes/shell-proto/den-shell.html: .dlg.wide, .plist, .pr,
|
|
5
|
+
* .pfbar, .pgh, .pmode, .pv, .pdet), its colors mapped onto the theme's
|
|
6
|
+
* tokens (--r-btn is --radius-button). tests/unit/server/
|
|
7
|
+
* start-dialog.browser.test.ts measures them.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
/* The editor's frame where agents.html's dialog styles aren't loaded. */
|
|
11
|
+
dialog.pe-dlg {
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
/* The prototype's base (.app: 14px/1.45): labels, rows and chips take
|
|
14
|
+
their line height from it. */
|
|
15
|
+
font: 14px/1.45 var(--sans);
|
|
16
|
+
width: min(638px, calc(100vw - 32px));
|
|
17
|
+
max-width: none;
|
|
18
|
+
max-height: calc(100vh - 32px);
|
|
19
|
+
overflow-y: auto;
|
|
20
|
+
background: var(--raised);
|
|
21
|
+
color: var(--text);
|
|
22
|
+
border: 1px solid var(--border-strong);
|
|
23
|
+
border-radius: 12px;
|
|
24
|
+
box-shadow: var(--shadow);
|
|
25
|
+
padding: 18px 18px 14px;
|
|
26
|
+
}
|
|
27
|
+
dialog.pe-dlg::backdrop {
|
|
28
|
+
background: rgb(0 0 0 / 0.35);
|
|
29
|
+
}
|
|
30
|
+
.pe-dlg form {
|
|
31
|
+
display: grid;
|
|
32
|
+
grid-template-columns: minmax(0, 1fr);
|
|
33
|
+
gap: 12px;
|
|
34
|
+
}
|
|
35
|
+
.pe-dlg h2 {
|
|
36
|
+
margin: 0;
|
|
37
|
+
font: 600 17px var(--display);
|
|
38
|
+
}
|
|
39
|
+
.pe-dlg p {
|
|
40
|
+
margin: 0;
|
|
41
|
+
color: var(--muted);
|
|
42
|
+
font-size: 13.5px;
|
|
43
|
+
}
|
|
44
|
+
.pe-dlg .help {
|
|
45
|
+
margin: 0;
|
|
46
|
+
font: 12.5px/1.45 var(--sans);
|
|
47
|
+
color: var(--muted);
|
|
48
|
+
}
|
|
49
|
+
.pe-dlg .err {
|
|
50
|
+
margin: 0;
|
|
51
|
+
font: 12.5px/1.45 var(--sans);
|
|
52
|
+
color: var(--bad);
|
|
53
|
+
overflow-wrap: anywhere;
|
|
54
|
+
}
|
|
55
|
+
/* Hidden wins over a field's grid. */
|
|
56
|
+
.pe-dlg [hidden] {
|
|
57
|
+
display: none !important;
|
|
58
|
+
}
|
|
59
|
+
.pe-dlg .btns {
|
|
60
|
+
display: flex;
|
|
61
|
+
gap: 8px;
|
|
62
|
+
align-items: center;
|
|
63
|
+
flex-wrap: wrap;
|
|
64
|
+
/* AG-10.0: the footer stays in sight while the dialog scrolls. */
|
|
65
|
+
position: sticky;
|
|
66
|
+
bottom: -14px;
|
|
67
|
+
margin-bottom: -14px;
|
|
68
|
+
padding-bottom: 14px;
|
|
69
|
+
background: var(--raised);
|
|
70
|
+
}
|
|
71
|
+
.pe-dlg .btns .sp {
|
|
72
|
+
margin-right: auto;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/* A field: the 11px mono caps label over its control (.dlg .fld). */
|
|
76
|
+
.pe-dlg .fld {
|
|
77
|
+
display: grid;
|
|
78
|
+
gap: 6px;
|
|
79
|
+
font-size: 13px;
|
|
80
|
+
min-width: 0;
|
|
81
|
+
text-transform: none;
|
|
82
|
+
letter-spacing: 0;
|
|
83
|
+
color: var(--text);
|
|
84
|
+
}
|
|
85
|
+
.pe-dlg .fld > span,
|
|
86
|
+
.pe-dlg .fldh > .k {
|
|
87
|
+
font: 11px/1.45 var(--mono);
|
|
88
|
+
color: var(--faint);
|
|
89
|
+
text-transform: uppercase;
|
|
90
|
+
letter-spacing: 0.07em;
|
|
91
|
+
}
|
|
92
|
+
.pe-dlg .two {
|
|
93
|
+
display: grid;
|
|
94
|
+
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
95
|
+
gap: 10px;
|
|
96
|
+
}
|
|
97
|
+
@media (max-width: 520px) {
|
|
98
|
+
.pe-dlg .two {
|
|
99
|
+
grid-template-columns: minmax(0, 1fr);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
.pe-dlg select,
|
|
103
|
+
.pe-dlg input[type="text"],
|
|
104
|
+
.pe-dlg input[type="search"] {
|
|
105
|
+
box-sizing: border-box;
|
|
106
|
+
/* The prototype's controls keep the browser's own line box: 31px for a
|
|
107
|
+
select, 30 for a text field (padding 6, a 1px border). */
|
|
108
|
+
height: 31px;
|
|
109
|
+
width: 100%;
|
|
110
|
+
min-width: 0;
|
|
111
|
+
font: 13px/1.45 var(--sans);
|
|
112
|
+
text-transform: none;
|
|
113
|
+
letter-spacing: 0;
|
|
114
|
+
border: 1px solid var(--border);
|
|
115
|
+
background: var(--bg);
|
|
116
|
+
color: var(--text);
|
|
117
|
+
border-radius: var(--radius-button);
|
|
118
|
+
padding: 6px 8px;
|
|
119
|
+
}
|
|
120
|
+
.pe-dlg textarea {
|
|
121
|
+
box-sizing: border-box;
|
|
122
|
+
width: 100%;
|
|
123
|
+
border: 1px solid var(--border);
|
|
124
|
+
background: var(--bg);
|
|
125
|
+
color: var(--text);
|
|
126
|
+
border-radius: var(--radius-button);
|
|
127
|
+
padding: 8px;
|
|
128
|
+
font: 13px/1.5 var(--sans);
|
|
129
|
+
text-transform: none;
|
|
130
|
+
letter-spacing: 0;
|
|
131
|
+
resize: vertical;
|
|
132
|
+
min-height: 96px;
|
|
133
|
+
}
|
|
134
|
+
.pe-dlg select:disabled,
|
|
135
|
+
.pe-dlg input:disabled,
|
|
136
|
+
.pe-dlg textarea:disabled {
|
|
137
|
+
opacity: 0.75;
|
|
138
|
+
}
|
|
139
|
+
.pe-dlg details {
|
|
140
|
+
border: 1px solid var(--border);
|
|
141
|
+
border-radius: var(--radius-button);
|
|
142
|
+
padding: 8px 10px;
|
|
143
|
+
}
|
|
144
|
+
.pe-dlg details summary {
|
|
145
|
+
cursor: pointer;
|
|
146
|
+
font-size: 13px;
|
|
147
|
+
color: var(--muted);
|
|
148
|
+
}
|
|
149
|
+
.pe-dlg details[open] > summary {
|
|
150
|
+
margin-bottom: 8px;
|
|
151
|
+
}
|
|
152
|
+
.pe-dlg details.xtra {
|
|
153
|
+
padding: 6px 10px;
|
|
154
|
+
}
|
|
155
|
+
.pe-dlg details.xtra textarea {
|
|
156
|
+
display: block;
|
|
157
|
+
margin-bottom: 4px;
|
|
158
|
+
min-height: 64px;
|
|
159
|
+
font: 12px/1.5 var(--mono);
|
|
160
|
+
}
|
|
161
|
+
.pe-dlg .adv-body {
|
|
162
|
+
display: grid;
|
|
163
|
+
gap: 10px;
|
|
164
|
+
}
|
|
165
|
+
.pe-dlg .adv-body > p {
|
|
166
|
+
margin: 0;
|
|
167
|
+
}
|
|
168
|
+
.pe-dlg .pblk {
|
|
169
|
+
display: grid;
|
|
170
|
+
gap: 12px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.helpl {
|
|
174
|
+
font-size: 12px;
|
|
175
|
+
color: var(--faint);
|
|
176
|
+
line-height: 1.4;
|
|
177
|
+
}
|
|
178
|
+
.helpl .mono {
|
|
179
|
+
font: 11.5px/1.4 var(--mono);
|
|
180
|
+
}
|
|
181
|
+
.helpl.warn {
|
|
182
|
+
color: var(--warn);
|
|
183
|
+
}
|
|
184
|
+
.faint {
|
|
185
|
+
color: var(--faint);
|
|
186
|
+
}
|
|
187
|
+
.fldh {
|
|
188
|
+
display: flex;
|
|
189
|
+
align-items: baseline;
|
|
190
|
+
gap: 12px;
|
|
191
|
+
flex-wrap: wrap;
|
|
192
|
+
}
|
|
193
|
+
.fldh .sp {
|
|
194
|
+
margin-left: auto;
|
|
195
|
+
}
|
|
196
|
+
.lnk {
|
|
197
|
+
color: var(--accent-text);
|
|
198
|
+
cursor: pointer;
|
|
199
|
+
font: 12.5px/1.45 var(--sans);
|
|
200
|
+
text-decoration: underline;
|
|
201
|
+
text-transform: none;
|
|
202
|
+
letter-spacing: 0;
|
|
203
|
+
background: none;
|
|
204
|
+
border: 0;
|
|
205
|
+
padding: 0;
|
|
206
|
+
}
|
|
207
|
+
.lnk[aria-disabled="true"] {
|
|
208
|
+
opacity: 0.6;
|
|
209
|
+
cursor: default;
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/* The filter bar (AG-10.4). */
|
|
213
|
+
.pfbar {
|
|
214
|
+
display: grid;
|
|
215
|
+
gap: 6px;
|
|
216
|
+
}
|
|
217
|
+
.pe-dlg input[type="text"] {
|
|
218
|
+
height: 30px;
|
|
219
|
+
}
|
|
220
|
+
.pfbar input[type="search"] {
|
|
221
|
+
box-sizing: border-box;
|
|
222
|
+
height: 29px;
|
|
223
|
+
width: 100%;
|
|
224
|
+
border: 1px solid var(--border);
|
|
225
|
+
background: var(--bg);
|
|
226
|
+
color: var(--text);
|
|
227
|
+
border-radius: var(--radius-button);
|
|
228
|
+
padding: 6px 10px;
|
|
229
|
+
font: 13px/1.45 var(--sans);
|
|
230
|
+
}
|
|
231
|
+
.pfrow {
|
|
232
|
+
display: flex;
|
|
233
|
+
gap: 4px;
|
|
234
|
+
flex-wrap: wrap;
|
|
235
|
+
align-items: center;
|
|
236
|
+
}
|
|
237
|
+
.pfrow .lab {
|
|
238
|
+
font: 11px/1.45 var(--mono);
|
|
239
|
+
color: var(--faint);
|
|
240
|
+
text-transform: uppercase;
|
|
241
|
+
letter-spacing: 0.06em;
|
|
242
|
+
margin-right: 2px;
|
|
243
|
+
}
|
|
244
|
+
.pfc {
|
|
245
|
+
border: 1px solid var(--border);
|
|
246
|
+
background: var(--surface);
|
|
247
|
+
color: var(--muted);
|
|
248
|
+
border-radius: 999px;
|
|
249
|
+
padding: 1px 10px;
|
|
250
|
+
font: 12.5px/1.45 var(--sans);
|
|
251
|
+
cursor: pointer;
|
|
252
|
+
}
|
|
253
|
+
.pfc[aria-pressed="true"] {
|
|
254
|
+
border-color: var(--accent);
|
|
255
|
+
color: var(--text);
|
|
256
|
+
background: color-mix(in srgb, var(--accent) 14%, transparent);
|
|
257
|
+
}
|
|
258
|
+
.pfc .c {
|
|
259
|
+
color: var(--faint);
|
|
260
|
+
font: 11px/1.45 var(--mono);
|
|
261
|
+
margin-left: 4px;
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/* The list: radios grouped by category (.plist, .pr, .pgh). */
|
|
265
|
+
.plist {
|
|
266
|
+
display: grid;
|
|
267
|
+
gap: 4px;
|
|
268
|
+
max-height: 260px;
|
|
269
|
+
overflow-y: auto;
|
|
270
|
+
border: 1px solid var(--border);
|
|
271
|
+
border-radius: var(--radius-button);
|
|
272
|
+
padding: 4px;
|
|
273
|
+
background: var(--bg);
|
|
274
|
+
}
|
|
275
|
+
.pr {
|
|
276
|
+
display: grid;
|
|
277
|
+
grid-template-columns: 16px minmax(0, 1fr) auto;
|
|
278
|
+
gap: 0 8px;
|
|
279
|
+
align-items: center;
|
|
280
|
+
width: 100%;
|
|
281
|
+
text-align: left;
|
|
282
|
+
border: 1px solid transparent;
|
|
283
|
+
background: none;
|
|
284
|
+
border-radius: var(--radius-button);
|
|
285
|
+
padding: 6px 8px;
|
|
286
|
+
cursor: pointer;
|
|
287
|
+
color: var(--text);
|
|
288
|
+
font: 13px/1.45 var(--sans);
|
|
289
|
+
text-transform: none;
|
|
290
|
+
letter-spacing: 0;
|
|
291
|
+
}
|
|
292
|
+
.pr:hover {
|
|
293
|
+
background: var(--sunken);
|
|
294
|
+
}
|
|
295
|
+
.pr[aria-checked="true"] {
|
|
296
|
+
border-color: var(--accent);
|
|
297
|
+
background: color-mix(in srgb, var(--accent) 10%, transparent);
|
|
298
|
+
}
|
|
299
|
+
.pr .rd {
|
|
300
|
+
box-sizing: border-box;
|
|
301
|
+
width: 12px;
|
|
302
|
+
height: 12px;
|
|
303
|
+
border-radius: 50%;
|
|
304
|
+
border: 1.5px solid var(--border-strong);
|
|
305
|
+
}
|
|
306
|
+
.pr[aria-checked="true"] .rd {
|
|
307
|
+
border-color: var(--accent);
|
|
308
|
+
background: radial-gradient(var(--accent) 45%, transparent 50%);
|
|
309
|
+
}
|
|
310
|
+
.pr .pn,
|
|
311
|
+
.prow .pn {
|
|
312
|
+
font-weight: 500;
|
|
313
|
+
min-width: 0;
|
|
314
|
+
overflow: hidden;
|
|
315
|
+
text-overflow: ellipsis;
|
|
316
|
+
white-space: nowrap;
|
|
317
|
+
}
|
|
318
|
+
.pr .pn .role,
|
|
319
|
+
.prow .pn .role {
|
|
320
|
+
color: var(--faint);
|
|
321
|
+
font-weight: 400;
|
|
322
|
+
}
|
|
323
|
+
.pr .pd {
|
|
324
|
+
grid-column: 2 / 4;
|
|
325
|
+
font-size: 12.5px;
|
|
326
|
+
color: var(--muted);
|
|
327
|
+
}
|
|
328
|
+
.pgh {
|
|
329
|
+
font: 11px/1.45 var(--mono);
|
|
330
|
+
color: var(--faint);
|
|
331
|
+
text-transform: uppercase;
|
|
332
|
+
letter-spacing: 0.07em;
|
|
333
|
+
padding: 8px 8px 2px;
|
|
334
|
+
display: flex;
|
|
335
|
+
justify-content: space-between;
|
|
336
|
+
}
|
|
337
|
+
.pempty {
|
|
338
|
+
padding: 10px 8px;
|
|
339
|
+
color: var(--muted);
|
|
340
|
+
font-size: 12.5px;
|
|
341
|
+
}
|
|
342
|
+
/* A tag (agents.html's, for the pages that don't have it: Settings). */
|
|
343
|
+
.tagx {
|
|
344
|
+
font: 10px var(--mono);
|
|
345
|
+
color: var(--faint);
|
|
346
|
+
border: 1px dashed var(--border-strong);
|
|
347
|
+
border-radius: 4px;
|
|
348
|
+
padding: 0 4px;
|
|
349
|
+
font-weight: 400;
|
|
350
|
+
white-space: nowrap;
|
|
351
|
+
}
|
|
352
|
+
.tagx.warn {
|
|
353
|
+
color: var(--warn);
|
|
354
|
+
border-color: color-mix(in srgb, var(--warn) 55%, transparent);
|
|
355
|
+
}
|
|
356
|
+
.tagx.src-local {
|
|
357
|
+
color: var(--accent-text);
|
|
358
|
+
border-color: color-mix(in srgb, var(--accent) 50%, transparent);
|
|
359
|
+
}
|
|
360
|
+
.tagx.src-distribution {
|
|
361
|
+
color: var(--muted);
|
|
362
|
+
border-style: solid;
|
|
363
|
+
}
|
|
364
|
+
.tagx.src-hub {
|
|
365
|
+
color: var(--remote, var(--accent-text));
|
|
366
|
+
border-color: color-mix(
|
|
367
|
+
in srgb,
|
|
368
|
+
var(--remote, var(--accent)) 50%,
|
|
369
|
+
transparent
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/* Details (AG-10.6) and "What's a persona?". */
|
|
374
|
+
.pdet {
|
|
375
|
+
border: 1px solid var(--border);
|
|
376
|
+
border-radius: var(--radius-button);
|
|
377
|
+
background: var(--sunken);
|
|
378
|
+
padding: 10px 12px;
|
|
379
|
+
display: grid;
|
|
380
|
+
gap: 6px;
|
|
381
|
+
font: 12.5px/1.45 var(--sans);
|
|
382
|
+
color: var(--text);
|
|
383
|
+
text-transform: none;
|
|
384
|
+
letter-spacing: 0;
|
|
385
|
+
}
|
|
386
|
+
.pdet .k {
|
|
387
|
+
font: 11px/1.45 var(--mono);
|
|
388
|
+
color: var(--faint);
|
|
389
|
+
text-transform: uppercase;
|
|
390
|
+
letter-spacing: 0.06em;
|
|
391
|
+
}
|
|
392
|
+
.pdet pre {
|
|
393
|
+
margin: 0;
|
|
394
|
+
white-space: pre-wrap;
|
|
395
|
+
overflow-wrap: anywhere;
|
|
396
|
+
font: 12px/1.5 var(--mono);
|
|
397
|
+
color: var(--text);
|
|
398
|
+
max-height: 200px;
|
|
399
|
+
overflow-y: auto;
|
|
400
|
+
}
|
|
401
|
+
.pdet .why {
|
|
402
|
+
color: var(--muted);
|
|
403
|
+
}
|
|
404
|
+
.pdet .mono,
|
|
405
|
+
.pv .mono {
|
|
406
|
+
font-family: var(--mono);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
/* The permission block (AG-13). */
|
|
410
|
+
.seg.pmode {
|
|
411
|
+
display: grid;
|
|
412
|
+
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
413
|
+
border: 1px solid var(--border);
|
|
414
|
+
border-radius: var(--radius-button);
|
|
415
|
+
overflow: hidden;
|
|
416
|
+
}
|
|
417
|
+
.seg.pmode button {
|
|
418
|
+
text-align: center;
|
|
419
|
+
background: none;
|
|
420
|
+
border: 0;
|
|
421
|
+
padding: 6px 12px;
|
|
422
|
+
cursor: pointer;
|
|
423
|
+
color: var(--muted);
|
|
424
|
+
font: 13px/1.45 var(--sans);
|
|
425
|
+
}
|
|
426
|
+
.seg.pmode button + button {
|
|
427
|
+
border-left: 1px solid var(--border);
|
|
428
|
+
}
|
|
429
|
+
.seg.pmode button[aria-pressed="true"] {
|
|
430
|
+
background: color-mix(in srgb, var(--accent) 16%, transparent);
|
|
431
|
+
color: var(--text);
|
|
432
|
+
font-weight: 500;
|
|
433
|
+
}
|
|
434
|
+
.seg.pmode button:disabled {
|
|
435
|
+
cursor: default;
|
|
436
|
+
}
|
|
437
|
+
.pchips {
|
|
438
|
+
display: flex;
|
|
439
|
+
flex-wrap: wrap;
|
|
440
|
+
gap: 4px;
|
|
441
|
+
text-transform: none;
|
|
442
|
+
letter-spacing: 0;
|
|
443
|
+
}
|
|
444
|
+
.pchip {
|
|
445
|
+
font: 11.5px/1.45 var(--mono);
|
|
446
|
+
color: var(--text);
|
|
447
|
+
border: 1px solid var(--border);
|
|
448
|
+
border-radius: 999px;
|
|
449
|
+
padding: 0 8px;
|
|
450
|
+
background: var(--surface);
|
|
451
|
+
}
|
|
452
|
+
.pvw {
|
|
453
|
+
display: grid;
|
|
454
|
+
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
|
|
455
|
+
gap: 8px;
|
|
456
|
+
}
|
|
457
|
+
.pv {
|
|
458
|
+
border: 1px solid var(--border);
|
|
459
|
+
border-radius: var(--radius-button);
|
|
460
|
+
background: var(--sunken);
|
|
461
|
+
padding: 8px 10px;
|
|
462
|
+
font: 12.5px/1.45 var(--sans);
|
|
463
|
+
color: var(--text);
|
|
464
|
+
min-width: 0;
|
|
465
|
+
text-transform: none;
|
|
466
|
+
letter-spacing: 0;
|
|
467
|
+
}
|
|
468
|
+
.pv ul {
|
|
469
|
+
margin: 4px 0 0;
|
|
470
|
+
padding-left: 16px;
|
|
471
|
+
display: grid;
|
|
472
|
+
gap: 2px;
|
|
473
|
+
}
|
|
474
|
+
.pv .mono {
|
|
475
|
+
font-size: 11.5px;
|
|
476
|
+
overflow-wrap: anywhere;
|
|
477
|
+
}
|
|
478
|
+
.pv .gone {
|
|
479
|
+
text-decoration: line-through;
|
|
480
|
+
color: var(--faint);
|
|
481
|
+
}
|
|
482
|
+
.pv .src {
|
|
483
|
+
color: var(--faint);
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/* Settings › Personas. */
|
|
487
|
+
.pe-set {
|
|
488
|
+
display: grid;
|
|
489
|
+
gap: 8px;
|
|
490
|
+
}
|
|
491
|
+
.pe-set .plist {
|
|
492
|
+
max-height: none;
|
|
493
|
+
}
|
|
494
|
+
.prow {
|
|
495
|
+
display: grid;
|
|
496
|
+
grid-template-columns: minmax(0, 1fr) auto;
|
|
497
|
+
gap: 2px 8px;
|
|
498
|
+
padding: 8px 10px;
|
|
499
|
+
border: 1px solid var(--border);
|
|
500
|
+
border-radius: var(--radius-button);
|
|
501
|
+
background: var(--surface);
|
|
502
|
+
font-size: 13px;
|
|
503
|
+
}
|
|
504
|
+
.prow .pd {
|
|
505
|
+
grid-column: 1;
|
|
506
|
+
font-size: 12.5px;
|
|
507
|
+
color: var(--muted);
|
|
508
|
+
}
|
|
509
|
+
.prow .pm {
|
|
510
|
+
grid-column: 1;
|
|
511
|
+
font-size: 12px;
|
|
512
|
+
color: var(--faint);
|
|
513
|
+
}
|
|
514
|
+
.prow .pm .mono {
|
|
515
|
+
font-family: var(--mono);
|
|
516
|
+
}
|
|
517
|
+
.prow .pa {
|
|
518
|
+
grid-column: 2;
|
|
519
|
+
grid-row: 1 / 4;
|
|
520
|
+
display: flex;
|
|
521
|
+
gap: 4px;
|
|
522
|
+
align-items: center;
|
|
523
|
+
flex-wrap: wrap;
|
|
524
|
+
justify-content: flex-end;
|
|
525
|
+
}
|
|
526
|
+
@media (max-width: 520px) {
|
|
527
|
+
.prow {
|
|
528
|
+
grid-template-columns: minmax(0, 1fr);
|
|
529
|
+
}
|
|
530
|
+
.prow .pa {
|
|
531
|
+
grid-column: 1;
|
|
532
|
+
grid-row: auto;
|
|
533
|
+
justify-content: flex-start;
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
.den-btn.sm {
|
|
537
|
+
padding: 2px 9px;
|
|
538
|
+
font-size: 12.5px;
|
|
539
|
+
}
|