@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.
Files changed (39) hide show
  1. package/README.md +103 -38
  2. package/cordis.patch.yml +4 -0
  3. package/node_modules/@openvulcan/dsh-decision-guard/lib/client.js +133 -38
  4. package/node_modules/@openvulcan/dsh-decision-guard/package.json +2 -2
  5. package/node_modules/@openvulcan/dsh-vulcan-account/lib/client.js +55 -47
  6. package/node_modules/@openvulcan/dsh-vulcan-account/package.json +2 -2
  7. package/node_modules/@openvulcan/dsh-vulcan-answers/lib/client.js +30 -30
  8. package/node_modules/@openvulcan/dsh-vulcan-answers/lib/committed-fiber.d.ts +18 -0
  9. package/node_modules/@openvulcan/dsh-vulcan-answers/lib/committed-fiber.js +62 -0
  10. package/node_modules/@openvulcan/dsh-vulcan-answers/package.json +1 -1
  11. package/node_modules/@openvulcan/dsh-vulcan-luaskills/lib/client.js +14 -5
  12. package/node_modules/@openvulcan/dsh-vulcan-luaskills/package.json +1 -1
  13. package/node_modules/@openvulcan/dsh-vulcan-memory/assets/markdown-memory-guide.md +1 -0
  14. package/node_modules/@openvulcan/dsh-vulcan-memory/assets/memory-curator/SKILL.md +1 -1
  15. package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/errors.d.ts +7 -0
  16. package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/errors.js +11 -0
  17. package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/index.d.ts +1 -1
  18. package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/index.js +1 -1
  19. package/node_modules/@openvulcan/dsh-vulcan-memory/lib/markdown/operations.js +22 -3
  20. package/node_modules/@openvulcan/dsh-vulcan-memory/package.json +1 -1
  21. package/node_modules/@openvulcan/dsh-vulcan-reasoning/LICENSE +21 -0
  22. package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/client.js +509 -0
  23. package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/index.d.ts +6 -0
  24. package/node_modules/@openvulcan/dsh-vulcan-reasoning/lib/index.js +8 -0
  25. package/node_modules/@openvulcan/dsh-vulcan-reasoning/package.json +42 -0
  26. package/node_modules/@openvulcan/dsh-vulcan-style/lib/client.js +67 -3
  27. package/node_modules/@openvulcan/dsh-vulcan-style/package.json +1 -1
  28. package/node_modules/@openvulcan/dsh-vulcan-voice-input/LICENSE +21 -0
  29. package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/client.js +1567 -0
  30. package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/cloud.d.ts +39 -0
  31. package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/cloud.js +187 -0
  32. package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/contract.d.ts +58 -0
  33. package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/contract.js +1 -0
  34. package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/index.d.ts +49 -0
  35. package/node_modules/@openvulcan/dsh-vulcan-voice-input/lib/index.js +204 -0
  36. package/node_modules/@openvulcan/dsh-vulcan-voice-input/package.json +46 -0
  37. package/node_modules/@openvulcan/openvulcan-account/package.json +1 -1
  38. package/node_modules/@openvulcan/vulcan-decision/package.json +2 -2
  39. 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: an ember corner tick and a navigation well whose current page carries the ember edge. */
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
- ${V} [data-slot="settings.header"] { color: var(--vulcan-ink-3); font-family: var(--vulcan-label-font); font-size: 12px; font-weight: 500; letter-spacing: var(--vulcan-label-track); text-transform: var(--vulcan-label-case); }
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() {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openvulcan/dsh-vulcan-style",
3
- "version": "0.4.0",
3
+ "version": "0.4.4",
4
4
  "description": "The VulcanCode look for DeepSeek Harness: Vulcan light, dark and command themes with square corners.",
5
5
  "license": "MIT",
6
6
  "icon": "./assets/style-icon.png",
@@ -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.