@openvulcan/dsh-vulcancode 0.4.0 → 0.4.4
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.md +103 -38
- package/cordis.patch.yml +4 -0
- package/node_modules/@openvulcan/dsh-decision-guard/lib/client.js +133 -38
- package/node_modules/@openvulcan/dsh-decision-guard/package.json +2 -2
- package/node_modules/@openvulcan/dsh-vulcan-account/lib/client.js +55 -47
- package/node_modules/@openvulcan/dsh-vulcan-account/package.json +2 -2
- package/node_modules/@openvulcan/dsh-vulcan-answers/lib/client.js +30 -30
- package/node_modules/@openvulcan/dsh-vulcan-answers/lib/committed-fiber.d.ts +18 -0
- package/node_modules/@openvulcan/dsh-vulcan-answers/lib/committed-fiber.js +62 -0
- package/node_modules/@openvulcan/dsh-vulcan-answers/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-luaskills/lib/client.js +14 -5
- package/node_modules/@openvulcan/dsh-vulcan-luaskills/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/assets/markdown-memory-guide.md +1 -0
- package/node_modules/@openvulcan/dsh-vulcan-memory/assets/memory-curator/SKILL.md +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/errors.d.ts +7 -0
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/errors.js +11 -0
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/index.d.ts +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/index.js +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/operations.js +22 -3
- package/node_modules/@openvulcan/dsh-vulcan-memory/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/LICENSE +21 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/client.js +509 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/index.d.ts +6 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/index.js +8 -0
- package/node_modules/@openvulcan/dsh-vulcan-reasoning/package.json +42 -0
- package/node_modules/@openvulcan/dsh-vulcan-style/lib/client.js +67 -3
- package/node_modules/@openvulcan/dsh-vulcan-style/package.json +1 -1
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/LICENSE +21 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/client.js +1567 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/cloud.d.ts +39 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/cloud.js +187 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/contract.d.ts +58 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/contract.js +1 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/index.d.ts +49 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/index.js +204 -0
- package/node_modules/@openvulcan/dsh-vulcan-voice-input/package.json +46 -0
- package/node_modules/@openvulcan/openvulcan-account/package.json +1 -1
- package/node_modules/@openvulcan/vulcan-decision/package.json +2 -2
- package/package.json +14 -10
|
@@ -764,6 +764,12 @@ window.__ModuleLoader__.load({
|
|
|
764
764
|
const V = `html[${controller_1.THEME_ATTRIBUTE}]`;
|
|
765
765
|
/** The settings dialog. */
|
|
766
766
|
const SETTINGS = `${V} [data-shortcut-modal="settings"]`;
|
|
767
|
+
// The labelled settings title is inside the navigation in dsh 0.2.1 and beside it in 0.2.2.
|
|
768
|
+
// dsh 0.2.1 的设置标题位于导航栏内,0.2.2 的标题与导航栏并列。
|
|
769
|
+
const SETTINGS_TITLE = `:is(${SETTINGS}, ${SETTINGS} > nav:first-child) > [id][tabindex="-1"]`;
|
|
770
|
+
// The actions header is inside the content column in the 0.2.1 flex layout and beside the nav in the 0.2.2 grid.
|
|
771
|
+
// 0.2.1 的操作栏在弹性布局的内容列内,0.2.2 的操作栏与导航栏同属网格的直接子项。
|
|
772
|
+
const SETTINGS_ACTIONS = `:is(${SETTINGS} > nav:first-child + div > div:first-child, ${SETTINGS} > nav:nth-child(2) + div)`;
|
|
767
773
|
/** The workspace tree in the sidebar. */
|
|
768
774
|
const TREE = `${V} [data-slot="sidebar.workspaces"] [role="tree"]`;
|
|
769
775
|
const VULCAN = `
|
|
@@ -810,19 +816,73 @@ window.__ModuleLoader__.load({
|
|
|
810
816
|
${V} [data-composer-card] { box-shadow: 0 0 0 1px var(--vulcan-line-strong), var(--vulcan-shadow-1); transition: box-shadow .16s ease; }
|
|
811
817
|
${V} [data-composer-card]:focus-within { box-shadow: 0 0 0 1px var(--vulcan-ink-3), var(--vulcan-shadow-2); }
|
|
812
818
|
|
|
819
|
+
/* Pair the host tooltip's themed ink background with its matching inverse text. */
|
|
820
|
+
/* 为宿主提示框的主题墨色底板配上对应的反色文字。 */
|
|
821
|
+
${V} [role="tooltip"][data-side] { color: var(--vulcan-ink-inverse); }
|
|
822
|
+
|
|
813
823
|
/* Menus and dialogs are framed raised plates; a dialog's backdrop is a light frosted glass. */
|
|
814
824
|
${V} [role="menu"][data-menu-material] { box-shadow: 0 0 0 1px var(--vulcan-line-strong), var(--vulcan-shadow-2); }
|
|
815
825
|
${V} [role="dialog"][aria-modal="true"] { box-shadow: 0 0 0 1px var(--vulcan-line-strong), var(--vulcan-shadow-2); }
|
|
816
826
|
${V} [aria-hidden="true"]:has(+ [role="dialog"][aria-modal="true"]) { background: var(--vulcan-scrim); backdrop-filter: blur(3px) saturate(1.05); }
|
|
817
827
|
|
|
818
|
-
/* Settings
|
|
828
|
+
/* Settings uses VulcanCode's framed navigation, fixed header and independently scrolling body. */
|
|
829
|
+
/* 设置使用 VulcanCode 的带边框导航、固定页头和独立滚动正文。 */
|
|
819
830
|
${SETTINGS}::before { content: ""; position: absolute; z-index: 1; top: -1px; left: -1px; width: var(--vulcan-tick-w); height: 2px; background: var(--vulcan-ember); pointer-events: none; }
|
|
820
831
|
${SETTINGS} > nav { background: var(--vulcan-ground-2); box-shadow: inset -1px 0 0 var(--vulcan-line); }
|
|
821
832
|
${SETTINGS} > nav button { color: var(--vulcan-ink-2); }
|
|
822
833
|
${SETTINGS} > nav button:hover { background: var(--vulcan-hover); color: var(--vulcan-ink); }
|
|
823
|
-
${SETTINGS} > nav button[aria-current="true"] { background: var(--vulcan-panel); color: var(--vulcan-ink); box-shadow: inset 2px 0 0 var(--vulcan-ember), 0 0 0 1px var(--vulcan-line); }
|
|
834
|
+
${SETTINGS} > nav button[aria-current="true"] { background: var(--vulcan-panel); color: var(--vulcan-ink); box-shadow: inset 2px 0 0 var(--vulcan-ember), inset 0 0 0 1px var(--vulcan-line); }
|
|
824
835
|
${SETTINGS} > nav button[aria-current="true"] svg { color: var(--vulcan-ember); }
|
|
825
|
-
${
|
|
836
|
+
${SETTINGS} > nav button:focus-visible { outline: 2px solid var(--vulcan-ink-3); outline-offset: -3px; }
|
|
837
|
+
${SETTINGS} [data-slot="settings.header"] { color: var(--vulcan-ink); font-family: var(--vulcan-label-font); font-size: 14px; font-weight: 600; letter-spacing: var(--vulcan-label-track); text-transform: var(--vulcan-label-case); }
|
|
838
|
+
${SETTINGS_ACTIONS} + div { overscroll-behavior: contain; }
|
|
839
|
+
|
|
840
|
+
/* Preference pages use a readable measure; management pages use the available width. */
|
|
841
|
+
/* 偏好设置页采用便于阅读的列宽,管理页使用可用的完整宽度。 */
|
|
842
|
+
${V} [data-vulcan-settings-width] { width: 100%; min-width: 0; }
|
|
843
|
+
${V} [data-vulcan-settings-width="readable"] { max-width: 44rem; margin-inline: auto; }
|
|
844
|
+
${V} [data-vulcan-settings-width="full"] { max-width: none; }
|
|
845
|
+
${V} [data-vulcan-settings-header] { display: grid; justify-items: start; gap: 6px; padding-bottom: 12px; border-bottom: 1px solid var(--vulcan-line); }
|
|
846
|
+
${V} [data-vulcan-settings-header] > h2 { margin: 0; color: var(--vulcan-ink); font-size: 20px; font-weight: 600; line-height: 1.25; }
|
|
847
|
+
${V} [data-vulcan-settings-header] > p { max-width: 70ch; margin: 0; color: var(--vulcan-ink-2); }
|
|
848
|
+
|
|
849
|
+
/* Match dsh's wide-layout breakpoint so its compact navigation remains usable on narrow screens. */
|
|
850
|
+
/* 沿用 dsh 的宽屏断点,使窄屏上的紧凑导航保持可用。 */
|
|
851
|
+
@media (min-width: 768px) {
|
|
852
|
+
${SETTINGS} {
|
|
853
|
+
--vulcan-settings-nav: clamp(188px, 20vw, 228px);
|
|
854
|
+
--vulcan-settings-gutter: clamp(20px, 3vw, 36px);
|
|
855
|
+
width: min(1160px, calc(100vw - 48px));
|
|
856
|
+
}
|
|
857
|
+
${SETTINGS}:has(> nav:nth-child(2)) { grid-template-columns: var(--vulcan-settings-nav) minmax(0, 1fr); }
|
|
858
|
+
${SETTINGS} > nav { padding-block-end: 12px; }
|
|
859
|
+
${SETTINGS} > nav:first-child { width: var(--vulcan-settings-nav); gap: 10px; padding-block-start: 0; }
|
|
860
|
+
${SETTINGS_TITLE}, ${SETTINGS_ACTIONS} {
|
|
861
|
+
box-sizing: border-box;
|
|
862
|
+
height: 60px;
|
|
863
|
+
align-items: center;
|
|
864
|
+
border-bottom: 1px solid var(--vulcan-line);
|
|
865
|
+
}
|
|
866
|
+
${SETTINGS_TITLE} {
|
|
867
|
+
display: flex;
|
|
868
|
+
flex: none;
|
|
869
|
+
padding: 0 18px;
|
|
870
|
+
background: var(--vulcan-ground-2);
|
|
871
|
+
box-shadow: inset -1px 0 0 var(--vulcan-line);
|
|
872
|
+
}
|
|
873
|
+
${SETTINGS} > nav:first-child > [id][tabindex="-1"] { margin-inline: -12px; }
|
|
874
|
+
${SETTINGS_ACTIONS} { padding: 0 var(--vulcan-settings-gutter); background: var(--vulcan-panel); }
|
|
875
|
+
${SETTINGS_ACTIONS} + div { padding: 20px var(--vulcan-settings-gutter) 28px; background: var(--vulcan-panel); }
|
|
876
|
+
/* The native settings pages and the nested built-in plugin tabs each own a width cap. */
|
|
877
|
+
/* dsh 原生设置页和内置插件的嵌套标签页各自带有宽度上限。 */
|
|
878
|
+
${SETTINGS_ACTIONS} + div > [data-slot="settings.section"] > :not([data-vulcan-settings-width]),
|
|
879
|
+
${SETTINGS_ACTIONS} + div > [data-slot="settings.section"] [data-slot="settings.plugins.tab"] > :not([data-vulcan-settings-width]) {
|
|
880
|
+
box-sizing: border-box;
|
|
881
|
+
inline-size: 100%;
|
|
882
|
+
min-inline-size: 0;
|
|
883
|
+
max-inline-size: none;
|
|
884
|
+
}
|
|
885
|
+
}
|
|
826
886
|
`;
|
|
827
887
|
const ROW = `
|
|
828
888
|
.vst { display: flex; flex-direction: column; gap: 12px; padding: 16px 0; border-bottom: 0.5px solid var(--dsw-alias-border-l2); }
|
|
@@ -846,6 +906,10 @@ window.__ModuleLoader__.load({
|
|
|
846
906
|
.vst-switch:disabled { cursor: default; opacity: .6; }
|
|
847
907
|
html[${controller_1.SQUARE_ATTRIBUTE}] .vst-switch,
|
|
848
908
|
html[${controller_1.SQUARE_ATTRIBUTE}] .vst-switch::after { border-radius: 0; }
|
|
909
|
+
|
|
910
|
+
/* The Windows frame defines its own radius for the main column and fullscreen panels. */
|
|
911
|
+
/* Windows 框架为主内容列和全屏面板定义了独立的圆角。 */
|
|
912
|
+
html[${controller_1.SQUARE_ATTRIBUTE}][data-windows-titlebar] :has(> [data-shell-overlay]) { --dsh-windows-content-radius: 0px; }
|
|
849
913
|
`;
|
|
850
914
|
/** Add the stylesheet once per page; returns a function that removes it again. */
|
|
851
915
|
function installStyle() {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OpenVulcan
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|