prts-terrarchive 0.2.0 → 0.2.2
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/README.en.md +84 -18
- package/README.md +64 -15
- package/THIRD_PARTY_NOTICES.md +10 -0
- package/bin/build-runtime.mjs +32 -0
- package/bin/check-runtime.mjs +56 -0
- package/bin/install.js +24 -5
- package/contracts/corpus_i18n_v1.schema.json +10 -10
- package/cordis.patch.yml +4 -4
- package/docs/web-access.md +24 -0
- package/lib/client.js +84 -23
- package/lib/rhine/rhine.css +1 -1
- package/lib/rhine/rhine.js +208 -208
- package/lib/runtime/licenses/js-yaml-MIT.txt +21 -0
- package/lib/runtime/licenses/zod-MIT.txt +21 -0
- package/lib/runtime/versions.json +4 -0
- package/lib/runtime/yaml.js +3062 -0
- package/lib/runtime/zod.js +14356 -0
- package/lib/skins/common.css +59 -0
- package/lib/skins/endfield-aic.css +22 -9
- package/lib/skins/prts-agent.css +15 -5
- package/lib/skins/rhine-lab.css +9 -0
- package/package.json +15 -8
- package/presets/composition.js +53 -0
- package/presets/definition.js +2 -2
- package/presets/prts/agent.cordis.yml +1 -1
- package/presets/prts/preset.yml +1 -1
- package/presets/register.js +23 -10
- package/resources/runtime/yaml.js +1 -0
- package/resources/runtime/zod.js +1 -0
- package/skills/prts-composition/SKILL.md +60 -0
- package/skills/prts-investigation/SKILL.md +19 -102
- package/skills/prts-investigation/references/board-guide.md +131 -0
- package/skills/prts-retrieval/SKILL.md +5 -3
- package/src/composition-skill.js +19 -0
- package/src/i18n.js +11 -17
- package/src/index.js +63 -81
- package/src/investigation-review.js +14 -6
- package/src/investigation-store.js +97 -25
- package/src/investigation-tools.js +67 -30
- package/src/investigation-validation.js +33 -0
- package/src/manual-search.js +1 -1
- package/src/skill.js +25 -16
- package/src/skin-capabilities.js +28 -0
- package/src/tools.js +13 -0
- package/src/web-guidance.js +44 -0
- package/ui/rhine/archive-rack.ts +10 -8
- package/ui/rhine/catalogue.ts +16 -4
- package/ui/rhine/evidence-board-panel.ts +15 -0
- package/ui/rhine/investigation-board.css +3 -0
- package/ui/rhine/investigation-board.ts +71 -24
- package/ui/rhine/investigation-history.ts +15 -0
- package/ui/rhine/reading-room.css +14 -3
- package/ui/rhine/scene.ts +44 -24
- package/ui/rhine/tool-activity.ts +13 -6
- package/ui/rhine/types.ts +6 -0
- package/ui/rhine/workbench.ts +82 -40
package/lib/skins/common.css
CHANGED
|
@@ -29,3 +29,62 @@
|
|
|
29
29
|
@media (max-width:680px) {
|
|
30
30
|
.prts-skin-options { grid-template-columns: 1fr; }
|
|
31
31
|
}
|
|
32
|
+
|
|
33
|
+
/* Official plugin manager (list, package detail, row configuration). Stable
|
|
34
|
+
Host data attributes also make this a no-op on older settings-only Hosts. */
|
|
35
|
+
body:is([data-prts-skin="agent"],[data-prts-skin="endfield-aic"],[data-prts-skin="rhine-lab"]) [data-plugin-panel] {
|
|
36
|
+
background:var(--prts-plugins-paper);
|
|
37
|
+
color:var(--dsw-alias-label-primary);
|
|
38
|
+
gap:28px;
|
|
39
|
+
}
|
|
40
|
+
body[data-prts-skin] [data-plugin-panel] [data-window-drag] {
|
|
41
|
+
padding-bottom:20px;
|
|
42
|
+
border-bottom:1px solid var(--prts-plugins-rule);
|
|
43
|
+
}
|
|
44
|
+
body[data-prts-skin] [data-plugin-panel]>header>div:first-child::before {
|
|
45
|
+
content:var(--prts-plugins-label);
|
|
46
|
+
display:block;
|
|
47
|
+
margin-bottom:12px;
|
|
48
|
+
color:var(--prts-plugins-accent);
|
|
49
|
+
font:11px/1.5 ui-monospace,monospace;
|
|
50
|
+
letter-spacing:.12em;
|
|
51
|
+
}
|
|
52
|
+
body[data-prts-skin] [data-plugin-group]>ul {gap:8px}
|
|
53
|
+
body[data-prts-skin] :is([data-plugin-package],[data-plugin-item]) {
|
|
54
|
+
margin:0;
|
|
55
|
+
padding:5px;
|
|
56
|
+
border:1px solid var(--prts-plugins-rule);
|
|
57
|
+
border-radius:var(--prts-plugins-radius);
|
|
58
|
+
background:var(--prts-plugins-card);
|
|
59
|
+
}
|
|
60
|
+
body[data-prts-skin] :is([data-plugin-package],[data-plugin-item]):is(:hover,:focus-within) {
|
|
61
|
+
border-color:var(--prts-plugins-accent);
|
|
62
|
+
}
|
|
63
|
+
body[data-prts-skin] :is([data-plugin-config],[data-plugin-rows]) {
|
|
64
|
+
box-sizing:border-box;
|
|
65
|
+
padding:20px;
|
|
66
|
+
border:1px solid var(--prts-plugins-rule);
|
|
67
|
+
border-radius:var(--prts-plugins-radius);
|
|
68
|
+
background:var(--prts-plugins-card);
|
|
69
|
+
}
|
|
70
|
+
@media(max-width:680px) {
|
|
71
|
+
body[data-prts-skin] [data-plugin-panel] {padding-inline:16px;gap:20px}
|
|
72
|
+
body[data-prts-skin] [data-plugin-panel]>header {flex-wrap:wrap}
|
|
73
|
+
body[data-prts-skin] :is([data-plugin-config],[data-plugin-rows]) {padding:12px}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* Settings remain a Host-owned modal in both inline and portal generations.
|
|
77
|
+
On phones, reserve usable content width as well as fitting the outer panel. */
|
|
78
|
+
@media(max-width:680px) {
|
|
79
|
+
body[data-prts-skin] [role="dialog"][aria-modal="true"]:has([data-slot="settings.header"]) {
|
|
80
|
+
box-sizing:border-box;
|
|
81
|
+
width:calc(100vw - 20px)!important;
|
|
82
|
+
max-width:calc(100vw - 20px)!important;
|
|
83
|
+
height:calc(100dvh - 20px)!important;
|
|
84
|
+
}
|
|
85
|
+
body[data-prts-skin] [role="dialog"]:has([data-slot="settings.header"])>nav {
|
|
86
|
+
flex:0 0 126px!important;
|
|
87
|
+
width:126px!important;
|
|
88
|
+
min-width:0;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/* Conversation lived in its own slot before DSH 0.1.7; the new main slot
|
|
2
|
+
hosts main.conversation alongside administrative panels. Target the chat slot. */
|
|
1
3
|
/** Endfield AIC skin. Served as a standalone, plugin-owned stylesheet. */
|
|
2
4
|
body[data-prts-skin="endfield-aic"]{margin:0;overflow:hidden;color:#eef0eb;background:#14181b;color-scheme:dark;font-family:"Arial Narrow","Roboto Condensed","PingFang SC","Microsoft YaHei",sans-serif}
|
|
3
5
|
.aic-root,.aic-root *{box-sizing:border-box}.aic-root{--acid:#faff3f;--ink:#080a0c;--panel:rgba(8,10,12,.82);--aic-band-width:min(clamp(760px,46vw,960px),calc(100vw - 360px));position:fixed;z-index:40;inset:0;overflow:hidden;pointer-events:none;color:#eef0eb;background:transparent;isolation:isolate;animation:aic-root-in .28s ease-out both}
|
|
@@ -10,7 +12,7 @@ body.aic-chat-resizing,body.aic-chat-resizing *{cursor:col-resize!important;user
|
|
|
10
12
|
body[data-prts-skin="endfield-aic"] [data-sidebar-right-panel]{z-index:55}
|
|
11
13
|
body[data-prts-skin="endfield-aic"] [data-side="rightbar"]{z-index:56}
|
|
12
14
|
body[data-prts-skin="endfield-aic"]:has(.aic-drawer) :is([data-sidebar-right-panel],[data-side="rightbar"]){z-index:30}
|
|
13
|
-
body[data-prts-skin="endfield-aic"] #root>[data-slot="root"]>div{grid-template-columns:0 minmax(0,1fr) 0!important;background:#14181b}body[data-prts-skin="endfield-aic"] #root>[data-slot="root"]>div>div:first-child{visibility:visible;width:0!important;overflow:visible!important;pointer-events:none}body[data-prts-skin="endfield-aic"].aic-modal-open #root>[data-slot="root"]>div>div:first-child{position:relative;z-index:100!important}body[data-prts-skin="endfield-aic"] #root>[data-slot="root"]>div>div:first-child [data-slot="sidebar.settings"] button[aria-haspopup="dialog"]{display:none!important}body[data-prts-skin="endfield-aic"] #root>[data-slot="root"]>div>div:first-child [data-slot="sidebar.settings"]>[role="presentation"]{visibility:visible;pointer-events:auto}body[data-prts-skin="endfield-aic"] [data-shell-overlay="true"]{z-index:40!important}body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div{position:fixed!important;z-index:50;top:104px;bottom:0;left:0;width:var(--prts-aic-band-width,min(clamp(760px,46vw,960px),calc(100vw - 360px)));height:calc(100vh - 104px)!important;min-height:0;overflow:visible!important;background:transparent!important;box-shadow:none;pointer-events:none}body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div::before{content:none!important}body[data-prts-skin="endfield-aic"] [data-slot="conversation"] :is([data-conversation-scroll],[data-composer-seat],button,textarea,select,details,[contenteditable="true"]){pointer-events:auto}body[data-prts-skin="endfield-aic"] [data-slot="conversation"] button,body[data-prts-skin="endfield-aic"] [data-slot="conversation"] textarea,body[data-prts-skin="endfield-aic"] [data-slot="conversation"] select{border-radius:0!important}body[data-prts-skin="endfield-aic"] [data-slot="conversation"] details,body[data-prts-skin="endfield-aic"] [data-slot="conversation"] pre{border-radius:0!important}body[data-prts-skin="endfield-aic"] [data-slot="conversation.composer.bar"]>div{border-color:rgba(255,255,255,.18)!important;background:rgba(10,13,15,.96)!important;box-shadow:none!important}body[data-prts-skin="endfield-aic"] [data-slot="conversation.input.model"] button,body[data-prts-skin="endfield-aic"] [data-slot="conversation.input.plan"] button,body[data-prts-skin="endfield-aic"] [data-slot="conversation.hero.workspace"] button{color:rgba(238,240,235,.78)!important;background:transparent!important}body[data-prts-skin="endfield-aic"] [data-slot="shell.overlay"]{position:fixed;z-index:40;inset:0;pointer-events:none}
|
|
15
|
+
body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) #root>[data-slot="root"]>div{grid-template-columns:0 minmax(0,1fr) 0!important;background:#14181b}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) #root>[data-slot="root"]>div>div:first-child{visibility:visible;width:0!important;overflow:visible!important;pointer-events:none}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])).aic-modal-open #root>[data-slot="root"]>div>div:first-child{position:relative;z-index:100!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) #root>[data-slot="root"]>div>div:first-child [data-slot="sidebar.settings"] button[aria-haspopup="dialog"]{display:none!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) #root>[data-slot="root"]>div>div:first-child [data-slot="sidebar.settings"]>[role="presentation"]{visibility:visible;pointer-events:auto}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) [data-shell-overlay="true"]{z-index:40!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"])>div{position:fixed!important;z-index:50;top:104px;bottom:0;left:0;width:var(--prts-aic-band-width,min(clamp(760px,46vw,960px),calc(100vw - 360px)));height:calc(100vh - 104px)!important;min-height:0;overflow:visible!important;background:transparent!important;box-shadow:none;pointer-events:none}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"])>div::before{content:none!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"]) :is([data-conversation-scroll],[data-composer-seat],button,textarea,select,details,[contenteditable="true"]){pointer-events:auto}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"]) button,body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"]) textarea,body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"]) select{border-radius:0!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"]) details,body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) :is([data-slot="conversation"],[data-slot="main.conversation"]) pre{border-radius:0!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) [data-slot="conversation.composer.bar"]>div{border-color:rgba(255,255,255,.18)!important;background:rgba(10,13,15,.96)!important;box-shadow:none!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) [data-slot="conversation.input.model"] button,body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) [data-slot="conversation.input.plan"] button,body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) [data-slot="conversation.hero.workspace"] button{color:rgba(238,240,235,.78)!important;background:transparent!important}body[data-prts-skin="endfield-aic"]:not(:has([data-plugin-panel])) [data-slot="shell.overlay"]{position:fixed;z-index:40;inset:0;pointer-events:none}
|
|
14
16
|
.aic-map-reset{position:absolute;z-index:8;top:22px;right:286px;height:26px;padding:0 12px;border:1px solid rgba(255,255,255,.18);border-radius:0;color:rgba(244,245,241,.7);background:rgba(7,9,10,.52);font:9px ui-monospace,monospace;cursor:pointer;pointer-events:auto}.aic-map-reset:hover{border-color:var(--acid);color:var(--acid)}
|
|
15
17
|
.aic-region-card{position:absolute;z-index:9;right:24px;top:92px;width:300px;padding:16px;border:1px solid rgba(250,255,63,.28);border-left:3px solid var(--acid);color:#e8eae5;background:rgba(7,9,10,.9);box-shadow:0 18px 45px rgba(0,0,0,.32);backdrop-filter:blur(10px)}.aic-region-card small{color:var(--acid);font:8px ui-monospace,monospace;letter-spacing:.1em}.aic-region-card h3{margin:12px 0 1px;font-size:20px}.aic-region-card em{color:rgba(238,240,235,.35);font:9px ui-monospace,monospace}.aic-region-card p{margin:14px 0;color:rgba(238,240,235,.7);font-size:12px;line-height:1.7}.aic-region-card b{color:rgba(238,240,235,.38);font:8px ui-monospace,monospace}
|
|
16
18
|
.aic-hud{position:absolute;z-index:30;font:10px/1.35 ui-monospace,monospace;letter-spacing:.08em;text-shadow:0 1px 4px #000}.aic-hud-tl{top:24px;left:24px}.aic-hud-tr{top:22px;right:22px;display:flex;align-items:center;gap:8px}.aic-hud-br{right:25px;bottom:20px;color:rgba(238,240,235,.38)}
|
|
@@ -20,7 +22,7 @@ body[data-prts-skin="endfield-aic"] #root>[data-slot="root"]>div{grid-template-c
|
|
|
20
22
|
.aic-chat-band{position:absolute;z-index:25;top:0;bottom:0;left:0;width:var(--aic-band-width);display:flex;flex-direction:column;pointer-events:none}.aic-chat-resize{position:absolute;z-index:35;top:112px;right:-15px;width:30px;height:30px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.18);border-radius:0;color:rgba(255,255,255,.52);background:rgba(8,10,12,.88);cursor:col-resize;pointer-events:auto}.aic-chat-resize:hover,.aic-chat-resize:focus-visible{border-color:rgba(250,255,63,.72);outline:none;color:var(--acid)}.aic-chat-resize::before{content:"↔";font:12px ui-monospace,monospace}.aic-chat-resize-line{position:fixed;z-index:80;top:0;bottom:0;width:1px;background:rgba(250,255,63,.78);box-shadow:0 0 8px rgba(250,255,63,.24);pointer-events:none}
|
|
21
23
|
.aic-band-backdrop{position:absolute;z-index:1;top:0;bottom:0;left:0;width:calc(100% + 260px);pointer-events:none;background:linear-gradient(90deg,rgba(9,11,13,.82) 0%,rgba(9,11,13,.62) 45%,rgba(9,11,13,.25) 75%,transparent 100%);-webkit-backdrop-filter:blur(16px) saturate(1.1);backdrop-filter:blur(16px) saturate(1.1);-webkit-mask-image:linear-gradient(90deg,#000 0%,#000 40%,transparent 96%);mask-image:linear-gradient(90deg,#000 0%,#000 40%,transparent 96%)}
|
|
22
24
|
.aic-band-head,.aic-messages,.aic-composer{pointer-events:auto}.aic-band-head{display:flex;align-items:center;justify-content:space-between;height:45px;padding:0 14px;border-block:1px solid rgba(255,255,255,.12);background:rgba(7,9,10,.22)}.aic-terminal-name{display:flex;align-items:center;gap:9px;font:700 12px/1 ui-monospace,monospace;letter-spacing:.12em}.aic-terminal-dot{width:8px;height:8px;background:var(--acid)}.aic-terminal-ver{color:rgba(238,240,235,.3);font-size:8px}.aic-band-actions{display:flex;gap:8px}.aic-band-btn{display:flex;align-items:center;gap:7px;height:30px;padding:0 13px;border:1px solid rgba(255,255,255,.16);border-radius:0;color:rgba(238,240,235,.65);background:rgba(8,10,12,.62);font:10px/1 inherit;cursor:pointer}.aic-band-btn:hover,.aic-band-btn.on{border-color:rgba(250,255,63,.6);color:var(--acid)}
|
|
23
|
-
.aic-native-conversation{min-height:0;height:100%;overflow:hidden;pointer-events:auto;--dsh-chat-content-width:100%;--dsh-composer-card-max-width:100%;--dsh-composer-side-clearance:8px}.aic-native-conversation
|
|
25
|
+
.aic-native-conversation{min-height:0;height:100%;overflow:hidden;pointer-events:auto;--dsh-chat-content-width:100%;--dsh-composer-card-max-width:100%;--dsh-composer-side-clearance:8px}.aic-native-conversation>:is([data-slot="conversation"],[data-slot="main.conversation"]),.aic-native-conversation>:is([data-slot="conversation"],[data-slot="main.conversation"])>div{height:100%;min-height:0;background:transparent!important}.aic-native-conversation button,.aic-native-conversation textarea,.aic-native-conversation select{border-radius:0!important}.aic-native-conversation textarea{font-family:inherit}.aic-native-conversation [data-slot="conversation.composer.bar"]>div{border-color:rgba(255,255,255,.18)!important;background:rgba(10,13,15,.94)!important;box-shadow:none!important}.aic-native-conversation [data-slot="conversation.input.model"] button,.aic-native-conversation [data-slot="conversation.input.plan"] button,.aic-native-conversation [data-slot="conversation.hero.workspace"] button{color:rgba(238,240,235,.72)!important;background:transparent!important}.aic-native-conversation details{border-radius:0!important}.aic-native-conversation [data-slot="conversation.chat.node"]{font-family:inherit}.aic-native-conversation [data-slot="conversation.chat.node"] pre{border-radius:0!important}
|
|
24
26
|
.aic-native-settings{height:26px}.aic-native-settings>[data-slot="sidebar.settings"]{height:26px}.aic-native-settings>[data-slot="sidebar.settings"]>button{width:auto;height:26px;margin:0;padding:0 12px;border:1px solid rgba(255,255,255,.18);border-radius:0;color:rgba(244,245,241,.7);background:rgba(7,9,10,.52);font:9px/1 ui-monospace,monospace;letter-spacing:.08em}.aic-native-settings>[data-slot="sidebar.settings"]>button:hover{border-color:var(--acid);color:var(--acid);background:rgba(250,255,63,.06)}.aic-native-settings>[data-slot="sidebar.settings"]>button svg{display:none}
|
|
25
27
|
/* Only the DSH settings dialog gets the full-screen terminal treatment. History,
|
|
26
28
|
evidence and confirmation dialogs keep their own geometry. */
|
|
@@ -70,12 +72,12 @@ body[data-prts-skin="endfield-aic"] [data-chat-flow-kind="context"] + [data-chat
|
|
|
70
72
|
/* Start screen: retain Harness's real translucent composer and controls,
|
|
71
73
|
but replace its product hero with the PRTS identity used by our first skin. */
|
|
72
74
|
.aic-start-brand{position:absolute;z-index:8;top:clamp(128px,17vh,205px);left:0;width:min(clamp(760px,46vw,960px),calc(100vw - 360px));color:#eef0eb;text-align:center;pointer-events:none;opacity:1;transform:translateY(0);transition:opacity .22s ease,transform .22s ease,filter .22s ease}
|
|
73
|
-
body[data-prts-skin="endfield-aic"]:has([data-slot="conversation"]>[data-phase="active"]) .aic-start-brand{opacity:0;transform:translateY(-18px);filter:blur(3px)}
|
|
75
|
+
body[data-prts-skin="endfield-aic"]:has(:is([data-slot="conversation"],[data-slot="main.conversation"])>[data-phase="active"]) .aic-start-brand{opacity:0;transform:translateY(-18px);filter:blur(3px)}
|
|
74
76
|
.aic-start-wordmark{font-family:var(--dsw-font-family),"DeepSeek Sans",Inter,sans-serif;font-size:78px;font-weight:750;line-height:.9;letter-spacing:.28em;text-indent:.28em;color:#f1f2ed;text-shadow:0 0 28px rgba(255,255,255,.055)}
|
|
75
77
|
.aic-start-submark{margin-top:13px;color:rgba(238,240,235,.38);font:8px/1.4 ui-monospace,monospace;letter-spacing:.105em}.aic-start-submark s{text-decoration-color:rgba(255,93,93,.72);text-decoration-thickness:1px}
|
|
76
78
|
.aic-start-brand h2{margin:25px 0 5px;color:#f1f2ed;font-family:var(--dsw-font-family),"DeepSeek Sans",sans-serif;font-size:23px;font-weight:500;line-height:1.35}.aic-start-brand p{margin:0;color:rgba(238,240,235,.48);font-family:var(--dsw-font-family),"DeepSeek Sans",sans-serif;font-size:12px;line-height:1.65}
|
|
77
79
|
/* Canonical AIC welcome: same pane and glass values before and after the first turn. */
|
|
78
|
-
body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div{background:transparent!important}
|
|
80
|
+
body[data-prts-skin="endfield-aic"] :is([data-slot="conversation"],[data-slot="main.conversation"])>div{background:transparent!important}
|
|
79
81
|
body[data-prts-skin="endfield-aic"] :is([data-phase="hero"],[data-phase="active"]) [data-conversation-scroll]{background:transparent!important}
|
|
80
82
|
.aic-start-brand{top:134px;left:19px;width:calc(min(clamp(760px,46vw,960px),calc(100vw - 360px)) - 42px);padding:0 16px 18px;border-left:3px solid #faff3f;text-align:left}
|
|
81
83
|
.aic-start-brand::before{content:"AIC";display:flex;align-items:center;gap:12px;margin:0 0 17px;color:#faff3f;font:800 13px/1 ui-monospace,monospace;letter-spacing:.11em}
|
|
@@ -106,9 +108,9 @@ body[data-prts-skin="endfield-aic"] [data-composer-card]>div:last-child>div:last
|
|
|
106
108
|
.aic-tool{margin:0 0 14px;border:1px solid rgba(255,255,255,.12);background:rgba(0,0,0,.31)}.aic-tool[open]{border-left:2px solid var(--acid)}.aic-tool summary{display:flex;align-items:center;gap:9px;padding:8px 10px;color:rgba(238,240,235,.58);font:9px/1.4 ui-monospace,monospace;letter-spacing:.08em;cursor:pointer}.aic-tool-state{width:6px;height:6px;background:var(--acid)}.aic-tool.error .aic-tool-state{background:#ff6767}.aic-tool pre{max-height:300px;margin:0;padding:11px;overflow:auto;border-top:1px solid rgba(255,255,255,.1);color:rgba(238,240,235,.58);font:10px/1.55 ui-monospace,monospace;white-space:pre-wrap}.aic-notice{margin:9px 0;padding:8px 10px;border-left:2px solid rgba(255,255,255,.25);color:rgba(238,240,235,.47);background:rgba(0,0,0,.25);font:10px/1.5 ui-monospace,monospace}.aic-notice.error{border-color:#ff6767;color:#ff8a8a}
|
|
107
109
|
.aic-composer{display:grid;grid-template-columns:minmax(0,1fr) 84px;gap:10px;padding-top:12px;border-top:1px solid rgba(255,255,255,.15)}.aic-composer textarea{width:100%;min-height:43px;max-height:132px;padding:12px;border:1px solid rgba(255,255,255,.2);border-radius:0;outline:0;resize:none;color:#f2f3ef;background:rgba(13,16,18,.92);font:13px/1.45 inherit}.aic-composer textarea:focus{border-color:rgba(250,255,63,.7)}.aic-composer textarea::placeholder{color:rgba(238,240,235,.28)}.aic-send{border:1px solid rgba(250,255,63,.45);border-radius:0;color:#080a0c;background:rgba(250,255,63,.78);font:700 11px/1 ui-monospace,monospace;letter-spacing:.1em;cursor:pointer}.aic-send:hover{background:var(--acid)}.aic-send:disabled{opacity:.28;cursor:not-allowed}
|
|
108
110
|
.aic-drawer-scrim{position:absolute;z-index:60;inset:0;pointer-events:auto;background:rgba(2,4,5,.48)}.aic-drawer{position:absolute;z-index:61;top:60px;bottom:16px;left:20px;width:min(400px,calc(100vw - 40px));padding:14px;border:1px solid rgba(250,255,63,.25);background:rgba(7,9,10,.97);box-shadow:24px 0 70px rgba(0,0,0,.42);pointer-events:auto;animation:aic-drawer-in .2s ease-out both}.aic-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:7px 3px 14px;border-bottom:1px solid rgba(255,255,255,.12);color:var(--acid);font:700 11px ui-monospace,monospace;letter-spacing:.12em}.aic-close{width:27px;height:27px;border:1px solid rgba(255,255,255,.15);border-radius:0;color:#fff;background:none;cursor:pointer}.aic-session-list{height:calc(100% - 90px);padding-top:10px;overflow:auto}.aic-session{display:block;width:100%;padding:11px 12px;border:0;border-left:2px solid transparent;color:rgba(238,240,235,.58);background:transparent;text-align:left;cursor:pointer}.aic-session:hover{color:#fff;background:rgba(255,255,255,.04)}.aic-session.active{border-left-color:var(--acid);color:var(--acid);background:rgba(250,255,63,.06)}.aic-session b,.aic-session small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aic-session b{font-size:12px}.aic-session small{margin-top:4px;color:rgba(238,240,235,.3);font:8px ui-monospace,monospace}
|
|
109
|
-
body[data-prts-skin="endfield-aic"]:has(.aic-drawer) [data-slot="conversation"]>div{z-index:30}
|
|
111
|
+
body[data-prts-skin="endfield-aic"]:has(.aic-drawer) :is([data-slot="conversation"],[data-slot="main.conversation"])>div{z-index:30}
|
|
110
112
|
.aic-settings-layer{position:absolute;z-index:40;inset:0;display:grid;grid-template-columns:16.25rem minmax(0,1fr);background:#090b0d;animation:aic-root-in .2s ease-out both}.aic-settings-nav{position:relative;padding:28px 22px;border-right:1px solid rgba(250,255,63,.18);background:linear-gradient(180deg,#0c0f11,#07090a)}.aic-settings-nav::after{content:"CONFIGURATION NODE";position:absolute;right:-5px;bottom:94px;color:rgba(250,255,63,.11);font:700 38px/1 ui-monospace,monospace;letter-spacing:-.08em;writing-mode:vertical-rl}.aic-settings-brand{display:flex;align-items:center;gap:9px;color:var(--acid);font:800 16px ui-monospace,monospace;letter-spacing:.12em}.aic-settings-nav p{margin:8px 0 34px;color:rgba(238,240,235,.33);font:9px/1.6 ui-monospace,monospace}.aic-settings-tab{display:block;width:100%;margin:3px 0;padding:11px 12px;border:0;border-left:2px solid var(--acid);color:#eef0eb;background:rgba(250,255,63,.06);text-align:left;font:10px ui-monospace,monospace;letter-spacing:.08em}.aic-settings-back{position:absolute;bottom:24px;left:22px;padding:9px 13px;border:1px solid rgba(255,255,255,.17);border-radius:0;color:rgba(238,240,235,.7);background:transparent;cursor:pointer}.aic-settings-main{padding:28px 38px 60px;overflow:auto;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:42px 42px}.aic-settings-title{margin:0 0 6px;color:#f4f5f0;font:500 28px/1.2 inherit}.aic-settings-sub{margin:0 0 28px;color:rgba(238,240,235,.35);font:9px ui-monospace,monospace;letter-spacing:.1em}.aic-settings-main .prts-settings-wrap{max-width:1040px}.aic-settings-main .prts-settings-wrap>div{border-radius:0!important;border-color:rgba(255,255,255,.13)!important;background:rgba(8,10,12,.9)!important}.aic-settings-main .prts-settings-wrap h3{color:var(--acid);font:700 11px ui-monospace,monospace!important;letter-spacing:.1em}.aic-settings-main :is(button,input,select){border-radius:0!important}.aic-settings-main button{color:#e9ebe5!important}.aic-settings-main button[style*="button-info-fill"]{color:#080a0c!important}.aic-settings-main .prts-skin-option[aria-pressed="true"]{border-color:var(--acid)!important;box-shadow:inset 3px 0 var(--acid)!important}
|
|
111
|
-
.aic-region-label{position:absolute;z-index:4;display:flex;align-items:center;gap:7px;padding:7px 10px;color:#f1f2ed;background:rgba(7,9,10,.73);border:1px solid rgba(255,255,255,.12);border-radius:0;font:700 9px ui-monospace,monospace;pointer-events:auto;cursor:pointer}.aic-region-label:hover,.aic-region-label:focus-visible,.aic-region-label.selected{border-color:rgba(250,255,63,.72);outline:none;color:var(--acid);background:rgba(7,9,10,.92)}.aic-region-label i{width:6px;height:6px;background:var(--acid)}.aic-region-label small{color:rgba(238,240,235,.35)}
|
|
113
|
+
.aic-region-label{position:absolute;z-index:4;display:flex;width:max-content;white-space:nowrap;align-items:center;gap:7px;padding:7px 10px;color:#f1f2ed;background:rgba(7,9,10,.73);border:1px solid rgba(255,255,255,.12);border-radius:0;font:700 9px ui-monospace,monospace;pointer-events:auto;cursor:pointer}.aic-region-label:hover,.aic-region-label:focus-visible,.aic-region-label.selected{border-color:rgba(250,255,63,.72);outline:none;color:var(--acid);background:rgba(7,9,10,.92)}.aic-region-label i{width:6px;height:6px;background:var(--acid)}.aic-region-label small{color:rgba(238,240,235,.35)}
|
|
112
114
|
@keyframes aic-root-in{from{opacity:0}to{opacity:1}}@keyframes aic-msg-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@keyframes aic-drawer-in{from{opacity:0;transform:translateX(-18px)}to{opacity:1;transform:none}}@keyframes aic-blink{50%{opacity:.25}}
|
|
113
115
|
@media(max-width:980px){.aic-chat-band{width:min(720px,100vw);padding-top:92px}.aic-chat-resize{display:none}.aic-hud-br{display:none}.aic-settings-layer{grid-template-columns:190px minmax(0,1fr)}.aic-settings-main{padding:24px 20px}.aic-brand-sub,.aic-coords span:nth-child(n+2){display:none}}
|
|
114
116
|
@media(max-width:680px){.aic-chat-band{padding:84px 10px 10px}.aic-band-backdrop{right:-80px}.aic-hud-tr{right:10px}.aic-settings-layer{display:block}.aic-settings-nav{height:112px;padding:18px}.aic-settings-nav p,.aic-settings-tab,.aic-settings-nav::after{display:none}.aic-settings-back{right:18px;bottom:auto;left:auto;top:20px}.aic-settings-main{position:absolute;inset:112px 0 0}.aic-msg-body{font-size:13px}}
|
|
@@ -119,7 +121,7 @@ body[data-prts-skin="endfield-aic"]:has(.aic-drawer) [data-slot="conversation"]>
|
|
|
119
121
|
visible while mobile browser chrome or a display cutout changes the viewport. */
|
|
120
122
|
.aic-root{min-height:100vh;min-height:100svh;height:100vh;height:100dvh}
|
|
121
123
|
.aic-chat-band{height:100vh;height:100dvh}
|
|
122
|
-
body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div{top:calc(104px + env(safe-area-inset-top,0px));height:calc(100vh - 104px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;height:calc(100dvh - 104px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important}
|
|
124
|
+
body[data-prts-skin="endfield-aic"] :is([data-slot="conversation"],[data-slot="main.conversation"])>div{top:calc(104px + env(safe-area-inset-top,0px));height:calc(100vh - 104px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;height:calc(100dvh - 104px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important}
|
|
123
125
|
.aic-start-brand{width:max(0px,calc(var(--aic-band-width) - 42px))}
|
|
124
126
|
.aic-terminal-name{min-width:0}.aic-terminal-name span{display:block;min-width:0;max-width:min(36vw,360px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
125
127
|
.aic-drawer :is(button,a,[tabindex]):focus-visible{outline:1px solid var(--acid);outline-offset:2px}
|
|
@@ -127,7 +129,7 @@ body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div{top:calc(104p
|
|
|
127
129
|
@media(max-width:980px){
|
|
128
130
|
.aic-chat-band{width:min(720px,100vw);padding:0}
|
|
129
131
|
.aic-terminal-overlay{height:calc(92px + env(safe-area-inset-top,0px));padding:calc(52px + env(safe-area-inset-top,0px)) 20px 12px}
|
|
130
|
-
body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div{top:calc(92px + env(safe-area-inset-top,0px))!important;width:min(720px,100vw)!important;height:calc(100vh - 92px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;height:calc(100dvh - 92px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important}
|
|
132
|
+
body[data-prts-skin="endfield-aic"] :is([data-slot="conversation"],[data-slot="main.conversation"])>div{top:calc(92px + env(safe-area-inset-top,0px))!important;width:min(720px,100vw)!important;height:calc(100vh - 92px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;height:calc(100dvh - 92px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important}
|
|
131
133
|
.aic-start-brand{left:19px;width:max(0px,calc(min(720px,100vw) - 38px))}
|
|
132
134
|
}
|
|
133
135
|
|
|
@@ -135,7 +137,18 @@ body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div{top:calc(104p
|
|
|
135
137
|
.aic-chat-band{width:100vw;padding:0}
|
|
136
138
|
.aic-terminal-overlay{height:calc(84px + env(safe-area-inset-top,0px));gap:6px;padding:calc(44px + env(safe-area-inset-top,0px)) calc(10px + env(safe-area-inset-right,0px)) 10px calc(10px + env(safe-area-inset-left,0px))}
|
|
137
139
|
.aic-terminal-name span{max-width:clamp(56px,22vw,130px)}.aic-terminal-ver{display:none}.aic-band-btn{padding-inline:8px;font-size:9px}
|
|
138
|
-
body[data-prts-skin="endfield-aic"] [data-slot="conversation"]>div{top:calc(84px + env(safe-area-inset-top,0px))!important;width:100vw!important;height:calc(100vh - 84px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;height:calc(100dvh - 84px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important}
|
|
140
|
+
body[data-prts-skin="endfield-aic"] :is([data-slot="conversation"],[data-slot="main.conversation"])>div{top:calc(84px + env(safe-area-inset-top,0px))!important;width:100vw!important;height:calc(100vh - 84px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important;height:calc(100dvh - 84px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px))!important}
|
|
139
141
|
.aic-start-brand{top:calc(112px + env(safe-area-inset-top,0px));left:calc(10px + env(safe-area-inset-left,0px));width:max(0px,calc(100vw - 20px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px)))}
|
|
140
142
|
.aic-drawer{top:calc(84px + env(safe-area-inset-top,0px));right:env(safe-area-inset-right,0px);bottom:env(safe-area-inset-bottom,0px);left:env(safe-area-inset-left,0px);width:auto}
|
|
141
143
|
}
|
|
144
|
+
|
|
145
|
+
/* The plugin manager uses the Host's normal navigation and column geometry. */
|
|
146
|
+
body[data-prts-skin="endfield-aic"] {
|
|
147
|
+
--prts-plugins-label:"AIC / EXTENSIONS";
|
|
148
|
+
--prts-plugins-paper:#14181b;
|
|
149
|
+
--prts-plugins-card:#1b2023;
|
|
150
|
+
--prts-plugins-rule:#41474a;
|
|
151
|
+
--prts-plugins-accent:#faff3f;
|
|
152
|
+
--prts-plugins-radius:0px;
|
|
153
|
+
}
|
|
154
|
+
body[data-prts-skin="endfield-aic"]:has([data-plugin-panel]) .aic-root {display:none}
|
package/lib/skins/prts-agent.css
CHANGED
|
@@ -60,7 +60,7 @@ body[data-prts-skin="agent"] .prts-agent-scene[data-page="hidden"] { visibility:
|
|
|
60
60
|
|
|
61
61
|
body[data-prts-skin="agent"] :has(> [data-shell-overlay]) { position:relative;z-index:1;background:transparent!important; }
|
|
62
62
|
body[data-prts-skin="agent"] :has(> [data-shell-overlay]) > div:nth-of-type(1) { border-right:1px solid rgba(255,255,255,.13)!important;
|
|
63
|
-
background:linear-gradient(180deg
|
|
63
|
+
background:linear-gradient(180deg,#171a1d,#343a3d)!important;
|
|
64
64
|
--dsw-alias-button-elevated-fill:#292d2a;--dsw-alias-button-floating-hover:#3c423a;
|
|
65
65
|
--dsw-alias-label-primary:#f7f7f4;--dsw-alias-label-secondary:#e2e3df;--dsw-alias-label-tertiary:#c1c5c6;--dsw-alias-label-caption:#969b9f;
|
|
66
66
|
--dsw-alias-border-l1:rgba(255,255,255,.1);--dsw-alias-border-l2:rgba(255,255,255,.16);--dsw-alias-interactive-bg-hover:rgba(255,255,255,.08);
|
|
@@ -112,8 +112,8 @@ body[data-prts-skin="agent"] .prts-evidence-layer{display:block}.prts-evidence-s
|
|
|
112
112
|
.prts-agent-scene .prts-empty-hero{position:fixed;z-index:2;top:var(--agent-hero-top);right:var(--agent-content-right);left:var(--agent-content-left);text-align:center;transition:opacity .58s ease,transform .72s cubic-bezier(.22,.8,.24,1),filter .58s ease}.prts-agent-scene .prts-hero-identity{position:relative;top:auto;left:auto;display:inline-flex;width:auto;transform:none;flex-direction:column;align-items:flex-start;text-align:left;filter:drop-shadow(0 2px 12px rgba(255,255,255,.95))}.prts-agent-scene .prts-hero-wordmark{position:relative;display:flex;align-items:flex-start}.prts-agent-scene .prts-hero-wordmark svg{display:block;width:clamp(250px,31vw,470px);height:auto}.prts-agent-scene .prts-hero-wordmark em{position:absolute;top:1px;left:calc(100% + 9px);padding:0 6px;border:1px solid rgba(17,18,20,.36);border-radius:2px;color:rgba(255,255,255,.88);background:rgba(17,18,20,.82);font:600 8px/16px var(--agent-mono);letter-spacing:.08em;white-space:nowrap}.prts-agent-scene .prts-hero-identity small{display:flex;align-items:center;gap:9px;margin-top:11px;color:#111214;font:9px/15px var(--agent-mono);letter-spacing:.035em}.prts-agent-scene .prts-hero-identity small s{color:#858a91;text-decoration-color:#f25a5a}.prts-agent-scene .prts-empty-hero h2{margin:16px 0 7px;font-size:26px;line-height:34px;font-weight:500;letter-spacing:-.4px}.prts-agent-scene .prts-empty-hero>p{max-width:600px;margin:0 auto;color:#62666c;font-size:14px;line-height:22px}
|
|
113
113
|
.prts-agent-scene[data-phase="active"] .prts-empty-hero{opacity:0;transform:translateY(-34px) scale(.96);filter:blur(3px)}.prts-agent-scene[data-phase="active"] .prts-cpu-assembly{opacity:0;translate:0 -148px;transform:translateX(-50%);filter:blur(5px)}.prts-agent-scene[data-phase="active"] :is(.prts-trace-query,.prts-trace-source,.prts-trace-stack,.prts-node-plan,.prts-node-read,.prts-node-recall,.prts-node-verify,.prts-system-ticker){opacity:1}.prts-agent-scene[data-phase="active"] :is(.prts-trace-source,.prts-node-recall,.prts-node-verify,.prts-system-ticker){translate:7vw 8px}.prts-agent-scene[data-phase="active"] .prts-node-plan{opacity:.48}
|
|
114
114
|
.prts-agent-scene[data-phase="leaving"] .prts-empty-hero{opacity:0;transform:translateY(-34px) scale(.96);filter:blur(3px)}.prts-agent-scene[data-phase="leaving"] .prts-cpu-assembly{opacity:0;translate:0 -118px;transform:translateX(-50%);filter:blur(4px)}.prts-agent-scene[data-phase="leaving"] :is(.prts-trace-query,.prts-trace-source,.prts-trace-stack,.prts-node-plan,.prts-node-read,.prts-node-recall,.prts-node-verify,.prts-system-ticker){opacity:1}.prts-agent-scene[data-phase="leaving"] :is(.prts-trace-source,.prts-node-recall,.prts-node-verify,.prts-system-ticker){translate:7vw 8px}.prts-agent-scene[data-phase="leaving"] .prts-node-plan{opacity:.48}
|
|
115
|
-
body[data-prts-skin="agent"] :has(> [data-shell-overlay])>div:nth-of-type(1){background:rgba(250,250,247,.045)!important;box-shadow:none!important;backdrop-filter:none!important}
|
|
116
|
-
body[data-prts-skin="agent"] :has(> [data-shell-overlay])>div:nth-of-type(1) :is(span,b,small,p,h1,h2,h3,label):not([role="dialog"] *){color:transparent!important;background:linear-gradient(180deg,rgba(250,250,247,.96) 0,rgba(250,250,247,.94) 49vh,rgba(20,22,25,.96) 49.08vh,rgba(20,22,25,.96) 76vh) fixed;background-clip:text;-webkit-background-clip:text}body[data-prts-skin="agent"] :has(> [data-shell-overlay])>div:nth-of-type(1) svg:not([role="dialog"] *){color:rgba(250,250,247,.92)!important;mix-blend-mode:difference}body[data-prts-skin="agent"] [data-slot="sidebar.brand.name"]::before,body[data-prts-skin="agent"] [data-slot="sidebar.brand.name"]::after{color:transparent;background:linear-gradient(180deg,rgba(250,250,247,.96) 0,rgba(250,250,247,.94) 49vh,rgba(20,22,25,.96) 49.08vh,rgba(20,22,25,.96) 76vh) fixed;background-clip:text;-webkit-background-clip:text}
|
|
115
|
+
body[data-prts-skin="agent"]:has(.prts-agent-scene[data-page="conversation"]) :has(> [data-shell-overlay])>div:nth-of-type(1){background:rgba(250,250,247,.045)!important;box-shadow:none!important;backdrop-filter:none!important}
|
|
116
|
+
body[data-prts-skin="agent"]:has(.prts-agent-scene[data-page="conversation"]) :has(> [data-shell-overlay])>div:nth-of-type(1) :is(span,b,small,p,h1,h2,h3,label):not([role="dialog"] *){color:transparent!important;background:linear-gradient(180deg,rgba(250,250,247,.96) 0,rgba(250,250,247,.94) 49vh,rgba(20,22,25,.96) 49.08vh,rgba(20,22,25,.96) 76vh) fixed;background-clip:text;-webkit-background-clip:text}body[data-prts-skin="agent"]:has(.prts-agent-scene[data-page="conversation"]) :has(> [data-shell-overlay])>div:nth-of-type(1) svg:not([role="dialog"] *){color:rgba(250,250,247,.92)!important;mix-blend-mode:difference}body[data-prts-skin="agent"]:has(.prts-agent-scene[data-page="conversation"]) [data-slot="sidebar.brand.name"]::before,body[data-prts-skin="agent"]:has(.prts-agent-scene[data-page="conversation"]) [data-slot="sidebar.brand.name"]::after{color:transparent;background:linear-gradient(180deg,rgba(250,250,247,.96) 0,rgba(250,250,247,.94) 49vh,rgba(20,22,25,.96) 49.08vh,rgba(20,22,25,.96) 76vh) fixed;background-clip:text;-webkit-background-clip:text}
|
|
117
117
|
body[data-prts-skin="agent"] :has(> [data-shell-overlay])>div:nth-of-type(1) [role="dialog"]{--dsw-alias-button-elevated-fill:rgba(255,255,255,.92);--dsw-alias-button-floating-hover:#efefeb;--dsw-alias-label-primary:#111214;--dsw-alias-label-secondary:#34373b;--dsw-alias-label-tertiary:#62666c;--dsw-alias-label-caption:#858a91;--dsw-alias-border-l1:rgba(17,18,20,.08);--dsw-alias-border-l2:rgba(17,18,20,.13);--dsw-alias-bg-base:#fff;--dsw-alias-bg-layer-1:#f4f4f1;--dsw-alias-bg-layer-2:#fff;--dsw-alias-bg-layer-3:#fff;--dsw-alias-interactive-bg-hover:rgba(17,18,20,.055);--dsw-specific-sidebar-nav-item-hover:rgba(17,18,20,.055);--dsw-specific-sidebar-nav-item-active:rgba(17,18,20,.095);color:#111214!important;background:#fff!important}
|
|
118
118
|
body[data-prts-skin="agent"] :has(> [data-shell-overlay])>div:nth-of-type(1) [role="dialog"] :is(span,b,small,p,h1,h2,h3,label){color:inherit!important;background:none!important;background-clip:border-box!important;-webkit-background-clip:border-box!important;-webkit-text-fill-color:currentColor!important}body[data-prts-skin="agent"] :has(> [data-shell-overlay])>div:nth-of-type(1) [role="dialog"] svg{color:currentColor!important;mix-blend-mode:normal!important}
|
|
119
119
|
body[data-prts-skin="agent"] :has(> [data-shell-overlay])>div:nth-of-type(1) button:is([aria-label="新会话"],[aria-label="新建会话"],[aria-label="New chat"],[aria-label="New session"],[aria-label="New conversation"]):has(>svg){border-color:rgba(255,255,255,.1)!important;color:#f7f7f4!important;background:rgba(255,255,255,.1)!important}
|
|
@@ -131,6 +131,16 @@ body[data-prts-skin="agent"] [data-phase="hero"] [data-composer-seat]{position:a
|
|
|
131
131
|
@keyframes prts-cpu-open{0%,17%{transform:translateX(-50%) translateY(88px) skewY(-27deg) rotate(30deg) scale(.96)}58%{transform:translateX(-50%) translateY(-12px) skewY(-27deg) rotate(30deg) scale(1.015)}100%{transform:translateX(-50%) skewY(-27deg) rotate(30deg)}}
|
|
132
132
|
@keyframes prts-fade-in{from{opacity:0}to{opacity:1}}@keyframes prts-drawer-in{from{transform:translateX(26px);opacity:0}to{transform:translateX(0);opacity:1}}
|
|
133
133
|
@keyframes prts-cpu-lid-open{0%,17%{transform:translateY(101px) scale(.96)}58%{transform:translateY(-12px) scale(1.015)}76%{transform:translateY(4px) scale(.995)}100%{transform:translateY(0) scale(1)}}@keyframes prts-cpu-core-reveal{0%,27%{opacity:.12;transform:scale(.9);filter:brightness(.7)}64%{opacity:1;transform:scale(1.035);filter:brightness(1.18)}100%{opacity:1;transform:scale(1);filter:none}}@keyframes prts-guide-pulse{0%,100%{opacity:.32}50%{opacity:.78}}@keyframes prts-circuit-trace{to{stroke-dashoffset:-28}}@keyframes prts-node-scan{0%,100%{opacity:.2;transform:scaleY(.45)}50%{opacity:.9;transform:scaleY(1)}}
|
|
134
|
-
@media (max-width:900px){.prts-agent-scene :is(.prts-trace-window,.prts-system-node,.prts-trace-stack,.prts-system-ticker,.prts-ambient-type){opacity:.25}.prts-agent-scene .prts-cpu-assembly{width:70vw;left:58%}.prts-agent-scene .prts-hero-identity{width:
|
|
135
|
-
@media (max-width:680px){.prts-agent-scene .prts-shard-dark{width:72%}.prts-agent-scene :is(.prts-trace-window,.prts-system-node,.prts-trace-stack,.prts-system-ticker,.prts-scan-orbit){display:none}.prts-agent-scene .prts-hero-identity{left:
|
|
134
|
+
@media (max-width:900px){.prts-agent-scene :is(.prts-trace-window,.prts-system-node,.prts-trace-stack,.prts-system-ticker,.prts-ambient-type){opacity:.25}.prts-agent-scene .prts-cpu-assembly{width:70vw;left:58%}.prts-agent-scene .prts-hero-identity{width:auto;max-width:calc(100% - 48px);left:auto}}
|
|
135
|
+
@media (max-width:680px){.prts-agent-scene .prts-shard-dark{width:72%}.prts-agent-scene :is(.prts-trace-window,.prts-system-node,.prts-trace-stack,.prts-system-ticker,.prts-scan-orbit){display:none}.prts-agent-scene .prts-hero-identity{left:auto;width:auto;max-width:calc(100% - 48px)}.prts-agent-scene .prts-hero-wordmark svg{width:min(250px,52vw)}.prts-agent-scene .prts-hero-identity small{font-size:7px;line-height:12px;gap:6px}.prts-agent-scene .prts-cpu-assembly{left:50%;width:90vw;opacity:.45}body[data-prts-skin="agent"] [data-chat-flow-kind="assistant-step"]:not([data-turn-process-member]){padding-left:38px}body[data-prts-skin="agent"] [data-chat-flow-kind="assistant-step"]:not([data-turn-process-member])::before{width:26px;height:26px;font-size:15px}}
|
|
136
136
|
@media (prefers-reduced-motion:reduce){.prts-agent-scene *{animation:none!important;transition:none!important}}
|
|
137
|
+
|
|
138
|
+
/* Administrative pages keep an opaque reading surface when the scene is hidden. */
|
|
139
|
+
body[data-prts-skin="agent"] {
|
|
140
|
+
--prts-plugins-label:"PRTS / EXTENSIONS";
|
|
141
|
+
--prts-plugins-paper:#f6f7f4;
|
|
142
|
+
--prts-plugins-card:#fff;
|
|
143
|
+
--prts-plugins-rule:#d6d9d3;
|
|
144
|
+
--prts-plugins-accent:#343a3d;
|
|
145
|
+
--prts-plugins-radius:8px;
|
|
146
|
+
}
|
package/lib/skins/rhine-lab.css
CHANGED
|
@@ -68,3 +68,12 @@ body[data-prts-skin="rhine-lab"] .prts-skin-option[aria-pressed="true"] {backgro
|
|
|
68
68
|
body[data-prts-skin="rhine-lab"] [role="dialog"]:has([data-slot="settings.header"])>nav {flex-basis:126px;width:126px}
|
|
69
69
|
body[data-prts-skin="rhine-lab"] .prts-skin-options {grid-template-columns:1fr}
|
|
70
70
|
}
|
|
71
|
+
|
|
72
|
+
body[data-prts-skin="rhine-lab"] {
|
|
73
|
+
--prts-plugins-label:"RHINE LAB / EXTENSIONS";
|
|
74
|
+
--prts-plugins-paper:#ebe8e2;
|
|
75
|
+
--prts-plugins-card:#f3f0e8;
|
|
76
|
+
--prts-plugins-rule:#b9b9a5;
|
|
77
|
+
--prts-plugins-accent:#59634b;
|
|
78
|
+
--prts-plugins-radius:3px;
|
|
79
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prts-terrarchive",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
"./presets": "./presets/register.js",
|
|
17
17
|
"./client": "./lib/client.js",
|
|
18
18
|
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
19
|
-
"./package.json": "./package.json"
|
|
19
|
+
"./package.json": "./package.json",
|
|
20
|
+
"./tools": "./src/tools.js",
|
|
21
|
+
"./composition": "./src/composition-skill.js"
|
|
20
22
|
},
|
|
21
23
|
"files": [
|
|
22
24
|
"src",
|
|
@@ -39,7 +41,10 @@
|
|
|
39
41
|
"bin/preview-rhine.mjs",
|
|
40
42
|
"bin/bake-rhine-details.mjs",
|
|
41
43
|
"bin/rhine-detail-baker.ts",
|
|
42
|
-
"docs/endfield-official-i18n.md"
|
|
44
|
+
"docs/endfield-official-i18n.md",
|
|
45
|
+
"docs/web-access.md",
|
|
46
|
+
"bin/build-runtime.mjs",
|
|
47
|
+
"bin/check-runtime.mjs"
|
|
43
48
|
],
|
|
44
49
|
"keywords": [
|
|
45
50
|
"dsh",
|
|
@@ -87,7 +92,7 @@
|
|
|
87
92
|
"test": "node --test --test-concurrency=1 test/*.test.js",
|
|
88
93
|
"pack:map": "node bin/pack-map-assets.mjs",
|
|
89
94
|
"pack:map:restore": "node bin/pack-map-assets.mjs --restore",
|
|
90
|
-
"check": "node --check src/index.js && node --check src/search.js && node --check src/search-projection.js && node --check src/read.js && node --check src/wiki.js && node --check src/store.js && node --check src/source-map.js && node --check src/cloud-projection.js && node --check src/evidence-state.js && node --check src/entity-routing.js && node --check src/entity-recognizer.js && node --check src/timeline.js && node --check src/cloud.js && node --check src/release-compatibility.js && node --check src/installer.js && node --check src/state.js && node --check src/ui.js && node --check src/skill.js && node --check lib/client.js && node --check bin/install.js && node --check bin/pack-map-assets.mjs && node --check presets/definition.js && node --check presets/register.js && node --check src/release-watch.js && node --check src/archive-presentation.js && node --check bin/preview-rhine.mjs && node --check src/i18n.js && node --check src/localization-format.js",
|
|
95
|
+
"check": "node --check src/index.js && node --check src/search.js && node --check src/search-projection.js && node --check src/read.js && node --check src/wiki.js && node --check src/store.js && node --check src/source-map.js && node --check src/cloud-projection.js && node --check src/evidence-state.js && node --check src/entity-routing.js && node --check src/entity-recognizer.js && node --check src/timeline.js && node --check src/cloud.js && node --check src/release-compatibility.js && node --check src/installer.js && node --check src/state.js && node --check src/ui.js && node --check src/skill.js && node --check lib/client.js && node --check bin/install.js && node --check bin/pack-map-assets.mjs && node --check presets/definition.js && node --check presets/register.js && node --check src/release-watch.js && node --check src/archive-presentation.js && node --check bin/preview-rhine.mjs && node --check src/i18n.js && node --check src/localization-format.js && node --check presets/composition.js && node --check src/tools.js && node --check src/composition-skill.js",
|
|
91
96
|
"install:prts": "node bin/install.js",
|
|
92
97
|
"bake:rhine-details": "node bin/bake-rhine-details.mjs",
|
|
93
98
|
"build:rhine": "npm run bake:rhine-details && tsc -p tsconfig.rhine.json && vite build --config vite.rhine.config.ts",
|
|
@@ -96,17 +101,19 @@
|
|
|
96
101
|
"test:rhine:browser": "node test/rhine-browser.mjs",
|
|
97
102
|
"test:rhine:flows": "node test/run-rhine-flows.mjs",
|
|
98
103
|
"test:desktop": "powershell.exe -NoProfile -ExecutionPolicy Bypass -File ../prts-terrarchive-portable/test-desktop.ps1 -PluginPath .",
|
|
99
|
-
"test:desktop:watch": "powershell.exe -NoProfile -ExecutionPolicy Bypass -File ../prts-terrarchive-portable/test-desktop.ps1 -PluginPath . -Watch"
|
|
104
|
+
"test:desktop:watch": "powershell.exe -NoProfile -ExecutionPolicy Bypass -File ../prts-terrarchive-portable/test-desktop.ps1 -PluginPath . -Watch",
|
|
105
|
+
"build:runtime": "node bin/build-runtime.mjs",
|
|
106
|
+
"check:runtime": "node bin/check-runtime.mjs",
|
|
107
|
+
"prepack": "node bin/check-runtime.mjs"
|
|
100
108
|
},
|
|
101
109
|
"devDependencies": {
|
|
102
110
|
"@kitlangton/rolling-number": "0.4.1",
|
|
103
111
|
"@types/three": "0.183.0",
|
|
112
|
+
"js-yaml": "4.3.1",
|
|
104
113
|
"markdown-it": "15.0.1",
|
|
105
114
|
"three": "0.183.2",
|
|
106
115
|
"typescript": "5.9.3",
|
|
107
|
-
"vite": "7.3.6"
|
|
108
|
-
},
|
|
109
|
-
"dependencies": {
|
|
116
|
+
"vite": "7.3.6",
|
|
110
117
|
"zod": "4.4.3"
|
|
111
118
|
}
|
|
112
119
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { JSON_SCHEMA, Type, load, dump } from '../lib/runtime/yaml.js'
|
|
2
|
+
|
|
3
|
+
// Cordis's entry-list dialect: expressions belong to each child, including
|
|
4
|
+
// platform switches and lookups of isolated services.
|
|
5
|
+
export const entryListSchema = JSON_SCHEMA.extend(new Type('tag:yaml.org,2002:js', {
|
|
6
|
+
kind: 'scalar',
|
|
7
|
+
resolve: (value) => typeof value === 'string',
|
|
8
|
+
construct: (value) => ({ __jsExpr: value }),
|
|
9
|
+
predicate: (value) => value !== null && typeof value === 'object' && typeof value.__jsExpr === 'string',
|
|
10
|
+
represent: (value) => value.__jsExpr,
|
|
11
|
+
}))
|
|
12
|
+
|
|
13
|
+
export function readPlugins(content) {
|
|
14
|
+
const plugins = load(content, { schema: entryListSchema })
|
|
15
|
+
if (!Array.isArray(plugins)) throw new Error('PRTS preset: expected a Cordis plugin list')
|
|
16
|
+
return plugins
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function writePlugins(plugins) {
|
|
20
|
+
return dump(plugins, { schema: entryListSchema, noRefs: true, lineWidth: -1 })
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** Extend the host's standard composition without duplicating shared tools. */
|
|
24
|
+
export function withPrtsPlugins(standard, additions) {
|
|
25
|
+
if (!Array.isArray(standard)) throw new Error('PRTS preset: standard mode has no plugin list')
|
|
26
|
+
const result = structuredClone(standard)
|
|
27
|
+
for (const addition of structuredClone(additions)) {
|
|
28
|
+
const index = result.findIndex((entry) => entry.id === addition.id || entry.name === addition.name)
|
|
29
|
+
if (index < 0) {
|
|
30
|
+
result.push(addition)
|
|
31
|
+
continue
|
|
32
|
+
}
|
|
33
|
+
const existing = result[index]
|
|
34
|
+
// Keep user choices such as renamed or disabled standard tools.
|
|
35
|
+
if (existing.name !== addition.name) throw new Error('PRTS preset: conflicting plugin id ' + addition.id)
|
|
36
|
+
result[index] = { ...existing, ...(addition.config ? {
|
|
37
|
+
config: { ...existing.config, ...addition.config },
|
|
38
|
+
} : {}) }
|
|
39
|
+
}
|
|
40
|
+
return result
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** Read declarations before activation settles, avoiding startup order races. */
|
|
44
|
+
export async function standardPlugins(ctx) {
|
|
45
|
+
const loader = ctx.get?.('loader')
|
|
46
|
+
if (loader) {
|
|
47
|
+
const entry = [...loader.entries()].find(({ options }) =>
|
|
48
|
+
options.name === '@deepseek-ai/dsh-agent-preset' && options.config?.id === 'standard')
|
|
49
|
+
if (entry) return entry.options.config.plugins
|
|
50
|
+
}
|
|
51
|
+
const document = await ctx.agentPresets.readDocument('standard')
|
|
52
|
+
return readPlugins(document.content)
|
|
53
|
+
}
|
package/presets/definition.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
/** PRTS
|
|
1
|
+
/** PRTS additions; registration composes these with the host's standard mode. */
|
|
2
2
|
export const prtsPreset = {
|
|
3
3
|
id: 'prts',
|
|
4
4
|
name: 'PRTS 模式',
|
|
5
|
-
description: '
|
|
5
|
+
description: '标准模式的完整能力,加上 PRTS.chat 本地与云端检索;莱茵生命皮肤下启用证据板和调查报告。',
|
|
6
6
|
order: 30,
|
|
7
7
|
plugins: [
|
|
8
8
|
{
|
package/presets/prts/preset.yml
CHANGED
package/presets/register.js
CHANGED
|
@@ -3,9 +3,15 @@ import { createHash, randomUUID } from 'node:crypto'
|
|
|
3
3
|
import { lstatSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs'
|
|
4
4
|
import { join, resolve } from 'node:path'
|
|
5
5
|
import { prtsPreset } from './definition.js'
|
|
6
|
+
import { readPlugins, standardPlugins, withPrtsPlugins, writePlugins } from './composition.js'
|
|
6
7
|
|
|
7
|
-
export
|
|
8
|
-
|
|
8
|
+
export default class PrtsPreset {
|
|
9
|
+
static inject = ['agentPresets']
|
|
10
|
+
static [Symbol.for('cordis.group')] = true
|
|
11
|
+
|
|
12
|
+
constructor(ctx, config = {}) { this.ctx = ctx; this.config = config ?? {} }
|
|
13
|
+
async [Symbol.for('cordis.init')]() { await registerPreset(this.ctx, this.config) }
|
|
14
|
+
}
|
|
9
15
|
const packageName = 'prts-terrarchive'
|
|
10
16
|
const markerName = '.prts-terrarchive.json'
|
|
11
17
|
const filenames = ['agent.cordis.yml', 'preset.yml']
|
|
@@ -28,12 +34,15 @@ function writeAtomic(path, content) {
|
|
|
28
34
|
}
|
|
29
35
|
}
|
|
30
36
|
|
|
31
|
-
export async function
|
|
37
|
+
export async function registerPreset(ctx, config = {}) {
|
|
32
38
|
const roster = ctx.agentPresets
|
|
33
39
|
// DSH 0.1.7 registers definitions directly. The legacy file roots remain
|
|
34
40
|
// supported for older Hosts and the existing portable distribution.
|
|
35
41
|
if (typeof roster.register === 'function' && !Array.isArray(roster.roots)) {
|
|
36
|
-
|
|
42
|
+
// Explicit plugins is a complete replacement owned by the user.
|
|
43
|
+
const plugins = config.plugins === undefined
|
|
44
|
+
? withPrtsPlugins(await standardPlugins(ctx), prtsPreset.plugins) : config.plugins
|
|
45
|
+
const unregister = await roster.register({ ...prtsPreset, plugins })
|
|
37
46
|
ctx.effect(() => unregister)
|
|
38
47
|
return
|
|
39
48
|
}
|
|
@@ -47,11 +56,10 @@ export async function apply(ctx) {
|
|
|
47
56
|
const files = Object.fromEntries(filenames.map((file) => [
|
|
48
57
|
file, readFileSync(new URL(`./prts/${file}`, import.meta.url), 'utf8'),
|
|
49
58
|
]))
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
}
|
|
59
|
+
// Resolve the base before creating the directory so a missing standard
|
|
60
|
+
// preset can be retried on the next launch without leaving an unowned stub.
|
|
61
|
+
files['agent.cordis.yml'] = writePlugins(withPrtsPlugins(
|
|
62
|
+
readPlugins(await roster.read('standard')), readPlugins(files['agent.cordis.yml'])))
|
|
55
63
|
mkdirSync(resolve(root.path), { recursive: true })
|
|
56
64
|
let created = false
|
|
57
65
|
try {
|
|
@@ -73,6 +81,11 @@ export async function apply(ctx) {
|
|
|
73
81
|
|| digest(content) !== previous.files?.[file]) return
|
|
74
82
|
}
|
|
75
83
|
}
|
|
84
|
+
const marker = {
|
|
85
|
+
format: 1, package: packageName,
|
|
86
|
+
version: JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8')).version,
|
|
87
|
+
files: Object.fromEntries(filenames.map((file) => [file, digest(files[file])])),
|
|
88
|
+
}
|
|
76
89
|
for (const file of filenames) {
|
|
77
90
|
const path = join(directory, file)
|
|
78
91
|
if (readOptional(path) !== files[file]) writeAtomic(path, files[file])
|
|
@@ -81,6 +94,6 @@ export async function apply(ctx) {
|
|
|
81
94
|
const markerContent = JSON.stringify(marker, null, 2) + '\n'
|
|
82
95
|
if (readOptional(markerPath) !== markerContent) writeAtomic(markerPath, markerContent)
|
|
83
96
|
} catch (error) {
|
|
84
|
-
ctx.logger.warn('Could not prepare the PRTS user preset in %s. Check directory permissions: %s', directory, error.message)
|
|
97
|
+
ctx.logger.warn('Could not prepare the PRTS user preset in %s. Check the standard preset and directory permissions: %s', directory, error.message)
|
|
85
98
|
}
|
|
86
99
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { JSON_SCHEMA, Type, load, dump } from 'js-yaml'
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { z } from 'zod'
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: prts-composition
|
|
3
|
+
description: 在创造模式中组合 PRTS 检索、调查、证据板工具与任意 DSH 工具,创建或修改自定义模式。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 组合 PRTS 工具
|
|
7
|
+
|
|
8
|
+
用户决定使用哪些能力。PRTS 工具不要求模式名是 `prts`,也不要求使用 PRTS 皮肤。保留用户选择的终端、文件、子 Agent、计划等工具;不要为了搭载资料检索把模式缩减成检索专用模式。所有工具继续服从宿主的工作区、权限和审批设置。
|
|
9
|
+
|
|
10
|
+
## 工具入口
|
|
11
|
+
|
|
12
|
+
已安装的 `prts-terrarchive` bundle 提供宿主资料管理和默认 PRTS 模式。以下两行可以加入任意 Agent 预设的插件列表:
|
|
13
|
+
|
|
14
|
+
```yaml
|
|
15
|
+
- id: prts-corpus
|
|
16
|
+
name: prts-terrarchive/tools
|
|
17
|
+
config:
|
|
18
|
+
enabledGames: [arknights, endfield]
|
|
19
|
+
cloud:
|
|
20
|
+
baseUrl: https://prts.chat
|
|
21
|
+
game: all
|
|
22
|
+
- id: prts-retrieval-skill
|
|
23
|
+
name: prts-terrarchive/skill
|
|
24
|
+
config:
|
|
25
|
+
enabledGames: [arknights, endfield]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`prts-terrarchive/tools` 只加载 Agent 工具,不注册设置页或 HTTP 路由。沿用主插件的语料路径、共享设置和调查存储。包含本地的 `corpus_search`、`corpus_read`、`corpus_i18n`、`timeline_search`,云端启用时的 `cloud_search`、`cloud_inspect`,以及调查工具 `investigation_get/open/stage/update/publish`。本地语料和终末地语言附件需要用户安装;云端工具由 PRTS 资料设置控制。
|
|
29
|
+
|
|
30
|
+
调查工具 `investigation_*` 仅在用户选择「莱茵生命资料馆」皮肤时启用;切出后会从当前会话的工具列表撤下,已有调查数据保留。其他皮肤只使用检索、原文及所组合的宿主工具,直接在对话中回答,不要求建板。不要为了启用调查工具擅自修改用户的皮肤选择。
|
|
31
|
+
|
|
32
|
+
`prts-terrarchive/skill` 注册 `prts-retrieval`,并在莱茵生命皮肤下注册 `prts-investigation` 使用指导。若基础模式没有 `@deepseek-ai/dsh-tool-skill`,补上一个 skill loader;已有时不要重复添加。网页工具是独立的 `@deepseek-ai/dsh-tool-web`,不是 PRTS 工具入口的一部分,可按用户需要组合。
|
|
33
|
+
|
|
34
|
+
同一模式内不要同时加载 `prts-terrarchive/tools` 和 `registerTools: true` 的 `prts-terrarchive`,否则会重复注册工具。宿主现有 `registerTools: false` 的管理实例应保留。
|
|
35
|
+
|
|
36
|
+
## 当前 DSH:创建或修改模式
|
|
37
|
+
|
|
38
|
+
先加载宿主的 `editing-cordis-compositions` 指导,按其 bundle 安装和验证流程操作。以用户选择的现有预设为基础,保留其完整 plugins 列表和 isolate 分组,再加入上述两行;不能只写扩展行就宣称继承了标准模式。不要在 profile 根层注册这些 Agent 工具,也不要改写 npm 包或 app.asar。
|
|
39
|
+
|
|
40
|
+
默认 PRTS 模式在启用时读取当前宿主的 standard 声明,继承其工具、条件和隔离组,再加入 PRTS 工具。要完全自定义 PRTS 模式,用一个用户 bundle 覆盖现有注册项:
|
|
41
|
+
|
|
42
|
+
```yaml
|
|
43
|
+
- id: prts-preset-seed
|
|
44
|
+
name: prts-terrarchive/presets
|
|
45
|
+
config:
|
|
46
|
+
plugins:
|
|
47
|
+
# 放入用户确认的完整插件列表;这是整体替换,不是追加。
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
不要新增另一个 id 为 prts 的预设;不同名称的自定义模式使用宿主原生 `@deepseek-ai/dsh-agent-preset` 声明。模式内工具启停可通过 Cordis entry 的 disabled 字段控制。
|
|
51
|
+
|
|
52
|
+
默认 PRTS 继承在插件启用或宿主重启时读取标准声明;修改 standard 后需要重启以同步默认 PRTS。显式配置 plugins 后完全由用户拥有,不会自动补回删除的工具。旧会话保留原预设版本,在新会话验证修改。
|
|
53
|
+
|
|
54
|
+
## 旧版 DSH
|
|
55
|
+
|
|
56
|
+
旧版使用 `$DSH_HOME/.agent-presets/<id>/agent.cordis.yml` 和 `preset.yml`。先按宿主旧版的预设创建流程复制所选模式,再把上面的两个插件 entry 加入组合。不要向旧版添加新版才有的插件名。默认 PRTS 会复制该宿主自己的 standard 组合;有用户改动或没有生成标记的既有文件不会被自动覆盖。
|
|
57
|
+
|
|
58
|
+
## 验证
|
|
59
|
+
|
|
60
|
+
检查预设没有加载诊断,再在新会话核对工具清单:所选基础工具仍在,PRTS 工具只出现一次,普通模式未被添加资料工具。用本地资料检索验证工具执行,用调查工具验证会话隔离;没有语料时应明确提示安装。禁用或卸载相关 bundle 后应移除对应贡献。不要为了通过检查修改宿主权限或填入凭据。
|