dsh-desktop-kit 0.0.0-stage → 2.0.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/LICENSE +21 -0
- package/README.md +152 -2
- package/client.js +4101 -0
- package/cordis.patch.yml +5 -0
- package/docs/ARCHITECTURE.md +114 -0
- package/docs/COMPATIBILITY.md +61 -0
- package/docs/INSTALL.md +84 -0
- package/docs/PRIVACY.md +50 -0
- package/docs/ROADMAP.md +57 -0
- package/docs/TOKENS.md +118 -0
- package/docs/TROUBLESHOOTING.md +68 -0
- package/docs/images/hero.png +0 -0
- package/index.js +84 -0
- package/package.json +70 -4
- package/plugins/dsh-gkb-ru-ui/cordis.patch.yml +6 -0
- package/plugins/dsh-gkb-ru-ui/lib/client.js +1331 -0
- package/plugins/dsh-gkb-ru-ui/lib/index.js +186 -0
- package/plugins/dsh-gkb-ru-ui/lib/skills.js +570 -0
- package/plugins/dsh-gkb-ru-ui/package.json +28 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/01-home-tiles-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/02-skills-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/03-skills-editor-1440-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/04-skills-1440-dark.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/05-skills-390-light.png +0 -0
- package/plugins/dsh-gkb-ru-ui/screenshots/06-home-tiles-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/README.md +70 -0
- package/plugins/dsh-peak-guard/client.js +741 -0
- package/plugins/dsh-peak-guard/cordis.patch.yml +5 -0
- package/plugins/dsh-peak-guard/icon.svg +12 -0
- package/plugins/dsh-peak-guard/index.js +2 -0
- package/plugins/dsh-peak-guard/locale/en.json +6 -0
- package/plugins/dsh-peak-guard/locale/ru.json +6 -0
- package/plugins/dsh-peak-guard/locale/zh.json +6 -0
- package/plugins/dsh-peak-guard/package.json +33 -0
- package/plugins/dsh-peak-guard/screenshots/01-real-time-peak-start.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/02-real-time-peak-end.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/03-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/04-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/05-peak-card-768-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/06-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-live-preview-check.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/07-pre-peak-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/08-peak-start-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/09-peak-end-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/10-pre-peak-card-1440-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/11-pre-peak-card-1440-dark.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/12-pre-peak-card-390-light.png +0 -0
- package/plugins/dsh-peak-guard/screenshots/qa-report.json +74 -0
- package/plugins/dsh-profile-transfer/README.md +62 -0
- package/plugins/dsh-profile-transfer/bootstrap/01-INSTALL.cmd +7 -0
- package/plugins/dsh-profile-transfer/bootstrap/README-ARCHIVE.md +54 -0
- package/plugins/dsh-profile-transfer/bootstrap/README-/320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/232/320/220.md +42 -0
- package/plugins/dsh-profile-transfer/bootstrap/install-on-clean-machine.ps1 +119 -0
- package/plugins/dsh-profile-transfer/bootstrap//320/243/320/241/320/242/320/220/320/235/320/236/320/222/320/230/320/242/320/254.cmd +5 -0
- package/plugins/dsh-profile-transfer/client.js +806 -0
- package/plugins/dsh-profile-transfer/cordis.patch.yml +3 -0
- package/plugins/dsh-profile-transfer/icon.svg +13 -0
- package/plugins/dsh-profile-transfer/index.js +375 -0
- package/plugins/dsh-profile-transfer/locale/en.json +6 -0
- package/plugins/dsh-profile-transfer/locale/ru.json +6 -0
- package/plugins/dsh-profile-transfer/locale/zh.json +6 -0
- package/plugins/dsh-profile-transfer/package.json +36 -0
- package/plugins/dsh-profile-transfer/screenshots/01-settings-transfer-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/02-settings-transfer-preview-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/03-settings-transfer-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/04-settings-transfer-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/05-settings-transfer-768-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/06-settings-transfer-390-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/07-settings-transfer-export-result.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/08-settings-transfer-workspaces-1440-light.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/09-settings-transfer-workspaces-1440-dark.png +0 -0
- package/plugins/dsh-profile-transfer/screenshots/10-settings-transfer-workspaces-390-light.png +0 -0
- package/plugins/dsh-profile-transfer/transfer.js +1004 -0
- package/plugins/dsh-project-memory/README.md +71 -0
- package/plugins/dsh-project-memory/cordis.patch.yml +4 -0
- package/plugins/dsh-project-memory/icon.svg +12 -0
- package/plugins/dsh-project-memory/index.js +1240 -0
- package/plugins/dsh-project-memory/locale/en.json +6 -0
- package/plugins/dsh-project-memory/locale/ru.json +6 -0
- package/plugins/dsh-project-memory/locale/zh.json +6 -0
- package/plugins/dsh-project-memory/package.json +26 -0
- package/plugins/dsh-session-move/README.md +67 -0
- package/plugins/dsh-session-move/client.js +719 -0
- package/plugins/dsh-session-move/cordis.patch.yml +5 -0
- package/plugins/dsh-session-move/icon.svg +14 -0
- package/plugins/dsh-session-move/index.js +497 -0
- package/plugins/dsh-session-move/locale/en.json +6 -0
- package/plugins/dsh-session-move/locale/ru.json +6 -0
- package/plugins/dsh-session-move/locale/zh.json +6 -0
- package/plugins/dsh-session-move/package.json +31 -0
- package/plugins/dsh-session-move/screenshots/01-row-menu-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/02-dialog-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/03-dialog-390-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/04-dialog-1440-dark.png +0 -0
- package/plugins/dsh-session-move/screenshots/05-drag-highlight-1440-light.png +0 -0
- package/plugins/dsh-session-move/screenshots/06-drop-ungrouped-highlight.png +0 -0
- package/plugins/dsh-session-move/screenshots/07-after-drop-ungrouped.png +0 -0
- package/plugins/dsh-session-move/screenshots/08-move-dialog.png +0 -0
- package/plugins/dsh-session-move/screenshots/09-moved-to-second-workspace.png +0 -0
- package/plugins/dsh-session-move/screenshots/qa-report.json +62 -0
- package/plugins/dsh-skill-autopilot/cordis.patch.yml +3 -0
- package/plugins/dsh-skill-autopilot/index.js +444 -0
- package/plugins/dsh-skill-autopilot/package.json +19 -0
- package/plugins/dsh-token-lab/cordis.patch.yml +3 -0
- package/plugins/dsh-token-lab/lib/client.js +504 -0
- package/plugins/dsh-token-lab/lib/index.js +275 -0
- package/plugins/dsh-token-lab/package.json +26 -0
- package/plugins/dsh-token-lab/screenshots/01-token-lab-1440-light.png +0 -0
- package/plugins/dsh-token-lab/screenshots/02-token-lab-1440-dark.png +0 -0
- package/skills/code-review-checklist/SKILL.md +55 -0
- package/skills/content-writing/README.md +87 -0
- package/skills/content-writing/SKILL.md +85 -0
- package/skills/content-writing/assets/checklists/fact-check.md +53 -0
- package/skills/content-writing/assets/checklists/publish.md +65 -0
- package/skills/content-writing/assets/checklists/social.md +40 -0
- package/skills/content-writing/assets/templates/article.md +47 -0
- package/skills/content-writing/assets/templates/brief.md +44 -0
- package/skills/content-writing/assets/templates/doctor-card.md +41 -0
- package/skills/content-writing/assets/templates/image-prompts.md +128 -0
- package/skills/content-writing/assets/templates/post-telegram.md +36 -0
- package/skills/content-writing/assets/templates/post-vk.md +42 -0
- package/skills/content-writing/assets/templates/press-release.md +56 -0
- package/skills/content-writing/assets/templates/science-pop-note.md +55 -0
- package/skills/content-writing/assets/templates/service-card.md +46 -0
- package/skills/content-writing/references/anti-ai-style.md +248 -0
- package/skills/content-writing/references/editing.md +185 -0
- package/skills/content-writing/references/fact-checking.md +205 -0
- package/skills/content-writing/references/government-medical.md +246 -0
- package/skills/content-writing/references/images.md +212 -0
- package/skills/content-writing/references/journalism.md +252 -0
- package/skills/content-writing/references/process.md +123 -0
- package/skills/content-writing/references/quick-recipes.md +99 -0
- package/skills/content-writing/references/rules.md +85 -0
- package/skills/content-writing/references/science-popular.md +218 -0
- package/skills/content-writing/references/seo-content.md +172 -0
- package/skills/content-writing/references/social-media.md +253 -0
- package/skills/content-writing/references/sources.md +49 -0
- package/skills/content-writing/references/templates.md +291 -0
- package/skills/context-economy/SKILL.md +60 -0
- package/skills/context-economy/references/long-session.md +35 -0
- package/skills/context-economy/references/token-math.md +42 -0
- package/skills/context-economy/references/tool-recipes.md +34 -0
- package/skills/database-safety/SKILL.md +47 -0
- package/skills/debugging-playbook/SKILL.md +42 -0
- package/skills/design-critique/SKILL.md +65 -0
- package/skills/design-critique/references/a11y.md +25 -0
- package/skills/design-critique/references/diagnoses.md +33 -0
- package/skills/design-critique/references/quick-tests.md +30 -0
- package/skills/design-critique/references/report-template.md +63 -0
- package/skills/design-critique/references/rubric-fast.md +73 -0
- package/skills/dev-workflow/SKILL.md +48 -0
- package/skills/dev-workflow/references/definition-of-done.md +44 -0
- package/skills/dev-workflow/references/memory-and-boundaries.md +31 -0
- package/skills/dev-workflow/references/stages.md +67 -0
- package/skills/git-and-ci/SKILL.md +60 -0
- package/skills/pg-upgrade-verify/SKILL.md +67 -0
- package/skills/project-deep-dive/SKILL.md +45 -0
- package/skills/project-deep-dive/references/recon-commands.md +90 -0
- package/skills/project-deep-dive/references/section-templates.md +104 -0
- package/skills/project-deep-dive/references/tool-and-process.md +86 -0
- package/skills/project-memory-maintenance/SKILL.md +55 -0
- package/skills/project-memory-maintenance/references/api-and-checklist.md +99 -0
- package/skills/project-memory-maintenance/references/journal-template.md +50 -0
- package/skills/project-memory-maintenance/references/section-rules.md +59 -0
- package/skills/release-and-deploy/SKILL.md +53 -0
- package/skills/requirements-and-planning/SKILL.md +49 -0
- package/skills/requirements-and-planning/references/antipatterns-and-checklist.md +20 -0
- package/skills/requirements-and-planning/references/process-steps.md +52 -0
- package/skills/requirements-and-planning/references/templates-and-estimates.md +29 -0
- package/skills/security-review/SKILL.md +40 -0
- package/skills/seo/README.md +60 -0
- package/skills/seo/SKILL.md +77 -0
- package/skills/seo/assets/README.md +66 -0
- package/skills/seo/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/seo/assets/scripts/README.md +179 -0
- package/skills/seo/assets/scripts/lib/args.mjs +105 -0
- package/skills/seo/assets/scripts/lib/browser.mjs +620 -0
- package/skills/seo/assets/scripts/lib/zip.mjs +191 -0
- package/skills/seo/assets/scripts/seo-audit.mjs +1675 -0
- package/skills/seo/assets/snippets/jsonld-breadcrumb.json +30 -0
- package/skills/seo/assets/snippets/jsonld-faq.json +39 -0
- package/skills/seo/assets/snippets/jsonld-medical-clinic.json +49 -0
- package/skills/seo/assets/snippets/jsonld-medical-webpage.json +33 -0
- package/skills/seo/assets/snippets/jsonld-organization.json +74 -0
- package/skills/seo/assets/snippets/jsonld-physician.json +46 -0
- package/skills/seo/assets/snippets/meta.blade.php +61 -0
- package/skills/seo/assets/snippets/robots.txt +61 -0
- package/skills/seo/assets/snippets/sitemap-urlset-example.xml +72 -0
- package/skills/seo/assets/snippets/sitemap.xml +36 -0
- package/skills/seo/references/antipatterns.md +66 -0
- package/skills/seo/references/audit-checklist.md +319 -0
- package/skills/seo/references/content-seo.md +204 -0
- package/skills/seo/references/eeat-medical.md +219 -0
- package/skills/seo/references/measurement.md +250 -0
- package/skills/seo/references/on-page.md +214 -0
- package/skills/seo/references/page-templates.md +56 -0
- package/skills/seo/references/stack-recipes.md +695 -0
- package/skills/seo/references/structured-data.md +487 -0
- package/skills/seo/references/technical-seo.md +296 -0
- package/skills/service-desk-conventions/SKILL.md +52 -0
- package/skills/service-desk-db-safety/SKILL.md +63 -0
- package/skills/service-desk-release/SKILL.md +61 -0
- package/skills/service-desk-testing/SKILL.md +61 -0
- package/skills/service-desk-ui/SKILL.md +52 -0
- package/skills/skills-router/SKILL.md +53 -0
- package/skills/skills-router/references/applying-skills.md +25 -0
- package/skills/skills-router/references/routing-matrix.md +52 -0
- package/skills/testing-strategy/SKILL.md +52 -0
- package/skills/ui-design-system/SKILL.md +50 -0
- package/skills/ui-design-system/references/accessibility-and-responsive.md +50 -0
- package/skills/ui-design-system/references/tokens-and-components.md +67 -0
- package/skills/ui-design-system/references/visual-qa.md +44 -0
- package/skills/web-research/SKILL.md +47 -0
- package/skills/web-research/references/answer-and-citations.md +60 -0
- package/skills/web-research/references/query-recipes.md +44 -0
- package/skills/wow-design/SKILL.md +89 -0
- package/skills/wow-design/assets/kit/README.md +195 -0
- package/skills/wow-design/assets/kit/assets/css/base.css +158 -0
- package/skills/wow-design/assets/kit/assets/css/components.css +1001 -0
- package/skills/wow-design/assets/kit/assets/css/fonts.css +73 -0
- package/skills/wow-design/assets/kit/assets/css/pages.css +737 -0
- package/skills/wow-design/assets/kit/assets/css/tokens.css +218 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-golos-text.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-lora.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/LICENSE-unbounded.txt +93 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-cyrillic-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/golos-text-latin-700-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-italic.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/lora-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-cyrillic-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-400-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-500-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/fonts/unbounded-latin-600-normal.woff2 +0 -0
- package/skills/wow-design/assets/kit/assets/js/kit.js +550 -0
- package/skills/wow-design/assets/kit/pages/dashboard.html +539 -0
- package/skills/wow-design/assets/kit/pages/hospital.html +430 -0
- package/skills/wow-design/assets/kit/showcase.html +1164 -0
- package/skills/wow-design/assets/scripts/LICENSE-axe-core.txt +362 -0
- package/skills/wow-design/assets/scripts/LICENSE-playwright-core.txt +202 -0
- package/skills/wow-design/assets/scripts/README.md +312 -0
- package/skills/wow-design/assets/scripts/audit.mjs +1200 -0
- package/skills/wow-design/assets/scripts/capture.mjs +337 -0
- package/skills/wow-design/assets/scripts/package.json +30 -0
- package/skills/wow-design/references/anti-patterns.md +252 -0
- package/skills/wow-design/references/critique-rubric.md +262 -0
- package/skills/wow-design/references/design-brief-template.md +48 -0
- package/skills/wow-design/references/inspiration.md +203 -0
- package/skills/wow-design/references/presets.md +99 -0
- package/skills/wow-design/references/principles.md +371 -0
- package/skills/wow-design/references/quick-presets.md +50 -0
- package/skills/wow-design/references/report-template.md +21 -0
- package/skills/wow-design/references/stack-recipes.md +96 -0
- package/skills/wow-design/references/visual-qa.md +82 -0
- package/skills/wow-design/references/wow-levers.md +43 -0
- package/tools/skill-cost.mjs +76 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" role="img" aria-label="Peak price guard">
|
|
2
|
+
<defs>
|
|
3
|
+
<linearGradient id="pg-a" x1="0" y1="0" x2="1" y2="1">
|
|
4
|
+
<stop offset="0" stop-color="#e5484d"/>
|
|
5
|
+
<stop offset="1" stop-color="#8f1d22"/>
|
|
6
|
+
</linearGradient>
|
|
7
|
+
</defs>
|
|
8
|
+
<rect x="2" y="2" width="60" height="60" rx="14" fill="url(#pg-a)"/>
|
|
9
|
+
<circle cx="32" cy="32" r="17" fill="none" stroke="#ffffff" stroke-width="3.4" opacity=".95"/>
|
|
10
|
+
<path d="M32 22v11l7 4" fill="none" stroke="#ffffff" stroke-width="3.4" stroke-linecap="round" stroke-linejoin="round"/>
|
|
11
|
+
<circle cx="32" cy="32" r="1.6" fill="#ffffff"/>
|
|
12
|
+
</svg>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dsh-peak-guard",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"description": "Red peak-pricing notice in the chat: when DeepSeek peak hours double the token price, a card explains the reason, the window in your local time, and how long to wait before continuing.",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "index.js",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": "./index.js",
|
|
10
|
+
"./client": "./client.js",
|
|
11
|
+
"./locale/*.json": "./locale/*.json",
|
|
12
|
+
"./icon": "./icon.svg"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"index.js",
|
|
16
|
+
"client.js",
|
|
17
|
+
"cordis.patch.yml",
|
|
18
|
+
"locale/*.json",
|
|
19
|
+
"icon.svg",
|
|
20
|
+
"README.md"
|
|
21
|
+
],
|
|
22
|
+
"dsh": {
|
|
23
|
+
"manifestVersion": 1,
|
|
24
|
+
"bundle": {
|
|
25
|
+
"patch": "./cordis.patch.yml"
|
|
26
|
+
},
|
|
27
|
+
"client": {
|
|
28
|
+
"platform": "web",
|
|
29
|
+
"immediately": true,
|
|
30
|
+
"inject": []
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
{
|
|
2
|
+
"prePeak": {
|
|
3
|
+
"before": {
|
|
4
|
+
"fakeNow": "2026-11-04T05:54:59.118Z",
|
|
5
|
+
"mode": "off",
|
|
6
|
+
"cards": 0
|
|
7
|
+
},
|
|
8
|
+
"appeared": true,
|
|
9
|
+
"delayMs": 240,
|
|
10
|
+
"mode": "soon"
|
|
11
|
+
},
|
|
12
|
+
"peakStart": {
|
|
13
|
+
"before": {
|
|
14
|
+
"fakeNow": "2026-11-04T05:59:59.091Z",
|
|
15
|
+
"mode": "soon",
|
|
16
|
+
"cards": 1
|
|
17
|
+
},
|
|
18
|
+
"switched": true,
|
|
19
|
+
"delayMs": 217,
|
|
20
|
+
"mode": "peak"
|
|
21
|
+
},
|
|
22
|
+
"peakEnd": {
|
|
23
|
+
"before": {
|
|
24
|
+
"fakeNow": "2026-11-04T09:59:59.097Z",
|
|
25
|
+
"mode": "peak",
|
|
26
|
+
"cards": 1
|
|
27
|
+
},
|
|
28
|
+
"gone": true,
|
|
29
|
+
"delayMs": 240
|
|
30
|
+
},
|
|
31
|
+
"peakVisual": {
|
|
32
|
+
"mode": "peak",
|
|
33
|
+
"text": "×\nПИКОВЫЙ ТАРИФ\n×2\nТокены сейчас стоят вдвое дороже\nВ пиковые часы стоимость всех типов токенов для deepseek-flash и deepseek-v4-pro увеличивается вдвое. Вне этих часов действует скидка 50% (off-peak).\n26\nмин\nДО КОНЦА ПИ"
|
|
34
|
+
},
|
|
35
|
+
"peakAxe": {
|
|
36
|
+
"violations": []
|
|
37
|
+
},
|
|
38
|
+
"tablet": {
|
|
39
|
+
"scrollWidth": 768,
|
|
40
|
+
"clientWidth": 768,
|
|
41
|
+
"cardWidth": 310.828125
|
|
42
|
+
},
|
|
43
|
+
"mobile": {
|
|
44
|
+
"scrollWidth": 390,
|
|
45
|
+
"clientWidth": 390,
|
|
46
|
+
"cardWidth": 370
|
|
47
|
+
},
|
|
48
|
+
"dismissed": {
|
|
49
|
+
"cards": 0,
|
|
50
|
+
"stored": "1793786400000"
|
|
51
|
+
},
|
|
52
|
+
"soonVisual": {
|
|
53
|
+
"mode": "soon",
|
|
54
|
+
"text": "×\nСКОРО ПИК\n×2\nПиковый тариф начнётся через 4 мин\nСейчас ещё действует off-peak со скидкой 50%. Когда начнётся окно, все типы токенов будут стоить ×2 до самого конца пика.\n4\nмин\nДО НАЧАЛА ПИКА\nОкно 09:00–13:00 МСК\nСейчас 08:56\n→\nДО ПОДОРОЖА",
|
|
55
|
+
"badge": "Пик через 4 мин"
|
|
56
|
+
},
|
|
57
|
+
"soonMobile": {
|
|
58
|
+
"scrollWidth": 390,
|
|
59
|
+
"clientWidth": 390,
|
|
60
|
+
"cardWidth": 370
|
|
61
|
+
},
|
|
62
|
+
"offPeak": {
|
|
63
|
+
"mode": "off",
|
|
64
|
+
"cards": 0,
|
|
65
|
+
"badges": 0
|
|
66
|
+
},
|
|
67
|
+
"logs": [
|
|
68
|
+
"[info] [session-move] ready",
|
|
69
|
+
"[info] [profile-transfer] ready",
|
|
70
|
+
"[info] [peak-guard] ready",
|
|
71
|
+
"[error] [deepseek-account] account read failed {field: profile}",
|
|
72
|
+
"[error] [deepseek-account] account read failed {field: balance}"
|
|
73
|
+
]
|
|
74
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# dsh-profile-transfer — перенос и резервные копии
|
|
2
|
+
|
|
3
|
+
Плагин для DeepSeek Harness: страница **Настройки → «Перенос и резервные копии»**,
|
|
4
|
+
в которой можно галочками выбрать части рабочего окружения, собрать один архив
|
|
5
|
+
`.tar.gz`, а на другой машине — проверить и развернуть его с автоматическим бэкапом.
|
|
6
|
+
|
|
7
|
+
## Что можно переносить
|
|
8
|
+
|
|
9
|
+
| Группа | Что внутри |
|
|
10
|
+
|---|---|
|
|
11
|
+
| Профиль и конфиги | `package.json`, `cordis.patch.yml`, `cordis.yml`, `pnpm-lock.yaml`, `.npmrc` (без `node_modules`) |
|
|
12
|
+
| Рабочие области | реестр `storages/workspace.json`: названия, папки, группировка чатов, архив/закрепления |
|
|
13
|
+
| Папки рабочих областей | опционально (по умолчанию выкл.): код и артефакты папок рабочих областей без `node_modules`, `.git`, `pgruntime`, `tmp`, кэшей; лимит 1 ГБ |
|
|
14
|
+
| Локальные плагины | исходники плагинов, установленных из папок (`link:`/`file:` в зависимостях профиля) |
|
|
15
|
+
| Навыки | `~/.dsh/skills` (без `node_modules`) |
|
|
16
|
+
| Память | `~/.dsh/memory` |
|
|
17
|
+
| Память проектов | `~/.dsh/projects-memory` (без `_access.log`/`_state.json`) |
|
|
18
|
+
| Глобальные конфиги | `AGENTS.md`, `dream-skin.json` |
|
|
19
|
+
| История сессий | `~/.dsh/sessions` (опционально, может быть большой) |
|
|
20
|
+
| Вложения | `~/.dsh/attachments` (опционально) |
|
|
21
|
+
| Секреты | `.credentials.yaml` (по умолчанию выключено; только доверенная машина) |
|
|
22
|
+
|
|
23
|
+
## Как это работает
|
|
24
|
+
|
|
25
|
+
- **Экспорт.** Host-плагин собирает выбранные файлы в `payload/…` и кладёт рядом
|
|
26
|
+
`manifest.json` (формат, версия, дата, машина, профиль, состав, перечень файлов
|
|
27
|
+
с размерами). Архив по умолчанию: `<Документы>\DSH-обмены\dsh-profile-<дата>.tar.gz`.
|
|
28
|
+
- **Рабочие области.** В архив попадает реестр рабочих областей: названия, папки, группировка чатов, закреплённые и архивные чаты. При импорте он **сливается** с локальным реестром, пути переписываются со старого домашнего каталога на новый, а ссылки на отсутствующие на новой машине сессии отфильтровываются. После импорта нужен перезапуск DSH, чтобы реестр перечитался.
|
|
29
|
+
- **Папки рабочих областей (опция).** Если включить, в архив добавляются файлы папок рабочих областей (`payload/workspace-folders/<id>/...`). Импорт **никогда не перезаписывает** существующие каталоги: если путь уже существует и не пуст, папка разворачивается рядом с суффиксом `-dsh-restored-<дата>`, путь сообщается в отчёте. Исключаются `node_modules`, `.git`, `pgruntime`, `tmp`, виртуальные окружения и кэши; лимит — 1 ГБ / 250 000 файлов (иначе экспорт откажется и попросит скопировать папки вручную).
|
|
30
|
+
- **Импорт.** Архив проверяется (манифест/формат), затем текущее состояние
|
|
31
|
+
резервируется в `~/.dsh/backup-import-<дата>/`, файлы разворачиваются, `link:`
|
|
32
|
+
зависимости профиля переписываются на `~/.dsh/local-plugins/<пакет>`,
|
|
33
|
+
а затем автоматически выполняется `pnpm install` (можно отложить отдельной кнопкой).
|
|
34
|
+
- **Чистая машина.** После установки DSH достаточно открыть Настройки → «Перенос»,
|
|
35
|
+
указать архив и нажать «Проверить» → «Развернуть»; профиль `desktop`, навыки,
|
|
36
|
+
память, плагины и (по желанию) сессии/секреты встанут на место. После импорта
|
|
37
|
+
нужен перезапуск DSH.
|
|
38
|
+
|
|
39
|
+
## Безопасность
|
|
40
|
+
|
|
41
|
+
- Перед разворачиванием всегда создаётся бэкап текущего профиля/навыков/памяти.
|
|
42
|
+
- Пути внутри архива проверяются: никаких абсолютных путей и `..`.
|
|
43
|
+
- Секреты не включаются, пока не отмечены явно; переносить их следует только на
|
|
44
|
+
доверенную машину.
|
|
45
|
+
- Установка зависимостей запускается только по кнопке/флагу и пишет лог в ответ.
|
|
46
|
+
|
|
47
|
+
## Состав
|
|
48
|
+
|
|
49
|
+
- `transfer.js` — чистый Node-модуль: tar.gz (ustar + gzip), сборка/разбор архива,
|
|
50
|
+
бэкап, разворачивание, перезапись `link:`-путей. Тестируется на временных домашних
|
|
51
|
+
папках: `node test/transfer.test.mjs`.
|
|
52
|
+
- `index.js` — Host-плагин: аутентифицированные RPC-маршруты `/api/dsh-profile-transfer/*`
|
|
53
|
+
(`options`, `export`, `inspect`, `import`, `install`, `reveal`, `diagnose`).
|
|
54
|
+
- `client.js` — браузерная половина со страницей настроек.
|
|
55
|
+
|
|
56
|
+
## Ограничения
|
|
57
|
+
|
|
58
|
+
- `node_modules` не переносится — восстанавливается через `pnpm install`.
|
|
59
|
+
- По умолчанию архив содержит только `~/.dsh` (профиль, плагины, навыки, память, реестр рабочих областей, сессии). Содержимое папок проектов переносится **опциональной группой «Папки рабочих областей»** (по умолчанию выключена — может быть много гигабайт, исключены `node_modules`/`pgruntime`/`tmp`).
|
|
60
|
+
- Максимально большой перенос ограничен диском и таймаутом RPC; сессии/вложения
|
|
61
|
+
включайте осознанно.
|
|
62
|
+
- После импорта обязателен перезапуск DSH.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
@echo off
|
|
2
|
+
setlocal
|
|
3
|
+
rem Root launcher for a clean DSH machine (ASCII name so Windows tar extracts it safely).
|
|
4
|
+
rem The PowerShell script auto-detects the bundled plugin copy in bootstrap-plugin\.
|
|
5
|
+
powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0install-on-clean-machine.ps1" %*
|
|
6
|
+
echo.
|
|
7
|
+
pause
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Перенос DSH на новую машину — прочитай меня первым
|
|
2
|
+
|
|
3
|
+
Этот архив создан плагином **«Перенос и резервные копии»** DeepSeek Harness.
|
|
4
|
+
В нём лежит всё выбранное при экспорте: профиль, локальные плагины, навыки,
|
|
5
|
+
память, конфиги (и опционально сессии/вложения/секреты).
|
|
6
|
+
|
|
7
|
+
## Установка на чистой машине (только что установленный DSH)
|
|
8
|
+
|
|
9
|
+
1. Установите **DeepSeek Harness** и запустите его **один раз** (чтобы создался
|
|
10
|
+
профиль `%USERPROFILE%\.dsh\profiles\desktop`), затем закройте DSH.
|
|
11
|
+
2. Распакуйте этот архив, например в `C:\DSH-Import\unpacked`:
|
|
12
|
+
```powershell
|
|
13
|
+
mkdir C:\DSH-Import\unpacked
|
|
14
|
+
tar -xzf "путь\к\этому\архиву.tar.gz" -C C:\DSH-Import\unpacked
|
|
15
|
+
```
|
|
16
|
+
3. Запустите **`01-INSTALL.cmd`** из корня распакованной папки
|
|
17
|
+
(двойной щёлчок). Скрипт найдёт DSH, поставит плагин «Перенос и резервные копии»
|
|
18
|
+
из `bootstrap-plugin\` через встроенный pnpm DSH и включит его в профиле.
|
|
19
|
+
4. Откройте DSH → нажмите **Ctrl+Alt+,** → раздел **«Перенос и резервные копии»**:
|
|
20
|
+
- укажите путь к **этому архиву** (файл `.tar.gz`, который вы только что распаковали);
|
|
21
|
+
- **«Проверить архив»** → **«Развернуть архив»**;
|
|
22
|
+
- дождитесь установки зависимостей.
|
|
23
|
+
5. Полностью перезапустите DSH.
|
|
24
|
+
|
|
25
|
+
После перезапуска на новой машине будут профиль, локальные плагины, навыки,
|
|
26
|
+
память, конфиги и (если включили) сессии/вложения/секреты.
|
|
27
|
+
|
|
28
|
+
## Если `01-INSTALL.cmd` не сработал
|
|
29
|
+
|
|
30
|
+
- `dsh` не найден в PATH — скрипт сам проверяет
|
|
31
|
+
`%LOCALAPPDATA%\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd`.
|
|
32
|
+
Если DSH установлен в другое место, запустите в PowerShell:
|
|
33
|
+
```powershell
|
|
34
|
+
powershell -ExecutionPolicy Bypass -File .\install-on-clean-machine.ps1 -DshHome "C:\Users\<user>\.dsh" -Profile desktop
|
|
35
|
+
```
|
|
36
|
+
- Либо откройте чат в DSH и попросите агента: «Установи плагин из папки
|
|
37
|
+
`<распакованная папка>\bootstrap-plugin\dsh-profile-transfer` через
|
|
38
|
+
`plugin_manager install_bundle`», затем Ctrl+R и продолжайте с шага 4.
|
|
39
|
+
|
|
40
|
+
## Что внутри
|
|
41
|
+
|
|
42
|
+
| Путь | Что это |
|
|
43
|
+
|---|---|
|
|
44
|
+
| `01-INSTALL.cmd`, `install-on-clean-machine.ps1` | bootstrap: ставит плагин переноса на чистую машину |
|
|
45
|
+
| `bootstrap-plugin\dsh-profile-transfer\` | исходник плагина для bootstrap |
|
|
46
|
+
| `manifest.json` | манифест: дата, машина, состав, размеры |
|
|
47
|
+
| `payload\profiles\<profile>\` | файлы профиля DSH |
|
|
48
|
+
| `payload\local-plugins\` | исходники локальных плагинов |
|
|
49
|
+
| `payload\workspaces\` | реестр рабочих областей и группировка чатов |
|
|
50
|
+
| `payload\workspace-folders\` | файлы папок рабочих областей (если включены при экспорте) |
|
|
51
|
+
| `payload\skills\`, `payload\memory\`, `payload\projects-memory\` | навыки и память |
|
|
52
|
+
| `payload\sessions\`, `payload\attachments\` | история и вложения (если включены) |
|
|
53
|
+
|
|
54
|
+
Состав конкретного архива смотрите в `manifest.json` (`selection`, `totals`).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Установка на чистую машину (только DeepSeek Harness)
|
|
2
|
+
|
|
3
|
+
Эта папка нужна один раз — чтобы на новой машине появился раздел
|
|
4
|
+
**Настройки → «Перенос и резервные копии»**, через который затем разворачивается
|
|
5
|
+
экспортированный архив.
|
|
6
|
+
|
|
7
|
+
## Что нужно иметь
|
|
8
|
+
|
|
9
|
+
1. DeepSeek Harness, установленный и **один раз запущенный** (чтобы появилась папка
|
|
10
|
+
`%USERPROFILE%\.dsh\profiles\desktop`). Перед установкой плагина DSH лучше закрыть.
|
|
11
|
+
2. Архив `dsh-profile-<дата>.tar.gz`, созданный на старой машине через
|
|
12
|
+
Настройки → «Перенос и резервные копии».
|
|
13
|
+
|
|
14
|
+
## Шаги
|
|
15
|
+
|
|
16
|
+
1. Скопируйте на новую машину:
|
|
17
|
+
- этот файл/папку `dsh-profile-transfer` (можно прямо из архива: распакуйте его и
|
|
18
|
+
возьмите `payload\local-plugins\dsh-profile-transfer`);
|
|
19
|
+
- архив `dsh-profile-<дата>.tar.gz`.
|
|
20
|
+
2. Дважды щёлкните **`УСТАНОВИТЬ.cmd`** (или в PowerShell:
|
|
21
|
+
`powershell -ExecutionPolicy Bypass -File .\install-on-clean-machine.ps1`).
|
|
22
|
+
Скрипт поставит плагин через собственный pnpm DSH и включит его bundle.
|
|
23
|
+
3. Откройте DSH → **Ctrl+Alt+,** → «Перенос и резервные копии».
|
|
24
|
+
4. Укажите путь к архиву → **«Проверить архив»** → подтвердите → **«Развернуть архив»**.
|
|
25
|
+
5. Перезапустите DSH. Готово.
|
|
26
|
+
|
|
27
|
+
## Если `dsh` не находится в PATH
|
|
28
|
+
|
|
29
|
+
Скрипт сам попробует
|
|
30
|
+
`%LOCALAPPDATA%\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd`.
|
|
31
|
+
Если DSH установлен в другое место — запустите скрипт с параметром:
|
|
32
|
+
|
|
33
|
+
```powershell
|
|
34
|
+
.\install-on-clean-machine.ps1 -DshHome "C:\Users\<user>\.dsh" -Profile desktop
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Альтернатива без скрипта
|
|
38
|
+
|
|
39
|
+
Откройте чат в DSH на новой машине и попросите агента:
|
|
40
|
+
«Установи плагин из папки `<полный путь к dsh-profile-transfer>` через
|
|
41
|
+
`plugin_manager install_bundle`». После этого обновите страницу (Ctrl+R) и
|
|
42
|
+
продолжайте с шага 3.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
#requires -Version 5.1
|
|
2
|
+
<#
|
|
3
|
+
.SYNOPSIS
|
|
4
|
+
Bootstrap the dsh-profile-transfer plugin on a clean DSH machine.
|
|
5
|
+
|
|
6
|
+
.DESCRIPTION
|
|
7
|
+
1. finds the dsh CLI (PATH or the default Desktop installation);
|
|
8
|
+
2. installs this plugin folder into the chosen profile through DSH's own
|
|
9
|
+
bundled pnpm (`dsh plugin --profile <name> add <path>`);
|
|
10
|
+
3. adds the bundle to the profile's dsh.profile.bundles selection, because the
|
|
11
|
+
`dsh plugin` CLI only installs the package (bundle selection normally
|
|
12
|
+
belongs to the Plugin Manager UI);
|
|
13
|
+
4. prints the next steps: open DSH -> Settings -> Transfer and restore the
|
|
14
|
+
exported archive.
|
|
15
|
+
|
|
16
|
+
.PARAMETER Profile
|
|
17
|
+
DSH profile name, default "desktop".
|
|
18
|
+
|
|
19
|
+
.PARAMETER PluginPath
|
|
20
|
+
Plugin source folder; by default the parent of this script's folder.
|
|
21
|
+
|
|
22
|
+
.PARAMETER DshHome
|
|
23
|
+
DSH home directory; default $env:DSH_HOME or %USERPROFILE%\.dsh.
|
|
24
|
+
#>
|
|
25
|
+
param(
|
|
26
|
+
[string]$Profile = "desktop",
|
|
27
|
+
[string]$PluginPath = "",
|
|
28
|
+
[string]$DshHome = ""
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
$ErrorActionPreference = "Stop"
|
|
32
|
+
|
|
33
|
+
function Write-Step([string]$Text) {
|
|
34
|
+
Write-Host ""
|
|
35
|
+
Write-Host "==> $Text" -ForegroundColor Cyan
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if ([string]::IsNullOrWhiteSpace($PluginPath)) {
|
|
39
|
+
# The same script lives in two layouts:
|
|
40
|
+
# <archive root>\install-on-clean-machine.ps1 -> bootstrap-plugin\dsh-profile-transfer
|
|
41
|
+
# <archive root>\payload\local-plugins\...\bootstrap -> parent of this folder
|
|
42
|
+
$candidates = @(
|
|
43
|
+
(Join-Path $PSScriptRoot "bootstrap-plugin\dsh-profile-transfer"),
|
|
44
|
+
(Join-Path $PSScriptRoot "payload\local-plugins\dsh-profile-transfer"),
|
|
45
|
+
(Split-Path -Parent $PSScriptRoot)
|
|
46
|
+
)
|
|
47
|
+
foreach ($candidate in $candidates) {
|
|
48
|
+
if (Test-Path (Join-Path $candidate "package.json")) {
|
|
49
|
+
$PluginPath = $candidate
|
|
50
|
+
break
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if ([string]::IsNullOrWhiteSpace($PluginPath)) {
|
|
54
|
+
throw "Plugin package.json not found next to this script. Expected bootstrap-plugin\dsh-profile-transfer or payload\local-plugins\dsh-profile-transfer."
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (-not (Test-Path (Join-Path $PluginPath "package.json"))) {
|
|
58
|
+
throw "Plugin package.json not found: $PluginPath"
|
|
59
|
+
}
|
|
60
|
+
if ([string]::IsNullOrWhiteSpace($DshHome)) {
|
|
61
|
+
if ($env:DSH_HOME) { $DshHome = $env:DSH_HOME } else { $DshHome = Join-Path $env:USERPROFILE ".dsh" }
|
|
62
|
+
}
|
|
63
|
+
$profileDir = Join-Path $DshHome "profiles\$Profile"
|
|
64
|
+
$profileJson = Join-Path $profileDir "package.json"
|
|
65
|
+
|
|
66
|
+
Write-Step "Checking DSH environment"
|
|
67
|
+
$dsh = $null
|
|
68
|
+
$command = Get-Command dsh -ErrorAction SilentlyContinue
|
|
69
|
+
if ($command) { $dsh = $command.Source }
|
|
70
|
+
if (-not $dsh) {
|
|
71
|
+
$fallback = Join-Path ${env:LOCALAPPDATA} "Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd"
|
|
72
|
+
if (Test-Path $fallback) { $dsh = $fallback }
|
|
73
|
+
}
|
|
74
|
+
if (-not $dsh) {
|
|
75
|
+
throw "dsh CLI not found. Install DeepSeek Harness, run it once, then retry."
|
|
76
|
+
}
|
|
77
|
+
Write-Host "dsh: $dsh"
|
|
78
|
+
Write-Host "DSH_HOME: $DshHome"
|
|
79
|
+
Write-Host "Profile: $Profile"
|
|
80
|
+
Write-Host "Plugin: $PluginPath"
|
|
81
|
+
|
|
82
|
+
if (-not (Test-Path $profileJson)) {
|
|
83
|
+
throw "Profile '$Profile' does not exist yet ($profileDir). Run DSH once, close it, then retry."
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
Write-Step "Backing up the profile package.json"
|
|
87
|
+
$stamp = Get-Date -Format "yyyyMMdd-HHmmss"
|
|
88
|
+
$backup = $profileJson + ".bak-transfer-bootstrap-" + $stamp
|
|
89
|
+
Write-Host "Copying $profileJson -> $backup"
|
|
90
|
+
[System.IO.File]::Copy($profileJson, $backup, $true)
|
|
91
|
+
Write-Host "Backup: $backup"
|
|
92
|
+
|
|
93
|
+
Write-Step "Installing the plugin package through DSH pnpm (dsh plugin add)"
|
|
94
|
+
& $dsh plugin --profile $Profile add $PluginPath
|
|
95
|
+
if ($LASTEXITCODE -ne 0) {
|
|
96
|
+
throw "dsh plugin add exited with code $LASTEXITCODE. See the output above."
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
Write-Step "Selecting the bundle in the profile manifest"
|
|
100
|
+
$json = Get-Content -Path $profileJson -Raw | ConvertFrom-Json
|
|
101
|
+
if ($null -eq $json.dsh) { $json | Add-Member -NotePropertyName dsh -NotePropertyValue ([pscustomobject]@{}) }
|
|
102
|
+
if ($null -eq $json.dsh.profile) { $json.dsh | Add-Member -NotePropertyName profile -NotePropertyValue ([pscustomobject]@{}) }
|
|
103
|
+
$bundles = @()
|
|
104
|
+
if ($json.dsh.profile.bundles) { $bundles = @($json.dsh.profile.bundles) }
|
|
105
|
+
if ($bundles -notcontains "dsh-profile-transfer") {
|
|
106
|
+
$bundles += "dsh-profile-transfer"
|
|
107
|
+
}
|
|
108
|
+
$json.dsh.profile | Add-Member -NotePropertyName bundles -NotePropertyValue $bundles -Force
|
|
109
|
+
$jsonText = $json | ConvertTo-Json -Depth 20
|
|
110
|
+
[System.IO.File]::WriteAllText($profileJson, $jsonText, (New-Object System.Text.UTF8Encoding($false)))
|
|
111
|
+
Write-Host "bundles: $($bundles -join ', ')"
|
|
112
|
+
|
|
113
|
+
Write-Step "Done"
|
|
114
|
+
Write-Host "1. Open DeepSeek Harness (restart it if it was running)." -ForegroundColor Green
|
|
115
|
+
Write-Host "2. Settings: Ctrl+Alt+, (or account menu -> Settings)." -ForegroundColor Green
|
|
116
|
+
Write-Host "3. Section 'Transfer and backups' -> archive path -> 'Check archive' -> 'Restore archive'." -ForegroundColor Green
|
|
117
|
+
Write-Host "4. Restart DSH after the import." -ForegroundColor Green
|
|
118
|
+
Write-Host ""
|
|
119
|
+
Write-Host "Rollback of this step only: restore package.json from $backup and remove the package from the profile node_modules." -ForegroundColor DarkGray
|