@zq-silk/yui 2.0.0 → 2.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.
- package/dist/cli/commandCatalog.js +294 -286
- package/dist/cli/commandDiscovery.js +69 -0
- package/dist/cli/completion.js +22 -227
- package/dist/cli/dynamicCompletion.js +12 -6
- package/dist/cli/invocationAuthority.js +2 -2
- package/dist/cli/invocationRouter.js +18 -7
- package/dist/cli.js +71 -23
- package/dist/commands/capabilityCommands.js +5 -5
- package/dist/commands/globalRoleCommands.js +2 -1
- package/dist/commands/taskCommands.js +11 -0
- package/dist/context/taskContext.js +6 -2
- package/dist/kernel/accessAssessment.js +1 -0
- package/dist/kernel/builtinCapabilities.js +28 -1
- package/dist/kernel/capabilityRegistry.js +64 -19
- package/dist/nativeAgent/agent.js +173 -0
- package/dist/nativeAgent/contracts.js +1 -0
- package/dist/nativeAgent/demo.js +29 -0
- package/dist/nativeAgent/index.js +3 -0
- package/dist/nativeAgent/mockProvider.js +43 -0
- package/dist/nativeAgent/textTools.js +156 -0
- package/dist/nativeAgent/validation.js +95 -0
- package/dist/plugins/pluginService.js +98 -8
- package/dist/resources/projectResourceService.js +23 -1
- package/dist/runtime/managedIdentity.js +6 -0
- package/dist/surface/surfaceContributions.js +3 -0
- package/dist/task/taskAuthority.js +5 -10
- package/dist/web/assets/assetManifest.js +38 -22
- package/dist/web/assets/client/api.js +115 -0
- package/dist/web/assets/client/app.js +555 -863
- package/dist/web/assets/client/components.js +323 -897
- package/dist/web/assets/client/detail.js +333 -0
- package/dist/web/assets/client/dock.js +225 -0
- package/dist/web/assets/client/dom.js +55 -3
- package/dist/web/assets/client/evidence.js +172 -0
- package/dist/web/assets/client/format.js +25 -14
- package/dist/web/assets/client/forms.js +230 -0
- package/dist/web/assets/client/i18n.js +1020 -791
- package/dist/web/assets/client/overview.js +115 -0
- package/dist/web/assets/client/records.js +63 -0
- package/dist/web/assets/client/sections.js +313 -0
- package/dist/web/assets/client/sidebar.js +117 -0
- package/dist/web/assets/client/theme.js +61 -22
- package/dist/web/assets/icons.js +39 -0
- package/dist/web/assets/shell.js +124 -118
- package/dist/web/assets/styles/base.js +41 -0
- package/dist/web/assets/styles/components.js +167 -0
- package/dist/web/assets/styles/layout.js +49 -77
- package/dist/web/assets/styles/markdown.js +16 -24
- package/dist/web/assets/styles/responsive.js +33 -44
- package/dist/web/assets/styles/tokens.js +65 -89
- package/dist/web/assets/styles/views.js +289 -0
- package/dist/web/webServer.js +2 -1
- package/docs/release-workflow.md +23 -0
- package/docs/release-workflow.zh-CN.md +16 -0
- package/package.json +1 -1
- package/skills/yui-runtime/SKILL.md +26 -0
- package/dist/web/assets/client/taskSummary.js +0 -350
- package/dist/web/assets/client/taskSurface.js +0 -616
- package/dist/web/assets/client/view.js +0 -608
- package/dist/web/assets/styles/cards.js +0 -247
- package/dist/web/assets/styles/widgets.js +0 -168
|
@@ -1,101 +1,77 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* DESIGN
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* theme
|
|
7
|
-
* tokens, so switching (or adding) a theme can never change layout, sizing, or
|
|
8
|
-
* position. Layout / component / responsive styles reference these variables
|
|
9
|
-
* only — never hardcode a color outside a theme block.
|
|
2
|
+
* DESIGN TOKENS
|
|
3
|
+
* -------------
|
|
4
|
+
* Geometry, type, spacing and motion are theme-independent and live once on
|
|
5
|
+
* :root. A theme block defines colour and effect tokens only, so switching a
|
|
6
|
+
* theme can never move or resize anything.
|
|
10
7
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
8
|
+
* Themes
|
|
9
|
+
* sumi (墨) graphite dark, vermilion accent — default dark
|
|
10
|
+
* washi (和紙) warm paper light, vermilion accent — default light
|
|
11
|
+
* ai (藍) deep indigo dark, periwinkle accent
|
|
12
|
+
* "system" is not a token block: client/theme.ts resolves it to sumi or washi
|
|
13
|
+
* from prefers-color-scheme and stamps the resolved name on <html>.
|
|
15
14
|
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* Type --font-mono --font-display --font-body
|
|
19
|
-
* Metrics --page-space --sidebar-w --terminal-w
|
|
20
|
-
* Motion --motion-fast --motion-slow --ease
|
|
21
|
-
*
|
|
22
|
-
* Per-theme ([data-theme="..."], color only)
|
|
23
|
-
* Surfaces --bg --bg-1 --bg-2 --bg-3 (page → elevated layers)
|
|
24
|
-
* Lines --border --border-strong
|
|
25
|
-
* Text --text --muted --faint
|
|
26
|
-
* Accent --accent --accent-2 --on-accent --accent-soft --accent-line
|
|
27
|
-
* Semantic --active/--success/--warning/--danger (+ matching --*-soft)
|
|
28
|
-
* Effects --glow --shadow-card --shadow-pop --ambient
|
|
15
|
+
* To add a theme: add a [data-theme="name"] block defining every colour token
|
|
16
|
+
* below, then register the name in client/theme.ts and the settings menu.
|
|
29
17
|
*/
|
|
30
18
|
export const TOKEN_STYLES = `
|
|
31
|
-
/* Theme-independent layout tokens — shared by every theme (see contract above).
|
|
32
|
-
Never move these into a [data-theme] block. */
|
|
33
19
|
:root{
|
|
34
|
-
--
|
|
35
|
-
--font-mono:"JetBrains Mono","SFMono-Regular",Consolas,monospace;
|
|
36
|
-
--
|
|
37
|
-
--
|
|
38
|
-
--
|
|
39
|
-
--
|
|
40
|
-
|
|
41
|
-
:
|
|
42
|
-
color-scheme:dark;
|
|
43
|
-
--bg:#080b11;--bg-1:#0c111a;--bg-2:#111826;--bg-3:#182132;
|
|
44
|
-
--border:#1e2836;--border-strong:#2f3d50;
|
|
45
|
-
--text:#e8eef6;--muted:#8b99ad;--faint:#5a6779;
|
|
46
|
-
--accent:#49d6ff;--accent-2:#a78bfa;--on-accent:#05121b;
|
|
47
|
-
--accent-soft:rgba(73,214,255,.1);--accent-line:rgba(73,214,255,.34);
|
|
48
|
-
--active:#49d6ff;--active-soft:rgba(73,214,255,.12);
|
|
49
|
-
--success:#43d98d;--success-soft:rgba(67,217,141,.12);
|
|
50
|
-
--warning:#ffca6b;--warning-soft:rgba(255,202,107,.12);
|
|
51
|
-
--danger:#ff6b81;--danger-soft:rgba(255,107,129,.12);
|
|
52
|
-
--glow:0 0 18px rgba(73,214,255,.45);
|
|
53
|
-
--shadow-card:0 1px 2px rgba(0,0,0,.32),0 4px 12px rgba(0,0,0,.18);
|
|
54
|
-
--shadow-pop:0 18px 48px rgba(0,0,0,.5);
|
|
55
|
-
--ambient:
|
|
56
|
-
radial-gradient(1000px 560px at 8% -12%,rgba(73,214,255,.12),transparent 58%),
|
|
57
|
-
radial-gradient(900px 520px at 104% -6%,rgba(167,139,250,.12),transparent 55%),
|
|
58
|
-
linear-gradient(rgba(255,255,255,.022) 1px,transparent 1px) 0 0/100% 44px,
|
|
59
|
-
linear-gradient(90deg,rgba(255,255,255,.022) 1px,transparent 1px) 0 0/44px 100%;
|
|
20
|
+
--font-sans:"Inter",ui-sans-serif,system-ui,-apple-system,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
|
|
21
|
+
--font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;
|
|
22
|
+
--fs-2xs:10.5px;--fs-xs:11.5px;--fs-sm:12.5px;--fs-md:13.5px;--fs-lg:15px;--fs-xl:19px;--fs-2xl:24px;
|
|
23
|
+
--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;
|
|
24
|
+
--r-xs:5px;--r-sm:7px;--r-md:10px;--r-lg:14px;--r-pill:999px;
|
|
25
|
+
--sidebar-w:clamp(260px,21vw,312px);--dock-w:440px;--dock-min:320px;--divider-w:9px;
|
|
26
|
+
--center-max:980px;--header-h:56px;
|
|
27
|
+
--t-fast:120ms;--t-med:220ms;--ease:cubic-bezier(.2,.8,.2,1);
|
|
60
28
|
}
|
|
61
|
-
[data-theme="
|
|
29
|
+
:root,[data-theme="sumi"]{
|
|
62
30
|
color-scheme:dark;
|
|
63
|
-
--
|
|
64
|
-
--
|
|
65
|
-
--
|
|
66
|
-
--accent:#
|
|
67
|
-
--
|
|
68
|
-
--
|
|
69
|
-
--
|
|
70
|
-
--
|
|
71
|
-
--
|
|
72
|
-
--
|
|
73
|
-
--shadow-
|
|
74
|
-
--
|
|
75
|
-
--
|
|
76
|
-
radial-gradient(1000px 560px at 10% -14%,rgba(56,225,212,.11),transparent 58%),
|
|
77
|
-
radial-gradient(900px 520px at 106% -6%,rgba(124,171,242,.1),transparent 55%),
|
|
78
|
-
linear-gradient(rgba(230,242,251,.018) 1px,transparent 1px) 0 0/100% 44px,
|
|
79
|
-
linear-gradient(90deg,rgba(230,242,251,.018) 1px,transparent 1px) 0 0/44px 100%;
|
|
31
|
+
--canvas:#0e0f11;--surface:#141518;--surface-2:#191a1e;--surface-3:#202126;--sunken:#0b0c0d;
|
|
32
|
+
--line:rgba(255,255,255,.065);--line-2:rgba(255,255,255,.11);--line-3:rgba(255,255,255,.18);
|
|
33
|
+
--ink:#ececee;--ink-2:#b4b5bb;--ink-3:#85868e;--ink-4:#5c5d64;
|
|
34
|
+
--accent:#ff7a52;--accent-ink:#1a0c06;--accent-soft:rgba(255,122,82,.12);--accent-line:rgba(255,122,82,.38);
|
|
35
|
+
--info:#6cb6ff;--info-soft:rgba(108,182,255,.13);
|
|
36
|
+
--ok:#4fd18b;--ok-soft:rgba(79,209,139,.13);
|
|
37
|
+
--warn:#f5c065;--warn-soft:rgba(245,192,101,.14);
|
|
38
|
+
--bad:#ff6b7a;--bad-soft:rgba(255,107,122,.13);
|
|
39
|
+
--idle:#8e8f97;--idle-soft:rgba(142,143,151,.14);
|
|
40
|
+
--shadow-1:0 1px 0 rgba(255,255,255,.03) inset,0 1px 2px rgba(0,0,0,.35);
|
|
41
|
+
--shadow-2:0 12px 40px rgba(0,0,0,.5),0 2px 8px rgba(0,0,0,.35);
|
|
42
|
+
--focus:0 0 0 2px var(--canvas),0 0 0 4px var(--accent-line);
|
|
43
|
+
--term-bg:#0b0c0d;--term-fg:#e6e6e8;--term-cursor:#ff7a52;--term-sel:#3a2a24;
|
|
80
44
|
}
|
|
81
|
-
[data-theme="
|
|
45
|
+
[data-theme="washi"]{
|
|
82
46
|
color-scheme:light;
|
|
83
|
-
--
|
|
84
|
-
--
|
|
85
|
-
--
|
|
86
|
-
--accent:#
|
|
87
|
-
--
|
|
88
|
-
--
|
|
89
|
-
--
|
|
90
|
-
--
|
|
91
|
-
--
|
|
92
|
-
--
|
|
93
|
-
--shadow-
|
|
94
|
-
--
|
|
95
|
-
--
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
47
|
+
--canvas:#f4f2ed;--surface:#fbfaf7;--surface-2:#ffffff;--surface-3:#f1eee7;--sunken:#ebe8e0;
|
|
48
|
+
--line:rgba(40,32,20,.08);--line-2:rgba(40,32,20,.13);--line-3:rgba(40,32,20,.22);
|
|
49
|
+
--ink:#1d1b18;--ink-2:#45413b;--ink-3:#77726a;--ink-4:#a39e95;
|
|
50
|
+
--accent:#d24a26;--accent-ink:#ffffff;--accent-soft:rgba(210,74,38,.09);--accent-line:rgba(210,74,38,.34);
|
|
51
|
+
--info:#1f6fd1;--info-soft:rgba(31,111,209,.09);
|
|
52
|
+
--ok:#17844f;--ok-soft:rgba(23,132,79,.1);
|
|
53
|
+
--warn:#a86500;--warn-soft:rgba(168,101,0,.1);
|
|
54
|
+
--bad:#c72f45;--bad-soft:rgba(199,47,69,.09);
|
|
55
|
+
--idle:#7a756c;--idle-soft:rgba(122,117,108,.11);
|
|
56
|
+
--shadow-1:0 1px 2px rgba(40,32,20,.06);
|
|
57
|
+
--shadow-2:0 16px 40px rgba(40,32,20,.16),0 2px 8px rgba(40,32,20,.08);
|
|
58
|
+
--focus:0 0 0 2px var(--canvas),0 0 0 4px var(--accent-line);
|
|
59
|
+
--term-bg:#1b1a18;--term-fg:#efece6;--term-cursor:#ff8a63;--term-sel:#4a3a32;
|
|
60
|
+
}
|
|
61
|
+
[data-theme="ai"]{
|
|
62
|
+
color-scheme:dark;
|
|
63
|
+
--canvas:#0a0e1a;--surface:#0f1424;--surface-2:#141a2e;--surface-3:#1a2139;--sunken:#080b15;
|
|
64
|
+
--line:rgba(160,180,255,.08);--line-2:rgba(160,180,255,.13);--line-3:rgba(160,180,255,.22);
|
|
65
|
+
--ink:#e7eaf6;--ink-2:#b0b7d2;--ink-3:#8088a8;--ink-4:#565e7d;
|
|
66
|
+
--accent:#8fa8ff;--accent-ink:#0a0e1a;--accent-soft:rgba(143,168,255,.13);--accent-line:rgba(143,168,255,.4);
|
|
67
|
+
--info:#6fd3ff;--info-soft:rgba(111,211,255,.12);
|
|
68
|
+
--ok:#5ad6a0;--ok-soft:rgba(90,214,160,.12);
|
|
69
|
+
--warn:#f2c46d;--warn-soft:rgba(242,196,109,.13);
|
|
70
|
+
--bad:#ff7d93;--bad-soft:rgba(255,125,147,.13);
|
|
71
|
+
--idle:#8a91ad;--idle-soft:rgba(138,145,173,.14);
|
|
72
|
+
--shadow-1:0 1px 0 rgba(255,255,255,.03) inset,0 1px 2px rgba(0,0,0,.4);
|
|
73
|
+
--shadow-2:0 14px 44px rgba(0,0,0,.55),0 2px 8px rgba(0,0,0,.4);
|
|
74
|
+
--focus:0 0 0 2px var(--canvas),0 0 0 4px var(--accent-line);
|
|
75
|
+
--term-bg:#080b15;--term-fg:#e2e6f5;--term-cursor:#8fa8ff;--term-sel:#26305a;
|
|
100
76
|
}
|
|
101
77
|
`;
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* VIEWS — styling for the concrete surfaces: sidebar index, overview, task
|
|
3
|
+
* page (header, tabs, sections, records) and the session dock.
|
|
4
|
+
*/
|
|
5
|
+
export const VIEW_STYLES = `
|
|
6
|
+
/* ---------- Sidebar ---------- */
|
|
7
|
+
.brand-mark{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:8px;background:var(--accent);color:var(--accent-ink);font-size:15px;font-weight:700;line-height:1}
|
|
8
|
+
.brand-name{font-size:var(--fs-lg);font-weight:650;letter-spacing:-.02em}
|
|
9
|
+
.sync{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;border-radius:var(--r-pill);background:var(--surface-3);color:var(--ink-3);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums}
|
|
10
|
+
.sync i{width:6px;height:6px;border-radius:50%;background:var(--ink-4)}
|
|
11
|
+
.sync[data-state="ok"] i{background:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}
|
|
12
|
+
.sync[data-state="syncing"] i{background:var(--info);animation:blink 1s ease-in-out infinite}
|
|
13
|
+
.sync[data-state="error"] i{background:var(--bad);box-shadow:0 0 0 3px var(--bad-soft)}
|
|
14
|
+
.sync[data-state="error"]{color:var(--bad)}
|
|
15
|
+
@keyframes blink{50%{opacity:.35}}
|
|
16
|
+
.search-field{position:relative;display:flex;align-items:center}
|
|
17
|
+
.search-field>.icon{position:absolute;left:10px;color:var(--ink-4);pointer-events:none}
|
|
18
|
+
.search-field input{height:34px;padding:0 34px 0 32px;border-radius:var(--r-md);background:var(--surface-2)}
|
|
19
|
+
.search-field input::-webkit-search-cancel-button{display:none}
|
|
20
|
+
.search-field kbd{position:absolute;right:8px}
|
|
21
|
+
.attention-list{display:flex;flex-wrap:wrap;gap:6px}
|
|
22
|
+
.attention-pill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 9px;border:1px solid transparent;border-radius:var(--r-pill);background:var(--tone-soft);color:var(--tone);font-size:var(--fs-xs);font-weight:500}
|
|
23
|
+
.attention-pill b{font-weight:700;font-variant-numeric:tabular-nums}
|
|
24
|
+
.attention-pill:hover{border-color:var(--tone)}
|
|
25
|
+
.attention-pill[aria-pressed="true"]{background:var(--tone);color:var(--canvas)}
|
|
26
|
+
.attention-clear{display:flex;align-items:center;gap:6px;color:var(--ink-4);font-size:var(--fs-xs)}
|
|
27
|
+
.attention-clear .icon{color:var(--ok)}
|
|
28
|
+
.tabs-row{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none;padding-bottom:2px;border-bottom:1px solid var(--line)}
|
|
29
|
+
.tabs-row::-webkit-scrollbar{display:none}
|
|
30
|
+
.status-tab{position:relative;display:inline-flex;align-items:center;gap:5px;flex:none;height:32px;padding:0 8px;border:0;background:transparent;color:var(--ink-3);font-size:var(--fs-xs);font-weight:500;white-space:nowrap}
|
|
31
|
+
.status-tab:hover{color:var(--ink)}
|
|
32
|
+
.status-tab[aria-pressed="true"]{color:var(--ink)}
|
|
33
|
+
.status-tab[aria-pressed="true"]::after{content:"";position:absolute;left:6px;right:6px;bottom:-3px;height:2px;border-radius:2px;background:var(--accent)}
|
|
34
|
+
.status-tab-count{color:var(--ink-4);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums}
|
|
35
|
+
.task-group{margin-top:10px}
|
|
36
|
+
.task-group-head{display:flex;align-items:center;gap:6px;padding:4px 8px 6px;color:var(--ink-4);font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.07em}
|
|
37
|
+
.task-group-head .count{background:transparent;padding:0;min-width:0}
|
|
38
|
+
.task-row{position:relative;display:flex;align-items:flex-start;gap:10px;width:100%;padding:9px 10px;border:0;border-radius:var(--r-md);background:transparent;text-align:left;transition:background var(--t-fast)}
|
|
39
|
+
.task-row>.dot{margin-top:6px}
|
|
40
|
+
.task-row:hover{background:var(--surface-3)}
|
|
41
|
+
.task-row[aria-current="true"]{background:var(--surface-3);box-shadow:inset 0 0 0 1px var(--line-2)}
|
|
42
|
+
.task-row[aria-current="true"]::before{content:"";position:absolute;left:-8px;top:10px;bottom:10px;width:3px;border-radius:0 3px 3px 0;background:var(--accent)}
|
|
43
|
+
.task-body{display:grid;gap:3px;flex:1;min-width:0}
|
|
44
|
+
.task-line{display:flex;align-items:center;gap:8px;min-width:0}
|
|
45
|
+
.task-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:var(--fs-md);font-weight:500}
|
|
46
|
+
.task-time{flex:none;color:var(--ink-4);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums}
|
|
47
|
+
.task-sub{gap:8px;height:18px;color:var(--ink-4);font-size:var(--fs-2xs)}
|
|
48
|
+
.task-id{font-size:var(--fs-2xs);line-height:1;color:var(--ink-3)}
|
|
49
|
+
.task-meta{display:inline-flex;align-items:center;gap:3px;line-height:1;white-space:nowrap}
|
|
50
|
+
.task-meta .icon{width:11px;height:11px}
|
|
51
|
+
.task-signals{display:inline-flex;gap:4px;margin-left:auto}
|
|
52
|
+
.signal{display:inline-flex;align-items:center;gap:3px;height:18px;padding:0 6px;border-radius:var(--r-pill);background:var(--tone-soft);color:var(--tone);font-size:10.5px;font-weight:600;font-variant-numeric:tabular-nums}
|
|
53
|
+
.signal .icon{width:11px;height:11px;stroke-width:2}
|
|
54
|
+
.list-empty{display:grid;justify-items:center;gap:8px;padding:36px 16px;color:var(--ink-4);font-size:var(--fs-sm);text-align:center}
|
|
55
|
+
.list-empty.is-error{color:var(--bad)}
|
|
56
|
+
.pager-btn{height:28px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:transparent;color:var(--ink-2);font-size:var(--fs-xs)}
|
|
57
|
+
.pager-btn:hover:not(:disabled){border-color:var(--line-3);color:var(--ink)}
|
|
58
|
+
.pager-btn:disabled{opacity:.4}
|
|
59
|
+
.pager-count{grid-column:2;text-align:center;color:var(--ink-4);font-size:var(--fs-2xs);font-variant-numeric:tabular-nums}
|
|
60
|
+
.pager-clear{height:28px;border:1px dashed var(--line-3);border-radius:var(--r-sm);background:transparent;color:var(--ink-3);font-size:var(--fs-xs)}
|
|
61
|
+
.pager-clear:hover{color:var(--accent);border-color:var(--accent-line)}
|
|
62
|
+
.foot-btn{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 10px;border:1px solid var(--line-2);border-radius:var(--r-sm);background:transparent;color:var(--ink-2);font-size:var(--fs-xs);font-weight:500;min-width:0}
|
|
63
|
+
.foot-btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
64
|
+
.foot-btn:hover{color:var(--ink);border-color:var(--line-3);background:var(--surface-3)}
|
|
65
|
+
.foot-btn[aria-pressed="true"]{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}
|
|
66
|
+
.foot-btn kbd{margin-left:2px}
|
|
67
|
+
.side-foot .foot-btn:first-child{flex:1}
|
|
68
|
+
.side-foot .icon-btn{margin-left:auto}
|
|
69
|
+
|
|
70
|
+
/* ---------- Page scaffolding ---------- */
|
|
71
|
+
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:36px 0 24px}
|
|
72
|
+
.kicker{color:var(--accent);font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.1em}
|
|
73
|
+
.page-title{margin-top:6px;font-size:var(--fs-2xl);font-weight:650;letter-spacing:-.025em}
|
|
74
|
+
.page-sub{margin-top:4px;color:var(--ink-3)}
|
|
75
|
+
.page-foot{margin-top:20px;color:var(--ink-4);font-size:var(--fs-xs);text-align:center}
|
|
76
|
+
.section{margin-top:28px;min-width:0}
|
|
77
|
+
.section-title{display:flex;align-items:center;gap:10px;margin-bottom:12px}
|
|
78
|
+
.section-title h2{display:flex;align-items:center;gap:8px;font-size:var(--fs-lg);font-weight:600}
|
|
79
|
+
.section-actions{margin-left:auto}
|
|
80
|
+
.sub-head{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:var(--fs-sm);font-weight:600}
|
|
81
|
+
|
|
82
|
+
/* ---------- Overview ---------- */
|
|
83
|
+
.metric-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-bottom:14px}
|
|
84
|
+
.metric-strip .metric{padding:14px 16px;border-radius:var(--r-lg)}
|
|
85
|
+
.metric-strip .metric-value{font-size:var(--fs-2xl)}
|
|
86
|
+
.overview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px;align-items:start}
|
|
87
|
+
.overview>.card{margin-bottom:14px}
|
|
88
|
+
.row-list{display:grid;gap:2px;margin:-4px -8px}
|
|
89
|
+
.list-row{display:flex;align-items:center;gap:10px;width:100%;min-height:38px;padding:7px 8px;border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink);text-align:left;font-size:var(--fs-sm)}
|
|
90
|
+
.list-row:hover:not(:disabled){background:var(--surface-3)}
|
|
91
|
+
.list-row:disabled{opacity:.45;cursor:default}
|
|
92
|
+
.list-row[aria-pressed="true"]{background:var(--accent-soft)}
|
|
93
|
+
.list-row-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
94
|
+
.list-row-count{font-weight:600;font-variant-numeric:tabular-nums}
|
|
95
|
+
.list-row-go{display:inline-flex;align-items:center;gap:2px;color:var(--accent);font-size:var(--fs-xs);font-weight:500}
|
|
96
|
+
.list-row-wrap{flex-wrap:wrap}
|
|
97
|
+
.list-row-wrap .chip-row{flex-basis:100%}
|
|
98
|
+
|
|
99
|
+
/* ---------- Task page ---------- */
|
|
100
|
+
.task-header{position:sticky;top:0;z-index:10;margin:0 calc(-1 * clamp(16px,3vw,40px));padding:0 clamp(16px,3vw,40px);background:color-mix(in srgb,var(--canvas) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px)}
|
|
101
|
+
.task-bar{display:flex;align-items:center;gap:6px;height:var(--header-h)}
|
|
102
|
+
.back-btn{display:none}
|
|
103
|
+
.crumbs{display:flex;align-items:center;gap:6px;min-width:0;font-size:var(--fs-sm)}
|
|
104
|
+
.crumb{padding:3px 6px;border:0;border-radius:var(--r-xs);background:transparent;color:var(--ink-3)}
|
|
105
|
+
.crumb:hover{color:var(--ink);background:var(--surface-3)}
|
|
106
|
+
.crumb-sep{color:var(--ink-4)}
|
|
107
|
+
.crumb-current{color:var(--ink-2);font-size:var(--fs-xs)}
|
|
108
|
+
.dock-toggle{height:30px}
|
|
109
|
+
.task-hero{padding:14px 0 18px}
|
|
110
|
+
.task-title{font-size:var(--fs-2xl);font-weight:650;letter-spacing:-.025em;line-height:1.25;overflow-wrap:anywhere}
|
|
111
|
+
.task-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;color:var(--ink-3);font-size:var(--fs-xs)}
|
|
112
|
+
.task-meta:empty{display:none}
|
|
113
|
+
.meta-item{display:inline-flex;align-items:center;gap:5px}
|
|
114
|
+
.meta-item .when{font-size:inherit}
|
|
115
|
+
.tabs-wrap{position:sticky;top:var(--header-h);z-index:9;margin:0 calc(-1 * clamp(16px,3vw,40px));padding:0 clamp(16px,3vw,40px);background:color-mix(in srgb,var(--canvas) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
|
|
116
|
+
.tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none}
|
|
117
|
+
.tabs::-webkit-scrollbar{display:none}
|
|
118
|
+
.tab{position:relative;display:inline-flex;align-items:center;gap:7px;flex:none;height:42px;padding:0 10px;border:0;background:transparent;color:var(--ink-3);font-size:var(--fs-sm);font-weight:500}
|
|
119
|
+
.tab:hover{color:var(--ink)}
|
|
120
|
+
.tab[aria-selected="true"]{color:var(--ink)}
|
|
121
|
+
.tab[aria-selected="true"]::after{content:"";position:absolute;left:8px;right:8px;bottom:-1px;height:2px;border-radius:2px;background:var(--accent)}
|
|
122
|
+
.tab .icon{color:var(--ink-4)}
|
|
123
|
+
.tab[aria-selected="true"] .icon{color:var(--accent)}
|
|
124
|
+
.tab:focus-visible{box-shadow:inset var(--focus)}
|
|
125
|
+
.tab-panel{padding-top:20px;min-width:0}
|
|
126
|
+
.tab-panel>.card{margin-bottom:14px}
|
|
127
|
+
.tab-panel>.section:first-child{margin-top:4px}
|
|
128
|
+
|
|
129
|
+
/* Now card */
|
|
130
|
+
.now-card{border-color:var(--line-2);background:linear-gradient(180deg,var(--surface-2),var(--surface))}
|
|
131
|
+
.now-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
|
|
132
|
+
.now-owner{color:var(--ink-2);font-size:var(--fs-sm);font-weight:500}
|
|
133
|
+
.now-summary{margin-top:10px;font-size:var(--fs-lg);line-height:1.45;color:var(--ink)}
|
|
134
|
+
.now-reason{margin-top:4px;color:var(--ink-3);font-size:var(--fs-sm)}
|
|
135
|
+
.now-note{margin-top:8px;color:var(--ink-3);font-size:var(--fs-sm)}
|
|
136
|
+
.signal-list{list-style:none;display:grid;gap:6px;margin:12px 0 0;padding:0}
|
|
137
|
+
.signal-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;padding:8px 10px;border-radius:var(--r-sm);background:var(--tone-soft);font-size:var(--fs-sm)}
|
|
138
|
+
.signal-row>.icon{align-self:center;color:var(--tone)}
|
|
139
|
+
.signal-kind{color:var(--tone);font-weight:600}
|
|
140
|
+
.next-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px;color:var(--ink-3);font-size:var(--fs-xs)}
|
|
141
|
+
.next-line:empty{display:none}
|
|
142
|
+
.next-line .icon{color:var(--accent)}
|
|
143
|
+
.next-line strong{color:var(--ink)}
|
|
144
|
+
|
|
145
|
+
/* Needs you / input requests */
|
|
146
|
+
.needs-card{border-color:var(--warn);box-shadow:0 0 0 3px var(--warn-soft)}
|
|
147
|
+
.needs-card .card-title .icon{color:var(--warn)}
|
|
148
|
+
.input-card{display:grid;gap:10px;padding:14px;border:1px solid var(--line-2);border-radius:var(--r-md);background:var(--surface-2)}
|
|
149
|
+
.input-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;color:var(--ink-3);font-size:var(--fs-xs)}
|
|
150
|
+
.input-kicker{display:inline-flex;align-items:center;gap:5px;color:var(--warn);font-weight:600;text-transform:uppercase;letter-spacing:.06em;font-size:var(--fs-2xs)}
|
|
151
|
+
.input-timeout{display:inline-flex;align-items:center;gap:4px}
|
|
152
|
+
.input-head .when{margin-left:auto}
|
|
153
|
+
.input-question{font-size:var(--fs-lg);font-weight:500;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere}
|
|
154
|
+
.input-facts{color:var(--ink-3);font-size:var(--fs-xs);overflow-wrap:anywhere}
|
|
155
|
+
.input-choices{display:flex;flex-wrap:wrap;gap:8px}
|
|
156
|
+
.choice{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:6px 14px;border:1px solid var(--line-3);border-radius:var(--r-md);background:var(--surface);color:var(--ink);font-weight:500;text-align:left}
|
|
157
|
+
.choice:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}
|
|
158
|
+
.choice.is-recommended{border-color:var(--accent-line)}
|
|
159
|
+
.choice:disabled{opacity:.5}
|
|
160
|
+
.input-form{display:flex;gap:8px}
|
|
161
|
+
.input-form input{flex:1}
|
|
162
|
+
|
|
163
|
+
/* Decisions, sessions, planning */
|
|
164
|
+
.decision{display:grid;gap:4px;padding-top:10px;border-top:1px solid var(--line)}
|
|
165
|
+
.decision:first-child{padding-top:0;border-top:0}
|
|
166
|
+
.decision-head{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm)}
|
|
167
|
+
.decision-head strong{flex:1;min-width:0;font-weight:600}
|
|
168
|
+
.session-list{list-style:none;display:grid;gap:8px;margin:0;padding:0}
|
|
169
|
+
.session-row{display:grid;gap:3px;padding:9px 11px;border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line)}
|
|
170
|
+
.session-row-head{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm)}
|
|
171
|
+
.session-row p{color:var(--ink-2)}
|
|
172
|
+
.planning-card .kv{font-size:var(--fs-xs)}
|
|
173
|
+
|
|
174
|
+
/* Work items */
|
|
175
|
+
.work-card{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1);min-width:0}
|
|
176
|
+
.work-head{display:flex;align-items:center;gap:10px;padding:13px 16px;list-style:none}
|
|
177
|
+
summary.work-head{cursor:pointer}
|
|
178
|
+
summary.work-head::-webkit-details-marker{display:none}
|
|
179
|
+
.work-title{flex:1;min-width:0;font-weight:600;font-size:var(--fs-md);overflow-wrap:anywhere}
|
|
180
|
+
.work-body{display:grid;gap:12px;padding:0 16px 16px 34px}
|
|
181
|
+
.work-card.is-settled .work-title{color:var(--ink-2);font-weight:500}
|
|
182
|
+
.meta-line{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;color:var(--ink-3);font-size:var(--fs-xs)}
|
|
183
|
+
.meta-strong{display:inline-flex;align-items:center;gap:4px;color:var(--ink-2);font-weight:500}
|
|
184
|
+
.meta-label{color:var(--ink-4)}
|
|
185
|
+
.candidates{margin:0;padding:0;list-style:none;display:grid;gap:4px;font-size:var(--fs-xs)}
|
|
186
|
+
.candidates li{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}
|
|
187
|
+
.candidate-seq{font-family:var(--font-mono);color:var(--accent)}
|
|
188
|
+
|
|
189
|
+
/* Records, runs, roles */
|
|
190
|
+
.record,.run-card,.review-card{display:grid;gap:8px;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}
|
|
191
|
+
.record.is-compact{padding:9px 12px;background:var(--surface-2)}
|
|
192
|
+
.record-head,.run-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0;font-size:var(--fs-sm)}
|
|
193
|
+
.record-store{color:var(--ink-3);font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.06em}
|
|
194
|
+
.record-actions{display:flex;gap:8px}
|
|
195
|
+
.run-card[data-status="failed"]{border-color:color-mix(in srgb,var(--bad) 35%,var(--line))}
|
|
196
|
+
.run-role{font-weight:600}
|
|
197
|
+
.role-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
|
|
198
|
+
.role-card{display:grid;gap:10px;align-content:start;min-width:0;padding:14px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow-1)}
|
|
199
|
+
.role-head{display:flex;align-items:center;gap:10px}
|
|
200
|
+
.role-title{display:grid;flex:1;min-width:0;line-height:1.3}
|
|
201
|
+
.role-title .faint{font-size:var(--fs-xs)}
|
|
202
|
+
.avatar{display:grid;place-items:center;width:32px;height:32px;flex:none;border-radius:9px;background:var(--surface-3);color:var(--ink-2);font-weight:650;font-size:var(--fs-sm)}
|
|
203
|
+
.role-card .kv{font-size:var(--fs-xs)}
|
|
204
|
+
.role-actions{display:flex;justify-content:flex-end;margin:-4px -6px -6px}
|
|
205
|
+
|
|
206
|
+
/* History timeline */
|
|
207
|
+
.timeline{list-style:none;margin:0;padding:0;position:relative;display:grid;gap:0}
|
|
208
|
+
.timeline::before{content:"";position:absolute;left:13px;top:6px;bottom:6px;width:1px;background:var(--line-2)}
|
|
209
|
+
.timeline-item{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);gap:12px;padding:0 0 18px}
|
|
210
|
+
.timeline-mark{position:relative;z-index:1;display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--surface-2);border:1px solid var(--line-2);color:var(--ink-3)}
|
|
211
|
+
.kind-decision .timeline-mark{color:var(--ok);border-color:var(--ok-soft);background:var(--ok-soft)}
|
|
212
|
+
.kind-milestone .timeline-mark{color:var(--accent);border-color:var(--accent-soft);background:var(--accent-soft)}
|
|
213
|
+
.timeline-body{display:grid;gap:6px;min-width:0;padding-top:3px}
|
|
214
|
+
.timeline-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:var(--fs-sm)}
|
|
215
|
+
.timeline-empty{list-style:none}
|
|
216
|
+
.timeline .show-more{margin-left:40px}
|
|
217
|
+
|
|
218
|
+
/* Evidence */
|
|
219
|
+
.file-list{display:grid;gap:2px}
|
|
220
|
+
.file-list:empty{display:none}
|
|
221
|
+
.file-row{display:flex;align-items:center;gap:8px;min-height:32px;padding:5px 8px;border:0;border-radius:var(--r-sm);background:transparent;text-align:left;font-size:var(--fs-sm);color:var(--ink-2)}
|
|
222
|
+
.file-row:hover{background:var(--surface-3);color:var(--ink)}
|
|
223
|
+
.file-row[aria-current="true"]{background:var(--accent-soft);color:var(--ink)}
|
|
224
|
+
.file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono);font-size:var(--fs-xs)}
|
|
225
|
+
.file-viewer{display:grid;gap:8px}
|
|
226
|
+
.file-viewer:empty{display:none}
|
|
227
|
+
.viewer-head{display:flex;align-items:center;gap:8px;font-size:var(--fs-sm)}
|
|
228
|
+
.viewer-ref code{white-space:normal;overflow-wrap:anywhere}
|
|
229
|
+
.artifact-text{max-height:480px;color:var(--ink)}
|
|
230
|
+
|
|
231
|
+
/* ---------- Dock ---------- */
|
|
232
|
+
.dock-sub{flex:none;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding:12px 16px 10px;border-bottom:1px solid var(--line)}
|
|
233
|
+
.dock-sub-title{font-weight:600;font-size:var(--fs-sm)}
|
|
234
|
+
.dock-sub-note{color:var(--ink-4);font-size:var(--fs-2xs)}
|
|
235
|
+
.feed{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:14px;padding:16px;scrollbar-gutter:stable}
|
|
236
|
+
.feed:focus-visible{box-shadow:inset var(--focus)}
|
|
237
|
+
.feed>.empty{margin:auto 0}
|
|
238
|
+
.feed-note{color:var(--ink-4);font-size:var(--fs-2xs);text-align:center}
|
|
239
|
+
.feed-day{display:flex;align-items:center;gap:10px;color:var(--ink-4);font-size:var(--fs-2xs);font-weight:500}
|
|
240
|
+
.feed-day::before,.feed-day::after{content:"";flex:1;height:1px;background:var(--line)}
|
|
241
|
+
.msg{display:flex;gap:10px;max-width:100%;min-width:0}
|
|
242
|
+
.msg-avatar{display:grid;place-items:center;width:28px;height:28px;flex:none;border-radius:8px;background:var(--surface-3);color:var(--ink-2);font-size:var(--fs-xs);font-weight:650}
|
|
243
|
+
.msg-main{display:grid;gap:5px;min-width:0;flex:1}
|
|
244
|
+
.msg-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:var(--fs-xs)}
|
|
245
|
+
.msg-head strong{font-weight:600}
|
|
246
|
+
.msg-head time{margin-left:auto;color:var(--ink-4);font-size:var(--fs-2xs)}
|
|
247
|
+
.msg-bubble{padding:10px 12px;border-radius:4px var(--r-lg) var(--r-lg) var(--r-lg);background:var(--surface-2);border:1px solid var(--line);min-width:0;overflow-wrap:anywhere}
|
|
248
|
+
.msg.from-user{flex-direction:row-reverse}
|
|
249
|
+
.msg.from-user .msg-head{flex-direction:row-reverse}
|
|
250
|
+
.msg.from-user .msg-head time{margin-left:0;margin-right:auto}
|
|
251
|
+
.msg.from-user .msg-avatar{background:var(--accent);color:var(--accent-ink)}
|
|
252
|
+
.msg.from-user .msg-bubble{border-radius:var(--r-lg) 4px var(--r-lg) var(--r-lg);background:var(--accent-soft);border-color:var(--accent-line)}
|
|
253
|
+
.msg.from-system .msg-bubble{background:transparent;border-style:dashed}
|
|
254
|
+
.composer-wrap{flex:none;padding:10px 12px 12px;border-top:1px solid var(--line);background:var(--surface)}
|
|
255
|
+
.composer{display:grid;gap:6px}
|
|
256
|
+
.composer-box{border:1px solid var(--line-2);border-radius:var(--r-lg);background:var(--sunken);transition:border-color var(--t-fast),box-shadow var(--t-fast)}
|
|
257
|
+
.composer-box:focus-within{border-color:var(--accent-line);box-shadow:0 0 0 3px var(--accent-soft)}
|
|
258
|
+
.composer-input{display:block;min-height:64px;max-height:240px;padding:10px 12px 4px;border:0;background:transparent;resize:none}
|
|
259
|
+
.composer-input:focus,.composer-input:hover{border:0;box-shadow:none;background:transparent}
|
|
260
|
+
.composer-bar{display:flex;align-items:center;gap:8px;padding:6px 6px 6px 8px}
|
|
261
|
+
.composer-send{height:30px}
|
|
262
|
+
.facets:empty{display:none}
|
|
263
|
+
.facets{display:grid;gap:6px;padding:8px 10px;border-radius:var(--r-sm);background:var(--surface-2)}
|
|
264
|
+
.next-step{display:flex;gap:6px;align-items:flex-start;font-size:var(--fs-xs);color:var(--ink-2)}
|
|
265
|
+
.next-step .icon{margin-top:2px;color:var(--accent)}
|
|
266
|
+
|
|
267
|
+
/* Live session (always dark: it renders a native terminal) */
|
|
268
|
+
.dock-session{color:#e6e6e8}
|
|
269
|
+
.target-chip{display:inline-flex;align-items:center;gap:6px;flex:none;height:26px;padding:0 10px;border:1px solid rgba(255,255,255,.12);border-radius:var(--r-pill);background:transparent;color:rgba(255,255,255,.72);font-size:var(--fs-xs);font-weight:500}
|
|
270
|
+
.target-chip:hover{color:#fff;border-color:rgba(255,255,255,.3)}
|
|
271
|
+
.target-chip[aria-pressed="true"]{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.3);color:#fff}
|
|
272
|
+
.target-chip .dot{width:7px;height:7px;box-shadow:none}
|
|
273
|
+
.dock-session .faint{color:rgba(255,255,255,.4)}
|
|
274
|
+
.conn{display:inline-flex;align-items:center;gap:6px;flex:none;color:rgba(255,255,255,.6);font-size:var(--fs-xs);font-weight:500}
|
|
275
|
+
.conn i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.3)}
|
|
276
|
+
.conn[data-state="connecting"] i{background:var(--warn);animation:blink 1s infinite}
|
|
277
|
+
.conn[data-state="writable"] i{background:#4fd18b;box-shadow:0 0 0 3px rgba(79,209,139,.2)}
|
|
278
|
+
.conn[data-state="readonly"] i{background:#6cb6ff}
|
|
279
|
+
.conn[data-state="error"] i{background:#ff6b7a}
|
|
280
|
+
.conn[data-state="error"]{color:#ff9aa5}
|
|
281
|
+
.terminal-empty{color:rgba(255,255,255,.55)}
|
|
282
|
+
.terminal-empty .icon{color:rgba(255,255,255,.35)}
|
|
283
|
+
.terminal-empty-title{color:#fff;font-weight:600}
|
|
284
|
+
.terminal-empty-text{max-width:300px;font-size:var(--fs-xs);line-height:1.5}
|
|
285
|
+
.session-foot{color:rgba(255,255,255,.45);font-size:var(--fs-2xs)}
|
|
286
|
+
.session-foot code{color:rgba(255,255,255,.8);user-select:all}
|
|
287
|
+
.terminal-host .xterm{height:100%}
|
|
288
|
+
.terminal-host .xterm-viewport{background:transparent!important}
|
|
289
|
+
`;
|
package/dist/web/webServer.js
CHANGED
|
@@ -219,7 +219,8 @@ async function handleHttpRequest(request, response, store, dependencies, token,
|
|
|
219
219
|
else if (method === "GET" && action === "inspect") {
|
|
220
220
|
value = dependencies.surface.inspect(taskId, {
|
|
221
221
|
store: query.get("store") ?? "", refId: query.get("ref") ?? "",
|
|
222
|
-
...(query.has("digest") ? { digest: query.get("digest") } : {})
|
|
222
|
+
...(query.has("digest") ? { digest: query.get("digest") } : {}),
|
|
223
|
+
...(query.has("cursor") ? { cursor: query.get("cursor") } : {})
|
|
223
224
|
});
|
|
224
225
|
}
|
|
225
226
|
else if (method === "POST" && action === "messages") {
|
package/docs/release-workflow.md
CHANGED
|
@@ -27,6 +27,29 @@ system sits behind `ReleaseWorkflowPorts`
|
|
|
27
27
|
external ports exercise recovery without real GitHub, npm, git, Controller,
|
|
28
28
|
or model effects.
|
|
29
29
|
|
|
30
|
+
## Yui's default release boundary
|
|
31
|
+
|
|
32
|
+
For development of Yui itself, the repository's `AGENTS.md` owns the release policy:
|
|
33
|
+
do not release a version by default. Development, tests, acceptance, PR creation
|
|
34
|
+
and merge do not include changing version numbers, creating release tags or
|
|
35
|
+
GitHub Releases, or publishing to npm. Each external effect still requires the
|
|
36
|
+
Task's actual authorization. A workflow containing only PR, CI and merge steps
|
|
37
|
+
is a valid delivery plan; its `ReleaseWorkflow` name does not authorize any
|
|
38
|
+
package release, global CLI update or Controller replacement.
|
|
39
|
+
|
|
40
|
+
When the user explicitly asks to release a new version without naming its
|
|
41
|
+
level, select only minor or patch according to the actual changes and project
|
|
42
|
+
version rules. A major release requires explicit user authorization for major
|
|
43
|
+
or a specific major version. If breaking changes cannot honestly be represented
|
|
44
|
+
by minor/patch, explain the compatibility conflict and wait for the necessary
|
|
45
|
+
explicit user choice: neither silently publish major nor mislabel incompatible
|
|
46
|
+
behavior as compatible. This does not require adding historical compatibility
|
|
47
|
+
mechanisms. Package release versions are distinct from storage migration
|
|
48
|
+
versions; the storage rules below do not authorize a package release.
|
|
49
|
+
|
|
50
|
+
The operations and examples below describe how to execute already-authorized
|
|
51
|
+
effects, not a default sequence to run after completing or merging a Task.
|
|
52
|
+
|
|
30
53
|
## Stable 1.0 baseline and release evidence
|
|
31
54
|
|
|
32
55
|
Package 1.0.0 defines the storage **1.0** contract directly. The runtime and
|
|
@@ -20,6 +20,22 @@ Agent 选择一个预先声明的计划,设施从持久状态驱动该计划
|
|
|
20
20
|
(`src/release/releaseWorkflowPorts.ts`)之后。可用临时 SQLite 和确定性的外部端口测试
|
|
21
21
|
恢复逻辑,无需真实 GitHub、npm、git、Controller 或模型效果。
|
|
22
22
|
|
|
23
|
+
## Yui 的默认发版边界
|
|
24
|
+
|
|
25
|
+
开发 Yui 本身时,发版规则以仓库中的 `AGENTS.md` 为准:默认不发布新版本。
|
|
26
|
+
开发、测试、验收、创建 PR 和合并不包含修改版本号、创建发布 tag 或 GitHub Release、
|
|
27
|
+
发布 npm;每项外部效果仍需 Task 的实际授权。仅包含 PR、CI 和合并步骤也是合法的交付
|
|
28
|
+
计划,`ReleaseWorkflow` 这个名称不授予包发布、全局 CLI 更新或 Controller 替换权限。
|
|
29
|
+
|
|
30
|
+
用户明确要求「发布新版本」但没有指定级别时,根据实际变更和项目版本规则,仅选择
|
|
31
|
+
minor(中版本)或 patch(小版本)。major(大版本)必须得到用户对大版本或具体 major
|
|
32
|
+
版本号的明确授权。如果破坏性变更无法诚实地用 minor/patch 表达,说明兼容性冲突,
|
|
33
|
+
等待必要的明确用户选择:既不能静默发布 major,也不能把不兼容行为冒称为兼容。
|
|
34
|
+
这不要求为了回避选择而新增历史兼容机制。包发布版本与存储迁移版本是不同契约,
|
|
35
|
+
下文的存储规则不授予包发布权限。
|
|
36
|
+
|
|
37
|
+
下文操作及示例说明如何执行已经获授权的效果,不是 Task 完成或合并后默认运行的步骤。
|
|
38
|
+
|
|
23
39
|
## 稳定的 1.0 基线与发布证据
|
|
24
40
|
|
|
25
41
|
1.0.0 软件包直接定义存储 **1.0** 契约。运行包和当前源码不携带任何历史
|
package/package.json
CHANGED
|
@@ -169,6 +169,32 @@ For unrelated discovery, stop once the necessary evidence is found. Task
|
|
|
169
169
|
event deltas retain their fixed upper bound and are history, not replacement
|
|
170
170
|
current state. No read acknowledges implementation or consumes a queue.
|
|
171
171
|
|
|
172
|
+
## Discover operations for the current caller
|
|
173
|
+
|
|
174
|
+
Use `yui help` or `yui --json help [command ...]` through the authorized CLI
|
|
175
|
+
entry for the current caller's command view. Help, examples and shell completion
|
|
176
|
+
share the catalog projection; public terminals and unmanaged Agents share one
|
|
177
|
+
public view. This offline view is only guidance, not an authenticated permission
|
|
178
|
+
or a way to switch Roles. An incomplete or stale managed identity must not be
|
|
179
|
+
cleared to obtain public execution authority.
|
|
180
|
+
|
|
181
|
+
When capability discovery appears in that view, use `capability search` for
|
|
182
|
+
templates and `capability describe <name> --task
|
|
183
|
+
<task-id> --input '<json>'` for supported exact authorization assessments.
|
|
184
|
+
No `access` field means no exact authorization conclusion was made: supply the
|
|
185
|
+
required parameters and follow the domain's existing execution checks. Hidden
|
|
186
|
+
operations are omitted; `requestable` includes the exact missing Grant bounds
|
|
187
|
+
and existing request route; `authorized` remains subject to execution-time
|
|
188
|
+
revalidation. Provider outages do not change this authorization observation.
|
|
189
|
+
|
|
190
|
+
Discovery never sends requests, consumes Grants, starts plugins or approves
|
|
191
|
+
effects. If the Task actually needs a requestable operation, use the existing
|
|
192
|
+
Assignment Message to Leader, Leader InputRequest, or Operator path. Preserve
|
|
193
|
+
the exact action, resource/plugin, digest, environment and phase. A response is
|
|
194
|
+
not a Grant. Existing source-authorized Leader Grant operations and Operator
|
|
195
|
+
Grant authority remain unchanged; never expand an authorization source or
|
|
196
|
+
solicit real-resource validation merely because an operation is requestable.
|
|
197
|
+
|
|
172
198
|
## Preserve intent and authority
|
|
173
199
|
|
|
174
200
|
An analysis, diagnosis, or review request is read-only unless the user also
|