dsh-config-manager 0.1.71 → 0.1.73
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 +149 -98
- package/README.zh-CN.md +245 -88
- package/lib/adapters/agent-instructions.js +1 -1
- package/lib/adapters/file-collection.js +1 -1
- package/lib/adapters/index.d.ts +2 -1
- package/lib/adapters/index.js +6 -1
- package/lib/adapters/link-report.d.ts +1 -0
- package/lib/adapters/link-report.js +27 -3
- package/lib/adapters/messages.d.ts +21 -0
- package/lib/adapters/messages.js +57 -0
- package/lib/adapters/plugin-data.d.ts +114 -0
- package/lib/adapters/plugin-data.js +309 -0
- package/lib/adapters/plugin-files.js +3 -2
- package/lib/adapters/plugins.js +4 -3
- package/lib/adapters/prompts.d.ts +1 -0
- package/lib/adapters/prompts.js +7 -1
- package/lib/adapters/self.d.ts +8 -2
- package/lib/adapters/self.js +3 -2
- package/lib/adapters/sessions.d.ts +1 -0
- package/lib/adapters/sessions.js +4 -2
- package/lib/adapters/test-helpers.d.ts +9 -0
- package/lib/adapters/test-helpers.js +14 -0
- package/lib/adapters/ui.d.ts +2 -2
- package/lib/adapters/ui.js +25 -25
- package/lib/adapters/workspaces.d.ts +1 -0
- package/lib/adapters/workspaces.js +7 -3
- package/lib/cli/actions.d.ts +9 -1
- package/lib/cli/actions.js +5 -2
- package/lib/cli/help.js +23 -10
- package/lib/cli/index.d.ts +23 -0
- package/lib/cli/index.js +90 -32
- package/lib/cli/sessions-inspect.js +3 -1
- package/lib/cli/sessions-repair.js +25 -6
- package/lib/cli/web/page.d.ts +12 -0
- package/lib/cli/web/page.js +21 -12
- package/lib/cli/web/routes.js +2 -2
- package/lib/cli/web/server.js +4 -4
- package/lib/client.d.ts +1442 -494
- package/lib/client.js +15326 -8520
- package/lib/core/analyzer.d.ts +11 -2
- package/lib/core/analyzer.js +31 -8
- package/lib/core/backup-plan.d.ts +10 -0
- package/lib/core/backup-plan.js +51 -20
- package/lib/core/backup-verify.js +24 -23
- package/lib/core/backup.d.ts +25 -1
- package/lib/core/backup.js +99 -28
- package/lib/core/boot-rescue.js +4 -3
- package/lib/core/boot-safety.js +2 -1
- package/lib/core/command-rollback.d.ts +182 -0
- package/lib/core/command-rollback.js +293 -0
- package/lib/core/consult-source.js +7 -6
- package/lib/core/disk-usage.d.ts +74 -10
- package/lib/core/disk-usage.js +67 -4
- package/lib/core/engine-locale.d.ts +87 -0
- package/lib/core/engine-locale.js +125 -0
- package/lib/core/exporter.js +3 -3
- package/lib/core/fork-reconcile.d.ts +128 -0
- package/lib/core/fork-reconcile.js +150 -0
- package/lib/core/journal.js +6 -5
- package/lib/core/local-plugin-host.js +3 -2
- package/lib/core/local-plugin-pack.js +11 -6
- package/lib/core/messages-core.d.ts +294 -0
- package/lib/core/messages-core.js +619 -0
- package/lib/core/messages.d.ts +61 -2
- package/lib/core/messages.js +118 -13
- package/lib/core/migration-consult.js +21 -20
- package/lib/core/migration-history.js +19 -5
- package/lib/core/model-tools.d.ts +0 -22
- package/lib/core/model-tools.js +50 -27
- package/lib/core/phase3-host.js +30 -5
- package/lib/core/plugin-cli.js +18 -19
- package/lib/core/plugin-data-registry.d.ts +124 -0
- package/lib/core/plugin-data-registry.js +198 -0
- package/lib/core/reconcile.d.ts +2 -14
- package/lib/core/reconcile.js +87 -17
- package/lib/core/recovery-orchestrator.js +19 -18
- package/lib/core/reinstall.d.ts +4 -0
- package/lib/core/reinstall.js +26 -21
- package/lib/core/restore.js +20 -17
- package/lib/core/rollback-gate.d.ts +33 -0
- package/lib/core/rollback-gate.js +57 -0
- package/lib/core/rollback-ignore-rules.d.ts +31 -0
- package/lib/core/rollback-ignore-rules.js +140 -0
- package/lib/core/rollback-ledger.d.ts +248 -0
- package/lib/core/rollback-ledger.js +1282 -0
- package/lib/core/rollback-point.d.ts +1391 -0
- package/lib/core/rollback-point.js +3503 -0
- package/lib/core/rollback.js +6 -4
- package/lib/core/run-registry.js +6 -5
- package/lib/core/session-health.d.ts +15 -0
- package/lib/core/session-meta.d.ts +42 -2
- package/lib/core/session-meta.js +140 -1
- package/lib/core/session-title.d.ts +28 -0
- package/lib/core/session-title.js +185 -0
- package/lib/core/startup-barrier.d.ts +24 -0
- package/lib/core/startup-barrier.js +22 -0
- package/lib/core/transaction-coordinator.js +4 -3
- package/lib/core/types.d.ts +37 -1
- package/lib/core/validator.js +5 -4
- package/lib/core/verify-recovery.js +31 -30
- package/lib/foreign/bundle.js +3 -2
- package/lib/foreign/continue.js +2 -1
- package/lib/foreign/crush.js +2 -1
- package/lib/foreign/gemini.js +2 -1
- package/lib/foreign/goose.js +2 -1
- package/lib/foreign/kilocode.js +2 -1
- package/lib/foreign/kimi.js +2 -1
- package/lib/foreign/messages.d.ts +15 -0
- package/lib/foreign/messages.js +40 -0
- package/lib/foreign/mimocode.js +2 -1
- package/lib/foreign/openclaw.js +2 -1
- package/lib/foreign/opencode.js +2 -1
- package/lib/foreign/pi.js +2 -1
- package/lib/foreign/qoder.js +2 -1
- package/lib/foreign/qwen.js +2 -1
- package/lib/foreign/registry.d.ts +1 -1
- package/lib/foreign/registry.js +8 -7
- package/lib/foreign/teleagent.js +2 -1
- package/lib/foreign/workbuddy.js +2 -1
- package/lib/foreign/zcode.js +2 -1
- package/lib/foreign/zed.js +2 -1
- package/lib/index.d.ts +227 -7
- package/lib/index.js +799 -54
- package/lib/market/git-file-writer.js +20 -19
- package/lib/market/github-repos.js +35 -19
- package/lib/market/index-parser.js +31 -30
- package/lib/market/messages-market.d.ts +138 -0
- package/lib/market/messages-market.js +305 -0
- package/lib/market/my-repo.d.ts +2 -2
- package/lib/market/my-repo.js +32 -29
- package/lib/market/prepare.js +18 -15
- package/lib/market/security.js +20 -19
- package/lib/market/types.js +2 -1
- package/lib/market/url.js +2 -1
- package/lib/migrations/index.js +6 -5
- package/lib/migrations/messages-migrations.d.ts +32 -0
- package/lib/migrations/messages-migrations.js +58 -0
- package/lib/profiles/dsh-profile-launcher.js +2 -1
- package/lib/profiles/dsh-profile-runtime.js +2 -1
- package/lib/profiles/messages.d.ts +7 -0
- package/lib/profiles/messages.js +27 -0
- package/lib/routes/backup.js +18 -2
- package/lib/routes/import.js +3 -3
- package/lib/routes/index.d.ts +1 -1
- package/lib/routes/kit.d.ts +3 -2
- package/lib/routes/kit.js +6 -1
- package/lib/routes/market.js +1 -1
- package/lib/routes/messages.d.ts +43 -0
- package/lib/routes/messages.js +102 -0
- package/lib/routes/prefs.js +26 -3
- package/lib/routes/profiles.js +12 -6
- package/lib/routes/recovery.d.ts +21 -0
- package/lib/routes/recovery.js +478 -94
- package/lib/routes/snapshots.js +51 -4
- package/lib/routes/sync.js +79 -17
- package/lib/schema/config.d.ts +11 -1
- package/lib/schema/config.js +52 -20
- package/lib/schema/index.d.ts +8 -6
- package/lib/schema/index.js +8 -6
- package/lib/schema/manifest.js +19 -18
- package/lib/schema/messages.d.ts +47 -0
- package/lib/schema/messages.js +110 -0
- package/lib/schema/section-registry.d.ts +42 -15
- package/lib/schema/section-registry.js +67 -32
- package/lib/schema/types.d.ts +1 -1
- package/lib/schema/versions.js +6 -5
- package/lib/security/encryption.js +16 -15
- package/lib/security/integrity.js +8 -7
- package/lib/security/messages.d.ts +30 -0
- package/lib/security/messages.js +77 -0
- package/lib/security/redaction.js +12 -0
- package/lib/security/secret-scanner.js +16 -13
- package/lib/security/vault.js +2 -1
- package/lib/security/zip-security.js +4 -3
- package/lib/sync/ancestor.js +2 -1
- package/lib/sync/autosync-config.d.ts +11 -0
- package/lib/sync/autosync-config.js +12 -0
- package/lib/sync/autosync-scheduler.d.ts +11 -1
- package/lib/sync/autosync-scheduler.js +115 -76
- package/lib/sync/backup-files.js +3 -2
- package/lib/sync/backup-scheduler.js +6 -5
- package/lib/sync/blob-store.js +2 -1
- package/lib/sync/git/git-transport.d.ts +55 -0
- package/lib/sync/git/git-transport.js +152 -2
- package/lib/sync/github-auth.js +10 -9
- package/lib/sync/layout.js +13 -12
- package/lib/sync/messages.d.ts +63 -0
- package/lib/sync/messages.js +149 -0
- package/lib/sync/review-queue.js +6 -5
- package/lib/sync/s3/messages.d.ts +7 -0
- package/lib/sync/s3/messages.js +16 -0
- package/lib/sync/s3/s3-providers.d.ts +4 -1
- package/lib/sync/s3/s3-providers.js +5 -5
- package/lib/sync/s3/s3-transport.js +1 -1
- package/lib/sync/s3/sigv4.js +2 -1
- package/lib/sync/snapshot-crypto.js +6 -5
- package/lib/sync/snapshot-json.js +3 -2
- package/lib/sync/sync-engine.d.ts +58 -22
- package/lib/sync/sync-engine.js +119 -48
- package/lib/sync/sync-history.js +7 -6
- package/lib/sync/sync-selection.d.ts +15 -4
- package/lib/sync/sync-selection.js +17 -5
- package/lib/sync/ui-prefs.d.ts +22 -0
- package/lib/sync/ui-prefs.js +28 -0
- package/lib/sync/webdav/webdav-transport.d.ts +1 -0
- package/lib/sync/webdav/webdav-transport.js +4 -1
- package/lib/ui/artifact-view.js +4 -3
- package/lib/ui/commands.d.ts +1 -1
- package/lib/ui/commands.js +10 -0
- package/lib/ui/diff-view.d.ts +10 -0
- package/lib/ui/diff-view.js +17 -0
- package/lib/ui/disk-usage-view.d.ts +33 -4
- package/lib/ui/disk-usage-view.js +29 -1
- package/lib/ui/errors.d.ts +1 -1
- package/lib/ui/errors.js +4 -3
- package/lib/ui/export-flow.js +26 -20
- package/lib/ui/foreign-view.d.ts +5 -1
- package/lib/ui/foreign-view.js +26 -2
- package/lib/ui/i18n.d.ts +68 -1
- package/lib/ui/i18n.js +120 -2
- package/lib/ui/import-wizard.d.ts +7 -0
- package/lib/ui/import-wizard.js +13 -10
- package/lib/ui/progress.d.ts +2 -2
- package/lib/ui/progress.js +1 -2
- package/lib/ui/report.d.ts +5 -5
- package/lib/ui/report.js +6 -6
- package/lib/ui/rollback-view.d.ts +815 -0
- package/lib/ui/rollback-view.js +738 -0
- package/lib/ui/selection-model.d.ts +41 -0
- package/lib/ui/selection-model.js +30 -0
- package/lib/ui/session-inventory-view.d.ts +97 -3
- package/lib/ui/session-inventory-view.js +76 -2
- package/lib/ui/session-issue-labels.d.ts +43 -0
- package/lib/ui/session-issue-labels.js +48 -0
- package/lib/ui/sync-settings-view.d.ts +33 -0
- package/lib/ui/sync-settings-view.js +40 -0
- package/lib/ui/test-helpers.js +2 -1
- package/lib/ui/types.d.ts +8 -3
- package/lib/ui/types.js +1 -1
- package/lib/utils/atomic-write.js +6 -5
- package/lib/utils/bundle-scan.d.ts +11 -1
- package/lib/utils/bundle-scan.js +12 -1
- package/lib/utils/env-lock.d.ts +10 -0
- package/lib/utils/env-lock.js +73 -46
- package/lib/utils/json.js +6 -5
- package/lib/utils/messages-utils.d.ts +96 -0
- package/lib/utils/messages-utils.js +216 -0
- package/lib/utils/proxy.js +18 -5
- package/lib/utils/recursive-walk.d.ts +22 -0
- package/lib/utils/recursive-walk.js +75 -1
- package/lib/utils/session-log-repair.js +10 -9
- package/lib/utils/zip.js +27 -26
- package/package.json +12 -2
- package/src/adapters/agent-instructions.ts +1 -1
- package/src/adapters/file-collection.test.ts +1 -0
- package/src/adapters/file-collection.ts +1 -1
- package/src/adapters/files.test.ts +27 -0
- package/src/adapters/index.ts +6 -1
- package/src/adapters/link-report.test.ts +22 -2
- package/src/adapters/link-report.ts +29 -4
- package/src/adapters/messages.ts +61 -0
- package/src/adapters/plugin-data.test.ts +225 -0
- package/src/adapters/plugin-data.ts +351 -0
- package/src/adapters/plugin-files.ts +3 -2
- package/src/adapters/plugins.ts +4 -3
- package/src/adapters/prompts.ts +7 -1
- package/src/adapters/self.test.ts +26 -0
- package/src/adapters/self.ts +10 -3
- package/src/adapters/sessions.ts +4 -2
- package/src/adapters/settings.test.ts +38 -1
- package/src/adapters/test-helpers.ts +15 -0
- package/src/adapters/ui.test.ts +2 -2
- package/src/adapters/ui.ts +27 -26
- package/src/adapters/workspaces.ts +7 -3
- package/src/cli/actions.test.ts +28 -0
- package/src/cli/actions.ts +11 -2
- package/src/cli/help.ts +23 -10
- package/src/cli/index-guards.test.ts +193 -0
- package/src/cli/index.ts +106 -31
- package/src/cli/sessions-inspect.test.ts +15 -1
- package/src/cli/sessions-inspect.ts +3 -1
- package/src/cli/sessions-repair.test.ts +84 -0
- package/src/cli/sessions-repair.ts +33 -7
- package/src/cli/web/console-route-parity.test.ts +115 -0
- package/src/cli/web/page.ts +23 -12
- package/src/cli/web/routes.ts +2 -1
- package/src/cli/web/server.ts +4 -4
- package/src/cli/web/web.test.ts +2 -2
- package/src/client/ConfigManagerSection.tsx +30 -2
- package/src/client/about/AboutPanel.tsx +2 -2
- package/src/client/about/PluginUpdateDialog.tsx +1 -1
- package/src/client/about/ReleaseNotesDialog.tsx +2 -2
- package/src/client/about/about-view.test.ts +13 -3
- package/src/client/about/about-view.ts +10 -6
- package/src/client/about/release-notes-view.test.ts +14 -4
- package/src/client/about/release-notes-view.ts +4 -2
- package/src/client/api.ts +18 -6
- package/src/client/chat/ChatEntryView.tsx +411 -0
- package/src/client/chat/RollbackDiffTab.tsx +108 -0
- package/src/client/chat/RollbackFileIcon.tsx +96 -0
- package/src/client/chat/RollbackReviewDialog.tsx +607 -0
- package/src/client/chat/chat-entry-view.test.ts +1174 -0
- package/src/client/chat/chat-entry-view.ts +758 -0
- package/src/client/chat/chat-locales.ts +152 -0
- package/src/client/chat/chat-node-registration.ts +64 -0
- package/src/client/chat/chat-point-window.ts +183 -0
- package/src/client/chat/chat-slots.ts +107 -0
- package/src/client/chat/rollback-diff-tab.test.ts +105 -0
- package/src/client/chat/rollback-diff-tab.ts +174 -0
- package/src/client/chat/rollback-entry-view.test.ts +1469 -0
- package/src/client/chat/rollback-entry-view.ts +946 -0
- package/src/client/chat/sidebar-slots.ts +59 -0
- package/src/client/common/ConfirmDialog.tsx +7 -3
- package/src/client/common/ContentPicker.tsx +48 -10
- package/src/client/common/DiffTable.tsx +133 -0
- package/src/client/common/ErrorBanner.tsx +4 -4
- package/src/client/common/Icon.tsx +2 -0
- package/src/client/common/Modal.tsx +8 -1
- package/src/client/common/ProgressBar.tsx +8 -2
- package/src/client/common/ReportView.tsx +4 -4
- package/src/client/common/RunsCenter.tsx +1 -0
- package/src/client/common/client-route-parity.test.ts +84 -0
- package/src/client/common/info-hint-guard.test.ts +46 -13
- package/src/client/common/picker-lazy-units.test.ts +42 -0
- package/src/client/common/plan-text-redaction.test.ts +17 -6
- package/src/client/common/progress-view-edge.test.ts +8 -7
- package/src/client/common/progress-view.test.ts +9 -9
- package/src/client/common/progress-view.ts +2 -2
- package/src/client/common/routes.ts +38 -0
- package/src/client/common/section-labels.test.ts +1 -0
- package/src/client/common/section-labels.ts +2 -0
- package/src/client/common/ui.tsx +73 -10
- package/src/client/config-manager.module.css +1109 -31
- package/src/client/css-scale-guard.test.ts +30 -0
- package/src/client/environment/EnvironmentPanel.tsx +11 -4
- package/src/client/environment/maintenance/DiskUsageCard.tsx +23 -2
- package/src/client/export/ExportView.tsx +13 -8
- package/src/client/history/HistoryPanel.tsx +4 -3
- package/src/client/history/history-api.ts +2 -2
- package/src/client/history/history-locales.ts +5 -1
- package/src/client/home/HomePanel.tsx +29 -8
- package/src/client/import/ForeignImportView.tsx +4 -5
- package/src/client/import/ImportWizardView.tsx +5 -3
- package/src/client/import/import-wizard-split.test.ts +3 -1
- package/src/client/import/import-wizard-steps.tsx +9 -9
- package/src/client/index.ts +232 -3
- package/src/client/library/LibraryActions.tsx +32 -7
- package/src/client/library/LibraryPanel.tsx +23 -3
- package/src/client/library/RestorePlanView.tsx +9 -66
- package/src/client/locales.ts +62 -9
- package/src/client/lucide-icons.d.ts +1 -0
- package/src/client/market/MarketPanel.tsx +13 -2
- package/src/client/market/MyConfigsView.tsx +5 -4
- package/src/client/market/MyConfigsWizard.tsx +10 -8
- package/src/client/market/market-api.test.ts +9 -8
- package/src/client/market/market-api.ts +2 -2
- package/src/client/market/market-locales.ts +3 -0
- package/src/client/market/market-view.test.ts +6 -6
- package/src/client/market/market-view.ts +3 -3
- package/src/client/market/my-configs-api.ts +2 -2
- package/src/client/market/my-configs-view.test.ts +23 -22
- package/src/client/market/my-configs-view.ts +8 -8
- package/src/client/recovery/IncompleteCopiesSection.tsx +2 -1
- package/src/client/recovery/RecoveryPanel.tsx +442 -283
- package/src/client/recovery/RollbackCard.tsx +859 -0
- package/src/client/recovery/RollbackDiffPane.tsx +69 -0
- package/src/client/recovery/RollbackFileChanges.tsx +163 -0
- package/src/client/recovery/incident-api.ts +2 -2
- package/src/client/recovery/recovery-api.ts +144 -6
- package/src/client/recovery/recovery-locales.test.ts +299 -0
- package/src/client/recovery/recovery-locales.ts +520 -149
- package/src/client/recovery/recovery-panel-layout.test.ts +132 -2
- package/src/client/recovery/rollback-enabled.ts +41 -0
- package/src/client/recovery/rollback-file-changes.test.ts +114 -0
- package/src/client/recovery/session-dialog-mount.test.ts +54 -0
- package/src/client/run-store.ts +84 -21
- package/src/client/sync/AutosyncCard.tsx +25 -1
- package/src/client/sync/ChannelClearConfirmDialog.tsx +6 -3
- package/src/client/sync/ChannelConfigDialog.tsx +10 -10
- package/src/client/sync/DecryptPasswordCard.tsx +2 -2
- package/src/client/sync/SecurityOptionsCard.tsx +27 -17
- package/src/client/sync/SyncChannelEntryCard.tsx +14 -2
- package/src/client/sync/SyncConfirmView.tsx +46 -8
- package/src/client/sync/SyncLogList.tsx +1 -1
- package/src/client/sync/SyncPanel.tsx +31 -23
- package/src/client/sync/SyncRepositoryPicker.tsx +3 -5
- package/src/client/sync/SyncSectionPickerDialog.tsx +11 -2
- package/src/client/sync/SyncSettingsView.test.ts +20 -1
- package/src/client/sync/UnreadableSnapshotsBanner.tsx +1 -1
- package/src/client/sync/WorkDirCard.tsx +112 -0
- package/src/client/sync/history-model.test.ts +42 -9
- package/src/client/sync/history-model.ts +30 -15
- package/src/client/sync/sync-api.test.ts +57 -33
- package/src/client/sync/sync-api.ts +80 -6
- package/src/client/sync/sync-locales.ts +104 -3
- package/src/client/sync/sync-view-v2.test.ts +65 -13
- package/src/client/sync/sync-view.test.ts +107 -52
- package/src/client/sync/sync-view.ts +124 -41
- package/src/core/analyzer.ts +31 -9
- package/src/core/backup-plan.test.ts +48 -5
- package/src/core/backup-plan.ts +51 -20
- package/src/core/backup-verify.ts +24 -23
- package/src/core/backup.test.ts +76 -0
- package/src/core/backup.ts +105 -29
- package/src/core/boot-rescue.ts +4 -3
- package/src/core/boot-safety.ts +2 -1
- package/src/core/command-rollback.test.ts +536 -0
- package/src/core/command-rollback.ts +406 -0
- package/src/core/consult-source.ts +7 -6
- package/src/core/disk-usage.test.ts +257 -1
- package/src/core/disk-usage.ts +134 -14
- package/src/core/engine-locale.test.ts +593 -0
- package/src/core/engine-locale.ts +175 -0
- package/src/core/exporter.ts +3 -3
- package/src/core/fork-reconcile.test.ts +279 -0
- package/src/core/fork-reconcile.ts +234 -0
- package/src/core/journal.ts +6 -5
- package/src/core/local-plugin-host.ts +3 -2
- package/src/core/local-plugin-pack.ts +11 -6
- package/src/core/messages-core.ts +661 -0
- package/src/core/messages.ts +125 -17
- package/src/core/migration-consult.ts +21 -20
- package/src/core/migration-history.ts +19 -5
- package/src/core/model-tools.ts +28 -27
- package/src/core/phase3-host.ts +21 -5
- package/src/core/phase3-p2b-fingerprint.test.ts +22 -0
- package/src/core/plugin-cli.ts +18 -19
- package/src/core/plugin-data-registry.test.ts +113 -0
- package/src/core/plugin-data-registry.ts +261 -0
- package/src/core/reconcile.test.ts +117 -0
- package/src/core/reconcile.ts +85 -17
- package/src/core/recovery-orchestrator.ts +19 -18
- package/src/core/reinstall.ts +26 -21
- package/src/core/restore.ts +20 -17
- package/src/core/rollback-file-diff.test.ts +159 -0
- package/src/core/rollback-gate.test.ts +66 -0
- package/src/core/rollback-gate.ts +61 -0
- package/src/core/rollback-ignore-rules.ts +126 -0
- package/src/core/rollback-ledger.test.ts +655 -0
- package/src/core/rollback-ledger.ts +1314 -0
- package/src/core/rollback-point.test.ts +2853 -0
- package/src/core/rollback-point.ts +4340 -0
- package/src/core/rollback.ts +5 -3
- package/src/core/run-registry.ts +6 -5
- package/src/core/session-health.ts +15 -0
- package/src/core/session-meta.test.ts +117 -1
- package/src/core/session-meta.ts +149 -2
- package/src/core/session-title.test.ts +127 -0
- package/src/core/session-title.ts +189 -0
- package/src/core/startup-barrier.test.ts +69 -0
- package/src/core/startup-barrier.ts +27 -0
- package/src/core/transaction-coordinator.ts +4 -3
- package/src/core/types.ts +37 -1
- package/src/core/validator.ts +5 -4
- package/src/core/verify-recovery.ts +31 -30
- package/src/foreign/bundle.ts +3 -2
- package/src/foreign/continue.ts +2 -1
- package/src/foreign/crush.ts +2 -1
- package/src/foreign/file-budget.test.ts +2 -0
- package/src/foreign/gemini.ts +2 -1
- package/src/foreign/goose.ts +2 -1
- package/src/foreign/kilocode.ts +2 -1
- package/src/foreign/kimi.ts +2 -1
- package/src/foreign/messages.ts +44 -0
- package/src/foreign/mimocode.ts +2 -1
- package/src/foreign/openclaw.ts +2 -1
- package/src/foreign/opencode.ts +2 -1
- package/src/foreign/pi.ts +2 -1
- package/src/foreign/qoder.ts +2 -1
- package/src/foreign/qwen.ts +2 -1
- package/src/foreign/registry.test.ts +1 -1
- package/src/foreign/registry.ts +8 -7
- package/src/foreign/teleagent.ts +2 -1
- package/src/foreign/workbuddy.ts +2 -1
- package/src/foreign/zcode.ts +2 -1
- package/src/foreign/zed.ts +2 -1
- package/src/index.facade.test.ts +340 -1
- package/src/index.ts +876 -57
- package/src/market/git-file-writer.ts +20 -19
- package/src/market/github-repos.test.ts +23 -0
- package/src/market/github-repos.ts +37 -19
- package/src/market/index-parser.ts +31 -30
- package/src/market/messages-market.ts +325 -0
- package/src/market/my-repo.ts +32 -29
- package/src/market/prepare.ts +18 -15
- package/src/market/security.ts +20 -19
- package/src/market/types.ts +2 -1
- package/src/market/url.ts +2 -1
- package/src/migrations/index.ts +6 -5
- package/src/migrations/messages-migrations.ts +59 -0
- package/src/profiles/dsh-profile-launcher.ts +2 -1
- package/src/profiles/dsh-profile-runtime.ts +2 -1
- package/src/profiles/messages.ts +31 -0
- package/src/routes/backup.ts +18 -2
- package/src/routes/import.ts +3 -3
- package/src/routes/index.ts +1 -1
- package/src/routes/kit.ts +9 -3
- package/src/routes/market.ts +1 -1
- package/src/routes/messages.ts +106 -0
- package/src/routes/prefs.ts +31 -2
- package/src/routes/profiles.ts +12 -6
- package/src/routes/recovery.test.ts +405 -1
- package/src/routes/recovery.ts +477 -94
- package/src/routes/snapshots.ts +51 -4
- package/src/routes/sync.ts +82 -17
- package/src/schema/config.ts +53 -20
- package/src/schema/index.ts +7 -5
- package/src/schema/manifest-schema.test.ts +4 -4
- package/src/schema/manifest.ts +19 -18
- package/src/schema/messages.ts +120 -0
- package/src/schema/registry.test.ts +28 -7
- package/src/schema/section-registry.ts +96 -42
- package/src/schema/types.ts +2 -1
- package/src/schema/versions.ts +6 -5
- package/src/security/encryption.ts +16 -15
- package/src/security/integrity.ts +8 -7
- package/src/security/messages.ts +87 -0
- package/src/security/redaction.test.ts +17 -1
- package/src/security/redaction.ts +13 -0
- package/src/security/secret-scanner.ts +19 -12
- package/src/security/security.test.ts +47 -0
- package/src/security/vault.ts +2 -1
- package/src/security/zip-security.ts +4 -3
- package/src/sync/ancestor.ts +2 -1
- package/src/sync/autosync-config.ts +21 -0
- package/src/sync/autosync-scheduler.test.ts +63 -7
- package/src/sync/autosync-scheduler.ts +118 -78
- package/src/sync/backup-files.ts +3 -2
- package/src/sync/backup-scheduler.ts +6 -5
- package/src/sync/blob-store.ts +2 -1
- package/src/sync/git/git-transport.test.ts +170 -8
- package/src/sync/git/git-transport.ts +176 -2
- package/src/sync/github-auth.ts +10 -9
- package/src/sync/layout.ts +13 -12
- package/src/sync/messages.ts +153 -0
- package/src/sync/review-queue.ts +6 -5
- package/src/sync/s3/messages.ts +16 -0
- package/src/sync/s3/s3-providers.ts +9 -6
- package/src/sync/s3/s3-transport.ts +1 -1
- package/src/sync/s3/sigv4.ts +3 -1
- package/src/sync/snapshot-crypto.ts +6 -5
- package/src/sync/snapshot-json.ts +3 -2
- package/src/sync/sync-credentials.test.ts +119 -0
- package/src/sync/sync-engine-download-tombstone.test.ts +1 -1
- package/src/sync/sync-engine.test.ts +226 -8
- package/src/sync/sync-engine.ts +154 -52
- package/src/sync/sync-history.ts +7 -6
- package/src/sync/sync-selection.test.ts +12 -2
- package/src/sync/sync-selection.ts +18 -5
- package/src/sync/transport.test.ts +1 -0
- package/src/sync/ui-prefs.test.ts +44 -1
- package/src/sync/ui-prefs.ts +39 -0
- package/src/sync/webdav/webdav-transport.ts +4 -1
- package/src/ui/artifact-view.ts +4 -3
- package/src/ui/commands.test.ts +1 -0
- package/src/ui/commands.ts +11 -1
- package/src/ui/diff-view.test.ts +9 -1
- package/src/ui/diff-view.ts +22 -0
- package/src/ui/disk-usage-view.test.ts +113 -6
- package/src/ui/disk-usage-view.ts +63 -7
- package/src/ui/errors.ts +4 -3
- package/src/ui/export-flow.ts +26 -20
- package/src/ui/foreign-view.test.ts +43 -0
- package/src/ui/foreign-view.ts +30 -3
- package/src/ui/i18n.ts +131 -2
- package/src/ui/import-wizard.ts +18 -10
- package/src/ui/progress.ts +2 -2
- package/src/ui/report.ts +7 -6
- package/src/ui/rollback-view.test.ts +836 -0
- package/src/ui/rollback-view.ts +1405 -0
- package/src/ui/selection-model.test.ts +33 -1
- package/src/ui/selection-model.ts +53 -0
- package/src/ui/session-inventory-view.test.ts +109 -0
- package/src/ui/session-inventory-view.ts +138 -3
- package/src/ui/session-issue-labels.test.ts +51 -0
- package/src/ui/session-issue-labels.ts +70 -0
- package/src/ui/sync-settings-view.test.ts +36 -0
- package/src/ui/sync-settings-view.ts +49 -0
- package/src/ui/test-helpers.ts +2 -1
- package/src/ui/types.ts +10 -4
- package/src/utils/atomic-write.ts +6 -5
- package/src/utils/bundle-scan.test.ts +2 -2
- package/src/utils/bundle-scan.ts +12 -1
- package/src/utils/env-lock.ts +83 -49
- package/src/utils/json.ts +7 -5
- package/src/utils/messages-utils.ts +232 -0
- package/src/utils/proxy.test.ts +25 -0
- package/src/utils/proxy.ts +19 -5
- package/src/utils/recursive-walk.test.ts +43 -0
- package/src/utils/recursive-walk.ts +75 -1
- package/src/utils/session-log-repair.ts +10 -9
- package/src/utils/zip.ts +27 -26
- package/lib/core/checkpoint.d.ts +0 -362
- package/lib/core/checkpoint.js +0 -1309
- package/src/core/checkpoint.test.ts +0 -665
- package/src/core/checkpoint.ts +0 -1614
|
@@ -15,12 +15,18 @@ import type { CompatibilityReason, GlobalConflictStrategy, ImportAnalysis, Impor
|
|
|
15
15
|
import type { SectionId } from '../schema/types.ts';
|
|
16
16
|
import type { ImportPort, ImportPreviewSummary, ImportStep, ProgressListener, WizardSnapshot } from './types.ts';
|
|
17
17
|
import { type SessionFormatDisposition } from './session-format-disposition.ts';
|
|
18
|
+
import { type UiT } from './i18n.ts';
|
|
18
19
|
import { type FlowPhase } from './flow.ts';
|
|
19
20
|
export interface ImportWizardOptions {
|
|
20
21
|
port: ImportPort;
|
|
21
22
|
onProgress?: ProgressListener;
|
|
22
23
|
/** 默认回滚策略(场景 E:true=整体回滚;UI 可在执行前覆盖) */
|
|
23
24
|
defaultRollbackOnError?: boolean;
|
|
25
|
+
/**
|
|
26
|
+
* 渲染层翻译器(UiT)。缺省 = **活**翻译器 `liveUiT`(随 DSH 语言变化)——
|
|
27
|
+
* 绝不是 `zhUiT` 那种加载期快照:英文界面下向导的错误文案不得回落中文。
|
|
28
|
+
*/
|
|
29
|
+
t?: UiT;
|
|
24
30
|
}
|
|
25
31
|
/**
|
|
26
32
|
* 凭据补录:把**单个 ref 的输入**合并进当前提交集合(UI-06)。
|
|
@@ -148,6 +154,7 @@ export declare class ImportWizard {
|
|
|
148
154
|
* decryptArchive 端点解出明文 ZIP 并返回新 zipPath,后续 analyze/plan/execute 都基于它。
|
|
149
155
|
*/
|
|
150
156
|
private unlockedZipPath;
|
|
157
|
+
private readonly t;
|
|
151
158
|
constructor(opts: ImportWizardOptions);
|
|
152
159
|
/** 当前状态快照(React 绑定 / 测试断言用) */
|
|
153
160
|
snapshot(): WizardSnapshot;
|
package/lib/ui/import-wizard.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DEFAULT_SESSION_FORMAT_DISPOSITION, } from './session-format-disposition.js';
|
|
2
2
|
import { EXECUTING_STAGE, IMPORT_STAGES, ProgressTracker } from './progress.js';
|
|
3
3
|
import { formatActionableError, toActionableError } from './errors.js';
|
|
4
|
+
import { liveUiT } from './i18n.js';
|
|
4
5
|
import { nextFlowPhase } from './flow.js';
|
|
5
6
|
/**
|
|
6
7
|
* 凭据补录:把**单个 ref 的输入**合并进当前提交集合(UI-06)。
|
|
@@ -173,11 +174,13 @@ export class ImportWizard {
|
|
|
173
174
|
* decryptArchive 端点解出明文 ZIP 并返回新 zipPath,后续 analyze/plan/execute 都基于它。
|
|
174
175
|
*/
|
|
175
176
|
unlockedZipPath = null;
|
|
177
|
+
t;
|
|
176
178
|
constructor(opts) {
|
|
177
179
|
this.port = opts.port;
|
|
178
180
|
this.onProgress = opts.onProgress;
|
|
179
181
|
this.tracker = new ProgressTracker(IMPORT_STAGES, this.onProgress);
|
|
180
182
|
this.rollbackOnError = opts.defaultRollbackOnError ?? true;
|
|
183
|
+
this.t = opts.t ?? liveUiT;
|
|
181
184
|
}
|
|
182
185
|
/** 当前状态快照(React 绑定 / 测试断言用) */
|
|
183
186
|
snapshot() {
|
|
@@ -238,8 +241,8 @@ export class ImportWizard {
|
|
|
238
241
|
this.tracker.emit('checking-compatibility');
|
|
239
242
|
if (!this.analysis.valid) {
|
|
240
243
|
// 分析失败(完整性/schema/兼容性):错误进 errors,UI 停在失败态
|
|
241
|
-
this.errors.push(...this.analysis.errors.map((e) => formatActionableError(toActionableError(new Error(e)))));
|
|
242
|
-
throw new Error(this.analysis.errors.join('; ') || '
|
|
244
|
+
this.errors.push(...this.analysis.errors.map((e) => formatActionableError(toActionableError(new Error(e)), this.t)));
|
|
245
|
+
throw new Error(this.analysis.errors.join('; ') || this.t('import.analysisFailed'));
|
|
243
246
|
}
|
|
244
247
|
this.step = 'compatibility';
|
|
245
248
|
return this.analysis;
|
|
@@ -247,7 +250,7 @@ export class ImportWizard {
|
|
|
247
250
|
catch (err) {
|
|
248
251
|
// 仅当尚未记录分析错误时才追加(避免重复)
|
|
249
252
|
if (this.errors.length === 0) {
|
|
250
|
-
this.errors.push(formatActionableError(toActionableError(err)));
|
|
253
|
+
this.errors.push(formatActionableError(toActionableError(err, { t: this.t }), this.t));
|
|
251
254
|
}
|
|
252
255
|
throw err;
|
|
253
256
|
}
|
|
@@ -266,7 +269,7 @@ export class ImportWizard {
|
|
|
266
269
|
/** 步骤 3→4:用户确认兼容性后进入 Preview(Dry Run:用当前决策生成计划摘要,零写入) */
|
|
267
270
|
async confirmCompatibility() {
|
|
268
271
|
if (this.analysis === null || this.zipPath === null) {
|
|
269
|
-
throw new Error('
|
|
272
|
+
throw new Error(this.t('import.analysisIncomplete'));
|
|
270
273
|
}
|
|
271
274
|
this.plan = await this.port.createImportPlan(this.resolvedZipPath(), this.decisions, this.planOpts());
|
|
272
275
|
this.step = 'preview';
|
|
@@ -339,10 +342,10 @@ export class ImportWizard {
|
|
|
339
342
|
*/
|
|
340
343
|
async execute(opts) {
|
|
341
344
|
if (this.zipPath === null || this.analysis === null) {
|
|
342
|
-
throw new Error('
|
|
345
|
+
throw new Error(this.t('import.analysisIncomplete'));
|
|
343
346
|
}
|
|
344
347
|
if (opts.confirm !== true) {
|
|
345
|
-
throw new Error('
|
|
348
|
+
throw new Error(this.t('import.notConfirmed'));
|
|
346
349
|
}
|
|
347
350
|
const rollbackOnError = opts.rollbackOnError ?? this.rollbackOnError;
|
|
348
351
|
// P0-8:记住执行前的步骤 —— 执行抛错时回到该步骤(确认页/结果页)。
|
|
@@ -383,7 +386,7 @@ export class ImportWizard {
|
|
|
383
386
|
return this.result;
|
|
384
387
|
}
|
|
385
388
|
catch (err) {
|
|
386
|
-
this.errors.push(formatActionableError(toActionableError(err)));
|
|
389
|
+
this.errors.push(formatActionableError(toActionableError(err, { t: this.t }), this.t));
|
|
387
390
|
// P0-8:失败回退到执行前步骤(正常是 'preview' = 确认页,那里有重试按钮);
|
|
388
391
|
// 计划与错误都已保留,用户可直接再次确认执行。
|
|
389
392
|
this.step = previousStep;
|
|
@@ -408,12 +411,12 @@ export class ImportWizard {
|
|
|
408
411
|
*/
|
|
409
412
|
async executeRetry(opts) {
|
|
410
413
|
if (this.plan === null || this.result === null) {
|
|
411
|
-
throw new Error('
|
|
414
|
+
throw new Error(this.t('import.retryNoResult'));
|
|
412
415
|
}
|
|
413
416
|
const retryable = this.retryableIds();
|
|
414
417
|
const subset = this.plan.items.filter((i) => retryable.has(i.id));
|
|
415
418
|
if (subset.length === 0) {
|
|
416
|
-
throw new Error('
|
|
419
|
+
throw new Error(this.t('import.retryNothing'));
|
|
417
420
|
}
|
|
418
421
|
const rollbackOnError = opts.rollbackOnError ?? this.rollbackOnError;
|
|
419
422
|
// P0-8:同 execute() —— 重试失败也回退到执行前步骤(结果页),
|
|
@@ -438,7 +441,7 @@ export class ImportWizard {
|
|
|
438
441
|
return this.result;
|
|
439
442
|
}
|
|
440
443
|
catch (err) {
|
|
441
|
-
this.errors.push(formatActionableError(toActionableError(err)));
|
|
444
|
+
this.errors.push(formatActionableError(toActionableError(err, { t: this.t }), this.t));
|
|
442
445
|
this.step = previousStep;
|
|
443
446
|
throw err;
|
|
444
447
|
}
|
package/lib/ui/progress.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* ProgressTracker 供导出/导入控制器在调用 core 前后发出阶段事件(UI 不冻结)。
|
|
6
6
|
*/
|
|
7
7
|
import type { ProgressListener } from './types.ts';
|
|
8
|
-
import {
|
|
8
|
+
import type { UiT } from './i18n.ts';
|
|
9
9
|
/** 导出阶段文案(规范 §29 Export 示例) */
|
|
10
10
|
export declare const EXPORT_STAGES: readonly string[];
|
|
11
11
|
/** 导入阶段文案(规范 §29 Import 示例 + 快照/回滚阶段) */
|
|
@@ -21,7 +21,7 @@ export declare const IMPORT_STAGES: readonly string[];
|
|
|
21
21
|
*/
|
|
22
22
|
export declare const EXECUTING_STAGE: 'executing';
|
|
23
23
|
/** 阶段 id → 用户可读文案(未知阶段回退 id) */
|
|
24
|
-
export declare function stageText(stage: string, t
|
|
24
|
+
export declare function stageText(stage: string, t: UiT): string;
|
|
25
25
|
/**
|
|
26
26
|
* 进度追踪器:按给定阶段序列在回调时附带 step/total 序号。
|
|
27
27
|
* 控制器调用 core 前后 emit(),UI 侧渲染进度条/阶段文字。
|
package/lib/ui/progress.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { zhUiT } from './i18n.js';
|
|
2
1
|
/** 导出阶段文案(规范 §29 Export 示例) */
|
|
3
2
|
export const EXPORT_STAGES = [
|
|
4
3
|
'analyzing', // Analyzing configuration...
|
|
@@ -57,7 +56,7 @@ const STAGE_KEYS = {
|
|
|
57
56
|
failed: 'progress.failed',
|
|
58
57
|
};
|
|
59
58
|
/** 阶段 id → 用户可读文案(未知阶段回退 id) */
|
|
60
|
-
export function stageText(stage, t
|
|
59
|
+
export function stageText(stage, t) {
|
|
61
60
|
const key = STAGE_KEYS[stage];
|
|
62
61
|
return key !== undefined ? t(key) : stage;
|
|
63
62
|
}
|
package/lib/ui/report.d.ts
CHANGED
|
@@ -7,13 +7,13 @@
|
|
|
7
7
|
import type { SectionId } from '../schema/types.ts';
|
|
8
8
|
import type { ExecutedItem, ExportReport, ImportResult, RollbackReport } from '../core/types.ts';
|
|
9
9
|
import type { ImportResultAction, ImportSectionStat } from './types.ts';
|
|
10
|
-
import {
|
|
10
|
+
import type { UiT } from './i18n.ts';
|
|
11
11
|
/**
|
|
12
12
|
* 一个分区的 counts → 一行中文计数文本(如「18 个命名空间,3 条说明」)。
|
|
13
13
|
* 空 counts → 空串(调用方按「—」渲染,不要在这里编一个 0)。
|
|
14
14
|
*/
|
|
15
|
-
export declare function exportCountsText(counts: Record<string, number>, t
|
|
16
|
-
export declare function renderExportReport(report: ExportReport, t
|
|
15
|
+
export declare function exportCountsText(counts: Record<string, number>, t: UiT): string;
|
|
16
|
+
export declare function renderExportReport(report: ExportReport, t: UiT): string;
|
|
17
17
|
/** 从 itemId 前缀推断所属分区(与 adapters id 规则对齐;未知归 'other') */
|
|
18
18
|
export declare function sectionFromItemId(itemId: string): SectionId | 'other';
|
|
19
19
|
/** 按分区聚合执行结果(统计 + 明细) */
|
|
@@ -45,10 +45,10 @@ export interface ImportProblem {
|
|
|
45
45
|
*/
|
|
46
46
|
export declare function importProblems(executed: readonly ExecutedItem[]): ImportProblem[];
|
|
47
47
|
/** 导入报告渲染(含回滚状态;§22 动作按钮由 suggestedActions 给出) */
|
|
48
|
-
export declare function renderImportReport(result: ImportResult, t
|
|
48
|
+
export declare function renderImportReport(result: ImportResult, t: UiT): string;
|
|
49
49
|
/** 结果页动作按钮(§22)。报告已内联展示全部失败/警告项的原因与回滚详情(§23),
|
|
50
50
|
* 不再提供空操作的 Fix Issues / View Details 按钮——仅保留「完成」。 */
|
|
51
51
|
export declare function suggestedActions(_result: ImportResult): ImportResultAction[];
|
|
52
52
|
/** 回滚报告渲染(full / partial + 人工恢复清单) */
|
|
53
|
-
export declare function renderRollbackReport(rr: RollbackReport, t
|
|
53
|
+
export declare function renderRollbackReport(rr: RollbackReport, t: UiT): string;
|
|
54
54
|
export declare function formatBytes(n: number): string;
|
package/lib/ui/report.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { zhUiT } from './i18n.js';
|
|
2
1
|
/* ---------------- §21 导出报告 ---------------- */
|
|
3
2
|
/**
|
|
4
3
|
* 分区条目计数的单位词(adapter 的 counts 键 → 字典键)。
|
|
@@ -26,7 +25,7 @@ const COUNT_UNIT_KEY = {
|
|
|
26
25
|
* 一个分区的 counts → 一行中文计数文本(如「18 个命名空间,3 条说明」)。
|
|
27
26
|
* 空 counts → 空串(调用方按「—」渲染,不要在这里编一个 0)。
|
|
28
27
|
*/
|
|
29
|
-
export function exportCountsText(counts, t
|
|
28
|
+
export function exportCountsText(counts, t) {
|
|
30
29
|
const parts = [];
|
|
31
30
|
for (const [key, value] of Object.entries(counts)) {
|
|
32
31
|
if (typeof value !== 'number' || !Number.isFinite(value))
|
|
@@ -34,9 +33,10 @@ export function exportCountsText(counts, t = zhUiT) {
|
|
|
34
33
|
const unitKey = COUNT_UNIT_KEY[key];
|
|
35
34
|
parts.push(unitKey === undefined ? String(value) + ' ' + key : String(value) + ' ' + t(unitKey));
|
|
36
35
|
}
|
|
37
|
-
|
|
36
|
+
// 分隔符也走字典:英文用半角逗号(全角标点在英文界面同样是缺陷)
|
|
37
|
+
return parts.join(t('report.unitSeparator'));
|
|
38
38
|
}
|
|
39
|
-
export function renderExportReport(report, t
|
|
39
|
+
export function renderExportReport(report, t) {
|
|
40
40
|
const lines = [t('report.backupCreated'), ''];
|
|
41
41
|
lines.push(t('report.included'));
|
|
42
42
|
for (const { section, counts } of report.included) {
|
|
@@ -155,7 +155,7 @@ export function importProblems(executed) {
|
|
|
155
155
|
return out;
|
|
156
156
|
}
|
|
157
157
|
/** 导入报告渲染(含回滚状态;§22 动作按钮由 suggestedActions 给出) */
|
|
158
|
-
export function renderImportReport(result, t
|
|
158
|
+
export function renderImportReport(result, t) {
|
|
159
159
|
const lines = [result.ok ? t('report.importComplete') : t('report.importFailed'), ''];
|
|
160
160
|
// F4:被删除墓碑过滤的条目提示(用户明确删过、不复活)
|
|
161
161
|
if ((result.skippedTombstoned?.length ?? 0) > 0) {
|
|
@@ -202,7 +202,7 @@ export function suggestedActions(_result) {
|
|
|
202
202
|
}
|
|
203
203
|
/* ---------------- §17 回滚报告 ---------------- */
|
|
204
204
|
/** 回滚报告渲染(full / partial + 人工恢复清单) */
|
|
205
|
-
export function renderRollbackReport(rr, t
|
|
205
|
+
export function renderRollbackReport(rr, t) {
|
|
206
206
|
if (rr.full) {
|
|
207
207
|
return t('report.rollbackFull');
|
|
208
208
|
}
|