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
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 引擎语言运行时单测(src/core/engine-locale.ts + src/core/messages.ts 的目录合并语义)。
|
|
3
|
+
*
|
|
4
|
+
* 覆盖(对应契约 t2 的验收):
|
|
5
|
+
* - 未设定语言时行为等于 zh;setEngineLocale('en') 后取英文;同一实例跟随切换(活函数,不是快照);
|
|
6
|
+
* - 未知键回退键名,绝不抛错;{param} 插值缺参原样保留;
|
|
7
|
+
* - makeMsg / engineMsg 合并 registerMessageCatalog 注册的目录,**且只在既有目录未命中时生效**;
|
|
8
|
+
* - LANGUAGE_TTL_MS:函数源不调 invalidate 时最迟 TTL 后即为新语言;调了则当次即为新语言;
|
|
9
|
+
* - **既有 372 键的 zh/en 取值逐字不变**(硬约束①:目录只许追加)—— t2 冻结指纹,见文末常量。
|
|
10
|
+
*/
|
|
11
|
+
import test from 'node:test';
|
|
12
|
+
import assert from 'node:assert/strict';
|
|
13
|
+
import { createHash } from 'node:crypto';
|
|
14
|
+
import {
|
|
15
|
+
LANGUAGE_TTL_MS,
|
|
16
|
+
engineMsg,
|
|
17
|
+
getEngineLocale,
|
|
18
|
+
invalidateEngineLocale,
|
|
19
|
+
registerMessageCatalog,
|
|
20
|
+
resetMessageCatalogs,
|
|
21
|
+
setEngineLanguageSource,
|
|
22
|
+
setEngineLocale,
|
|
23
|
+
} from './engine-locale.ts';
|
|
24
|
+
import { en, makeMsg, zh, zhMsg } from './messages.ts';
|
|
25
|
+
|
|
26
|
+
/** 只读字典取值(键不存在 → undefined)。 */
|
|
27
|
+
function dictValue(dict: Readonly<Record<string, string>>, key: string): string | undefined {
|
|
28
|
+
return Object.prototype.hasOwnProperty.call(dict, key) ? dict[key] : undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/** 冻结指纹:key → sha256(zh + U+0000 + en) 前 8 位十六进制。 */
|
|
32
|
+
function fingerprint(zhValue: string, enValue: string): string {
|
|
33
|
+
return createHash('sha256').update(zhValue + '\u0000' + enValue, 'utf8').digest('hex').slice(0, 8);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* --------------------------------------------------------------- 语言切换 */
|
|
37
|
+
|
|
38
|
+
test('缺省语言 = zh:未设定时 engineMsg 与 zhMsg 对全部既有键逐字相等', () => {
|
|
39
|
+
setEngineLocale('zh');
|
|
40
|
+
assert.equal(getEngineLocale(), 'zh');
|
|
41
|
+
assert.equal(engineMsg('restore.pluginRemoveFailed'), '卸载失败');
|
|
42
|
+
for (const key of Object.keys(zh)) {
|
|
43
|
+
assert.equal(engineMsg(key), zhMsg(key), '既有键的 zh 缺省行为必须逐字不变: ' + key);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
test('setEngineLocale("en") 后取英文(en 目录与 makeMsg("en") 逐字一致)', () => {
|
|
48
|
+
setEngineLocale('en');
|
|
49
|
+
assert.equal(getEngineLocale(), 'en');
|
|
50
|
+
assert.equal(engineMsg('restore.pluginRemoveFailed'), 'Uninstall failed');
|
|
51
|
+
assert.equal(
|
|
52
|
+
engineMsg('host.syncTokenWriteFailed', { reason: 'boom', ref: 'REF' }),
|
|
53
|
+
'Failed to write the token into DSH credentials: boom (configure REF in DSH credential management, then retry)',
|
|
54
|
+
);
|
|
55
|
+
const t = makeMsg('en');
|
|
56
|
+
for (const key of Object.keys(zh)) {
|
|
57
|
+
assert.equal(engineMsg(key), t(key), 'engineMsg(en) 必须与 makeMsg(en) 同口径: ' + key);
|
|
58
|
+
}
|
|
59
|
+
setEngineLocale('zh');
|
|
60
|
+
});
|
|
61
|
+
|
|
62
|
+
test('同一实例跟随语言切换(活函数,不是加载期快照 —— 钉死根因)', () => {
|
|
63
|
+
const live = engineMsg;
|
|
64
|
+
setEngineLocale('zh');
|
|
65
|
+
assert.equal(live('restore.pluginRemoveFailed'), '卸载失败');
|
|
66
|
+
setEngineLocale('en');
|
|
67
|
+
assert.equal(live('restore.pluginRemoveFailed'), 'Uninstall failed', '同一个函数引用必须跟着切到英文');
|
|
68
|
+
setEngineLocale('zh');
|
|
69
|
+
assert.equal(live('restore.pluginRemoveFailed'), '卸载失败', '切回中文同样必须跟随');
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
test('未知键回退键名,绝不抛错(zh / en 两种语言)', () => {
|
|
73
|
+
setEngineLocale('zh');
|
|
74
|
+
assert.equal(engineMsg('no.such.key'), 'no.such.key');
|
|
75
|
+
assert.equal(engineMsg('no.such.key', { a: 'b' }), 'no.such.key');
|
|
76
|
+
setEngineLocale('en');
|
|
77
|
+
assert.equal(engineMsg('no.such.key'), 'no.such.key');
|
|
78
|
+
setEngineLocale('zh');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
test('插值:{param} 命中 / 缺参原样保留(与 makeMsg 同口径)', () => {
|
|
82
|
+
setEngineLocale('zh');
|
|
83
|
+
assert.equal(engineMsg('export.sectionFailed', { adapter: 'settings', reason: 'boom' }), '分区 settings 导出失败: boom');
|
|
84
|
+
assert.equal(engineMsg('export.sectionFailed', { adapter: 'settings' }), '分区 settings 导出失败: {reason}');
|
|
85
|
+
setEngineLocale('en');
|
|
86
|
+
assert.equal(engineMsg('export.sectionFailed', { adapter: 'settings', reason: 'boom' }), 'Section settings export failed: boom');
|
|
87
|
+
setEngineLocale('zh');
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
test('语言源抛错绝不冒泡(回落 zh)', () => {
|
|
91
|
+
setEngineLanguageSource(() => {
|
|
92
|
+
throw new Error('boom');
|
|
93
|
+
});
|
|
94
|
+
invalidateEngineLocale();
|
|
95
|
+
assert.equal(getEngineLocale(), 'zh');
|
|
96
|
+
setEngineLocale('zh');
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
/* --------------------------------------------------------------- TTL 上界 */
|
|
100
|
+
|
|
101
|
+
test('LANGUAGE_TTL_MS:TTL 内允许缓存,到期必须重新解析;invalidate 当次即生效', () => {
|
|
102
|
+
let lang: 'zh' | 'en' = 'zh';
|
|
103
|
+
const base = 1_000_000;
|
|
104
|
+
setEngineLanguageSource(() => lang);
|
|
105
|
+
assert.equal(getEngineLocale(base), 'zh');
|
|
106
|
+
lang = 'en';
|
|
107
|
+
assert.equal(getEngineLocale(base + LANGUAGE_TTL_MS - 1), 'zh', 'TTL 内允许缓存');
|
|
108
|
+
assert.equal(getEngineLocale(base + LANGUAGE_TTL_MS), 'en', '到 TTL 必须重新解析(非请求路径的兜底上界)');
|
|
109
|
+
|
|
110
|
+
let lang2: 'zh' | 'en' = 'zh';
|
|
111
|
+
setEngineLanguageSource(() => lang2);
|
|
112
|
+
assert.equal(getEngineLocale(base), 'zh');
|
|
113
|
+
lang2 = 'en';
|
|
114
|
+
invalidateEngineLocale();
|
|
115
|
+
assert.equal(getEngineLocale(base), 'en', 'invalidate 后当次调用即为新语言(请求入口用)');
|
|
116
|
+
setEngineLocale('zh');
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
/* ------------------------------------------------------------- 目录注册 */
|
|
120
|
+
|
|
121
|
+
test('registerMessageCatalog:只在既有目录未命中时生效(既有键不可被覆盖)', () => {
|
|
122
|
+
resetMessageCatalogs();
|
|
123
|
+
try {
|
|
124
|
+
registerMessageCatalog({
|
|
125
|
+
id: 'unit-test',
|
|
126
|
+
zh: { 'unit.extra': '注册目录中文', 'export.sectionFailed': '注册目录不该赢' },
|
|
127
|
+
en: { 'unit.extra': 'registered english', 'export.sectionFailed': 'registered should not win' },
|
|
128
|
+
});
|
|
129
|
+
// 既有目录命中 → 注册目录不得覆盖
|
|
130
|
+
assert.equal(makeMsg('zh')('export.sectionFailed', { adapter: 'a', reason: 'b' }), '分区 a 导出失败: b');
|
|
131
|
+
assert.equal(makeMsg('en')('export.sectionFailed', { adapter: 'a', reason: 'b' }), 'Section a export failed: b');
|
|
132
|
+
setEngineLocale('zh');
|
|
133
|
+
assert.equal(engineMsg('export.sectionFailed', { adapter: 'a', reason: 'b' }), '分区 a 导出失败: b');
|
|
134
|
+
// 既有目录未命中 → 注册目录生效(各语言取自己那本)
|
|
135
|
+
assert.equal(makeMsg('zh')('unit.extra'), '注册目录中文');
|
|
136
|
+
assert.equal(makeMsg('en')('unit.extra'), 'registered english');
|
|
137
|
+
setEngineLocale('en');
|
|
138
|
+
assert.equal(engineMsg('unit.extra'), 'registered english');
|
|
139
|
+
setEngineLocale('zh');
|
|
140
|
+
assert.equal(engineMsg('unit.extra'), '注册目录中文');
|
|
141
|
+
|
|
142
|
+
// en 语言下注册目录只有 zh 时回退其 zh(与既有 en → zh 同口径)
|
|
143
|
+
resetMessageCatalogs();
|
|
144
|
+
registerMessageCatalog({ id: 'zh-only', zh: { 'unit.zhOnly': '只有中文' } });
|
|
145
|
+
setEngineLocale('en');
|
|
146
|
+
assert.equal(engineMsg('unit.zhOnly'), '只有中文');
|
|
147
|
+
assert.equal(makeMsg('en')('unit.zhOnly'), '只有中文');
|
|
148
|
+
assert.equal(makeMsg('zh')('unit.zhOnly'), '只有中文');
|
|
149
|
+
} finally {
|
|
150
|
+
resetMessageCatalogs();
|
|
151
|
+
setEngineLocale('zh');
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
test('resetMessageCatalogs 后回到既有目录(注册目录不残留)', () => {
|
|
156
|
+
registerMessageCatalog({ id: 'temp', zh: { 'unit.temp': '临时' }, en: { 'unit.temp': 'temp' } });
|
|
157
|
+
setEngineLocale('en');
|
|
158
|
+
assert.equal(engineMsg('unit.temp'), 'temp');
|
|
159
|
+
resetMessageCatalogs();
|
|
160
|
+
assert.equal(engineMsg('unit.temp'), 'unit.temp', '注册目录清空后必须回退键名');
|
|
161
|
+
setEngineLocale('zh');
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
/* ------------------------------------------------- t2 新增键的 zh 逐字保真 */
|
|
165
|
+
|
|
166
|
+
test('t2 新增的 host.* 键:zh 逐字保留既有文案、en 非空且无 CJK', () => {
|
|
167
|
+
const pairs: Array<[string, string]> = [
|
|
168
|
+
['host.syncWebdavPasswordWriteFailed', 'WebDAV 口令写入 DSH credentials 失败:{reason}(请在 DSH 凭据管理里配置 {ref} 后重试)'],
|
|
169
|
+
['host.syncCredentialWriteFailed', '{kind} 写入 DSH credentials 失败:{reason}(请在 DSH 凭据管理里配置 {ref} 后重试)'],
|
|
170
|
+
['host.syncKindS3Secret', 'S3 密钥'],
|
|
171
|
+
['host.sessionFormatPathSeparator', '、'],
|
|
172
|
+
['host.sessionFormatPathsTruncated', '{paths} 等'],
|
|
173
|
+
['host.snapshotPruneSummary', '自动保留清理删除 {count} 个旧快照'],
|
|
174
|
+
['host.autosyncSummary', '自动同步 {direction}{transportSuffix}'],
|
|
175
|
+
['host.autosyncTransportSuffix', '({transport})'],
|
|
176
|
+
];
|
|
177
|
+
const zhDict = zh as Readonly<Record<string, string>>;
|
|
178
|
+
const enDict = en as Readonly<Record<string, string>>;
|
|
179
|
+
for (const [key, zhText] of pairs) {
|
|
180
|
+
assert.equal(dictValue(zhDict, key), zhText, 'zh 必须逐字保留: ' + key);
|
|
181
|
+
const enText = dictValue(enDict, key);
|
|
182
|
+
assert.ok(enText !== undefined && enText.trim() !== '', 'en 值不得为空: ' + key);
|
|
183
|
+
assert.equal(/[\u2E80-\u2EFF\u3000-\u303F\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uFE30-\uFE4F\uFF01-\uFF60\uFFE0-\uFFE6]/u.test(enText), false, 'en 值不得含 CJK: ' + key);
|
|
184
|
+
}
|
|
185
|
+
// 迁移后 index.ts 用的既有键必须仍在(zh 逐字不变)
|
|
186
|
+
assert.equal(dictValue(zhDict, 'restore.missingTargetBlob'), '恢复动作缺少 target/blobPath');
|
|
187
|
+
assert.equal(dictValue(zhDict, 'restore.unknownAction'), '未知动作 {kind}: {description}');
|
|
188
|
+
assert.equal(dictValue(zhDict, 'host.syncTokenWriteFailed'), 'token 写入 DSH credentials 失败:{reason}(请在 DSH 凭据管理里配置 {ref} 后重试)');
|
|
189
|
+
});
|
|
190
|
+
|
|
191
|
+
/* ------------------------------------------------ 既有 372 键的冻结指纹 */
|
|
192
|
+
|
|
193
|
+
test('既有 372 键的 zh/en 取值逐字不变(硬约束①:目录只许追加)', () => {
|
|
194
|
+
const lines = BASELINE.trim().split('\n');
|
|
195
|
+
assert.equal(lines.length, BASELINE_KEY_COUNT, '冻结基线条目数不得变');
|
|
196
|
+
const missing: string[] = [];
|
|
197
|
+
const changed: string[] = [];
|
|
198
|
+
const zhDict = zh as Readonly<Record<string, string>>;
|
|
199
|
+
const enDict = en as Readonly<Record<string, string>>;
|
|
200
|
+
for (const line of lines) {
|
|
201
|
+
const at = line.lastIndexOf('=');
|
|
202
|
+
const key = line.slice(0, at);
|
|
203
|
+
const digest = line.slice(at + 1);
|
|
204
|
+
const zhValue = dictValue(zhDict, key);
|
|
205
|
+
const enValue = dictValue(enDict, key);
|
|
206
|
+
if (zhValue === undefined || enValue === undefined) {
|
|
207
|
+
missing.push(key);
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (fingerprint(zhValue, enValue) !== digest) changed.push(key);
|
|
211
|
+
}
|
|
212
|
+
assert.deepEqual(missing, [], '既有键被删除/改名(只许追加): ' + missing.slice(0, 10).join(', '));
|
|
213
|
+
assert.deepEqual(changed, [], '既有键的 zh/en 取值被改动(zh 逐字不变、只新增 en 值): ' + changed.slice(0, 10).join(', '));
|
|
214
|
+
assert.ok(Object.keys(zh).length >= BASELINE_KEY_COUNT, '目录不得净减');
|
|
215
|
+
assert.equal(Object.keys(en).length, Object.keys(zh).length, 'zh/en 键集必须相等');
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
/** t2 冻结的既有目录基线:key → sha256(zh + U+0000 + en) 前 8 位十六进制(372 键)。 */
|
|
219
|
+
const BASELINE_KEY_COUNT = 372;
|
|
220
|
+
const BASELINE = `
|
|
221
|
+
export.encryptionRequired=6f5d0604
|
|
222
|
+
export.sectionFailed=2e6900c6
|
|
223
|
+
export.credentialsReadFailed=5c4746fa
|
|
224
|
+
export.vaultRefreshed=bc97d18e
|
|
225
|
+
export.vaultRefreshSkipped=d2731560
|
|
226
|
+
export.vaultRefreshFailed=518fc015
|
|
227
|
+
export.sessionsLimited=a80b218a
|
|
228
|
+
export.sessionsNone=15d6aadd
|
|
229
|
+
export.sessionsWorkspacesCoupled=f1e32d07
|
|
230
|
+
export.sessionsDeclaredInWorkspaces=fd33cb78
|
|
231
|
+
export.sessionsWorkspacesCarriedAll=c7d20911
|
|
232
|
+
export.sessionsWithoutWorkspaces=462072dc
|
|
233
|
+
export.sessionsWorkspacesUnreadable=7e8b82db
|
|
234
|
+
export.sessionsLimitNoMtime=ba56bb07
|
|
235
|
+
export.fileSectionSecrets=b67c4400
|
|
236
|
+
import.readFailed=f70e240a
|
|
237
|
+
import.noManifest=6c904a49
|
|
238
|
+
import.manifestParseFailed=46d9b50a
|
|
239
|
+
import.integrityFailed=7445aa62
|
|
240
|
+
import.schemaUnsupported=ce2e357d
|
|
241
|
+
import.executableWarning=7987d95e
|
|
242
|
+
import.sectionParseFailed=4120b7c3
|
|
243
|
+
import.sectionInvalid=5f8161c7
|
|
244
|
+
import.adapterAnalyzeFailed=bf841492
|
|
245
|
+
import.adapterValidationIssue=087d6bff
|
|
246
|
+
import.versionUnsupported=f6ac0640
|
|
247
|
+
import.missingSections=1fb2502a
|
|
248
|
+
import.unsupportedSections=a116f3d3
|
|
249
|
+
import.sessionsWithoutWorkspaces=ad735b76
|
|
250
|
+
import.subagentSessionsWithoutParents=13099f30
|
|
251
|
+
import.sessionsFormatUnsupported=4ab94f7a
|
|
252
|
+
import.sessionsFormatSampled=7aef2152
|
|
253
|
+
import.sessionsFormatAborted=4e1119ad
|
|
254
|
+
import.sessionsNeedRestart=2654c174
|
|
255
|
+
export.sessionParentsCoupled=3633b079
|
|
256
|
+
export.sessionParentsUncoupled=a67ea15e
|
|
257
|
+
export.sessionChildrenCoupled=e347e418
|
|
258
|
+
export.sessionRelationNotFound=0fa7aa11
|
|
259
|
+
export.sessionParentTooLarge=add5f66d
|
|
260
|
+
import.unsupportedSectionVersion=aefc30cb
|
|
261
|
+
import.checksumsMissing=9078606d
|
|
262
|
+
import.extraEntries=0167f799
|
|
263
|
+
import.undeclaredSectionContent=15039a5b
|
|
264
|
+
import.secretsPayloadEmpty=e6fff431
|
|
265
|
+
import.migrated=2613d9d1
|
|
266
|
+
import.migrateInvalidManifest=dc7c8958
|
|
267
|
+
import.postValidationIssue=b6aad3cc
|
|
268
|
+
import.postValidationFailed=e3e8af95
|
|
269
|
+
import.conflictKeepCurrent=c46b667e
|
|
270
|
+
import.conflictSkipExisting=7676e111
|
|
271
|
+
import.conflictReplace=dff65c88
|
|
272
|
+
import.secretMissingDesc=69bea9f7
|
|
273
|
+
import.secretAlreadyConfigured=5582af19
|
|
274
|
+
import.secretFromArchive=371091df
|
|
275
|
+
import.secretNotProvided=313843dd
|
|
276
|
+
import.notConfirmed=b0a9d227
|
|
277
|
+
import.encryptedPasswordRequired=d857e8a0
|
|
278
|
+
import.encryptedPasswordWrong=2d28831a
|
|
279
|
+
import.notEncryptedContainer=162d2934
|
|
280
|
+
import.encryptedContainerNeedsUnlock=270bb476
|
|
281
|
+
import.userSkipped=03132f7c
|
|
282
|
+
import.userSkippedDetail=df02b540
|
|
283
|
+
import.vaultRestored=3df83728
|
|
284
|
+
import.vaultMissing=9928d845
|
|
285
|
+
import.sessionRelocated=d904f413
|
|
286
|
+
import.sessionRelocateFailed=59ec2557
|
|
287
|
+
import.sessionRewritten=effa56d8
|
|
288
|
+
import.sessionRewriteFailed=00395039
|
|
289
|
+
import.sessionRewriteRolledBack=1e67fe5c
|
|
290
|
+
import.sessionRewriteRollbackFailed=84da6de8
|
|
291
|
+
import.vaultBackfillFailed=13c3fd2f
|
|
292
|
+
import.vaultCredentialsFromArchive=e2636fbd
|
|
293
|
+
runs.cancelUnsupported=0d6fa0da
|
|
294
|
+
runs.cancelWaitingSafePoint=9b2431b5
|
|
295
|
+
import.cancelRequested=a6746bc7
|
|
296
|
+
import.cancelAwaitingDecision=d3bfe0d3
|
|
297
|
+
import.cancelDecisionTimeout=a040c9d1
|
|
298
|
+
import.cancelRollingBack=286375ca
|
|
299
|
+
import.cancelKept=3bc3023d
|
|
300
|
+
import.cancelKeptSnapshotKept=80bf66d2
|
|
301
|
+
import.cancelKeptSkippedItem=2f6f095d
|
|
302
|
+
import.cancelKeptJournalFailed=6668364b
|
|
303
|
+
import.cancelKeptUnchecked=a7d73ea8
|
|
304
|
+
import.cancelKeptNoAudit=0ce7ff0a
|
|
305
|
+
bootSafety.bundlesPruned=1286143b
|
|
306
|
+
bootSafety.bundlesPrunedFailed=b30ef254
|
|
307
|
+
bootSafety.bundleListUnreadable=efc9e9ff
|
|
308
|
+
bootSafety.criticalFileUnreadable=e94a9037
|
|
309
|
+
bootSafety.criticalFileUnparsable=9984c74a
|
|
310
|
+
bootSafety.patchFileMissing=a403e6f8
|
|
311
|
+
bootSafety.extraCheckFailed=58de3fad
|
|
312
|
+
rollback.ns.createdNoDelete=9d67ab26
|
|
313
|
+
rollback.ns.manualHint=5ae2c950
|
|
314
|
+
rollback.ns.conflictHint=0f6972fd
|
|
315
|
+
rollback.cred.noReadback=0f6a6835
|
|
316
|
+
rollback.cred.manualHint=67c4a26e
|
|
317
|
+
rollback.patch.manualHint=fab359d2
|
|
318
|
+
rollback.file.manualHint=5b977f79
|
|
319
|
+
rollback.workspace.manualHint=d7393095
|
|
320
|
+
rollback.unknownEntry=40bf9ee4
|
|
321
|
+
restore.snapshotInvalid=128774df
|
|
322
|
+
restore.invalidSnapshotId=990394ab
|
|
323
|
+
restore.pathEscape=b774bf0a
|
|
324
|
+
restore.snapshotUntrusted=cb44d84e
|
|
325
|
+
restore.blobPathEscape=e1cde5de
|
|
326
|
+
restore.hostSkipEscape=14198338
|
|
327
|
+
restore.hostSkipEscapeDetail=859adf51
|
|
328
|
+
restore.hostNoBlobInfo=6759b284
|
|
329
|
+
restore.hostUnreadable=04a4eadb
|
|
330
|
+
restore.hostBlobMissing=13969f2b
|
|
331
|
+
restore.hostRestore=ede02fa7
|
|
332
|
+
restore.backupBeforeWrite=b30d3550
|
|
333
|
+
restore.writeDirect=fc5eb12b
|
|
334
|
+
restore.hostRemove=ae43cae0
|
|
335
|
+
restore.backupBeforeRemove=8c946f03
|
|
336
|
+
restore.hostSkipAbsent=663f124a
|
|
337
|
+
restore.settingsNotBacked=18490617
|
|
338
|
+
restore.settingsNotBackedDetail=a29f5138
|
|
339
|
+
restore.noBaseline=b96bb4af
|
|
340
|
+
restore.noBaselineDetail=8be7744b
|
|
341
|
+
restore.pluginRemove=28975e5a
|
|
342
|
+
restore.pluginRemoveEmptyBaseline=3cb373c9
|
|
343
|
+
restore.noAddedPlugins=fa54726d
|
|
344
|
+
restore.fileSkipEscape=51aaeb5d
|
|
345
|
+
restore.fileBlobMissing=c940fd90
|
|
346
|
+
restore.fileRestore=db49ecd5
|
|
347
|
+
restore.fileRemove=42159482
|
|
348
|
+
restore.fileSkipAbsent=149af72b
|
|
349
|
+
restore.fileNoBlobInfo=7c440569
|
|
350
|
+
restore.credentialHint=677f526d
|
|
351
|
+
restore.credentialManualHint=87b9f20f
|
|
352
|
+
restore.nsAggregate=0f3b1f15
|
|
353
|
+
restore.nsAggregateDetail=0aae1c3c
|
|
354
|
+
restore.patchAggregate=c469ca62
|
|
355
|
+
restore.patchAggregateDetail=b75527f6
|
|
356
|
+
restore.workspaceAggregate=0d78661c
|
|
357
|
+
restore.workspaceAggregateDetail=9b2d5de6
|
|
358
|
+
restore.credentialAbsentAggregate=19d8b6df
|
|
359
|
+
restore.uninstallFailedCode=0366eb46
|
|
360
|
+
restore.uninstallFailedExit=ee365c9d
|
|
361
|
+
restore.noOutput=c1610bee
|
|
362
|
+
restore.pluginRemoveFailed=9238f57d
|
|
363
|
+
restore.unknownAction=9c4f46b8
|
|
364
|
+
restore.missingTargetBlob=65f23050
|
|
365
|
+
restore.missingTarget=de247064
|
|
366
|
+
restore.missingPluginName=300b82d6
|
|
367
|
+
restore.ghostSweepSummary=027e9d89
|
|
368
|
+
restore.versionMismatch=0152cf52
|
|
369
|
+
restore.versionMismatchDetail=05f1573a
|
|
370
|
+
run.conflict.export=c181e08f
|
|
371
|
+
run.conflict.import=ffb79768
|
|
372
|
+
run.notFound=9e2fa6ee
|
|
373
|
+
host.exportTimeout=59bf7d33
|
|
374
|
+
host.syncPushTimeout=cb856ffe
|
|
375
|
+
host.syncPullTimeout=d68522d6
|
|
376
|
+
host.workspaceUnavailable=bb5978df
|
|
377
|
+
host.workspaceMissingTarget=e1e32977
|
|
378
|
+
host.sessionStoreShapeUnknown=5f536b4e
|
|
379
|
+
host.sessionStorePurposeReindex=d8390c9f
|
|
380
|
+
host.sessionStorePurposeParentRelations=1f87e205
|
|
381
|
+
host.sessionStoreListFailed=6de50590
|
|
382
|
+
host.sessionStoreListNotArray=879d8be6
|
|
383
|
+
host.sessionStorePartialUnresolved=93c25644
|
|
384
|
+
host.parentRelationsUnavailable=9c507e80
|
|
385
|
+
host.fsPathNotAbsolute=63921261
|
|
386
|
+
host.fsPathDotDot=570cd46b
|
|
387
|
+
host.fsPathNotDirectory=de0f5bc1
|
|
388
|
+
host.patchUnsupported=528742ab
|
|
389
|
+
host.patchUnreadable=cbbe8621
|
|
390
|
+
host.patchRefuseClobber=b7120f1a
|
|
391
|
+
host.fsPathEscape=b774bf0a
|
|
392
|
+
host.activationRowFailed=0dce5ab1
|
|
393
|
+
host.syncTokenWriteFailed=d50f3dc1
|
|
394
|
+
host.githubMissingClientId=58778d2b
|
|
395
|
+
host.githubFlowGone=5afe13e0
|
|
396
|
+
host.restoreBlobEscape=bc69f93c
|
|
397
|
+
host.restoreUninstallFailed=ee365c9d
|
|
398
|
+
host.restoreNoOutput=c1610bee
|
|
399
|
+
adapter.pluginListReadFailed=d9c4cbb4
|
|
400
|
+
adapter.patchReadFailed=25a00431
|
|
401
|
+
adapter.patchReadFailedPrompts=9f4c3045
|
|
402
|
+
adapter.patchReadFailedMCP=5a5db819
|
|
403
|
+
adapter.pnpmReadFailed=17b37b9a
|
|
404
|
+
adapter.localPackFailed=58c833ad
|
|
405
|
+
adapter.pluginLocalTarballHint=247729c9
|
|
406
|
+
adapter.providerNsReadFailed=aab8027d
|
|
407
|
+
adapter.credStatusReadFailed=d31c590a
|
|
408
|
+
adapter.settingsNsReadFailed=a8efebe4
|
|
409
|
+
adapter.dirEmpty=c4afe993
|
|
410
|
+
adapter.linksFollowed=4023bbc7
|
|
411
|
+
adapter.linksSkipped=b9872901
|
|
412
|
+
adapter.dirsUnreadable=14b18853
|
|
413
|
+
adapter.depsDirsSkipped=43b54fc6
|
|
414
|
+
adapter.depsDirFiles=31278d84
|
|
415
|
+
adapter.depsDirFilesUnknown=56ed56d4
|
|
416
|
+
adapter.fileSectionByteLimit=688de04a
|
|
417
|
+
adapter.linkReason.loop=4e783716
|
|
418
|
+
adapter.linkReason.outsideHome=64c3b9c2
|
|
419
|
+
adapter.linkReason.broken=23ffb55e
|
|
420
|
+
adapter.linkReason.unreadable=a3e2122b
|
|
421
|
+
adapter.linkReason.tooDeep=f011cf3b
|
|
422
|
+
adapter.noSettingsNamespaces=fadca649
|
|
423
|
+
adapter.fileCreate=8bc99f2f
|
|
424
|
+
adapter.fileSame=4a19ccce
|
|
425
|
+
adapter.fileDiff=a2f85dd6
|
|
426
|
+
adapter.pluginFileCreate=04a3f084
|
|
427
|
+
adapter.pluginFileReserved=d263f753
|
|
428
|
+
adapter.fileReserved=d263f753
|
|
429
|
+
adapter.mcpCreate=ab0cac88
|
|
430
|
+
adapter.mcpSame=a677aa75
|
|
431
|
+
adapter.mcpDiff=145629e1
|
|
432
|
+
adapter.pwCreate=65fb3545
|
|
433
|
+
adapter.pwUpdate=7e23c7e5
|
|
434
|
+
adapter.pluginInstall=a422c035
|
|
435
|
+
adapter.pluginSame=b540e3ac
|
|
436
|
+
adapter.pluginDiff=5c8f623f
|
|
437
|
+
adapter.pluginVersionDetail=8bcc20c3
|
|
438
|
+
adapter.pluginBundleMember=cb259799
|
|
439
|
+
adapter.pluginInstallOk=2f197583
|
|
440
|
+
adapter.pluginUpdateTriggered=b4a9d3cd
|
|
441
|
+
adapter.pluginRestartSuffix=8b777dc3
|
|
442
|
+
adapter.pwMissing=b128378b
|
|
443
|
+
adapter.pluginInstallFailed=ae58536f
|
|
444
|
+
adapter.pluginUpdateFailed=8208d02f
|
|
445
|
+
adapter.patchLineCreate=fb975c58
|
|
446
|
+
adapter.patchLineSame=425fa025
|
|
447
|
+
adapter.patchLineDiff=dc165320
|
|
448
|
+
adapter.promptSame=39140338
|
|
449
|
+
adapter.promptDiff=c38e4221
|
|
450
|
+
adapter.promptDiffWithLine=dd31a856
|
|
451
|
+
adapter.promptCreate=99e04ceb
|
|
452
|
+
adapter.promptManual=f52a0f29
|
|
453
|
+
adapter.providerUnregistered=10ca00e8
|
|
454
|
+
adapter.providerCreate=859b6951
|
|
455
|
+
adapter.providerSame=bce72c5f
|
|
456
|
+
adapter.providerDiff=3fda0f92
|
|
457
|
+
adapter.settingsUnregistered=a26cf0cb
|
|
458
|
+
adapter.settingsCreate=f5cd8bd1
|
|
459
|
+
adapter.settingsSame=1f998e25
|
|
460
|
+
adapter.settingsDiff=5607918f
|
|
461
|
+
adapter.workspaceCreate=602c43de
|
|
462
|
+
adapter.workspaceSame=3fab4f6e
|
|
463
|
+
adapter.workspaceDiff=8e4fde14
|
|
464
|
+
adapter.workspacePathMapping=089f5b3f
|
|
465
|
+
adapter.workspaceMissing=711f116f
|
|
466
|
+
adapter.credentialDescription=3ee102d2
|
|
467
|
+
adapter.missingTargetRef=b3db7b49
|
|
468
|
+
adapter.dataMissingFile=37fda3f4
|
|
469
|
+
adapter.patchMissing=081968e3
|
|
470
|
+
adapter.pwWritten=3b81fb89
|
|
471
|
+
adapter.pwWriteFailed=a1ed0359
|
|
472
|
+
adapter.patchFileCreate=9d64dc02
|
|
473
|
+
adapter.patchFileWriteFailed=1e736591
|
|
474
|
+
adapter.patchFileMissing=ae3f7a77
|
|
475
|
+
adapter.patchFileUnsafe=9a5eab2f
|
|
476
|
+
adapter.patchFileReadFailed=35ea1463
|
|
477
|
+
adapter.patchFileTooLarge=a85c5edb
|
|
478
|
+
adapter.pwPatchesDropped=60db1659
|
|
479
|
+
adapter.pwPatchesDroppedDetail=229a409e
|
|
480
|
+
adapter.pwPatchesUnsupported=6ee9a080
|
|
481
|
+
adapter.pwWrittenPatchesDropped=788b1b24
|
|
482
|
+
adapter.patchWritten=ef005ab0
|
|
483
|
+
adapter.credentialValueMissing=77856b96
|
|
484
|
+
adapter.promptWarningNoWrite=ddffc7c3
|
|
485
|
+
adapter.promptMissing=96d59424
|
|
486
|
+
adapter.promptCreated=edfa6a8f
|
|
487
|
+
adapter.patchLineMissing=722a9efe
|
|
488
|
+
adapter.promptWritten=7ecfa259
|
|
489
|
+
adapter.mcpMissing=a69e2ccc
|
|
490
|
+
adapter.mcpWritten=3361d17f
|
|
491
|
+
adapter.workspaceWriteFailed=c05d4d68
|
|
492
|
+
adapter.workspaceDirCreated=b815201b
|
|
493
|
+
adapter.workspaceDirFailed=23c2b6ce
|
|
494
|
+
adapter.workspaceDirUnsafe=af957f28
|
|
495
|
+
adapter.workspaceSessionsAttached=b1637e5a
|
|
496
|
+
adapter.workspaceSessionsPending=e8e562f6
|
|
497
|
+
adapter.workspaceSessionsOutsideBundle=cd677cd6
|
|
498
|
+
adapter.workspaceSessionsManual=4835e86a
|
|
499
|
+
adapter.workspaceSessionsOwnerMissing=b37a5f40
|
|
500
|
+
adapter.providerMissing=46eefe92
|
|
501
|
+
adapter.namespaceMissing=544111f5
|
|
502
|
+
adapter.validate.object=f684b129
|
|
503
|
+
adapter.validate.fileSection=59afe08f
|
|
504
|
+
adapter.validate.version=88de06b9
|
|
505
|
+
adapter.validate.array=e7738574
|
|
506
|
+
adapter.validate.string=b598e7e2
|
|
507
|
+
adapter.validate.localTarballPath=eb521c44
|
|
508
|
+
adapter.validate.missingObject=ae0ec53a
|
|
509
|
+
adapter.validate.recordObject=020cd708
|
|
510
|
+
adapter.validate.requiredField=919004e2
|
|
511
|
+
adapter.validate.sourceNamespace=faca8869
|
|
512
|
+
adapter.validate.number=4d5de0cf
|
|
513
|
+
adapter.validate.nonEmptyRef=7189e682
|
|
514
|
+
adapter.validate.credentialRef=2049999b
|
|
515
|
+
adapter.validate.fileRelativePath=032ee98a
|
|
516
|
+
adapter.validate.promptIdentity=655d15a8
|
|
517
|
+
adapter.validate.hasValueFalse=52a8e3ea
|
|
518
|
+
adapter.validate.serverName=7b336f41
|
|
519
|
+
adapter.validate.workspaceIdentity=c99a90fc
|
|
520
|
+
adapter.validate.missingValue=0bf5e371
|
|
521
|
+
sync.denySensitiveSection=4c50a519
|
|
522
|
+
sync.sectionFailed=2e6900c6
|
|
523
|
+
sync.skipNonPortable=da38bf76
|
|
524
|
+
sync.encryptRequiresPassword=5bb93652
|
|
525
|
+
sync.includeSecretsRequiresEncryption=951e1d1c
|
|
526
|
+
sync.credentialsReadFailed=b2569ea9
|
|
527
|
+
sync.credentialsEmpty=521714b1
|
|
528
|
+
sync.credentialsItemDesc=cf087014
|
|
529
|
+
sync.credentialsNeedPassword=0e82e95b
|
|
530
|
+
sync.encryptedNeedsPassword=4bf48a91
|
|
531
|
+
sync.noPortableSections=8f111b6a
|
|
532
|
+
sync.remoteEmpty=690b4168
|
|
533
|
+
sync.sessionDeletionsRecorded=adff6325
|
|
534
|
+
sync.sessionsTombstoned=bd728e04
|
|
535
|
+
sync.missingImporter=b72eedb6
|
|
536
|
+
sync.missingCtx=410d0a1f
|
|
537
|
+
sync.missingTransport=6dc45be2
|
|
538
|
+
sync.missingStateDir=fed3551a
|
|
539
|
+
sync.remoteContainsSecrets=e9c50b3d
|
|
540
|
+
sync.unchanged=6f653d9f
|
|
541
|
+
sync.changesSummary=5c515700
|
|
542
|
+
sync.configWhitespace=65394f94
|
|
543
|
+
sync.configUnparseable=1569b688
|
|
544
|
+
sync.configUserinfo=7e7af4e7
|
|
545
|
+
sync.state.notObject=6e207956
|
|
546
|
+
sync.state.schemaUnsupported=ee5f5f86
|
|
547
|
+
sync.state.lastSyncAt=a4ceeeb8
|
|
548
|
+
sync.state.sections=2f4ea8d1
|
|
549
|
+
sync.state.sectionRecord=e47084b4
|
|
550
|
+
sync.state.sectionFields=2b5677d2
|
|
551
|
+
sync.state.transport=8777af55
|
|
552
|
+
sync.git.repoUrlRequired=aa5876a5
|
|
553
|
+
sync.git.workDirRequired=b51cad7f
|
|
554
|
+
sync.git.credentialsRequired=d4e5bcfc
|
|
555
|
+
sync.git.snapshotMissing=480cf6b3
|
|
556
|
+
sync.git.snapshotCorrupt=af1824d9
|
|
557
|
+
sync.git.repoUnreachable=85f9daaa
|
|
558
|
+
sync.git.workDirNotRepo=d7ecc7d8
|
|
559
|
+
sync.git.pullFailed=6766926f
|
|
560
|
+
sync.git.cmdFailed=1bc06220
|
|
561
|
+
sync.git.pushTokenRequired=5aabd2a0
|
|
562
|
+
sync.git.pushAuthFailed=3e3de724
|
|
563
|
+
sync.git.repoUrlInvalid=362a2b36
|
|
564
|
+
sync.git.invalidSnapshotId=49c10fb1
|
|
565
|
+
sync.webdav.baseUrlRequired=e3067d58
|
|
566
|
+
sync.webdav.baseUrlInvalid=62b4779e
|
|
567
|
+
sync.webdav.baseUrlUserinfo=34c9692a
|
|
568
|
+
sync.webdav.usernameRequired=347a9b47
|
|
569
|
+
sync.webdav.credentialsRequired=81fcc041
|
|
570
|
+
sync.webdav.invalidSnapshotId=49c10fb1
|
|
571
|
+
sync.webdav.snapshotMissing=75dd1e8c
|
|
572
|
+
sync.webdav.requestFailed=3dc71e9f
|
|
573
|
+
sync.webdav.requestError=0014c75c
|
|
574
|
+
sync.webdav.timeout=edf1c80c
|
|
575
|
+
sync.webdav.tooManyRedirects=ecaaa26b
|
|
576
|
+
sync.webdav.indexInvalid=3fedc570
|
|
577
|
+
sync.webdav.snapshotInvalid=3924e9cd
|
|
578
|
+
sync.pruneListFailed=7801bb72
|
|
579
|
+
sync.pruneDeleteFailed=554a397e
|
|
580
|
+
market.invalidItemId=074d1618
|
|
581
|
+
market.urlWhitespace=becd1d87
|
|
582
|
+
market.urlUnparseable=3f5ed1b5
|
|
583
|
+
market.urlUserinfo=4ce929db
|
|
584
|
+
market.repoUnreachable=11728a2d
|
|
585
|
+
market.cloneFailed=c3437a6f
|
|
586
|
+
market.pullFailed=1cfeb577
|
|
587
|
+
market.workDirNotRepo=9c98bd70
|
|
588
|
+
market.missingIndex=123dd882
|
|
589
|
+
market.missingManifest=1b6d8abb
|
|
590
|
+
market.missingZip=e5af4f3e
|
|
591
|
+
market.zipTooLarge=e7e622e9
|
|
592
|
+
market.invalid=7b4145b6
|
|
593
|
+
`
|