@askdkc/dsh-cli 0.11.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +321 -0
- package/bin/dsh-tui.js +1366 -0
- package/cordis.patch.yml +482 -0
- package/cordis.yml +250 -0
- package/dsh-ecosystem-spec/protocols/profile-definitions.d.ts +13 -0
- package/dsh-ecosystem-spec/protocols/profile-definitions.js +59 -0
- package/dsh-ecosystem-spec/protocols/tui-channel-http.d.ts +15 -0
- package/dsh-ecosystem-spec/protocols/tui-channel-http.js +32 -0
- package/dsh-ecosystem-spec/protocols/tui-channel.d.ts +59 -0
- package/dsh-ecosystem-spec/protocols/tui-channel.js +166 -0
- package/dsh-ecosystem-spec/protocols/tui-contributions.d.ts +42 -0
- package/dsh-ecosystem-spec/protocols/tui-contributions.js +143 -0
- package/dsh-ecosystem-spec/registry/README.md +14 -0
- package/dsh-ecosystem-spec/registry/contracts/decision-events-v1alpha1.json +13 -0
- package/dsh-ecosystem-spec/registry/contracts/scene-v1alpha1.json +13 -0
- package/dsh-ecosystem-spec/registry/contracts/settings-section-v1alpha1.json +13 -0
- package/dsh-ecosystem-spec/registry/contracts/tui-channel-v1alpha1.json +30 -0
- package/dsh-ecosystem-spec/registry/contracts/workspace-provider-v1alpha1.json +6 -0
- package/dsh-ecosystem-spec/registry/host-descriptor.tui.example.json +56 -0
- package/dsh-ecosystem-spec/registry/permissions-0.1.json +13 -0
- package/dsh-ecosystem-spec/registry/registry-0.15.json +149 -0
- package/dsh-ecosystem-spec/schemas/conformance-claim.schema.json +15 -0
- package/dsh-ecosystem-spec/schemas/effect-ledger-record.schema.json +16 -0
- package/dsh-ecosystem-spec/schemas/host-descriptor.schema.json +26 -0
- package/lib/types/activityPrefs.d.ts +63 -0
- package/lib/types/activityPrefs.d.ts.map +1 -0
- package/lib/types/activityPrefs.js +126 -0
- package/lib/types/adapter/channel/actions.d.ts +17 -0
- package/lib/types/adapter/channel/actions.d.ts.map +1 -0
- package/lib/types/adapter/channel/actions.js +28 -0
- package/lib/types/adapter/channel/consumer.d.ts +34 -0
- package/lib/types/adapter/channel/consumer.d.ts.map +1 -0
- package/lib/types/adapter/channel/consumer.js +87 -0
- package/lib/types/adapter/channel/features.d.ts +12 -0
- package/lib/types/adapter/channel/features.d.ts.map +1 -0
- package/lib/types/adapter/channel/features.js +41 -0
- package/lib/types/adapter/channel/host-registry.d.ts +40 -0
- package/lib/types/adapter/channel/host-registry.d.ts.map +1 -0
- package/lib/types/adapter/channel/host-registry.js +120 -0
- package/lib/types/adapter/channel/index.d.ts +22 -0
- package/lib/types/adapter/channel/index.d.ts.map +1 -0
- package/lib/types/adapter/channel/index.js +21 -0
- package/lib/types/adapter/channel/internal-token.d.ts +12 -0
- package/lib/types/adapter/channel/internal-token.d.ts.map +1 -0
- package/lib/types/adapter/channel/internal-token.js +11 -0
- package/lib/types/adapter/channel/plugins.d.ts +17 -0
- package/lib/types/adapter/channel/plugins.d.ts.map +1 -0
- package/lib/types/adapter/channel/plugins.js +47 -0
- package/lib/types/adapter/channel/projection.d.ts +15 -0
- package/lib/types/adapter/channel/projection.d.ts.map +1 -0
- package/lib/types/adapter/channel/projection.js +59 -0
- package/lib/types/adapter/channel/provider.d.ts +52 -0
- package/lib/types/adapter/channel/provider.d.ts.map +1 -0
- package/lib/types/adapter/channel/provider.js +231 -0
- package/lib/types/adapter/channel/read-view.d.ts +4 -0
- package/lib/types/adapter/channel/read-view.d.ts.map +1 -0
- package/lib/types/adapter/channel/read-view.js +132 -0
- package/lib/types/adapter/channel/session-projection.d.ts +56 -0
- package/lib/types/adapter/channel/session-projection.d.ts.map +1 -0
- package/lib/types/adapter/channel/session-projection.js +249 -0
- package/lib/types/adapter/channel/state.d.ts +11 -0
- package/lib/types/adapter/channel/state.d.ts.map +1 -0
- package/lib/types/adapter/channel/state.js +57 -0
- package/lib/types/adapter/channel/transcript.d.ts +15 -0
- package/lib/types/adapter/channel/transcript.d.ts.map +1 -0
- package/lib/types/adapter/channel/transcript.js +22 -0
- package/lib/types/adapter/channel/ui-policy.d.ts +109 -0
- package/lib/types/adapter/channel/ui-policy.d.ts.map +1 -0
- package/lib/types/adapter/channel/ui-policy.js +170 -0
- package/lib/types/adapter/channel/ui.d.ts +16 -0
- package/lib/types/adapter/channel/ui.d.ts.map +1 -0
- package/lib/types/adapter/channel/ui.js +173 -0
- package/lib/types/adapter/index.d.ts +20 -0
- package/lib/types/adapter/index.d.ts.map +1 -0
- package/lib/types/adapter/index.js +19 -0
- package/lib/types/adapter/kernel/contract-catalog.d.ts +12 -0
- package/lib/types/adapter/kernel/contract-catalog.d.ts.map +1 -0
- package/lib/types/adapter/kernel/contract-catalog.js +11 -0
- package/lib/types/adapter/kernel/diagnostics.d.ts +18 -0
- package/lib/types/adapter/kernel/diagnostics.d.ts.map +1 -0
- package/lib/types/adapter/kernel/diagnostics.js +16 -0
- package/lib/types/adapter/kernel/driver-types.d.ts +16 -0
- package/lib/types/adapter/kernel/driver-types.d.ts.map +1 -0
- package/lib/types/adapter/kernel/driver-types.js +8 -0
- package/lib/types/adapter/kernel/host-facade.d.ts +65 -0
- package/lib/types/adapter/kernel/host-facade.d.ts.map +1 -0
- package/lib/types/adapter/kernel/host-facade.js +216 -0
- package/lib/types/adapter/kernel/host-probe-access.d.ts +71 -0
- package/lib/types/adapter/kernel/host-probe-access.d.ts.map +1 -0
- package/lib/types/adapter/kernel/host-probe-access.js +121 -0
- package/lib/types/adapter/kernel/index.d.ts +20 -0
- package/lib/types/adapter/kernel/index.d.ts.map +1 -0
- package/lib/types/adapter/kernel/index.js +19 -0
- package/lib/types/adapter/kernel/kernel-runtime.d.ts +138 -0
- package/lib/types/adapter/kernel/kernel-runtime.d.ts.map +1 -0
- package/lib/types/adapter/kernel/kernel-runtime.js +572 -0
- package/lib/types/adapter/kernel/ledger.d.ts +55 -0
- package/lib/types/adapter/kernel/ledger.d.ts.map +1 -0
- package/lib/types/adapter/kernel/ledger.js +33 -0
- package/lib/types/adapter/kernel/legacy-facade.d.ts +22 -0
- package/lib/types/adapter/kernel/legacy-facade.d.ts.map +1 -0
- package/lib/types/adapter/kernel/legacy-facade.js +34 -0
- package/lib/types/adapter/kernel/lifecycle.d.ts +38 -0
- package/lib/types/adapter/kernel/lifecycle.d.ts.map +1 -0
- package/lib/types/adapter/kernel/lifecycle.js +53 -0
- package/lib/types/adapter/kernel/replay-isolation.d.ts +27 -0
- package/lib/types/adapter/kernel/replay-isolation.d.ts.map +1 -0
- package/lib/types/adapter/kernel/replay-isolation.js +45 -0
- package/lib/types/adapter/kernel/replay.d.ts +132 -0
- package/lib/types/adapter/kernel/replay.d.ts.map +1 -0
- package/lib/types/adapter/kernel/replay.js +428 -0
- package/lib/types/adapter/kernel/runtime-context.d.ts +15 -0
- package/lib/types/adapter/kernel/runtime-context.d.ts.map +1 -0
- package/lib/types/adapter/kernel/runtime-context.js +24 -0
- package/lib/types/adapter/kernel/runtime.d.ts +70 -0
- package/lib/types/adapter/kernel/runtime.d.ts.map +1 -0
- package/lib/types/adapter/kernel/runtime.js +327 -0
- package/lib/types/adapter/kernel/slices/channel.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/channel.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/channel.js +8 -0
- package/lib/types/adapter/kernel/slices/decisions.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/decisions.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/decisions.js +10 -0
- package/lib/types/adapter/kernel/slices/extensions.d.ts +8 -0
- package/lib/types/adapter/kernel/slices/extensions.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/extensions.js +43 -0
- package/lib/types/adapter/kernel/slices/index.d.ts +19 -0
- package/lib/types/adapter/kernel/slices/index.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/index.js +36 -0
- package/lib/types/adapter/kernel/slices/presentation.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/presentation.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/presentation.js +14 -0
- package/lib/types/adapter/kernel/slices/scenes.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/scenes.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/scenes.js +14 -0
- package/lib/types/adapter/kernel/slices/settings.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/settings.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/settings.js +12 -0
- package/lib/types/adapter/kernel/slices/types.d.ts +20 -0
- package/lib/types/adapter/kernel/slices/types.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/types.js +12 -0
- package/lib/types/adapter/kernel/slices/workspace.d.ts +3 -0
- package/lib/types/adapter/kernel/slices/workspace.d.ts.map +1 -0
- package/lib/types/adapter/kernel/slices/workspace.js +16 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts +90 -0
- package/lib/types/adapter/ports/channel-catalog.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-catalog.js +2 -0
- package/lib/types/adapter/ports/channel-display.d.ts +90 -0
- package/lib/types/adapter/ports/channel-display.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-display.js +2 -0
- package/lib/types/adapter/ports/channel-session.d.ts +229 -0
- package/lib/types/adapter/ports/channel-session.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-session.js +2 -0
- package/lib/types/adapter/ports/channel-settings.d.ts +279 -0
- package/lib/types/adapter/ports/channel-settings.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-settings.js +1 -0
- package/lib/types/adapter/ports/channel-ui.d.ts +593 -0
- package/lib/types/adapter/ports/channel-ui.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-ui.js +1 -0
- package/lib/types/adapter/ports/channel-view.d.ts +663 -0
- package/lib/types/adapter/ports/channel-view.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-view.js +2 -0
- package/lib/types/adapter/ports/channel-workspace.d.ts +68 -0
- package/lib/types/adapter/ports/channel-workspace.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel-workspace.js +2 -0
- package/lib/types/adapter/ports/channel.d.ts +148 -0
- package/lib/types/adapter/ports/channel.d.ts.map +1 -0
- package/lib/types/adapter/ports/channel.js +22 -0
- package/lib/types/adapter/ports/decisions.d.ts +18 -0
- package/lib/types/adapter/ports/decisions.d.ts.map +1 -0
- package/lib/types/adapter/ports/decisions.js +9 -0
- package/lib/types/adapter/ports/descriptor.d.ts +25 -0
- package/lib/types/adapter/ports/descriptor.d.ts.map +1 -0
- package/lib/types/adapter/ports/descriptor.js +11 -0
- package/lib/types/adapter/ports/extensions.d.ts +86 -0
- package/lib/types/adapter/ports/extensions.d.ts.map +1 -0
- package/lib/types/adapter/ports/extensions.js +9 -0
- package/lib/types/adapter/ports/index.d.ts +23 -0
- package/lib/types/adapter/ports/index.d.ts.map +1 -0
- package/lib/types/adapter/ports/index.js +14 -0
- package/lib/types/adapter/ports/owner.d.ts +19 -0
- package/lib/types/adapter/ports/owner.d.ts.map +1 -0
- package/lib/types/adapter/ports/owner.js +9 -0
- package/lib/types/adapter/ports/presentation.d.ts +81 -0
- package/lib/types/adapter/ports/presentation.d.ts.map +1 -0
- package/lib/types/adapter/ports/presentation.js +10 -0
- package/lib/types/adapter/ports/scenes.d.ts +24 -0
- package/lib/types/adapter/ports/scenes.d.ts.map +1 -0
- package/lib/types/adapter/ports/scenes.js +8 -0
- package/lib/types/adapter/ports/settings.d.ts +44 -0
- package/lib/types/adapter/ports/settings.d.ts.map +1 -0
- package/lib/types/adapter/ports/settings.js +9 -0
- package/lib/types/adapter/ports/workspace.d.ts +62 -0
- package/lib/types/adapter/ports/workspace.d.ts.map +1 -0
- package/lib/types/adapter/ports/workspace.js +8 -0
- package/lib/types/adapter/spec/index.d.ts +11 -0
- package/lib/types/adapter/spec/index.d.ts.map +1 -0
- package/lib/types/adapter/spec/index.js +10 -0
- package/lib/types/adapter/spec/profile.d.ts +10 -0
- package/lib/types/adapter/spec/profile.d.ts.map +1 -0
- package/lib/types/adapter/spec/profile.js +9 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts +60 -0
- package/lib/types/adapter/spec/protocol-constants.d.ts.map +1 -0
- package/lib/types/adapter/spec/protocol-constants.js +129 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts +18 -0
- package/lib/types/adapter/spec/tui-contributions.d.ts.map +1 -0
- package/lib/types/adapter/spec/tui-contributions.js +19 -0
- package/lib/types/adapter/standard/admission.d.ts +11 -0
- package/lib/types/adapter/standard/admission.d.ts.map +1 -0
- package/lib/types/adapter/standard/admission.js +10 -0
- package/lib/types/adapter/standard/descriptor.d.ts +74 -0
- package/lib/types/adapter/standard/descriptor.d.ts.map +1 -0
- package/lib/types/adapter/standard/descriptor.js +356 -0
- package/lib/types/adapter/standard/grants.d.ts +30 -0
- package/lib/types/adapter/standard/grants.d.ts.map +1 -0
- package/lib/types/adapter/standard/grants.js +219 -0
- package/lib/types/adapter/standard/index.d.ts +25 -0
- package/lib/types/adapter/standard/index.d.ts.map +1 -0
- package/lib/types/adapter/standard/index.js +24 -0
- package/lib/types/adapter/standard/negotiate.d.ts +11 -0
- package/lib/types/adapter/standard/negotiate.d.ts.map +1 -0
- package/lib/types/adapter/standard/negotiate.js +97 -0
- package/lib/types/adapter/standard/permission-scope.d.ts +27 -0
- package/lib/types/adapter/standard/permission-scope.d.ts.map +1 -0
- package/lib/types/adapter/standard/permission-scope.js +68 -0
- package/lib/types/adapter/standard/protocols.d.ts +12 -0
- package/lib/types/adapter/standard/protocols.d.ts.map +1 -0
- package/lib/types/adapter/standard/protocols.js +11 -0
- package/lib/types/adapter/standard/registry.d.ts +23 -0
- package/lib/types/adapter/standard/registry.d.ts.map +1 -0
- package/lib/types/adapter/standard/registry.js +240 -0
- package/lib/types/adapter/standard/schema-check.d.ts +17 -0
- package/lib/types/adapter/standard/schema-check.d.ts.map +1 -0
- package/lib/types/adapter/standard/schema-check.js +167 -0
- package/lib/types/adapter/standard/tui-extension.d.ts +25 -0
- package/lib/types/adapter/standard/tui-extension.d.ts.map +1 -0
- package/lib/types/adapter/standard/tui-extension.js +45 -0
- package/lib/types/adapter/standard/types.d.ts +108 -0
- package/lib/types/adapter/standard/types.d.ts.map +1 -0
- package/lib/types/adapter/standard/types.js +10 -0
- package/lib/types/adapter/standard/validate.d.ts +21 -0
- package/lib/types/adapter/standard/validate.d.ts.map +1 -0
- package/lib/types/adapter/standard/validate.js +139 -0
- package/lib/types/adapter/upstream/channel-driver.d.ts +22 -0
- package/lib/types/adapter/upstream/channel-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/channel-driver.js +424 -0
- package/lib/types/adapter/upstream/decisions-driver.d.ts +15 -0
- package/lib/types/adapter/upstream/decisions-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/decisions-driver.js +141 -0
- package/lib/types/adapter/upstream/detection.d.ts +26 -0
- package/lib/types/adapter/upstream/detection.d.ts.map +1 -0
- package/lib/types/adapter/upstream/detection.js +9 -0
- package/lib/types/adapter/upstream/driver.d.ts +50 -0
- package/lib/types/adapter/upstream/driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/driver.js +8 -0
- package/lib/types/adapter/upstream/extensions-driver.d.ts +24 -0
- package/lib/types/adapter/upstream/extensions-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/extensions-driver.js +697 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts +45 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/host-descriptor-driver.js +606 -0
- package/lib/types/adapter/upstream/index.d.ts +18 -0
- package/lib/types/adapter/upstream/index.d.ts.map +1 -0
- package/lib/types/adapter/upstream/index.js +15 -0
- package/lib/types/adapter/upstream/presentation-driver.d.ts +17 -0
- package/lib/types/adapter/upstream/presentation-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/presentation-driver.js +129 -0
- package/lib/types/adapter/upstream/scenes-driver.d.ts +18 -0
- package/lib/types/adapter/upstream/scenes-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/scenes-driver.js +170 -0
- package/lib/types/adapter/upstream/settings-driver.d.ts +20 -0
- package/lib/types/adapter/upstream/settings-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/settings-driver.js +173 -0
- package/lib/types/adapter/upstream/workspace-driver.d.ts +19 -0
- package/lib/types/adapter/upstream/workspace-driver.d.ts.map +1 -0
- package/lib/types/adapter/upstream/workspace-driver.js +198 -0
- package/lib/types/api.d.ts +7 -0
- package/lib/types/api.d.ts.map +1 -0
- package/lib/types/api.js +1 -0
- package/lib/types/bootstrap/state.d.ts +11 -0
- package/lib/types/bootstrap/state.d.ts.map +1 -0
- package/lib/types/bootstrap/state.js +10 -0
- package/lib/types/command-trees.d.ts +4 -0
- package/lib/types/command-trees.d.ts.map +1 -0
- package/lib/types/command-trees.js +4 -0
- package/lib/types/commands.d.ts +87 -0
- package/lib/types/commands.d.ts.map +1 -0
- package/lib/types/commands.js +218 -0
- package/lib/types/components/ActivityLine.d.ts +34 -0
- package/lib/types/components/ActivityLine.d.ts.map +1 -0
- package/lib/types/components/ActivityLine.js +39 -0
- package/lib/types/components/ActivityPicker.d.ts +16 -0
- package/lib/types/components/ActivityPicker.d.ts.map +1 -0
- package/lib/types/components/ActivityPicker.js +23 -0
- package/lib/types/components/AutoRecapRow.d.ts +23 -0
- package/lib/types/components/AutoRecapRow.d.ts.map +1 -0
- package/lib/types/components/AutoRecapRow.js +23 -0
- package/lib/types/components/BalanceReportRow.d.ts +24 -0
- package/lib/types/components/BalanceReportRow.d.ts.map +1 -0
- package/lib/types/components/BalanceReportRow.js +87 -0
- package/lib/types/components/BtwPanel.d.ts +16 -0
- package/lib/types/components/BtwPanel.d.ts.map +1 -0
- package/lib/types/components/BtwPanel.js +47 -0
- package/lib/types/components/Chat/JobCard.d.ts +23 -0
- package/lib/types/components/Chat/JobCard.d.ts.map +1 -0
- package/lib/types/components/Chat/JobCard.js +93 -0
- package/lib/types/components/Chat/SubagentMessage.d.ts +20 -0
- package/lib/types/components/Chat/SubagentMessage.d.ts.map +1 -0
- package/lib/types/components/Chat/SubagentMessage.js +83 -0
- package/lib/types/components/ColorPicker.d.ts +17 -0
- package/lib/types/components/ColorPicker.d.ts.map +1 -0
- package/lib/types/components/ColorPicker.js +20 -0
- package/lib/types/components/CommandSuggestions.d.ts +34 -0
- package/lib/types/components/CommandSuggestions.d.ts.map +1 -0
- package/lib/types/components/CommandSuggestions.js +61 -0
- package/lib/types/components/ContextBarView.d.ts +41 -0
- package/lib/types/components/ContextBarView.d.ts.map +1 -0
- package/lib/types/components/ContextBarView.js +50 -0
- package/lib/types/components/EffortChargeGlyph.d.ts +26 -0
- package/lib/types/components/EffortChargeGlyph.d.ts.map +1 -0
- package/lib/types/components/EffortChargeGlyph.js +70 -0
- package/lib/types/components/EffortInputBorder.d.ts +47 -0
- package/lib/types/components/EffortInputBorder.d.ts.map +1 -0
- package/lib/types/components/EffortInputBorder.js +90 -0
- package/lib/types/components/EffortSlider.d.ts +18 -0
- package/lib/types/components/EffortSlider.d.ts.map +1 -0
- package/lib/types/components/EffortSlider.js +19 -0
- package/lib/types/components/EffortTierBadge.d.ts +26 -0
- package/lib/types/components/EffortTierBadge.d.ts.map +1 -0
- package/lib/types/components/EffortTierBadge.js +97 -0
- package/lib/types/components/ExtensionDialog.d.ts +40 -0
- package/lib/types/components/ExtensionDialog.d.ts.map +1 -0
- package/lib/types/components/ExtensionDialog.js +253 -0
- package/lib/types/components/FileActionsPanel.d.ts +22 -0
- package/lib/types/components/FileActionsPanel.d.ts.map +1 -0
- package/lib/types/components/FileActionsPanel.js +28 -0
- package/lib/types/components/FileSuggestions.d.ts +18 -0
- package/lib/types/components/FileSuggestions.d.ts.map +1 -0
- package/lib/types/components/FileSuggestions.js +78 -0
- package/lib/types/components/GoalTodoPanel.d.ts +38 -0
- package/lib/types/components/GoalTodoPanel.d.ts.map +1 -0
- package/lib/types/components/GoalTodoPanel.js +131 -0
- package/lib/types/components/HelpMenu.d.ts +29 -0
- package/lib/types/components/HelpMenu.d.ts.map +1 -0
- package/lib/types/components/HelpMenu.js +39 -0
- package/lib/types/components/HistorySearchDialog.d.ts +18 -0
- package/lib/types/components/HistorySearchDialog.d.ts.map +1 -0
- package/lib/types/components/HistorySearchDialog.js +47 -0
- package/lib/types/components/ImagePreviewOverlay.d.ts +51 -0
- package/lib/types/components/ImagePreviewOverlay.d.ts.map +1 -0
- package/lib/types/components/ImagePreviewOverlay.js +269 -0
- package/lib/types/components/JobsPanel.d.ts +17 -0
- package/lib/types/components/JobsPanel.d.ts.map +1 -0
- package/lib/types/components/JobsPanel.js +111 -0
- package/lib/types/components/LangPicker.d.ts +14 -0
- package/lib/types/components/LangPicker.d.ts.map +1 -0
- package/lib/types/components/LangPicker.js +17 -0
- package/lib/types/components/LoadedContextPanel.d.ts +20 -0
- package/lib/types/components/LoadedContextPanel.d.ts.map +1 -0
- package/lib/types/components/LoadedContextPanel.js +32 -0
- package/lib/types/components/LogoV2.d.ts +48 -0
- package/lib/types/components/LogoV2.d.ts.map +1 -0
- package/lib/types/components/LogoV2.js +239 -0
- package/lib/types/components/Markdown.d.ts +46 -0
- package/lib/types/components/Markdown.d.ts.map +1 -0
- package/lib/types/components/Markdown.js +178 -0
- package/lib/types/components/MarkdownTable.d.ts +13 -0
- package/lib/types/components/MarkdownTable.d.ts.map +1 -0
- package/lib/types/components/MarkdownTable.js +155 -0
- package/lib/types/components/MermaidDiagram.d.ts +13 -0
- package/lib/types/components/MermaidDiagram.d.ts.map +1 -0
- package/lib/types/components/MermaidDiagram.js +61 -0
- package/lib/types/components/MessageList.d.ts +144 -0
- package/lib/types/components/MessageList.d.ts.map +1 -0
- package/lib/types/components/MessageList.js +1170 -0
- package/lib/types/components/MigratePicker.d.ts +30 -0
- package/lib/types/components/MigratePicker.d.ts.map +1 -0
- package/lib/types/components/MigratePicker.js +38 -0
- package/lib/types/components/ModelPicker.d.ts +42 -0
- package/lib/types/components/ModelPicker.d.ts.map +1 -0
- package/lib/types/components/ModelPicker.js +51 -0
- package/lib/types/components/OverlayAbove.d.ts +48 -0
- package/lib/types/components/OverlayAbove.d.ts.map +1 -0
- package/lib/types/components/OverlayAbove.js +98 -0
- package/lib/types/components/PageMargin.d.ts +58 -0
- package/lib/types/components/PageMargin.d.ts.map +1 -0
- package/lib/types/components/PageMargin.js +38 -0
- package/lib/types/components/PermissionsPicker.d.ts +20 -0
- package/lib/types/components/PermissionsPicker.d.ts.map +1 -0
- package/lib/types/components/PermissionsPicker.js +33 -0
- package/lib/types/components/PlanPicker.d.ts +15 -0
- package/lib/types/components/PlanPicker.d.ts.map +1 -0
- package/lib/types/components/PlanPicker.js +18 -0
- package/lib/types/components/PluginSceneBoundary.d.ts +31 -0
- package/lib/types/components/PluginSceneBoundary.d.ts.map +1 -0
- package/lib/types/components/PluginSceneBoundary.js +29 -0
- package/lib/types/components/PluginStatusViewBoundary.d.ts +26 -0
- package/lib/types/components/PluginStatusViewBoundary.d.ts.map +1 -0
- package/lib/types/components/PluginStatusViewBoundary.js +22 -0
- package/lib/types/components/PresetPicker.d.ts +20 -0
- package/lib/types/components/PresetPicker.d.ts.map +1 -0
- package/lib/types/components/PresetPicker.js +24 -0
- package/lib/types/components/PromptEditor.d.ts +48 -0
- package/lib/types/components/PromptEditor.d.ts.map +1 -0
- package/lib/types/components/PromptEditor.js +75 -0
- package/lib/types/components/PromptInput.d.ts +163 -0
- package/lib/types/components/PromptInput.d.ts.map +1 -0
- package/lib/types/components/PromptInput.js +3503 -0
- package/lib/types/components/RecapPanel.d.ts +25 -0
- package/lib/types/components/RecapPanel.d.ts.map +1 -0
- package/lib/types/components/RecapPanel.js +55 -0
- package/lib/types/components/RewindPicker.d.ts +37 -0
- package/lib/types/components/RewindPicker.d.ts.map +1 -0
- package/lib/types/components/RewindPicker.js +66 -0
- package/lib/types/components/ScrollbarGutter.d.ts +43 -0
- package/lib/types/components/ScrollbarGutter.d.ts.map +1 -0
- package/lib/types/components/ScrollbarGutter.js +197 -0
- package/lib/types/components/SearchBox.d.ts +24 -0
- package/lib/types/components/SearchBox.d.ts.map +1 -0
- package/lib/types/components/SearchBox.js +132 -0
- package/lib/types/components/Select.d.ts +29 -0
- package/lib/types/components/Select.d.ts.map +1 -0
- package/lib/types/components/Select.js +21 -0
- package/lib/types/components/SkillsPicker.d.ts +21 -0
- package/lib/types/components/SkillsPicker.d.ts.map +1 -0
- package/lib/types/components/SkillsPicker.js +52 -0
- package/lib/types/components/Spinner/GlimmerMessage.d.ts +16 -0
- package/lib/types/components/Spinner/GlimmerMessage.d.ts.map +1 -0
- package/lib/types/components/Spinner/GlimmerMessage.js +57 -0
- package/lib/types/components/Spinner/SpinnerAnimationRow.d.ts +33 -0
- package/lib/types/components/Spinner/SpinnerAnimationRow.d.ts.map +1 -0
- package/lib/types/components/Spinner/SpinnerAnimationRow.js +168 -0
- package/lib/types/components/Spinner/SpinnerGlyph.d.ts +16 -0
- package/lib/types/components/Spinner/SpinnerGlyph.d.ts.map +1 -0
- package/lib/types/components/Spinner/SpinnerGlyph.js +36 -0
- package/lib/types/components/Spinner/spinnerMode.d.ts +2 -0
- package/lib/types/components/Spinner/spinnerMode.d.ts.map +1 -0
- package/lib/types/components/Spinner/spinnerMode.js +1 -0
- package/lib/types/components/Spinner/spinnerUtils.d.ts +36 -0
- package/lib/types/components/Spinner/spinnerUtils.d.ts.map +1 -0
- package/lib/types/components/Spinner/spinnerUtils.js +94 -0
- package/lib/types/components/Spinner/useStalledAnimation.d.ts +16 -0
- package/lib/types/components/Spinner/useStalledAnimation.d.ts.map +1 -0
- package/lib/types/components/Spinner/useStalledAnimation.js +52 -0
- package/lib/types/components/SplitDiffView.d.ts +25 -0
- package/lib/types/components/SplitDiffView.d.ts.map +1 -0
- package/lib/types/components/SplitDiffView.js +279 -0
- package/lib/types/components/StreamingMarkdown.d.ts +6 -0
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -0
- package/lib/types/components/StreamingMarkdown.js +279 -0
- package/lib/types/components/SubagentCard.d.ts +10 -0
- package/lib/types/components/SubagentCard.d.ts.map +1 -0
- package/lib/types/components/SubagentCard.js +39 -0
- package/lib/types/components/SubagentDashboard.d.ts +17 -0
- package/lib/types/components/SubagentDashboard.d.ts.map +1 -0
- package/lib/types/components/SubagentDashboard.js +58 -0
- package/lib/types/components/SubagentDetailScene.d.ts +16 -0
- package/lib/types/components/SubagentDetailScene.d.ts.map +1 -0
- package/lib/types/components/SubagentDetailScene.js +147 -0
- package/lib/types/components/SuggestionCard.d.ts +65 -0
- package/lib/types/components/SuggestionCard.d.ts.map +1 -0
- package/lib/types/components/SuggestionCard.js +77 -0
- package/lib/types/components/SyntaxText.d.ts +15 -0
- package/lib/types/components/SyntaxText.d.ts.map +1 -0
- package/lib/types/components/SyntaxText.js +34 -0
- package/lib/types/components/ThemePicker.d.ts +27 -0
- package/lib/types/components/ThemePicker.d.ts.map +1 -0
- package/lib/types/components/ThemePicker.js +55 -0
- package/lib/types/components/ThinkingToggle.d.ts +13 -0
- package/lib/types/components/ThinkingToggle.d.ts.map +1 -0
- package/lib/types/components/ThinkingToggle.js +25 -0
- package/lib/types/components/TimelineRail.d.ts +53 -0
- package/lib/types/components/TimelineRail.d.ts.map +1 -0
- package/lib/types/components/TimelineRail.js +197 -0
- package/lib/types/components/TipsPanel.d.ts +14 -0
- package/lib/types/components/TipsPanel.d.ts.map +1 -0
- package/lib/types/components/TipsPanel.js +37 -0
- package/lib/types/components/ToolUseLoader.d.ts +18 -0
- package/lib/types/components/ToolUseLoader.d.ts.map +1 -0
- package/lib/types/components/ToolUseLoader.js +51 -0
- package/lib/types/components/Tooltip.d.ts +67 -0
- package/lib/types/components/Tooltip.d.ts.map +1 -0
- package/lib/types/components/Tooltip.js +266 -0
- package/lib/types/components/TurnInterruptedRow.d.ts +6 -0
- package/lib/types/components/TurnInterruptedRow.d.ts.map +1 -0
- package/lib/types/components/TurnInterruptedRow.js +9 -0
- package/lib/types/components/Whale.d.ts +42 -0
- package/lib/types/components/Whale.d.ts.map +1 -0
- package/lib/types/components/Whale.js +108 -0
- package/lib/types/components/WorkingSpinner.d.ts +26 -0
- package/lib/types/components/WorkingSpinner.d.ts.map +1 -0
- package/lib/types/components/WorkingSpinner.js +67 -0
- package/lib/types/components/WorkspaceFlowPicker.d.ts +20 -0
- package/lib/types/components/WorkspaceFlowPicker.d.ts.map +1 -0
- package/lib/types/components/WorkspaceFlowPicker.js +21 -0
- package/lib/types/components/WorkspaceMenuPicker.d.ts +19 -0
- package/lib/types/components/WorkspaceMenuPicker.d.ts.map +1 -0
- package/lib/types/components/WorkspaceMenuPicker.js +19 -0
- package/lib/types/components/WorkspacePicker.d.ts +12 -0
- package/lib/types/components/WorkspacePicker.d.ts.map +1 -0
- package/lib/types/components/WorkspacePicker.js +13 -0
- package/lib/types/components/activityFrames.d.ts +23 -0
- package/lib/types/components/activityFrames.d.ts.map +1 -0
- package/lib/types/components/activityFrames.js +31 -0
- package/lib/types/components/approvals/ApprovalPanel.d.ts +24 -0
- package/lib/types/components/approvals/ApprovalPanel.d.ts.map +1 -0
- package/lib/types/components/approvals/ApprovalPanel.js +53 -0
- package/lib/types/components/bigfont.d.ts +28 -0
- package/lib/types/components/bigfont.d.ts.map +1 -0
- package/lib/types/components/bigfont.js +91 -0
- package/lib/types/components/design-system/Byline.d.ts +14 -0
- package/lib/types/components/design-system/Byline.d.ts.map +1 -0
- package/lib/types/components/design-system/Byline.js +17 -0
- package/lib/types/components/design-system/Divider.d.ts +61 -0
- package/lib/types/components/design-system/Divider.d.ts.map +1 -0
- package/lib/types/components/design-system/Divider.js +115 -0
- package/lib/types/components/design-system/HintLine.d.ts +11 -0
- package/lib/types/components/design-system/HintLine.d.ts.map +1 -0
- package/lib/types/components/design-system/HintLine.js +14 -0
- package/lib/types/components/design-system/ListItem.d.ts +42 -0
- package/lib/types/components/design-system/ListItem.d.ts.map +1 -0
- package/lib/types/components/design-system/ListItem.js +84 -0
- package/lib/types/components/design-system/LoadingState.d.ts +19 -0
- package/lib/types/components/design-system/LoadingState.d.ts.map +1 -0
- package/lib/types/components/design-system/LoadingState.js +22 -0
- package/lib/types/components/design-system/Pane.d.ts +17 -0
- package/lib/types/components/design-system/Pane.d.ts.map +1 -0
- package/lib/types/components/design-system/Pane.js +15 -0
- package/lib/types/components/design-system/ProgressBar.d.ts +21 -0
- package/lib/types/components/design-system/ProgressBar.d.ts.map +1 -0
- package/lib/types/components/design-system/ProgressBar.js +26 -0
- package/lib/types/components/design-system/StatusIcon.d.ts +15 -0
- package/lib/types/components/design-system/StatusIcon.d.ts.map +1 -0
- package/lib/types/components/design-system/StatusIcon.js +20 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts +21 -0
- package/lib/types/components/design-system/ThemeProvider.d.ts.map +1 -0
- package/lib/types/components/design-system/ThemeProvider.js +256 -0
- package/lib/types/components/design-system/ThemedBox.d.ts +60 -0
- package/lib/types/components/design-system/ThemedBox.d.ts.map +1 -0
- package/lib/types/components/design-system/ThemedBox.js +29 -0
- package/lib/types/components/design-system/ThemedText.d.ts +61 -0
- package/lib/types/components/design-system/ThemedText.d.ts.map +1 -0
- package/lib/types/components/design-system/ThemedText.js +42 -0
- package/lib/types/components/listWindow.d.ts +26 -0
- package/lib/types/components/listWindow.d.ts.map +1 -0
- package/lib/types/components/listWindow.js +47 -0
- package/lib/types/components/messages/AssistantTextMessage.d.ts +20 -0
- package/lib/types/components/messages/AssistantTextMessage.d.ts.map +1 -0
- package/lib/types/components/messages/AssistantTextMessage.js +18 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +40 -0
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -0
- package/lib/types/components/messages/AssistantThinkingMessage.js +84 -0
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +72 -0
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -0
- package/lib/types/components/messages/AssistantToolUseMessage.js +517 -0
- package/lib/types/components/messages/MessageMetadata.d.ts +14 -0
- package/lib/types/components/messages/MessageMetadata.d.ts.map +1 -0
- package/lib/types/components/messages/MessageMetadata.js +19 -0
- package/lib/types/components/messages/TranscriptImages.d.ts +21 -0
- package/lib/types/components/messages/TranscriptImages.d.ts.map +1 -0
- package/lib/types/components/messages/TranscriptImages.js +83 -0
- package/lib/types/components/messages/UserPromptMessage.d.ts +18 -0
- package/lib/types/components/messages/UserPromptMessage.d.ts.map +1 -0
- package/lib/types/components/messages/UserPromptMessage.js +28 -0
- package/lib/types/components/messages/imageInspection.d.ts +33 -0
- package/lib/types/components/messages/imageInspection.d.ts.map +1 -0
- package/lib/types/components/messages/imageInspection.js +107 -0
- package/lib/types/components/messages/originalImage.d.ts +5 -0
- package/lib/types/components/messages/originalImage.d.ts.map +1 -0
- package/lib/types/components/messages/originalImage.js +56 -0
- package/lib/types/components/messages/transcriptImageDecode.d.ts +9 -0
- package/lib/types/components/messages/transcriptImageDecode.d.ts.map +1 -0
- package/lib/types/components/messages/transcriptImageDecode.js +144 -0
- package/lib/types/components/messages/useImageInspection.d.ts +10 -0
- package/lib/types/components/messages/useImageInspection.d.ts.map +1 -0
- package/lib/types/components/messages/useImageInspection.js +91 -0
- package/lib/types/components/overlayBudget.d.ts +39 -0
- package/lib/types/components/overlayBudget.d.ts.map +1 -0
- package/lib/types/components/overlayBudget.js +43 -0
- package/lib/types/components/promptDraftCache.d.ts +102 -0
- package/lib/types/components/promptDraftCache.d.ts.map +1 -0
- package/lib/types/components/promptDraftCache.js +76 -0
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts +94 -0
- package/lib/types/components/questions/AskUserQuestionPanel.d.ts.map +1 -0
- package/lib/types/components/questions/AskUserQuestionPanel.js +527 -0
- package/lib/types/components/questions/PlanReviewPanel.d.ts +55 -0
- package/lib/types/components/questions/PlanReviewPanel.d.ts.map +1 -0
- package/lib/types/components/questions/PlanReviewPanel.js +351 -0
- package/lib/types/components/questions/QuestionMinimizedBar.d.ts +12 -0
- package/lib/types/components/questions/QuestionMinimizedBar.d.ts.map +1 -0
- package/lib/types/components/questions/QuestionMinimizedBar.js +43 -0
- package/lib/types/components/sessions/SessionListRow.d.ts +58 -0
- package/lib/types/components/sessions/SessionListRow.d.ts.map +1 -0
- package/lib/types/components/sessions/SessionListRow.js +108 -0
- package/lib/types/components/sessions/SessionPreview.d.ts +25 -0
- package/lib/types/components/sessions/SessionPreview.d.ts.map +1 -0
- package/lib/types/components/sessions/SessionPreview.js +62 -0
- package/lib/types/components/sessions/WorkspaceListRow.d.ts +17 -0
- package/lib/types/components/sessions/WorkspaceListRow.d.ts.map +1 -0
- package/lib/types/components/sessions/WorkspaceListRow.js +27 -0
- package/lib/types/components/shimmer.d.ts +35 -0
- package/lib/types/components/shimmer.d.ts.map +1 -0
- package/lib/types/components/shimmer.js +43 -0
- package/lib/types/components/smoothReveal.d.ts +57 -0
- package/lib/types/components/smoothReveal.d.ts.map +1 -0
- package/lib/types/components/smoothReveal.js +305 -0
- package/lib/types/components/trajectory/HotspotView.d.ts +20 -0
- package/lib/types/components/trajectory/HotspotView.d.ts.map +1 -0
- package/lib/types/components/trajectory/HotspotView.js +89 -0
- package/lib/types/components/trajectory/Inspector.d.ts +31 -0
- package/lib/types/components/trajectory/Inspector.d.ts.map +1 -0
- package/lib/types/components/trajectory/Inspector.js +67 -0
- package/lib/types/components/trajectory/Ledger.d.ts +28 -0
- package/lib/types/components/trajectory/Ledger.d.ts.map +1 -0
- package/lib/types/components/trajectory/Ledger.js +130 -0
- package/lib/types/components/trajectory/MiniWake.d.ts +24 -0
- package/lib/types/components/trajectory/MiniWake.d.ts.map +1 -0
- package/lib/types/components/trajectory/MiniWake.js +99 -0
- package/lib/types/components/trajectory/WaveBand.d.ts +42 -0
- package/lib/types/components/trajectory/WaveBand.d.ts.map +1 -0
- package/lib/types/components/trajectory/WaveBand.js +150 -0
- package/lib/types/components/whaleFrames.d.ts +81 -0
- package/lib/types/components/whaleFrames.d.ts.map +1 -0
- package/lib/types/components/whaleFrames.js +768 -0
- package/lib/types/components/whaleIdle.d.ts +66 -0
- package/lib/types/components/whaleIdle.d.ts.map +1 -0
- package/lib/types/components/whaleIdle.js +174 -0
- package/lib/types/components/whaleLayers.d.ts +28 -0
- package/lib/types/components/whaleLayers.d.ts.map +1 -0
- package/lib/types/components/whaleLayers.js +90 -0
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts +49 -0
- package/lib/types/components/workspaces/HomeWorkspaceRow.d.ts.map +1 -0
- package/lib/types/components/workspaces/HomeWorkspaceRow.js +50 -0
- package/lib/types/customTheme.d.ts +108 -0
- package/lib/types/customTheme.d.ts.map +1 -0
- package/lib/types/customTheme.js +281 -0
- package/lib/types/deepseekBalance.d.ts +19 -0
- package/lib/types/deepseekBalance.d.ts.map +1 -0
- package/lib/types/deepseekBalance.js +72 -0
- package/lib/types/deepseekPricing.d.ts +83 -0
- package/lib/types/deepseekPricing.d.ts.map +1 -0
- package/lib/types/deepseekPricing.js +140 -0
- package/lib/types/dsh-adapter/activity-store.d.ts +221 -0
- package/lib/types/dsh-adapter/activity-store.d.ts.map +1 -0
- package/lib/types/dsh-adapter/activity-store.js +359 -0
- package/lib/types/dsh-adapter/agent-view.d.ts +66 -0
- package/lib/types/dsh-adapter/agent-view.d.ts.map +1 -0
- package/lib/types/dsh-adapter/agent-view.js +153 -0
- package/lib/types/dsh-adapter/approvals.d.ts +225 -0
- package/lib/types/dsh-adapter/approvals.d.ts.map +1 -0
- package/lib/types/dsh-adapter/approvals.js +465 -0
- package/lib/types/dsh-adapter/bundled-presets.d.ts +10 -0
- package/lib/types/dsh-adapter/bundled-presets.d.ts.map +1 -0
- package/lib/types/dsh-adapter/bundled-presets.js +80 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/action-readiness.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/action-readiness.js +86 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts +64 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/agent-view-projection.js +312 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts +41 -0
- package/lib/types/dsh-adapter/channel/background-action.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/background-action.js +110 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts +67 -0
- package/lib/types/dsh-adapter/channel/binding-events.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/binding-events.js +170 -0
- package/lib/types/dsh-adapter/channel/binding.d.ts +58 -0
- package/lib/types/dsh-adapter/channel/binding.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/binding.js +287 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts +29 -0
- package/lib/types/dsh-adapter/channel/command-completions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/command-completions.js +94 -0
- package/lib/types/dsh-adapter/channel/commands.d.ts +8 -0
- package/lib/types/dsh-adapter/channel/commands.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/commands.js +9 -0
- package/lib/types/dsh-adapter/channel/compaction.d.ts +18 -0
- package/lib/types/dsh-adapter/channel/compaction.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/compaction.js +114 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts +62 -0
- package/lib/types/dsh-adapter/channel/composer-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/composer-images.js +316 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.d.ts +15 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/composer-mentions.js +200 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts +34 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/context-bookkeeping.js +31 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/decisions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/decisions.js +90 -0
- package/lib/types/dsh-adapter/channel/emitter.d.ts +10 -0
- package/lib/types/dsh-adapter/channel/emitter.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/emitter.js +71 -0
- package/lib/types/dsh-adapter/channel/external-commands.d.ts +31 -0
- package/lib/types/dsh-adapter/channel/external-commands.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/external-commands.js +187 -0
- package/lib/types/dsh-adapter/channel/file-actions.d.ts +20 -0
- package/lib/types/dsh-adapter/channel/file-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/file-actions.js +45 -0
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts +58 -0
- package/lib/types/dsh-adapter/channel/ide-selection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/ide-selection.js +226 -0
- package/lib/types/dsh-adapter/channel/input-actions.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/input-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/input-actions.js +135 -0
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts +42 -0
- package/lib/types/dsh-adapter/channel/input-delivery.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/input-delivery.js +313 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts +28 -0
- package/lib/types/dsh-adapter/channel/job-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/job-projection.js +150 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/lifetime-resources.js +33 -0
- package/lib/types/dsh-adapter/channel/loaded-context.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/loaded-context.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/loaded-context.js +62 -0
- package/lib/types/dsh-adapter/channel/local-actions.d.ts +54 -0
- package/lib/types/dsh-adapter/channel/local-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/local-actions.js +109 -0
- package/lib/types/dsh-adapter/channel/mentions.d.ts +29 -0
- package/lib/types/dsh-adapter/channel/mentions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mentions.js +235 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts +30 -0
- package/lib/types/dsh-adapter/channel/mode-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-actions.js +247 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts +35 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-permission-actions.js +199 -0
- package/lib/types/dsh-adapter/channel/mode-permission.d.ts +58 -0
- package/lib/types/dsh-adapter/channel/mode-permission.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-permission.js +240 -0
- package/lib/types/dsh-adapter/channel/mode-roster.d.ts +51 -0
- package/lib/types/dsh-adapter/channel/mode-roster.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/mode-roster.js +119 -0
- package/lib/types/dsh-adapter/channel/model-actions.d.ts +49 -0
- package/lib/types/dsh-adapter/channel/model-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-actions.js +351 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts +31 -0
- package/lib/types/dsh-adapter/channel/model-switch.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/model-switch.js +116 -0
- package/lib/types/dsh-adapter/channel/notifications.d.ts +9 -0
- package/lib/types/dsh-adapter/channel/notifications.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/notifications.js +24 -0
- package/lib/types/dsh-adapter/channel/owner.d.ts +18 -0
- package/lib/types/dsh-adapter/channel/owner.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/owner.js +73 -0
- package/lib/types/dsh-adapter/channel/paths.d.ts +31 -0
- package/lib/types/dsh-adapter/channel/paths.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/paths.js +147 -0
- package/lib/types/dsh-adapter/channel/permissions.d.ts +40 -0
- package/lib/types/dsh-adapter/channel/permissions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/permissions.js +187 -0
- package/lib/types/dsh-adapter/channel/preferences.d.ts +3 -0
- package/lib/types/dsh-adapter/channel/preferences.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/preferences.js +103 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/projection-helpers.js +63 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts +44 -0
- package/lib/types/dsh-adapter/channel/projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/projection.js +1031 -0
- package/lib/types/dsh-adapter/channel/reports.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/reports.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/reports.js +163 -0
- package/lib/types/dsh-adapter/channel/session-actions.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/session-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-actions.js +29 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts +32 -0
- package/lib/types/dsh-adapter/channel/session-adoption.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-adoption.js +36 -0
- package/lib/types/dsh-adapter/channel/session-fork.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-fork.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-fork.js +109 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts +35 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-live-adoption.js +64 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts +91 -0
- package/lib/types/dsh-adapter/channel/session-metadata.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-metadata.js +220 -0
- package/lib/types/dsh-adapter/channel/session-reset.d.ts +11 -0
- package/lib/types/dsh-adapter/channel/session-reset.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-reset.js +43 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts +65 -0
- package/lib/types/dsh-adapter/channel/session-resume.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-resume.js +438 -0
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-rewind.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-rewind.js +146 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts +19 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-tree-actions.js +154 -0
- package/lib/types/dsh-adapter/channel/session-tree.d.ts +10 -0
- package/lib/types/dsh-adapter/channel/session-tree.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/session-tree.js +503 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts +4 -0
- package/lib/types/dsh-adapter/channel/settings-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/settings-host.js +257 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts +33 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/skill-catalog.js +215 -0
- package/lib/types/dsh-adapter/channel/state.d.ts +51 -0
- package/lib/types/dsh-adapter/channel/state.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/state.js +31 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts +67 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/subagent-projection.js +307 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts +73 -0
- package/lib/types/dsh-adapter/channel/transcript.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/transcript.js +306 -0
- package/lib/types/dsh-adapter/channel/types.d.ts +167 -0
- package/lib/types/dsh-adapter/channel/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/types.js +1 -0
- package/lib/types/dsh-adapter/channel/usage.d.ts +13 -0
- package/lib/types/dsh-adapter/channel/usage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/usage.js +48 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts +23 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel/workspace-actions.js +96 -0
- package/lib/types/dsh-adapter/channel-facade-actions.d.ts +25 -0
- package/lib/types/dsh-adapter/channel-facade-actions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-facade-actions.js +55 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.d.ts +6 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-scene-outlet.js +13 -0
- package/lib/types/dsh-adapter/channel-ui.d.ts +9 -0
- package/lib/types/dsh-adapter/channel-ui.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel-ui.js +128 -0
- package/lib/types/dsh-adapter/channel.d.ts +23 -0
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -0
- package/lib/types/dsh-adapter/channel.js +999 -0
- package/lib/types/dsh-adapter/childStderr.d.ts +63 -0
- package/lib/types/dsh-adapter/childStderr.d.ts.map +1 -0
- package/lib/types/dsh-adapter/childStderr.js +180 -0
- package/lib/types/dsh-adapter/command-attribution.d.ts +51 -0
- package/lib/types/dsh-adapter/command-attribution.d.ts.map +1 -0
- package/lib/types/dsh-adapter/command-attribution.js +93 -0
- package/lib/types/dsh-adapter/command-errors.d.ts +42 -0
- package/lib/types/dsh-adapter/command-errors.d.ts.map +1 -0
- package/lib/types/dsh-adapter/command-errors.js +63 -0
- package/lib/types/dsh-adapter/command-trees.d.ts +34 -0
- package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -0
- package/lib/types/dsh-adapter/command-trees.js +111 -0
- package/lib/types/dsh-adapter/compat/index.d.ts +29 -0
- package/lib/types/dsh-adapter/compat/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/index.js +28 -0
- package/lib/types/dsh-adapter/compat/liveSession.d.ts +79 -0
- package/lib/types/dsh-adapter/compat/liveSession.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/liveSession.js +223 -0
- package/lib/types/dsh-adapter/compat/messages.d.ts +15 -0
- package/lib/types/dsh-adapter/compat/messages.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/messages.js +15 -0
- package/lib/types/dsh-adapter/compat/persistence.d.ts +21 -0
- package/lib/types/dsh-adapter/compat/persistence.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/persistence.js +17 -0
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts +309 -0
- package/lib/types/dsh-adapter/compat/sessionLog.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/sessionLog.js +1177 -0
- package/lib/types/dsh-adapter/compat/settings.d.ts +35 -0
- package/lib/types/dsh-adapter/compat/settings.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/settings.js +57 -0
- package/lib/types/dsh-adapter/compat/shell.d.ts +25 -0
- package/lib/types/dsh-adapter/compat/shell.d.ts.map +1 -0
- package/lib/types/dsh-adapter/compat/shell.js +11 -0
- package/lib/types/dsh-adapter/component-identity.d.ts +33 -0
- package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -0
- package/lib/types/dsh-adapter/component-identity.js +108 -0
- package/lib/types/dsh-adapter/contract.d.ts +91 -0
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -0
- package/lib/types/dsh-adapter/contract.js +276 -0
- package/lib/types/dsh-adapter/credentialRefGuard.d.ts +40 -0
- package/lib/types/dsh-adapter/credentialRefGuard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/credentialRefGuard.js +43 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts +128 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/decision-guard.js +460 -0
- package/lib/types/dsh-adapter/dialogs.d.ts +145 -0
- package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/dialogs.js +329 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts +96 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -0
- package/lib/types/dsh-adapter/effect-ledger.js +290 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +186 -0
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -0
- package/lib/types/dsh-adapter/extension-events.js +187 -0
- package/lib/types/dsh-adapter/extensions.d.ts +36 -0
- package/lib/types/dsh-adapter/extensions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/extensions.js +51 -0
- package/lib/types/dsh-adapter/host-access.d.ts +37 -0
- package/lib/types/dsh-adapter/host-access.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-access.js +652 -0
- package/lib/types/dsh-adapter/host-grants.d.ts +23 -0
- package/lib/types/dsh-adapter/host-grants.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-grants.js +45 -0
- package/lib/types/dsh-adapter/ide-channel.d.ts +224 -0
- package/lib/types/dsh-adapter/ide-channel.d.ts.map +1 -0
- package/lib/types/dsh-adapter/ide-channel.js +556 -0
- package/lib/types/dsh-adapter/index.d.ts +151 -0
- package/lib/types/dsh-adapter/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/index.js +119 -0
- package/lib/types/dsh-adapter/inject-channel.d.ts +108 -0
- package/lib/types/dsh-adapter/inject-channel.d.ts.map +1 -0
- package/lib/types/dsh-adapter/inject-channel.js +247 -0
- package/lib/types/dsh-adapter/invariant.d.ts +20 -0
- package/lib/types/dsh-adapter/invariant.d.ts.map +1 -0
- package/lib/types/dsh-adapter/invariant.js +26 -0
- package/lib/types/dsh-adapter/jobs.d.ts +101 -0
- package/lib/types/dsh-adapter/jobs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/jobs.js +177 -0
- package/lib/types/dsh-adapter/message-observer.d.ts +186 -0
- package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -0
- package/lib/types/dsh-adapter/message-observer.js +682 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/claude-code.js +191 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/codex.js +133 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/grok-build.js +175 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/omp.js +132 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts +6 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/scan.js +38 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts +3 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/adapters/zcode.js +107 -0
- package/lib/types/dsh-adapter/migrate/bin-path.d.ts +6 -0
- package/lib/types/dsh-adapter/migrate/bin-path.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/bin-path.js +30 -0
- package/lib/types/dsh-adapter/migrate/cli.d.ts +9 -0
- package/lib/types/dsh-adapter/migrate/cli.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/cli.js +105 -0
- package/lib/types/dsh-adapter/migrate/index.d.ts +29 -0
- package/lib/types/dsh-adapter/migrate/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/index.js +108 -0
- package/lib/types/dsh-adapter/migrate/picker.d.ts +64 -0
- package/lib/types/dsh-adapter/migrate/picker.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/picker.js +86 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.d.ts +40 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/recent-agents.js +100 -0
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts +19 -0
- package/lib/types/dsh-adapter/migrate/sessionize.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/sessionize.js +101 -0
- package/lib/types/dsh-adapter/migrate/types.d.ts +52 -0
- package/lib/types/dsh-adapter/migrate/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/types.js +11 -0
- package/lib/types/dsh-adapter/migrate/uuid.d.ts +7 -0
- package/lib/types/dsh-adapter/migrate/uuid.d.ts.map +1 -0
- package/lib/types/dsh-adapter/migrate/uuid.js +25 -0
- package/lib/types/dsh-adapter/packaged-presets.d.ts +22 -0
- package/lib/types/dsh-adapter/packaged-presets.d.ts.map +1 -0
- package/lib/types/dsh-adapter/packaged-presets.js +94 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts +205 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-host.js +762 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts +118 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-storage.js +536 -0
- package/lib/types/dsh-adapter/plugin.d.ts +70 -0
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin.js +2140 -0
- package/lib/types/dsh-adapter/plugins-info.d.ts +43 -0
- package/lib/types/dsh-adapter/plugins-info.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugins-info.js +293 -0
- package/lib/types/dsh-adapter/preset-resolution.d.ts +57 -0
- package/lib/types/dsh-adapter/preset-resolution.d.ts.map +1 -0
- package/lib/types/dsh-adapter/preset-resolution.js +52 -0
- package/lib/types/dsh-adapter/presets.d.ts +110 -0
- package/lib/types/dsh-adapter/presets.d.ts.map +1 -0
- package/lib/types/dsh-adapter/presets.js +161 -0
- package/lib/types/dsh-adapter/promptDebug.d.ts +4 -0
- package/lib/types/dsh-adapter/promptDebug.d.ts.map +1 -0
- package/lib/types/dsh-adapter/promptDebug.js +163 -0
- package/lib/types/dsh-adapter/providerGuard.d.ts +75 -0
- package/lib/types/dsh-adapter/providerGuard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/providerGuard.js +104 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts +42 -0
- package/lib/types/dsh-adapter/providerWizard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/providerWizard.js +921 -0
- package/lib/types/dsh-adapter/questions-answerer.d.ts +51 -0
- package/lib/types/dsh-adapter/questions-answerer.d.ts.map +1 -0
- package/lib/types/dsh-adapter/questions-answerer.js +64 -0
- package/lib/types/dsh-adapter/questions.d.ts +130 -0
- package/lib/types/dsh-adapter/questions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/questions.js +282 -0
- package/lib/types/dsh-adapter/recap.d.ts +41 -0
- package/lib/types/dsh-adapter/recap.d.ts.map +1 -0
- package/lib/types/dsh-adapter/recap.js +111 -0
- package/lib/types/dsh-adapter/renderers.d.ts +58 -0
- package/lib/types/dsh-adapter/renderers.d.ts.map +1 -0
- package/lib/types/dsh-adapter/renderers.js +198 -0
- package/lib/types/dsh-adapter/sanitize.d.ts +45 -0
- package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sanitize.js +84 -0
- package/lib/types/dsh-adapter/scenes.d.ts +87 -0
- package/lib/types/dsh-adapter/scenes.d.ts.map +1 -0
- package/lib/types/dsh-adapter/scenes.js +223 -0
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts +53 -0
- package/lib/types/dsh-adapter/session-mount-heartbeat.d.ts.map +1 -0
- package/lib/types/dsh-adapter/session-mount-heartbeat.js +100 -0
- package/lib/types/dsh-adapter/sessionTree.d.ts +232 -0
- package/lib/types/dsh-adapter/sessionTree.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessionTree.js +984 -0
- package/lib/types/dsh-adapter/sessions/digest.d.ts +54 -0
- package/lib/types/dsh-adapter/sessions/digest.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/digest.js +478 -0
- package/lib/types/dsh-adapter/sessions/frames.d.ts +103 -0
- package/lib/types/dsh-adapter/sessions/frames.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/frames.js +263 -0
- package/lib/types/dsh-adapter/sessions/header.d.ts +56 -0
- package/lib/types/dsh-adapter/sessions/header.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/header.js +85 -0
- package/lib/types/dsh-adapter/sessions/index.d.ts +17 -0
- package/lib/types/dsh-adapter/sessions/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/index.js +15 -0
- package/lib/types/dsh-adapter/sessions/list.d.ts +64 -0
- package/lib/types/dsh-adapter/sessions/list.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/list.js +331 -0
- package/lib/types/dsh-adapter/sessions/recovery.d.ts +17 -0
- package/lib/types/dsh-adapter/sessions/recovery.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/recovery.js +109 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts +60 -0
- package/lib/types/dsh-adapter/sessions/store.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/store.js +221 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts +21 -0
- package/lib/types/dsh-adapter/sessions/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sessions/types.js +1 -0
- package/lib/types/dsh-adapter/settings-sections.d.ts +48 -0
- package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -0
- package/lib/types/dsh-adapter/settings-sections.js +253 -0
- package/lib/types/dsh-adapter/settingsEditor.d.ts +100 -0
- package/lib/types/dsh-adapter/settingsEditor.d.ts.map +1 -0
- package/lib/types/dsh-adapter/settingsEditor.js +238 -0
- package/lib/types/dsh-adapter/sharp.d.ts +10 -0
- package/lib/types/dsh-adapter/sharp.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sharp.js +59 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts +82 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -0
- package/lib/types/dsh-adapter/shortcuts.js +252 -0
- package/lib/types/dsh-adapter/sideQuestion.d.ts +36 -0
- package/lib/types/dsh-adapter/sideQuestion.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sideQuestion.js +59 -0
- package/lib/types/dsh-adapter/status.d.ts +148 -0
- package/lib/types/dsh-adapter/status.d.ts.map +1 -0
- package/lib/types/dsh-adapter/status.js +435 -0
- package/lib/types/dsh-adapter/subagents.d.ts +64 -0
- package/lib/types/dsh-adapter/subagents.d.ts.map +1 -0
- package/lib/types/dsh-adapter/subagents.js +366 -0
- package/lib/types/dsh-adapter/themes.d.ts +52 -0
- package/lib/types/dsh-adapter/themes.d.ts.map +1 -0
- package/lib/types/dsh-adapter/themes.js +307 -0
- package/lib/types/dsh-adapter/toast.d.ts +80 -0
- package/lib/types/dsh-adapter/toast.d.ts.map +1 -0
- package/lib/types/dsh-adapter/toast.js +171 -0
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts +47 -0
- package/lib/types/dsh-adapter/trajectory/aggregate.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/aggregate.js +208 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts +196 -0
- package/lib/types/dsh-adapter/trajectory/guards.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/guards.js +273 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts +16 -0
- package/lib/types/dsh-adapter/trajectory/index.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/index.js +15 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts +40 -0
- package/lib/types/dsh-adapter/trajectory/inspect.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/inspect.js +160 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts +146 -0
- package/lib/types/dsh-adapter/trajectory/projection.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/projection.js +710 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts +232 -0
- package/lib/types/dsh-adapter/trajectory/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/types.js +70 -0
- package/lib/types/dsh-adapter/trajectory/wave.d.ts +45 -0
- package/lib/types/dsh-adapter/trajectory/wave.d.ts.map +1 -0
- package/lib/types/dsh-adapter/trajectory/wave.js +210 -0
- package/lib/types/dsh-adapter/transcript-images.d.ts +17 -0
- package/lib/types/dsh-adapter/transcript-images.d.ts.map +1 -0
- package/lib/types/dsh-adapter/transcript-images.js +96 -0
- package/lib/types/dsh-adapter/types.d.ts +23 -0
- package/lib/types/dsh-adapter/types.d.ts.map +1 -0
- package/lib/types/dsh-adapter/types.js +1 -0
- package/lib/types/dsh-adapter/workspace.d.ts +22 -0
- package/lib/types/dsh-adapter/workspace.d.ts.map +1 -0
- package/lib/types/dsh-adapter/workspace.js +16 -0
- package/lib/types/dsh-adapter/workspaces.d.ts +125 -0
- package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -0
- package/lib/types/dsh-adapter/workspaces.js +543 -0
- package/lib/types/effortPrefs.d.ts +48 -0
- package/lib/types/effortPrefs.d.ts.map +1 -0
- package/lib/types/effortPrefs.js +95 -0
- package/lib/types/extensions.d.ts +18 -0
- package/lib/types/extensions.d.ts.map +1 -0
- package/lib/types/extensions.js +27 -0
- package/lib/types/force-production-react.d.ts +1 -0
- package/lib/types/force-production-react.d.ts.map +1 -0
- package/lib/types/force-production-react.js +12 -0
- package/lib/types/herdr.d.ts +28 -0
- package/lib/types/herdr.d.ts.map +1 -0
- package/lib/types/herdr.js +133 -0
- package/lib/types/history.d.ts +39 -0
- package/lib/types/history.d.ts.map +1 -0
- package/lib/types/history.js +177 -0
- package/lib/types/homePrefs.d.ts +15 -0
- package/lib/types/homePrefs.d.ts.map +1 -0
- package/lib/types/homePrefs.js +53 -0
- package/lib/types/hooks/useBlink.d.ts +10 -0
- package/lib/types/hooks/useBlink.d.ts.map +1 -0
- package/lib/types/hooks/useBlink.js +19 -0
- package/lib/types/hooks/useExternalVersion.d.ts +32 -0
- package/lib/types/hooks/useExternalVersion.d.ts.map +1 -0
- package/lib/types/hooks/useExternalVersion.js +53 -0
- package/lib/types/hooks/useRevealVersion.d.ts +21 -0
- package/lib/types/hooks/useRevealVersion.d.ts.map +1 -0
- package/lib/types/hooks/useRevealVersion.js +33 -0
- package/lib/types/hooks/useRuntimeThemeSnapshot.d.ts +10 -0
- package/lib/types/hooks/useRuntimeThemeSnapshot.d.ts.map +1 -0
- package/lib/types/hooks/useRuntimeThemeSnapshot.js +32 -0
- package/lib/types/i18n.d.ts +4433 -0
- package/lib/types/i18n.d.ts.map +1 -0
- package/lib/types/i18n.js +1493 -0
- package/lib/types/index.d.ts +3 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +4 -0
- package/lib/types/ink/Ansi.d.ts +9 -0
- package/lib/types/ink/Ansi.d.ts.map +1 -0
- package/lib/types/ink/Ansi.js +45 -0
- package/lib/types/ink/bidi.d.ts +18 -0
- package/lib/types/ink/bidi.d.ts.map +1 -0
- package/lib/types/ink/bidi.js +119 -0
- package/lib/types/ink/clearTerminal.d.ts +22 -0
- package/lib/types/ink/clearTerminal.d.ts.map +1 -0
- package/lib/types/ink/clearTerminal.js +72 -0
- package/lib/types/ink/colorize.d.ts +43 -0
- package/lib/types/ink/colorize.d.ts.map +1 -0
- package/lib/types/ink/colorize.js +233 -0
- package/lib/types/ink/components/AlternateScreen.d.ts +8 -0
- package/lib/types/ink/components/AlternateScreen.d.ts.map +1 -0
- package/lib/types/ink/components/AlternateScreen.js +29 -0
- package/lib/types/ink/components/App.d.ts +149 -0
- package/lib/types/ink/components/App.d.ts.map +1 -0
- package/lib/types/ink/components/App.js +1027 -0
- package/lib/types/ink/components/AppContext.d.ts +17 -0
- package/lib/types/ink/components/AppContext.d.ts.map +1 -0
- package/lib/types/ink/components/AppContext.js +12 -0
- package/lib/types/ink/components/Box.d.ts +85 -0
- package/lib/types/ink/components/Box.d.ts.map +1 -0
- package/lib/types/ink/components/Box.js +22 -0
- package/lib/types/ink/components/Button.d.ts +37 -0
- package/lib/types/ink/components/Button.d.ts.map +1 -0
- package/lib/types/ink/components/Button.js +23 -0
- package/lib/types/ink/components/ClockContext.d.ts +17 -0
- package/lib/types/ink/components/ClockContext.d.ts.map +1 -0
- package/lib/types/ink/components/ClockContext.js +99 -0
- package/lib/types/ink/components/CursorDeclarationContext.d.ts +30 -0
- package/lib/types/ink/components/CursorDeclarationContext.d.ts.map +1 -0
- package/lib/types/ink/components/CursorDeclarationContext.js +6 -0
- package/lib/types/ink/components/ErrorOverview.d.ts +7 -0
- package/lib/types/ink/components/ErrorOverview.d.ts.map +1 -0
- package/lib/types/ink/components/ErrorOverview.js +49 -0
- package/lib/types/ink/components/Image.d.ts +28 -0
- package/lib/types/ink/components/Image.d.ts.map +1 -0
- package/lib/types/ink/components/Image.js +44 -0
- package/lib/types/ink/components/Link.d.ts +8 -0
- package/lib/types/ink/components/Link.d.ts.map +1 -0
- package/lib/types/ink/components/Link.js +7 -0
- package/lib/types/ink/components/Newline.d.ts +7 -0
- package/lib/types/ink/components/Newline.d.ts.map +1 -0
- package/lib/types/ink/components/Newline.js +5 -0
- package/lib/types/ink/components/NoSelect.d.ts +9 -0
- package/lib/types/ink/components/NoSelect.d.ts.map +1 -0
- package/lib/types/ink/components/NoSelect.js +6 -0
- package/lib/types/ink/components/RawAnsi.d.ts +9 -0
- package/lib/types/ink/components/RawAnsi.d.ts.map +1 -0
- package/lib/types/ink/components/RawAnsi.js +7 -0
- package/lib/types/ink/components/ScrollBox.d.ts +78 -0
- package/lib/types/ink/components/ScrollBox.d.ts.map +1 -0
- package/lib/types/ink/components/ScrollBox.js +309 -0
- package/lib/types/ink/components/Spacer.d.ts +4 -0
- package/lib/types/ink/components/Spacer.d.ts.map +1 -0
- package/lib/types/ink/components/Spacer.js +6 -0
- package/lib/types/ink/components/StdinContext.d.ts +32 -0
- package/lib/types/ink/components/StdinContext.d.ts.map +1 -0
- package/lib/types/ink/components/StdinContext.js +16 -0
- package/lib/types/ink/components/TerminalFocusContext.d.ts +11 -0
- package/lib/types/ink/components/TerminalFocusContext.d.ts.map +1 -0
- package/lib/types/ink/components/TerminalFocusContext.js +11 -0
- package/lib/types/ink/components/TerminalSizeContext.d.ts +6 -0
- package/lib/types/ink/components/TerminalSizeContext.d.ts.map +1 -0
- package/lib/types/ink/components/TerminalSizeContext.js +2 -0
- package/lib/types/ink/components/Text.d.ts +64 -0
- package/lib/types/ink/components/Text.d.ts.map +1 -0
- package/lib/types/ink/components/Text.js +19 -0
- package/lib/types/ink/constants.d.ts +12 -0
- package/lib/types/ink/constants.d.ts.map +1 -0
- package/lib/types/ink/constants.js +11 -0
- package/lib/types/ink/cursor.d.ts +11 -0
- package/lib/types/ink/cursor.d.ts.map +1 -0
- package/lib/types/ink/cursor.js +1 -0
- package/lib/types/ink/devtools.d.ts +7 -0
- package/lib/types/ink/devtools.d.ts.map +1 -0
- package/lib/types/ink/devtools.js +1 -0
- package/lib/types/ink/dom.d.ts +194 -0
- package/lib/types/ink/dom.d.ts.map +1 -0
- package/lib/types/ink/dom.js +424 -0
- package/lib/types/ink/events/click-event.d.ts +23 -0
- package/lib/types/ink/events/click-event.d.ts.map +1 -0
- package/lib/types/ink/events/click-event.js +33 -0
- package/lib/types/ink/events/context-menu-event.d.ts +19 -0
- package/lib/types/ink/events/context-menu-event.d.ts.map +1 -0
- package/lib/types/ink/events/context-menu-event.js +20 -0
- package/lib/types/ink/events/dispatcher.d.ts +63 -0
- package/lib/types/ink/events/dispatcher.d.ts.map +1 -0
- package/lib/types/ink/events/dispatcher.js +194 -0
- package/lib/types/ink/events/drag-event.d.ts +44 -0
- package/lib/types/ink/events/drag-event.d.ts.map +1 -0
- package/lib/types/ink/events/drag-event.js +39 -0
- package/lib/types/ink/events/emitter.d.ts +20 -0
- package/lib/types/ink/events/emitter.d.ts.map +1 -0
- package/lib/types/ink/events/emitter.js +43 -0
- package/lib/types/ink/events/event-handlers.d.ts +65 -0
- package/lib/types/ink/events/event-handlers.d.ts.map +1 -0
- package/lib/types/ink/events/event-handlers.js +40 -0
- package/lib/types/ink/events/event.d.ts +19 -0
- package/lib/types/ink/events/event.d.ts.map +1 -0
- package/lib/types/ink/events/event.js +22 -0
- package/lib/types/ink/events/focus-event.d.ts +19 -0
- package/lib/types/ink/events/focus-event.d.ts.map +1 -0
- package/lib/types/ink/events/focus-event.js +21 -0
- package/lib/types/ink/events/input-event.d.ts +72 -0
- package/lib/types/ink/events/input-event.d.ts.map +1 -0
- package/lib/types/ink/events/input-event.js +185 -0
- package/lib/types/ink/events/keyboard-event.d.ts +40 -0
- package/lib/types/ink/events/keyboard-event.d.ts.map +1 -0
- package/lib/types/ink/events/keyboard-event.js +65 -0
- package/lib/types/ink/events/paste-event.d.ts +11 -0
- package/lib/types/ink/events/paste-event.d.ts.map +1 -0
- package/lib/types/ink/events/paste-event.js +13 -0
- package/lib/types/ink/events/pointer-event.d.ts +61 -0
- package/lib/types/ink/events/pointer-event.d.ts.map +1 -0
- package/lib/types/ink/events/pointer-event.js +61 -0
- package/lib/types/ink/events/resize-event.d.ts +13 -0
- package/lib/types/ink/events/resize-event.d.ts.map +1 -0
- package/lib/types/ink/events/resize-event.js +16 -0
- package/lib/types/ink/events/terminal-event.d.ts +112 -0
- package/lib/types/ink/events/terminal-event.d.ts.map +1 -0
- package/lib/types/ink/events/terminal-event.js +131 -0
- package/lib/types/ink/events/terminal-focus-event.d.ts +21 -0
- package/lib/types/ink/events/terminal-focus-event.d.ts.map +1 -0
- package/lib/types/ink/events/terminal-focus-event.js +18 -0
- package/lib/types/ink/events/wheel-event.d.ts +17 -0
- package/lib/types/ink/events/wheel-event.d.ts.map +1 -0
- package/lib/types/ink/events/wheel-event.js +20 -0
- package/lib/types/ink/flush-tick.d.ts +26 -0
- package/lib/types/ink/flush-tick.d.ts.map +1 -0
- package/lib/types/ink/flush-tick.js +31 -0
- package/lib/types/ink/focus.d.ts +74 -0
- package/lib/types/ink/focus.d.ts.map +1 -0
- package/lib/types/ink/focus.js +188 -0
- package/lib/types/ink/frame.d.ts +128 -0
- package/lib/types/ink/frame.d.ts.map +1 -0
- package/lib/types/ink/frame.js +43 -0
- package/lib/types/ink/geometry-trace.d.ts +51 -0
- package/lib/types/ink/geometry-trace.d.ts.map +1 -0
- package/lib/types/ink/geometry-trace.js +83 -0
- package/lib/types/ink/get-max-width.d.ts +12 -0
- package/lib/types/ink/get-max-width.d.ts.map +1 -0
- package/lib/types/ink/get-max-width.js +12 -0
- package/lib/types/ink/hit-test.d.ts +181 -0
- package/lib/types/ink/hit-test.d.ts.map +1 -0
- package/lib/types/ink/hit-test.js +540 -0
- package/lib/types/ink/hooks/use-animation-frame.d.ts +27 -0
- package/lib/types/ink/hooks/use-animation-frame.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-animation-frame.js +48 -0
- package/lib/types/ink/hooks/use-app.d.ts +7 -0
- package/lib/types/ink/hooks/use-app.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-app.js +7 -0
- package/lib/types/ink/hooks/use-copy-on-select.d.ts +26 -0
- package/lib/types/ink/hooks/use-copy-on-select.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-copy-on-select.js +54 -0
- package/lib/types/ink/hooks/use-declared-cursor.d.ts +31 -0
- package/lib/types/ink/hooks/use-declared-cursor.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-declared-cursor.js +65 -0
- package/lib/types/ink/hooks/use-input.d.ts +41 -0
- package/lib/types/ink/hooks/use-input.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-input.js +81 -0
- package/lib/types/ink/hooks/use-interval.d.ts +23 -0
- package/lib/types/ink/hooks/use-interval.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-interval.js +58 -0
- package/lib/types/ink/hooks/use-search-highlight.d.ts +34 -0
- package/lib/types/ink/hooks/use-search-highlight.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-search-highlight.js +35 -0
- package/lib/types/ink/hooks/use-selection.d.ts +44 -0
- package/lib/types/ink/hooks/use-selection.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-selection.js +64 -0
- package/lib/types/ink/hooks/use-stdin.d.ts +8 -0
- package/lib/types/ink/hooks/use-stdin.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-stdin.js +8 -0
- package/lib/types/ink/hooks/use-tab-status.d.ts +18 -0
- package/lib/types/ink/hooks/use-tab-status.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-tab-status.js +58 -0
- package/lib/types/ink/hooks/use-terminal-focus.d.ts +11 -0
- package/lib/types/ink/hooks/use-terminal-focus.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-terminal-focus.js +15 -0
- package/lib/types/ink/hooks/use-terminal-images.d.ts +14 -0
- package/lib/types/ink/hooks/use-terminal-images.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-terminal-images.js +22 -0
- package/lib/types/ink/hooks/use-terminal-size.d.ts +6 -0
- package/lib/types/ink/hooks/use-terminal-size.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-terminal-size.js +12 -0
- package/lib/types/ink/hooks/use-terminal-title.d.ts +14 -0
- package/lib/types/ink/hooks/use-terminal-title.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-terminal-title.js +30 -0
- package/lib/types/ink/hooks/use-terminal-viewport.d.ts +32 -0
- package/lib/types/ink/hooks/use-terminal-viewport.d.ts.map +1 -0
- package/lib/types/ink/hooks/use-terminal-viewport.js +79 -0
- package/lib/types/ink/ink.d.ts +571 -0
- package/lib/types/ink/ink.d.ts.map +1 -0
- package/lib/types/ink/ink.js +2818 -0
- package/lib/types/ink/input-suppression.d.ts +20 -0
- package/lib/types/ink/input-suppression.d.ts.map +1 -0
- package/lib/types/ink/input-suppression.js +26 -0
- package/lib/types/ink/instances.d.ts +10 -0
- package/lib/types/ink/instances.d.ts.map +1 -0
- package/lib/types/ink/instances.js +13 -0
- package/lib/types/ink/kitty-graphics.d.ts +41 -0
- package/lib/types/ink/kitty-graphics.d.ts.map +1 -0
- package/lib/types/ink/kitty-graphics.js +229 -0
- package/lib/types/ink/layout/engine.d.ts +7 -0
- package/lib/types/ink/layout/engine.d.ts.map +1 -0
- package/lib/types/ink/layout/engine.js +8 -0
- package/lib/types/ink/layout/geometry.d.ts +86 -0
- package/lib/types/ink/layout/geometry.d.ts.map +1 -0
- package/lib/types/ink/layout/geometry.js +95 -0
- package/lib/types/ink/layout/node.d.ts +153 -0
- package/lib/types/ink/layout/node.d.ts.map +1 -0
- package/lib/types/ink/layout/node.js +72 -0
- package/lib/types/ink/layout/yoga.d.ts +70 -0
- package/lib/types/ink/layout/yoga.d.ts.map +1 -0
- package/lib/types/ink/layout/yoga.js +252 -0
- package/lib/types/ink/line-width-cache.d.ts +9 -0
- package/lib/types/ink/line-width-cache.d.ts.map +1 -0
- package/lib/types/ink/line-width-cache.js +45 -0
- package/lib/types/ink/log-update.d.ts +57 -0
- package/lib/types/ink/log-update.d.ts.map +1 -0
- package/lib/types/ink/log-update.js +1000 -0
- package/lib/types/ink/measure-element.d.ts +19 -0
- package/lib/types/ink/measure-element.d.ts.map +1 -0
- package/lib/types/ink/measure-element.js +10 -0
- package/lib/types/ink/measure-text.d.ts +13 -0
- package/lib/types/ink/measure-text.d.ts.map +1 -0
- package/lib/types/ink/measure-text.js +38 -0
- package/lib/types/ink/node-cache.d.ts +54 -0
- package/lib/types/ink/node-cache.d.ts.map +1 -0
- package/lib/types/ink/node-cache.js +45 -0
- package/lib/types/ink/optimizer.d.ts +18 -0
- package/lib/types/ink/optimizer.d.ts.map +1 -0
- package/lib/types/ink/optimizer.js +83 -0
- package/lib/types/ink/output.d.ts +300 -0
- package/lib/types/ink/output.d.ts.map +1 -0
- package/lib/types/ink/output.js +1205 -0
- package/lib/types/ink/parse-keypress.d.ts +217 -0
- package/lib/types/ink/parse-keypress.d.ts.map +1 -0
- package/lib/types/ink/parse-keypress.js +1550 -0
- package/lib/types/ink/reconciler.d.ts +43 -0
- package/lib/types/ink/reconciler.d.ts.map +1 -0
- package/lib/types/ink/reconciler.js +414 -0
- package/lib/types/ink/render-border.d.ts +41 -0
- package/lib/types/ink/render-border.d.ts.map +1 -0
- package/lib/types/ink/render-border.js +159 -0
- package/lib/types/ink/render-node-to-output.d.ts +199 -0
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -0
- package/lib/types/ink/render-node-to-output.js +1758 -0
- package/lib/types/ink/render-to-screen.d.ts +65 -0
- package/lib/types/ink/render-to-screen.d.ts.map +1 -0
- package/lib/types/ink/render-to-screen.js +189 -0
- package/lib/types/ink/renderer.d.ts +34 -0
- package/lib/types/ink/renderer.d.ts.map +1 -0
- package/lib/types/ink/renderer.js +181 -0
- package/lib/types/ink/root.d.ts +109 -0
- package/lib/types/ink/root.d.ts.map +1 -0
- package/lib/types/ink/root.js +96 -0
- package/lib/types/ink/screen.d.ts +545 -0
- package/lib/types/ink/screen.d.ts.map +1 -0
- package/lib/types/ink/screen.js +1607 -0
- package/lib/types/ink/selection.d.ts +529 -0
- package/lib/types/ink/selection.d.ts.map +1 -0
- package/lib/types/ink/selection.js +1292 -0
- package/lib/types/ink/sixel-codec.d.ts +41 -0
- package/lib/types/ink/sixel-codec.d.ts.map +1 -0
- package/lib/types/ink/sixel-codec.js +128 -0
- package/lib/types/ink/sixel-graphics.d.ts +74 -0
- package/lib/types/ink/sixel-graphics.d.ts.map +1 -0
- package/lib/types/ink/sixel-graphics.js +498 -0
- package/lib/types/ink/sixel-worker.d.ts +2 -0
- package/lib/types/ink/sixel-worker.d.ts.map +1 -0
- package/lib/types/ink/sixel-worker.js +12 -0
- package/lib/types/ink/squash-text-nodes.d.ts +30 -0
- package/lib/types/ink/squash-text-nodes.d.ts.map +1 -0
- package/lib/types/ink/squash-text-nodes.js +63 -0
- package/lib/types/ink/stringWidth.d.ts +3 -0
- package/lib/types/ink/stringWidth.d.ts.map +1 -0
- package/lib/types/ink/stringWidth.js +248 -0
- package/lib/types/ink/styles.d.ts +346 -0
- package/lib/types/ink/styles.d.ts.map +1 -0
- package/lib/types/ink/styles.js +307 -0
- package/lib/types/ink/supports-hyperlinks.d.ts +20 -0
- package/lib/types/ink/supports-hyperlinks.d.ts.map +1 -0
- package/lib/types/ink/supports-hyperlinks.js +44 -0
- package/lib/types/ink/tabstops.d.ts +10 -0
- package/lib/types/ink/tabstops.d.ts.map +1 -0
- package/lib/types/ink/tabstops.js +47 -0
- package/lib/types/ink/terminal-focus-state.d.ts +35 -0
- package/lib/types/ink/terminal-focus-state.d.ts.map +1 -0
- package/lib/types/ink/terminal-focus-state.js +57 -0
- package/lib/types/ink/terminal-image-protocol.d.ts +4 -0
- package/lib/types/ink/terminal-image-protocol.d.ts.map +1 -0
- package/lib/types/ink/terminal-image-protocol.js +8 -0
- package/lib/types/ink/terminal-image.d.ts +102 -0
- package/lib/types/ink/terminal-image.d.ts.map +1 -0
- package/lib/types/ink/terminal-image.js +223 -0
- package/lib/types/ink/terminal-querier.d.ts +203 -0
- package/lib/types/ink/terminal-querier.d.ts.map +1 -0
- package/lib/types/ink/terminal-querier.js +286 -0
- package/lib/types/ink/terminal.d.ts +192 -0
- package/lib/types/ink/terminal.d.ts.map +1 -0
- package/lib/types/ink/terminal.js +436 -0
- package/lib/types/ink/termio/ansi.d.ts +75 -0
- package/lib/types/ink/termio/ansi.d.ts.map +1 -0
- package/lib/types/ink/termio/ansi.js +79 -0
- package/lib/types/ink/termio/csi.d.ts +263 -0
- package/lib/types/ink/termio/csi.d.ts.map +1 -0
- package/lib/types/ink/termio/csi.js +367 -0
- package/lib/types/ink/termio/dec.d.ts +61 -0
- package/lib/types/ink/termio/dec.d.ts.map +1 -0
- package/lib/types/ink/termio/dec.js +76 -0
- package/lib/types/ink/termio/esc.d.ts +15 -0
- package/lib/types/ink/termio/esc.d.ts.map +1 -0
- package/lib/types/ink/termio/esc.js +57 -0
- package/lib/types/ink/termio/osc.d.ts +198 -0
- package/lib/types/ink/termio/osc.d.ts.map +1 -0
- package/lib/types/ink/termio/osc.js +475 -0
- package/lib/types/ink/termio/parser.d.ts +46 -0
- package/lib/types/ink/termio/parser.d.ts.map +1 -0
- package/lib/types/ink/termio/parser.js +366 -0
- package/lib/types/ink/termio/sgr.d.ts +17 -0
- package/lib/types/ink/termio/sgr.d.ts.map +1 -0
- package/lib/types/ink/termio/sgr.js +300 -0
- package/lib/types/ink/termio/tokenize.d.ts +56 -0
- package/lib/types/ink/termio/tokenize.d.ts.map +1 -0
- package/lib/types/ink/termio/tokenize.js +290 -0
- package/lib/types/ink/termio/types.d.ts +211 -0
- package/lib/types/ink/termio/types.d.ts.map +1 -0
- package/lib/types/ink/termio/types.js +68 -0
- package/lib/types/ink/termio.d.ts +25 -0
- package/lib/types/ink/termio.d.ts.map +1 -0
- package/lib/types/ink/termio.js +24 -0
- package/lib/types/ink/timeline-rail.d.ts +134 -0
- package/lib/types/ink/timeline-rail.d.ts.map +1 -0
- package/lib/types/ink/timeline-rail.js +175 -0
- package/lib/types/ink/transcript-highlight.d.ts +25 -0
- package/lib/types/ink/transcript-highlight.d.ts.map +1 -0
- package/lib/types/ink/transcript-highlight.js +82 -0
- package/lib/types/ink/truncateToWidth.d.ts +7 -0
- package/lib/types/ink/truncateToWidth.d.ts.map +1 -0
- package/lib/types/ink/truncateToWidth.js +18 -0
- package/lib/types/ink/update-overflow-guard.d.ts +62 -0
- package/lib/types/ink/update-overflow-guard.d.ts.map +1 -0
- package/lib/types/ink/update-overflow-guard.js +164 -0
- package/lib/types/ink/useTerminalNotification.d.ts +45 -0
- package/lib/types/ink/useTerminalNotification.d.ts.map +1 -0
- package/lib/types/ink/useTerminalNotification.js +70 -0
- package/lib/types/ink/warn.d.ts +7 -0
- package/lib/types/ink/warn.d.ts.map +1 -0
- package/lib/types/ink/warn.js +15 -0
- package/lib/types/ink/widest-line.d.ts +7 -0
- package/lib/types/ink/widest-line.d.ts.map +1 -0
- package/lib/types/ink/widest-line.js +19 -0
- package/lib/types/ink/wrap-text.d.ts +10 -0
- package/lib/types/ink/wrap-text.d.ts.map +1 -0
- package/lib/types/ink/wrap-text.js +103 -0
- package/lib/types/ink/wrapAnsi.d.ts +17 -0
- package/lib/types/ink/wrapAnsi.d.ts.map +1 -0
- package/lib/types/ink/wrapAnsi.js +38 -0
- package/lib/types/jsx-runtime.d.ts +2 -0
- package/lib/types/jsx-runtime.d.ts.map +1 -0
- package/lib/types/jsx-runtime.js +13 -0
- package/lib/types/migrationPrefs.d.ts +60 -0
- package/lib/types/migrationPrefs.d.ts.map +1 -0
- package/lib/types/migrationPrefs.js +97 -0
- package/lib/types/minimalMode.d.ts +13 -0
- package/lib/types/minimalMode.d.ts.map +1 -0
- package/lib/types/minimalMode.js +17 -0
- package/lib/types/modelGroups.d.ts +72 -0
- package/lib/types/modelGroups.d.ts.map +1 -0
- package/lib/types/modelGroups.js +97 -0
- package/lib/types/modelPrefs.d.ts +37 -0
- package/lib/types/modelPrefs.d.ts.map +1 -0
- package/lib/types/modelPrefs.js +66 -0
- package/lib/types/modelRecents.d.ts +39 -0
- package/lib/types/modelRecents.d.ts.map +1 -0
- package/lib/types/modelRecents.js +97 -0
- package/lib/types/modelRoute.d.ts +87 -0
- package/lib/types/modelRoute.d.ts.map +1 -0
- package/lib/types/modelRoute.js +125 -0
- package/lib/types/native-ts/yoga-layout/enums.d.ts +183 -0
- package/lib/types/native-ts/yoga-layout/enums.d.ts.map +1 -0
- package/lib/types/native-ts/yoga-layout/enums.js +150 -0
- package/lib/types/native-ts/yoga-layout/index.d.ts +804 -0
- package/lib/types/native-ts/yoga-layout/index.d.ts.map +1 -0
- package/lib/types/native-ts/yoga-layout/index.js +2614 -0
- package/lib/types/oauth.d.ts +15 -0
- package/lib/types/oauth.d.ts.map +1 -0
- package/lib/types/oauth.js +14 -0
- package/lib/types/plugin-host.d.ts +14 -0
- package/lib/types/plugin-host.d.ts.map +1 -0
- package/lib/types/plugin-host.js +19 -0
- package/lib/types/presetPrefs.d.ts +30 -0
- package/lib/types/presetPrefs.d.ts.map +1 -0
- package/lib/types/presetPrefs.js +66 -0
- package/lib/types/reload.d.ts +109 -0
- package/lib/types/reload.d.ts.map +1 -0
- package/lib/types/reload.js +118 -0
- package/lib/types/scenes.d.ts +4 -0
- package/lib/types/scenes.d.ts.map +1 -0
- package/lib/types/scenes.js +4 -0
- package/lib/types/screens/Chat.d.ts +82 -0
- package/lib/types/screens/Chat.d.ts.map +1 -0
- package/lib/types/screens/Chat.js +4299 -0
- package/lib/types/screens/SessionSupervisor.d.ts +84 -0
- package/lib/types/screens/SessionSupervisor.d.ts.map +1 -0
- package/lib/types/screens/SessionSupervisor.js +350 -0
- package/lib/types/screens/SessionTree.d.ts +27 -0
- package/lib/types/screens/SessionTree.d.ts.map +1 -0
- package/lib/types/screens/SessionTree.js +583 -0
- package/lib/types/screens/Settings.d.ts +22 -0
- package/lib/types/screens/Settings.d.ts.map +1 -0
- package/lib/types/screens/Settings.js +592 -0
- package/lib/types/screens/StatusLine.d.ts +48 -0
- package/lib/types/screens/StatusLine.d.ts.map +1 -0
- package/lib/types/screens/StatusLine.js +453 -0
- package/lib/types/screens/StatusMetrics.d.ts +176 -0
- package/lib/types/screens/StatusMetrics.d.ts.map +1 -0
- package/lib/types/screens/StatusMetrics.js +372 -0
- package/lib/types/screens/TrajectoryScene.d.ts +16 -0
- package/lib/types/screens/TrajectoryScene.d.ts.map +1 -0
- package/lib/types/screens/TrajectoryScene.js +374 -0
- package/lib/types/screens/chatOverlay.d.ts +267 -0
- package/lib/types/screens/chatOverlay.d.ts.map +1 -0
- package/lib/types/screens/chatOverlay.js +132 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts +83 -0
- package/lib/types/screens/sessionSupervisor/model.d.ts.map +1 -0
- package/lib/types/screens/sessionSupervisor/model.js +69 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts +120 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.d.ts.map +1 -0
- package/lib/types/screens/sessionSupervisor/useSessionSupervisor.js +639 -0
- package/lib/types/sessionHistory.d.ts +59 -0
- package/lib/types/sessionHistory.d.ts.map +1 -0
- package/lib/types/sessionHistory.js +223 -0
- package/lib/types/sessionModes.d.ts +83 -0
- package/lib/types/sessionModes.d.ts.map +1 -0
- package/lib/types/sessionModes.js +141 -0
- package/lib/types/sessionMounts.d.ts +272 -0
- package/lib/types/sessionMounts.d.ts.map +1 -0
- package/lib/types/sessionMounts.js +706 -0
- package/lib/types/sessionPins.d.ts +33 -0
- package/lib/types/sessionPins.d.ts.map +1 -0
- package/lib/types/sessionPins.js +181 -0
- package/lib/types/sessions/format.d.ts +125 -0
- package/lib/types/sessions/format.d.ts.map +1 -0
- package/lib/types/sessions/format.js +276 -0
- package/lib/types/sessions/resumeFailure.d.ts +38 -0
- package/lib/types/sessions/resumeFailure.d.ts.map +1 -0
- package/lib/types/sessions/resumeFailure.js +58 -0
- package/lib/types/sessions/view.d.ts +162 -0
- package/lib/types/sessions/view.d.ts.map +1 -0
- package/lib/types/sessions/view.js +350 -0
- package/lib/types/settings-sections.d.ts +4 -0
- package/lib/types/settings-sections.d.ts.map +1 -0
- package/lib/types/settings-sections.js +4 -0
- package/lib/types/terminal-utils/cliHighlight.d.ts +20 -0
- package/lib/types/terminal-utils/cliHighlight.d.ts.map +1 -0
- package/lib/types/terminal-utils/cliHighlight.js +53 -0
- package/lib/types/terminal-utils/figures.d.ts +26 -0
- package/lib/types/terminal-utils/figures.d.ts.map +1 -0
- package/lib/types/terminal-utils/figures.js +36 -0
- package/lib/types/terminal-utils/format.d.ts +35 -0
- package/lib/types/terminal-utils/format.d.ts.map +1 -0
- package/lib/types/terminal-utils/format.js +63 -0
- package/lib/types/terminal-utils/hash.d.ts +25 -0
- package/lib/types/terminal-utils/hash.d.ts.map +1 -0
- package/lib/types/terminal-utils/hash.js +41 -0
- package/lib/types/terminal-utils/hyperlink.d.ts +27 -0
- package/lib/types/terminal-utils/hyperlink.d.ts.map +1 -0
- package/lib/types/terminal-utils/hyperlink.js +70 -0
- package/lib/types/terminal-utils/markdown.d.ts +58 -0
- package/lib/types/terminal-utils/markdown.d.ts.map +1 -0
- package/lib/types/terminal-utils/markdown.js +441 -0
- package/lib/types/terminal-utils/mermaid.d.ts +44 -0
- package/lib/types/terminal-utils/mermaid.d.ts.map +1 -0
- package/lib/types/terminal-utils/mermaid.js +83 -0
- package/lib/types/terminal-utils/sessionColors.d.ts +27 -0
- package/lib/types/terminal-utils/sessionColors.d.ts.map +1 -0
- package/lib/types/terminal-utils/sessionColors.js +39 -0
- package/lib/types/terminal-utils/spinnerVerbs.d.ts +3 -0
- package/lib/types/terminal-utils/spinnerVerbs.d.ts.map +1 -0
- package/lib/types/terminal-utils/spinnerVerbs.js +21 -0
- package/lib/types/terminal-utils/syntaxRuns.d.ts +16 -0
- package/lib/types/terminal-utils/syntaxRuns.d.ts.map +1 -0
- package/lib/types/terminal-utils/syntaxRuns.js +79 -0
- package/lib/types/terminal-utils/syntaxTheme.d.ts +12 -0
- package/lib/types/terminal-utils/syntaxTheme.d.ts.map +1 -0
- package/lib/types/terminal-utils/syntaxTheme.js +76 -0
- package/lib/types/theme.d.ts +201 -0
- package/lib/types/theme.d.ts.map +1 -0
- package/lib/types/theme.js +525 -0
- package/lib/types/themeCatalog.d.ts +36 -0
- package/lib/types/themeCatalog.d.ts.map +1 -0
- package/lib/types/themeCatalog.js +159 -0
- package/lib/types/themePrefs.d.ts +28 -0
- package/lib/types/themePrefs.d.ts.map +1 -0
- package/lib/types/themePrefs.js +59 -0
- package/lib/types/tips.d.ts +30 -0
- package/lib/types/tips.d.ts.map +1 -0
- package/lib/types/tips.js +899 -0
- package/lib/types/trajectory/effortIgnition.d.ts +66 -0
- package/lib/types/trajectory/effortIgnition.d.ts.map +1 -0
- package/lib/types/trajectory/effortIgnition.js +142 -0
- package/lib/types/trajectory/format.d.ts +100 -0
- package/lib/types/trajectory/format.d.ts.map +1 -0
- package/lib/types/trajectory/format.js +213 -0
- package/lib/types/trajectory/motion.d.ts +99 -0
- package/lib/types/trajectory/motion.d.ts.map +1 -0
- package/lib/types/trajectory/motion.js +143 -0
- package/lib/types/trajectory/query.d.ts +83 -0
- package/lib/types/trajectory/query.d.ts.map +1 -0
- package/lib/types/trajectory/query.js +187 -0
- package/lib/types/trajectoryPrefs.d.ts +36 -0
- package/lib/types/trajectoryPrefs.d.ts.map +1 -0
- package/lib/types/trajectoryPrefs.js +65 -0
- package/lib/types/tuiDisplayPrefs.d.ts +49 -0
- package/lib/types/tuiDisplayPrefs.d.ts.map +1 -0
- package/lib/types/tuiDisplayPrefs.js +168 -0
- package/lib/types/ui.d.ts +29 -0
- package/lib/types/ui.d.ts.map +1 -0
- package/lib/types/ui.js +25 -0
- package/lib/types/update.d.ts +550 -0
- package/lib/types/update.d.ts.map +1 -0
- package/lib/types/update.js +1751 -0
- package/lib/types/utils/clipboard.d.ts +122 -0
- package/lib/types/utils/clipboard.d.ts.map +1 -0
- package/lib/types/utils/clipboard.js +577 -0
- package/lib/types/utils/credentials.d.ts +13 -0
- package/lib/types/utils/credentials.d.ts.map +1 -0
- package/lib/types/utils/credentials.js +41 -0
- package/lib/types/utils/debug.d.ts +18 -0
- package/lib/types/utils/debug.d.ts.map +1 -0
- package/lib/types/utils/debug.js +37 -0
- package/lib/types/utils/earlyInput.d.ts +6 -0
- package/lib/types/utils/earlyInput.d.ts.map +1 -0
- package/lib/types/utils/earlyInput.js +5 -0
- package/lib/types/utils/env.d.ts +8 -0
- package/lib/types/utils/env.d.ts.map +1 -0
- package/lib/types/utils/env.js +7 -0
- package/lib/types/utils/envUtils.d.ts +8 -0
- package/lib/types/utils/envUtils.d.ts.map +1 -0
- package/lib/types/utils/envUtils.js +13 -0
- package/lib/types/utils/execFileNoThrow.d.ts +17 -0
- package/lib/types/utils/execFileNoThrow.d.ts.map +1 -0
- package/lib/types/utils/execFileNoThrow.js +65 -0
- package/lib/types/utils/externalEditor.d.ts +116 -0
- package/lib/types/utils/externalEditor.d.ts.map +1 -0
- package/lib/types/utils/externalEditor.js +270 -0
- package/lib/types/utils/fileSuggestions.d.ts +12 -0
- package/lib/types/utils/fileSuggestions.d.ts.map +1 -0
- package/lib/types/utils/fileSuggestions.js +40 -0
- package/lib/types/utils/fileTarget.d.ts +46 -0
- package/lib/types/utils/fileTarget.d.ts.map +1 -0
- package/lib/types/utils/fileTarget.js +178 -0
- package/lib/types/utils/fold-long-lines.d.ts +38 -0
- package/lib/types/utils/fold-long-lines.d.ts.map +1 -0
- package/lib/types/utils/fold-long-lines.js +91 -0
- package/lib/types/utils/fullscreen.d.ts +7 -0
- package/lib/types/utils/fullscreen.d.ts.map +1 -0
- package/lib/types/utils/fullscreen.js +9 -0
- package/lib/types/utils/imageResize.d.ts +90 -0
- package/lib/types/utils/imageResize.d.ts.map +1 -0
- package/lib/types/utils/imageResize.js +272 -0
- package/lib/types/utils/intl.d.ts +7 -0
- package/lib/types/utils/intl.d.ts.map +1 -0
- package/lib/types/utils/intl.js +9 -0
- package/lib/types/utils/keymap.d.ts +138 -0
- package/lib/types/utils/keymap.d.ts.map +1 -0
- package/lib/types/utils/keymap.js +351 -0
- package/lib/types/utils/loaded-context.d.ts +25 -0
- package/lib/types/utils/loaded-context.d.ts.map +1 -0
- package/lib/types/utils/loaded-context.js +72 -0
- package/lib/types/utils/log.d.ts +7 -0
- package/lib/types/utils/log.d.ts.map +1 -0
- package/lib/types/utils/log.js +9 -0
- package/lib/types/utils/mentions.d.ts +53 -0
- package/lib/types/utils/mentions.d.ts.map +1 -0
- package/lib/types/utils/mentions.js +133 -0
- package/lib/types/utils/modifiers.d.ts +43 -0
- package/lib/types/utils/modifiers.d.ts.map +1 -0
- package/lib/types/utils/modifiers.js +45 -0
- package/lib/types/utils/narration.d.ts +11 -0
- package/lib/types/utils/narration.d.ts.map +1 -0
- package/lib/types/utils/narration.js +16 -0
- package/lib/types/utils/openExternal.d.ts +50 -0
- package/lib/types/utils/openExternal.d.ts.map +1 -0
- package/lib/types/utils/openExternal.js +170 -0
- package/lib/types/utils/pastedImagePath.d.ts +51 -0
- package/lib/types/utils/pastedImagePath.d.ts.map +1 -0
- package/lib/types/utils/pastedImagePath.js +194 -0
- package/lib/types/utils/paths.d.ts +16 -0
- package/lib/types/utils/paths.d.ts.map +1 -0
- package/lib/types/utils/paths.js +19 -0
- package/lib/types/utils/semver.d.ts +9 -0
- package/lib/types/utils/semver.d.ts.map +1 -0
- package/lib/types/utils/semver.js +24 -0
- package/lib/types/utils/shellQuote.d.ts +14 -0
- package/lib/types/utils/shellQuote.d.ts.map +1 -0
- package/lib/types/utils/shellQuote.js +39 -0
- package/lib/types/utils/sliceAnsi.d.ts +12 -0
- package/lib/types/utils/sliceAnsi.d.ts.map +1 -0
- package/lib/types/utils/sliceAnsi.js +79 -0
- package/lib/types/utils/truncateMiddle.d.ts +9 -0
- package/lib/types/utils/truncateMiddle.d.ts.map +1 -0
- package/lib/types/utils/truncateMiddle.js +28 -0
- package/lib/types/utils/urlGuard.d.ts +28 -0
- package/lib/types/utils/urlGuard.d.ts.map +1 -0
- package/lib/types/utils/urlGuard.js +21 -0
- package/lib/types/utils/workspaceRoot.d.ts +21 -0
- package/lib/types/utils/workspaceRoot.d.ts.map +1 -0
- package/lib/types/utils/workspaceRoot.js +47 -0
- package/lib/types/working-activity.d.ts +32 -0
- package/lib/types/working-activity.d.ts.map +1 -0
- package/lib/types/working-activity.js +38 -0
- package/lib/types/workspaces.d.ts +5 -0
- package/lib/types/workspaces.d.ts.map +1 -0
- package/lib/types/workspaces.js +4 -0
- package/node_modules/@askdkc/dsh-auth/LICENSE +21 -0
- package/node_modules/@askdkc/dsh-auth/README.ja.md +164 -0
- package/node_modules/@askdkc/dsh-auth/README.md +163 -0
- package/node_modules/@askdkc/dsh-auth/cordis.patch.yml +11 -0
- package/node_modules/@askdkc/dsh-auth/dsh-plugin.json +44 -0
- package/node_modules/@askdkc/dsh-auth/lib/command.d.ts +14 -0
- package/node_modules/@askdkc/dsh-auth/lib/command.js +70 -0
- package/node_modules/@askdkc/dsh-auth/lib/credentials.d.ts +63 -0
- package/node_modules/@askdkc/dsh-auth/lib/credentials.js +204 -0
- package/node_modules/@askdkc/dsh-auth/lib/custom-profiles.d.ts +26 -0
- package/node_modules/@askdkc/dsh-auth/lib/custom-profiles.js +142 -0
- package/node_modules/@askdkc/dsh-auth/lib/index.d.ts +96 -0
- package/node_modules/@askdkc/dsh-auth/lib/index.js +263 -0
- package/node_modules/@askdkc/dsh-auth/lib/interaction.d.ts +68 -0
- package/node_modules/@askdkc/dsh-auth/lib/interaction.js +193 -0
- package/node_modules/@askdkc/dsh-auth/lib/nous-oauth.d.ts +5 -0
- package/node_modules/@askdkc/dsh-auth/lib/nous-oauth.js +112 -0
- package/node_modules/@askdkc/dsh-auth/lib/opener.d.ts +32 -0
- package/node_modules/@askdkc/dsh-auth/lib/opener.js +101 -0
- package/node_modules/@askdkc/dsh-auth/lib/pi-ai.d.ts +23 -0
- package/node_modules/@askdkc/dsh-auth/lib/pi-ai.js +27 -0
- package/node_modules/@askdkc/dsh-auth/lib/profiles.d.ts +45 -0
- package/node_modules/@askdkc/dsh-auth/lib/profiles.js +110 -0
- package/node_modules/@askdkc/dsh-auth/lib/service.d.ts +80 -0
- package/node_modules/@askdkc/dsh-auth/lib/service.js +224 -0
- package/node_modules/@askdkc/dsh-auth/package.json +70 -0
- package/node_modules/@dsh-std/command/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/command/LICENSE +21 -0
- package/node_modules/@dsh-std/command/README.md +26 -0
- package/node_modules/@dsh-std/command/README.zh.md +28 -0
- package/node_modules/@dsh-std/command/lib/index.d.ts +144 -0
- package/node_modules/@dsh-std/command/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/command/lib/index.js +252 -0
- package/node_modules/@dsh-std/command/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/command/package.json +22 -0
- package/node_modules/@dsh-std/connection/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/connection/LICENSE +21 -0
- package/node_modules/@dsh-std/connection/README.md +42 -0
- package/node_modules/@dsh-std/connection/README.zh.md +42 -0
- package/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
- package/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
- package/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
- package/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/connection/lib/index.js +158 -0
- package/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
- package/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
- package/node_modules/@dsh-std/connection/lib/memory.js +258 -0
- package/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
- package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
- package/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
- package/node_modules/@dsh-std/connection/package.json +20 -0
- package/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/core/LICENSE +21 -0
- package/node_modules/@dsh-std/core/README.md +13 -0
- package/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/core/package.json +21 -0
- package/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -0
- package/node_modules/@dsh-std/manifest/LICENSE +21 -0
- package/node_modules/@dsh-std/manifest/README.md +5 -0
- package/node_modules/@dsh-std/manifest/README.zh.md +5 -0
- package/node_modules/@dsh-std/manifest/lib/index.d.ts +182 -0
- package/node_modules/@dsh-std/manifest/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/manifest/lib/index.js +625 -0
- package/node_modules/@dsh-std/manifest/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/manifest/package.json +20 -0
- package/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -0
- package/node_modules/@dsh-std/messages/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/messages/LICENSE +21 -0
- package/node_modules/@dsh-std/messages/README.md +5 -0
- package/node_modules/@dsh-std/messages/README.zh.md +7 -0
- package/node_modules/@dsh-std/messages/lib/index.d.ts +50 -0
- package/node_modules/@dsh-std/messages/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/messages/lib/index.js +151 -0
- package/node_modules/@dsh-std/messages/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/messages/package.json +20 -0
- package/node_modules/@dsh-std/messages/schema/message-observer-envelope-0.15.schema.json +54 -0
- package/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -0
- package/node_modules/@dsh-std/presentation/LICENSE +21 -0
- package/node_modules/@dsh-std/presentation/README.md +27 -0
- package/node_modules/@dsh-std/presentation/README.zh.md +29 -0
- package/node_modules/@dsh-std/presentation/lib/callback.d.ts +2 -0
- package/node_modules/@dsh-std/presentation/lib/callback.js +179 -0
- package/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -0
- package/node_modules/@dsh-std/presentation/lib/index.d.ts +262 -0
- package/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/presentation/lib/index.js +550 -0
- package/node_modules/@dsh-std/presentation/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/presentation/lib/interaction.d.ts +2 -0
- package/node_modules/@dsh-std/presentation/lib/interaction.js +2 -0
- package/node_modules/@dsh-std/presentation/lib/operations.d.ts +2 -0
- package/node_modules/@dsh-std/presentation/lib/operations.js +2 -0
- package/node_modules/@dsh-std/presentation/package.json +25 -0
- package/node_modules/@dsh-std/storage/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/storage/LICENSE +21 -0
- package/node_modules/@dsh-std/storage/README.md +5 -0
- package/node_modules/@dsh-std/storage/README.zh.md +7 -0
- package/node_modules/@dsh-std/storage/lib/index.d.ts +48 -0
- package/node_modules/@dsh-std/storage/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/storage/lib/index.js +104 -0
- package/node_modules/@dsh-std/storage/lib/index.js.map +1 -0
- package/node_modules/@dsh-std/storage/package.json +20 -0
- package/node_modules/@dsh-std/storage/schema/local-storage-0.15.schema.json +56 -0
- package/package.json +492 -0
- package/presets/liangshen/.dsh-tui-managed.json +5 -0
- package/presets/liangshen/agent.cordis.yml +425 -0
- package/presets/liangshen/compaction-epoch.mjs +83 -0
- package/presets/liangshen/custom-bash.mjs +301 -0
- package/presets/liangshen/instruction-hint.mjs +190 -0
- package/presets/liangshen/preset.yml +3 -0
- package/presets/liangshen/session-events.mjs +8 -0
- package/presets/liangshen/skill-search.mjs +141 -0
- package/presets/liangshen/tool-bootstrap.mjs +300 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.md +42 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/README.zh.md +42 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js +158 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js +258 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/package.json +20 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.md +5 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/README.zh.md +5 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.d.ts +182 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js +625 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/package.json +20 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/manifest/schema/dsh-plugin-0.15.schema.json +144 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.md +27 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.zh.md +29 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.d.ts +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.js +179 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/callback.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts +262 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js +550 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/interaction.d.ts +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/interaction.js +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/operations.d.ts +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/operations.js +2 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/package.json +25 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/connection/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/manifest/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/messages/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/LICENSE +21 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.md +42 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/README.zh.md +42 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts +125 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/connection-CdGcSQnu.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.d.ts +89 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js +158 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.d.ts +24 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js +258 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js +226 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/resolve-3X6ausgz.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/package.json +20 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/core/package.json +21 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/LICENSE +21 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.md +13 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/README.zh.md +13 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.d.ts +112 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.d.ts.map +1 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js +424 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/lib/index.js.map +1 -0
- package/vendor/dsh-std/packages/storage/node_modules/@dsh-std/core/package.json +21 -0
|
@@ -0,0 +1,1493 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dsh-tui localization — UI strings for Chinese (`zh`, the default) and
|
|
3
|
+
* English (`en`).
|
|
4
|
+
*
|
|
5
|
+
* Resolution order mirrors the `/theme` mechanism (see themePrefs.ts):
|
|
6
|
+
*
|
|
7
|
+
* 1. `DSH_TUI_LANG` env var (`en` / `zh`) — pinned at process start
|
|
8
|
+
* 2. `lang` cordis.yml config key (see Config in index.ts)
|
|
9
|
+
* 3. the persisted `/lang` choice in `~/.dsh-tui/lang.json`
|
|
10
|
+
* 4. the OS locale guess (`LC_ALL` / `LC_MESSAGES` / `LANG`)
|
|
11
|
+
* 5. `zh` (the original hard-coded language)
|
|
12
|
+
*
|
|
13
|
+
* `/lang` switches at runtime and hot-swaps the whole UI. The dictionary is
|
|
14
|
+
* a flat key → per-language text map; `t(key, params)` substitutes
|
|
15
|
+
* `{{name}}` placeholders with the given params. A per-language value is
|
|
16
|
+
* either a plain template or `{ one, other }` plural forms selected via
|
|
17
|
+
* `Intl.PluralRules` on the `count` param (zh has no grammatical number and
|
|
18
|
+
* always resolves to `other`). Missing keys render the key itself so a typo
|
|
19
|
+
* is visible in the UI instead of silently blank.
|
|
20
|
+
*
|
|
21
|
+
* The dictionary shape is enforced at compile time (`satisfies` below):
|
|
22
|
+
* every entry carries zh, and en is optional only for the `cmd-desc-*`
|
|
23
|
+
* family whose en truth lives in the command registry (see {@link tOr}).
|
|
24
|
+
* scripts/verify-i18n.ts adds the checks types cannot express: placeholder
|
|
25
|
+
* parity between languages, single-brace typos, dead keys, and English
|
|
26
|
+
* UI-copy literals outside the dictionary (issue #980's leak shape).
|
|
27
|
+
*
|
|
28
|
+
* ## Adding a language (e.g. `ja`) — the full checklist
|
|
29
|
+
*
|
|
30
|
+
* The architecture is the standard flat-dict shape; a new language is
|
|
31
|
+
* translation work plus this mechanical touchpoint list (the compiler and
|
|
32
|
+
* verify-i18n fail until every step is done — partial translations cannot
|
|
33
|
+
* ship silently):
|
|
34
|
+
*
|
|
35
|
+
* 1. `Lang` union + `LANGS` display order (this file).
|
|
36
|
+
* 2. `isLang()` — add the literal.
|
|
37
|
+
* 3. `pluralRules` — add `new Intl.PluralRules('<tag>')`; if the language
|
|
38
|
+
* uses CLDR categories beyond one/other (ru/pl/ar…), widen `I18nText`
|
|
39
|
+
* to carry them and extend `pickText` accordingly.
|
|
40
|
+
* 4. Dictionary type below: add `ja?: I18nText` to the `satisfies` shape.
|
|
41
|
+
* Decide optionality deliberately: required = compile error per missing
|
|
42
|
+
* key (recommended — a half-translated UI is worse than none); optional
|
|
43
|
+
* = `t()` renders the raw key for gaps, so also give `t()`/`tOr()` an
|
|
44
|
+
* explicit fallback order (e.g. ja → en → key) if you go optional.
|
|
45
|
+
* 5. scripts/verify-i18n.ts: the completeness loop (§1) hardcodes the
|
|
46
|
+
* ['zh','en'] pair — extend it, and re-review FORBIDDEN_LITERALS
|
|
47
|
+
* (English sentences stay banned outside the dict; add the new
|
|
48
|
+
* language's equivalents only if the leak shape repeats).
|
|
49
|
+
* 6. Translate the dictionary (~1k keys today); zh comments above each
|
|
50
|
+
* key family describe tone/register — keep them.
|
|
51
|
+
* 7. `detectLocaleLang()` — map the new tag in the OS-locale guess.
|
|
52
|
+
* 8. Rendered-output regression: extend scripts/verify-toolcard-i18n.tsx
|
|
53
|
+
* style fixtures' language passes so the localized strings are proven
|
|
54
|
+
* on screen, not just present in the dict.
|
|
55
|
+
*/
|
|
56
|
+
import { mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
57
|
+
import { join } from 'node:path';
|
|
58
|
+
import { DATA_DIR } from './utils/paths.js';
|
|
59
|
+
const PREFS_DIR = DATA_DIR;
|
|
60
|
+
/** The languages shipped with the plugin, in display order. */
|
|
61
|
+
export const LANGS = ['zh', 'en'];
|
|
62
|
+
const dict = {
|
|
63
|
+
// ── channel.ts ───────────────────────────────────────────────────────
|
|
64
|
+
// Working spinner labels. WorkingSpinner resolves these through the
|
|
65
|
+
// `spinner-verb-*` dynamic family so the status stays localized after a
|
|
66
|
+
// runtime language switch.
|
|
67
|
+
'spinner-verb-analyzing': { zh: '分析中', en: 'Analyzing' },
|
|
68
|
+
'spinner-verb-thinking': { zh: '思考中', en: 'Thinking' },
|
|
69
|
+
'spinner-verb-working': { zh: '工作中', en: 'Working' },
|
|
70
|
+
'spinner-verb-considering': { zh: '斟酌中', en: 'Considering' },
|
|
71
|
+
'spinner-verb-reviewing': { zh: '审阅中', en: 'Reviewing' },
|
|
72
|
+
'spinner-verb-planning': { zh: '规划中', en: 'Planning' },
|
|
73
|
+
'spinner-verb-checking': { zh: '检查中', en: 'Checking' },
|
|
74
|
+
'spinner-verb-reading': { zh: '读取中', en: 'Reading' },
|
|
75
|
+
'spinner-verb-searching': { zh: '检索中', en: 'Searching' },
|
|
76
|
+
'spinner-verb-building': { zh: '构建中', en: 'Building' },
|
|
77
|
+
'spinner-verb-testing': { zh: '测试中', en: 'Testing' },
|
|
78
|
+
'spinner-verb-connecting': { zh: '连接中', en: 'Connecting' },
|
|
79
|
+
'spinner-verb-preparing': { zh: '准备中', en: 'Preparing' },
|
|
80
|
+
'spinner-verb-exploring': { zh: '探索中', en: 'Exploring' },
|
|
81
|
+
'spinner-verb-reasoning': { zh: '推理中', en: 'Reasoning' },
|
|
82
|
+
'spinner-verb-summarizing': { zh: '总结中', en: 'Summarizing' },
|
|
83
|
+
'spinner-verb-resolving': { zh: '解析中', en: 'Resolving' },
|
|
84
|
+
'spinner-verb-responding': { zh: '回应中', en: 'Responding' },
|
|
85
|
+
'activity-indicator-already': { zh: '指示器已是:{{name}}', en: 'Indicator already set: {{name}}' },
|
|
86
|
+
'activity-indicator-switched': { zh: '指示器已切换:{{name}}(已保存)', en: 'Indicator switched: {{name}} (saved)' },
|
|
87
|
+
'activity-pref-write-failed': { zh: '无法写入 ~/.dsh-tui/working-activity.json,切换未保存', en: 'Cannot write ~/.dsh-tui/working-activity.json, switch not saved' },
|
|
88
|
+
'model-pref-write-failed': { zh: '无法写入 ~/.dsh-tui/model.json,模型选择不会保存到重启后', en: 'Cannot write ~/.dsh-tui/model.json, the model choice will not survive a restart' },
|
|
89
|
+
'model-route-invalid': { zh: '持久化的模型路由 {{provider}}/{{model}} 不在该 provider 的模型列表中,已整体回退到 {{fallback}}', en: 'Persisted model route {{provider}}/{{model}} is not advertised by that provider; fell back to {{fallback}}' },
|
|
90
|
+
'unknown-activity-preset': { zh: '未知预设「{{name}}」· /activity frames 查看全部', en: 'Unknown preset "{{name}}" · /activity frames to view all' },
|
|
91
|
+
'preset-unavailable': { zh: 'Preset 不可用——当前组合未挂载 agent-presets 名册', en: 'Preset unavailable — the agent-presets roster is not mounted' },
|
|
92
|
+
'preset-agent-running': { zh: 'Agent 运行中,无法切换 preset', en: 'Agent is running, cannot switch preset' },
|
|
93
|
+
'preset-not-found': { zh: 'Preset「{{id}}」不存在 · {{err}}', en: 'Preset "{{id}}" not found · {{err}}' },
|
|
94
|
+
'preset-load-failed': { zh: 'Preset「{{id}}」无法加载 · {{broken}}', en: 'Preset "{{id}}" failed to load · {{broken}}' },
|
|
95
|
+
'preset-already-current': { zh: '当前 preset 已是:{{id}}', en: 'Current preset already: {{id}}' },
|
|
96
|
+
'preset-pref-write-failed': { zh: '无法写入 ~/.dsh-tui/agent-preset.json,选择未保存', en: 'Cannot write ~/.dsh-tui/agent-preset.json, selection not saved' },
|
|
97
|
+
'preset-locked-saved-default': { zh: '会话已开始,preset 已锁定(当前:{{current}})· 已保存为默认:{{id}}(/new 或下次启动生效)', en: 'Session already started, preset locked (current: {{current}}) · Saved as default: {{id}} (applies on /new or next start)' },
|
|
98
|
+
'preset-switch-failed': { zh: 'Preset 切换失败 · {{err}}', en: 'Preset switch failed · {{err}}' },
|
|
99
|
+
'preset-switched-pref-failed': { zh: 'Preset 已切换:{{id}},但默认偏好写入失败(重启后不保留)', en: 'Preset switched: {{id}}, but writing the default preference failed (won\'t persist after restart)' },
|
|
100
|
+
'preset-switched-saved': { zh: 'Preset 已切换:{{id}}(已保存为默认)', en: 'Preset switched: {{id}} (saved as default)' },
|
|
101
|
+
// Built-in preset display text (issue: the /preset picker showed the raw
|
|
102
|
+
// preset.yml copy, which is Chinese, even under `en`). zh mirrors the
|
|
103
|
+
// stock preset.yml `name`/`description` verbatim (zh display keeps the
|
|
104
|
+
// roster text — see listPresets in channel.ts); en is the localized
|
|
105
|
+
// surface. Keys resolve per roster id via tOr(`preset-name-${id}`), so
|
|
106
|
+
// unknown (user-authored) ids fall through untouched.
|
|
107
|
+
'preset-name-standard': { zh: '标准模式', en: 'Standard' },
|
|
108
|
+
'preset-desc-standard': { zh: '功能完整的编码 Agent,支持文件编辑、Shell、文件与网页检索、Skills、计划、目标、子代理和工作流。', en: 'Full-featured coding agent: file editing, shell, file & web search, skills, plans, goals, subagents and workflows.' },
|
|
109
|
+
'preset-name-minimal': { zh: '极简模式', en: 'Minimal' },
|
|
110
|
+
'preset-desc-minimal': { zh: '仅提供持久 bash 与 str_replace_editor 的双工具编码 Agent。', en: 'A two-tool coding agent exposing only persistent bash and str_replace_editor.' },
|
|
111
|
+
'preset-name-code': { zh: 'PTC 模式', en: 'PTC' },
|
|
112
|
+
'preset-desc-code': { zh: '具备标准模式的全部能力,并通过 Code Mode SDK 呈现工具,让模型用一个 TypeScript 程序组合多步操作。', en: 'Everything standard mode offers, with tools exposed through the Code Mode SDK so the model composes multi-step operations in one TypeScript program.' },
|
|
113
|
+
'preset-name-cordis': { zh: '创造模式', en: 'Creation' },
|
|
114
|
+
'preset-desc-cordis': { zh: '用于创建自定义 Agent preset:具备标准模式的全部能力,并提供运行时检查、插件实验和 preset 创作指导。', en: 'For authoring custom agent presets: everything standard mode offers plus runtime inspection, plugin experiments and preset-authoring guidance.' },
|
|
115
|
+
'preset-name-liangshen': { zh: '梁神模式', en: 'Liangshen mode' },
|
|
116
|
+
'preset-desc-liangshen': { zh: '主 Agent 与子 Agent 首轮均保持 Minimal 双工具,首次工具调用后开放完整目录,压缩后重新锚定。', en: 'Root and delegated agents keep the minimal two-tool pair on the first turn; the full catalog opens after the first tool call and re-anchors after compaction.' },
|
|
117
|
+
'mcp-none-configured': { zh: '未配置 MCP 服务器。', en: 'No MCP servers configured.' },
|
|
118
|
+
'mcp-insert-hint': { zh: '在 profile 补丁层(~/.dsh/profiles/dsh-tui/cordis.patch.yml)insert 一行即可,例:', en: 'Insert one line in the profile patch layer (~/.dsh/profiles/dsh-tui/cordis.patch.yml), e.g.:' },
|
|
119
|
+
'mcp-readme-hint': { zh: '详见仓库 README 的 MCP 章节。', en: 'See the MCP section of the repo README.' },
|
|
120
|
+
'mcp-server-tools': { zh: '{{server}}({{count}} 个工具): {{tools}}', en: '{{server}} ({{count}} tools): {{tools}}' },
|
|
121
|
+
'child-stderr-line': { zh: '子进程 stderr: {{line}}', en: 'Subprocess stderr: {{line}}' },
|
|
122
|
+
'child-stderr-line-repeat': { zh: '子进程 stderr: {{line}}(重复 {{count}} 次)', en: 'Subprocess stderr: {{line}} (repeated {{count}}×)' },
|
|
123
|
+
'export-title': { zh: '# dsh-tui 会话导出', en: '# dsh-tui session export' },
|
|
124
|
+
'export-time': { zh: '- 导出时间: {{time}}', en: '- Exported: {{time}}' },
|
|
125
|
+
'export-model': { zh: '- 模型: {{model}}', en: '- Model: {{model}}' },
|
|
126
|
+
'export-session': { zh: '- 会话: {{id}}', en: '- Session: {{id}}' },
|
|
127
|
+
'export-dir': { zh: '- 目录: {{cwd}}', en: '- Directory: {{cwd}}' },
|
|
128
|
+
'mentions-attached': { zh: '已附加 {{count}} 个文件引用', en: { one: 'Attached {{count}} file reference', other: 'Attached {{count}} file references' } },
|
|
129
|
+
'mentions-missing': { zh: '未找到引用: {{paths}}', en: 'References not found: {{paths}}' },
|
|
130
|
+
// T06 (PR-B · AC-5): transcript indicator above a user bubble whose send
|
|
131
|
+
// consumed the live IDE selection. The ⧉ glyph lives in MessageList, not here.
|
|
132
|
+
'selection-attached': {
|
|
133
|
+
zh: '已选中 {{lines}} 行 · {{path}}',
|
|
134
|
+
en: { one: 'Selected {{lines}} line from {{path}}', other: 'Selected {{lines}} lines from {{path}}' },
|
|
135
|
+
},
|
|
136
|
+
'transcript-image': { zh: '图片', en: 'Image' },
|
|
137
|
+
'image-preview-previous': { zh: '上一张', en: 'Previous image' },
|
|
138
|
+
'image-preview-next': { zh: '下一张', en: 'Next image' },
|
|
139
|
+
'image-preview-open-original': { zh: '打开原图', en: 'Open original' },
|
|
140
|
+
'image-preview-opening': { zh: '正在打开原图…', en: 'Opening original...' },
|
|
141
|
+
'image-preview-open-failed': { zh: '原图打开失败,点击重试', en: 'Could not open original; retry' },
|
|
142
|
+
'image-preview-fit': { zh: '适应', en: 'Fit' },
|
|
143
|
+
'image-preview-actual': { zh: '100% 原像素', en: 'Actual pixels (100%)' },
|
|
144
|
+
'image-preview-no-metrics': { zh: '终端未报告字符格像素尺寸', en: 'Terminal cell pixel size unavailable' },
|
|
145
|
+
'image-preview-zoom-in': { zh: '放大', en: 'Zoom in' },
|
|
146
|
+
'image-preview-zoom-out': { zh: '缩小', en: 'Zoom out' },
|
|
147
|
+
'image-preview-left': { zh: '向左平移', en: 'Pan left' },
|
|
148
|
+
'image-preview-right': { zh: '向右平移', en: 'Pan right' },
|
|
149
|
+
'image-preview-up': { zh: '向上平移', en: 'Pan up' },
|
|
150
|
+
'image-preview-down': { zh: '向下平移', en: 'Pan down' },
|
|
151
|
+
'transcript-image-loading': { zh: '正在加载 {{name}}', en: 'Loading {{name}}' },
|
|
152
|
+
'transcript-image-ready': { zh: '图片 · {{name}}', en: 'Image · {{name}}' },
|
|
153
|
+
'transcript-image-unavailable': { zh: '无法预览 {{name}}', en: 'Cannot preview {{name}}' },
|
|
154
|
+
'transcript-image-message': { zh: '{{count}} 张图片', en: { one: '{{count}} image', other: '{{count}} images' } },
|
|
155
|
+
'input-image-token-stale': { zh: '{{token}} 已失效,发送时不会附带图片', en: '{{token}} is no longer staged; no image will attach' },
|
|
156
|
+
'input-images-staged': { zh: '已附加 {{count}} 张图片', en: { one: 'Attached {{count}} image', other: 'Attached {{count}} images' } },
|
|
157
|
+
'input-images-staged-adapted': { zh: '已附加 {{count}} 张图片 · {{adapted}} 张已适配', en: { one: 'Attached {{count}} image · {{adapted}} adapted', other: 'Attached {{count}} images · {{adapted}} adapted' } },
|
|
158
|
+
'send-failed': { zh: '发送失败 · {{err}}', en: 'Send failed · {{err}}' },
|
|
159
|
+
'export-user-section': { zh: '## 用户', en: '## User' },
|
|
160
|
+
'export-thinking-section': { zh: '## 思考', en: '## Thinking' },
|
|
161
|
+
'export-assistant-section': { zh: '## 助手', en: '## Assistant' },
|
|
162
|
+
'export-tool-section': { zh: '## 工具 · {{name}}', en: '## Tool · {{name}}' },
|
|
163
|
+
'export-result-section': { zh: '### 结果', en: '### Result' },
|
|
164
|
+
'agentsmd-project': { zh: '## 项目', en: '## Project' },
|
|
165
|
+
'agentsmd-project-body': { zh: '(在此描述项目的目标、结构与约定——这份文件会注入给每个 agent 作为工作区上下文。)', en: '(Describe the project\'s goals, structure and conventions here — this file is injected to every agent as workspace context.)' },
|
|
166
|
+
'agentsmd-conventions': { zh: '## 约定', en: '## Conventions' },
|
|
167
|
+
'agentsmd-convention-read': { zh: '- 改动前先阅读相关模块', en: '- Read the relevant modules before making changes' },
|
|
168
|
+
'agentsmd-convention-style': { zh: '- 保持与现有代码风格一致', en: '- Keep consistent with the existing code style' },
|
|
169
|
+
'doctor-api-key': { zh: 'API key: {{state}}', en: 'API key: {{state}}' },
|
|
170
|
+
'doctor-key-configured-env': { zh: '已配置(环境变量)', en: 'configured (environment)' },
|
|
171
|
+
'doctor-key-configured-store': { zh: '已配置(DSH 凭据库)', en: 'configured (DSH credential store)' },
|
|
172
|
+
'doctor-key-missing': { zh: '未配置(环境变量与 DSH 凭据库中都没有 DEEPSEEK_API_KEY)', en: 'not configured (neither DEEPSEEK_API_KEY nor a DSH credential-store ref)' },
|
|
173
|
+
'doctor-model': { zh: '模型: {{model}} · 提供方: {{provider}}', en: 'Model: {{model}} · Provider: {{provider}}' },
|
|
174
|
+
'doctor-cwd': { zh: '工作目录: {{cwd}}', en: 'Working directory: {{cwd}}' },
|
|
175
|
+
'doctor-context-window': { zh: '上下文窗口: {{window}} tokens', en: 'Context window: {{window}} tokens' },
|
|
176
|
+
'doctor-unknown': { zh: '未知', en: 'unknown' },
|
|
177
|
+
'doctor-session': { zh: '会话: {{id}}', en: 'Session: {{id}}' },
|
|
178
|
+
'doctor-config': { zh: '配置: {{candidate}} {{state}}', en: 'Config: {{candidate}} {{state}}' },
|
|
179
|
+
'doctor-config-missing': { zh: '(不存在)', en: '(missing)' },
|
|
180
|
+
'doctor-storage': { zh: '会话存储: {{dir}} {{state}}', en: 'Session storage: {{dir}} {{state}}' },
|
|
181
|
+
'doctor-storage-uninit': { zh: '(未初始化)', en: '(not initialized)' },
|
|
182
|
+
'subagent-not-mounted': { zh: '子代理服务未挂载(leaf 未启用 subagent)', en: 'Subagent service not mounted (leaf has no subagent)' },
|
|
183
|
+
'subagent-none': { zh: '当前会话暂无子代理', en: 'No subagents in the current session' },
|
|
184
|
+
'subagent-resumable': { zh: '可续', en: 'resumable' },
|
|
185
|
+
'subagent-oneshot': { zh: '一次性', en: 'one-shot' },
|
|
186
|
+
'subagent-row': { zh: '{{mode}} {{label}}{{activity}} · {{id}}', en: '{{mode}} {{label}}{{activity}} · {{id}}' },
|
|
187
|
+
'subagent-running': { zh: ' 运行中', en: ' running' },
|
|
188
|
+
'subagent-archived': { zh: ' 已归档', en: ' archived' },
|
|
189
|
+
'subagent-query-failed': { zh: '查询失败 · {{err}}', en: 'Query failed · {{err}}' },
|
|
190
|
+
'subagent-tools': { zh: '工具', en: 'Tools' },
|
|
191
|
+
'subagent-status-running': { zh: '运行中', en: 'running' },
|
|
192
|
+
'subagent-status-completed': { zh: '已完成', en: 'completed' },
|
|
193
|
+
'subagent-status-failed': { zh: '失败', en: 'failed' },
|
|
194
|
+
'agent-preset-switched': { zh: 'Agent preset 已切换:{{preset}}', en: 'Agent preset switched: {{preset}}' },
|
|
195
|
+
'context-low-warning': { zh: '上下文即将耗尽(剩余 {{percent}}%)· 运行 /clear 或新建会话', en: 'Context low ({{percent}}% remaining) · Run /clear or start a new session' },
|
|
196
|
+
'rewind-unavailable': { zh: '回退不可用——会话服务未加载', en: 'Rewind unavailable — session services not loaded' },
|
|
197
|
+
'rewind-settling': { zh: '无法回退——回合仍在收尾,请稍候再试', en: 'Cannot rewind — the turn is still settling, try again in a moment' },
|
|
198
|
+
'rewind-fork-failed': { zh: '无法回退到该处 · {{err}}', en: 'Cannot rewind to this point · {{err}}' },
|
|
199
|
+
'rewind-create-failed': { zh: '回退失败——无法创建替代会话', en: 'Rewind failed — could not create the replacement session' },
|
|
200
|
+
'rewind-attach-failed': { zh: '已回退,但工作区挂载失败 · {{err}}', en: 'Session rewound, but workspace attachment failed · {{err}}' },
|
|
201
|
+
'rewind-no-persistence': { zh: '回退不可用——持久化服务未加载', en: 'Rewind unavailable — session persistence not loaded' },
|
|
202
|
+
'rewind-load-failed': { zh: '无法读取该会话日志 · {{err}}', en: 'Could not read that session log · {{err}}' },
|
|
203
|
+
'rewind-first-message': { zh: '不能回退到第一条消息之前', en: 'Cannot rewind past the very first message' },
|
|
204
|
+
'rewind-noop': { zh: '该点之后没有可回退的内容', en: 'Nothing to rewind past this point' },
|
|
205
|
+
'rewind-session-changed': { zh: '会话已切换,回退已放弃', en: 'The session changed; the rewind was dropped' },
|
|
206
|
+
'tree-unavailable': { zh: '会话树不可用——持久化服务未加载', en: 'Session tree unavailable — session persistence not loaded' },
|
|
207
|
+
'fork-unavailable': { zh: '分叉不可用——会话服务未加载', en: 'Fork unavailable — session services not loaded' },
|
|
208
|
+
'fork-while-working': { zh: '回合运行中,无法分叉会话', en: 'Cannot fork while a turn is running' },
|
|
209
|
+
'fork-failed': { zh: '分叉失败 · {{err}}', en: 'Fork failed · {{err}}' },
|
|
210
|
+
'fork-create-failed': { zh: '分叉失败——无法创建分叉会话', en: 'Fork failed — could not create the forked session' },
|
|
211
|
+
'fork-attach-failed': { zh: '已分叉,但工作区挂载失败 · {{err}}', en: 'Session forked, but workspace attachment failed · {{err}}' },
|
|
212
|
+
'fork-done': {
|
|
213
|
+
zh: '已分叉({{id}})——仍在原会话中\n新进程进入分叉:{{command}}',
|
|
214
|
+
en: 'Forked ({{id}}) — still in the original session\nEnter the fork in a new process: {{command}}',
|
|
215
|
+
},
|
|
216
|
+
// ── /tree screen (session family tree) ─────────────────────────────────
|
|
217
|
+
'tree-title': { zh: '会话树', en: 'Session tree' },
|
|
218
|
+
'tree-sessions': { zh: '会话', en: 'sessions' },
|
|
219
|
+
'tree-loading': { zh: '正在加载会话树…', en: 'Loading the session tree…' },
|
|
220
|
+
'tree-rewinding': { zh: '正在分叉并切换…', en: 'Forking and switching…' },
|
|
221
|
+
'tree-empty': { zh: '没有可显示的条目', en: 'No entries to show' },
|
|
222
|
+
'tree-truncated': { zh: '已截断', en: 'truncated' },
|
|
223
|
+
'tree-search': { zh: '输入即搜索…', en: 'Type to search…' },
|
|
224
|
+
'tree-filter-default': { zh: '默认', en: 'default' },
|
|
225
|
+
'tree-filter-no-tools': { zh: '无工具', en: 'no tools' },
|
|
226
|
+
'tree-filter-user-only': { zh: '仅用户', en: 'user only' },
|
|
227
|
+
'tree-filter-all': { zh: '全部', en: 'all' },
|
|
228
|
+
'tree-kind-user': { zh: '用户消息', en: 'user message' },
|
|
229
|
+
'tree-kind-assistant': { zh: '助手回复', en: 'assistant message' },
|
|
230
|
+
'tree-kind-tool': { zh: '工具调用', en: 'tool call' },
|
|
231
|
+
'tree-kind-compact': { zh: '压缩检查点', en: 'compaction' },
|
|
232
|
+
'tree-kind-interrupt': { zh: '中断', en: 'interrupt' },
|
|
233
|
+
'tree-kind-notice': { zh: '通知', en: 'notice' },
|
|
234
|
+
'tree-empty-fork': { zh: '(空分叉)', en: '(empty fork)' },
|
|
235
|
+
'tree-unreadable': { zh: '(日志无法读取)', en: '(unreadable log)' },
|
|
236
|
+
'tree-unloaded': { zh: '(超出预算未加载)', en: '(not loaded — over budget)' },
|
|
237
|
+
'tree-first-message': { zh: '不能回退到第一条消息之前', en: 'Cannot rewind past the very first message' },
|
|
238
|
+
'tree-adopt-live': { zh: '当前会话就在这条分支上', en: 'The live session is already on this branch' },
|
|
239
|
+
'tree-adopt-unavailable': { zh: '该分支无法整体切换(未加载到末端)', en: 'Cannot adopt this branch (its tip was not loaded)' },
|
|
240
|
+
'tree-menu-rewind': { zh: '回退到这里', en: 'Rewind here' },
|
|
241
|
+
'tree-menu-rewind-detail': { zh: '丢弃该轮对话,提示词回到输入框', en: 'Drops that turn; its prompt returns to the input' },
|
|
242
|
+
'tree-menu-fork': { zh: '从这分叉', en: 'Fork here' },
|
|
243
|
+
'tree-menu-fork-detail': { zh: '保留这条消息,从这里开新分支', en: 'Keeps this entry and branches here' },
|
|
244
|
+
'tree-menu-adopt': { zh: '切换到该分支', en: 'Adopt this branch' },
|
|
245
|
+
'tree-menu-adopt-detail': { zh: '保留整条分支并切换过去', en: 'Switches to the whole branch, content kept' },
|
|
246
|
+
'tree-menu-cancel': { zh: '取消', en: 'Cancel' },
|
|
247
|
+
'tree-confirm-rewind': { zh: '回退到「{{text}}」?', en: 'Rewind to "{{text}}"?' },
|
|
248
|
+
'tree-confirm-drop': { zh: '回退到「{{text}}」?该轮 {{n}} 条消息将丢弃', en: 'Rewind to "{{text}}"? Drops that turn ({{n}} entries)' },
|
|
249
|
+
'tree-confirm-adopt': { zh: '切换到「{{text}}」所在分支?', en: 'Switch to the branch of "{{text}}"?' },
|
|
250
|
+
'tree-confirm-drops-branch': { zh: '注意:该分支的全部内容都在这一轮里,回退后将看不到它们', en: 'Heads-up: this branch\u2019s whole content is that one turn — it disappears from the fork' },
|
|
251
|
+
'tree-hint': {
|
|
252
|
+
zh: '**Enter** 菜单 · **{{mod}}F** 从这分叉 · **{{mod}}B** 切到分支 · **{{mod}}O** 过滤 · 点击行出菜单 · 输入搜索 · Esc 退出',
|
|
253
|
+
en: '**Enter** menu · **{{mod}}F** fork here · **{{mod}}B** adopt branch · **{{mod}}O** filter · click a row for the menu · type to search · Esc exits',
|
|
254
|
+
},
|
|
255
|
+
'tree-hint-short': { zh: '**Enter** 菜单 · 点击行出菜单 · Esc 退出', en: '**Enter** menu · click a row · Esc exits' },
|
|
256
|
+
'tree-hint-menu': { zh: '**↑↓** 选择 · **Enter** 执行 · 首字母直达 · Esc 返回', en: '**↑↓** move · **Enter** run · letter keys jump · Esc back' },
|
|
257
|
+
'tree-hint-confirm': { zh: '**Enter** 确认 · Esc 取消', en: '**Enter** to confirm · Esc to cancel' },
|
|
258
|
+
'tree-refused': { zh: '操作未执行(原因已记录到会话通知)', en: 'Not executed — the reason was notified to the conversation' },
|
|
259
|
+
'tree-rewind-failed': { zh: '操作失败 · {{message}}', en: 'Action failed · {{message}}' },
|
|
260
|
+
'tree-rewound': { zh: '已回退——编辑后重新发送', en: 'Earlier turn restored — edit your message to continue' },
|
|
261
|
+
'tree-forked': { zh: '已从此处分叉', en: 'Forked from this point' },
|
|
262
|
+
'tree-adopted': { zh: '已切换到该分支', en: 'Switched to that branch' },
|
|
263
|
+
'tree-preview-title': { zh: '预览', en: 'Preview' },
|
|
264
|
+
'tree-branch-live': { zh: '当前会话', en: 'live session' },
|
|
265
|
+
'resume-while-working': { zh: '回合运行中,无法恢复会话', en: 'Cannot resume while a turn is running' },
|
|
266
|
+
'resume-unavailable': { zh: '恢复不可用——agents 服务未加载', en: 'Resume unavailable — agents service not loaded' },
|
|
267
|
+
'resume-session-occupied': { zh: '该会话正被其他 TUI 终端占用(进程 {{pid}}),无法进入', en: 'Another TUI terminal holds this session (pid {{pid}}); cannot enter' },
|
|
268
|
+
'resume-mount-busy': { zh: '无法确认该会话是否被其他终端占用(占用检查正忙),请稍后重试', en: 'Could not confirm whether another terminal holds this session (the occupancy check is busy); retry in a moment' },
|
|
269
|
+
'resume-mount-unavailable': { zh: '无法验证该会话的占用状态 · {{detail}}', en: 'Could not verify this session\'s occupancy · {{detail}}' },
|
|
270
|
+
'session-mount-occupied-short': { zh: '占用 pid {{pid}}', en: 'held by pid {{pid}}' },
|
|
271
|
+
'resume-failed': { zh: '恢复失败 · {{err}}', en: 'Resume failed · {{err}}' },
|
|
272
|
+
'resume-attach-failed': { zh: '已恢复会话,但工作区挂载失败 · {{err}}', en: 'Session resumed, but workspace attachment failed · {{err}}' },
|
|
273
|
+
'resume-session-changed': { zh: '会话已切换,恢复已放弃', en: 'The session changed; the resume was dropped' },
|
|
274
|
+
'new-session-while-working': { zh: '回合运行中,无法新建会话', en: 'Cannot start a new session while a turn is running' },
|
|
275
|
+
'new-session-unavailable': { zh: '新建会话不可用——agents 服务未加载', en: 'New session unavailable — agents service not loaded' },
|
|
276
|
+
'new-session-failed': { zh: '新建会话失败 · {{err}}', en: 'New session failed · {{err}}' },
|
|
277
|
+
'new-session-attach-failed': { zh: '会话已创建,但工作区挂载失败 · {{err}}', en: 'Session created, but workspace attachment failed · {{err}}' },
|
|
278
|
+
'model-switch-while-working': { zh: '回合运行中,无法切换模型', en: 'Cannot switch models while a turn is running' },
|
|
279
|
+
'model-switch-unavailable': { zh: '模型切换不可用——会话服务未加载', en: 'Model switch unavailable — session services not loaded' },
|
|
280
|
+
'model-switch-fork-failed': { zh: '无法切换模型 · {{err}}', en: 'Cannot switch models · {{err}}' },
|
|
281
|
+
'model-switch-failed': { zh: '模型切换失败 · {{err}}', en: 'Model switch failed · {{err}}' },
|
|
282
|
+
'model-switch-attach-failed': { zh: '模型已切换,但工作区挂载失败 · {{err}}', en: 'Model switched, but workspace attachment failed · {{err}}' },
|
|
283
|
+
'model-usage': { zh: '用法:/model <provider/model>(如 deepseek/deepseek-flash)', en: 'Usage: /model <provider/model> (e.g. deepseek/deepseek-flash)' },
|
|
284
|
+
'model-unknown': { zh: '未知模型「{{spec}}」· /model 查看全部', en: 'Unknown model "{{spec}}" · /model to view all' },
|
|
285
|
+
'compact-unavailable': { zh: '压缩不可用——当前 leaf 没有压缩服务', en: 'Compaction unavailable · no compaction service in this leaf' },
|
|
286
|
+
'compact-while-working': { zh: '回合运行中,无法压缩会话', en: 'Cannot compact while a turn is running' },
|
|
287
|
+
'compact-working': { zh: '正在压缩会话…', en: 'Summarizing earlier turns…' },
|
|
288
|
+
'compact-done': { zh: '会话已压缩', en: 'Session summary is ready' },
|
|
289
|
+
'compact-nothing': { zh: '没有可压缩的内容', en: 'Nothing to compact' },
|
|
290
|
+
'compact-failed': { zh: '压缩失败 · {{err}}', en: 'Compaction failed · {{err}}' },
|
|
291
|
+
'compact-flush-failed': {
|
|
292
|
+
zh: '压缩已生效,但落盘检查失败——历史已由摘要替代,请留意会话状态',
|
|
293
|
+
en: 'Compaction took effect, but its durability flush failed — history is now the summary',
|
|
294
|
+
},
|
|
295
|
+
'compact-cancelled-switch': {
|
|
296
|
+
zh: '压缩进行中,已取消并切换会话',
|
|
297
|
+
en: 'In-flight compaction cancelled for the session switch',
|
|
298
|
+
},
|
|
299
|
+
'turn-failed': { zh: '回合出错{{detail}}', en: 'Turn error{{detail}}' },
|
|
300
|
+
// ── dsh-adapter/promptDebug.ts(/debug-prompt 成功提示)─────────────
|
|
301
|
+
// 快照 0600 落在会话工作区根,与 export-saved 同一句清理提醒。
|
|
302
|
+
'prompt-debug-saved': {
|
|
303
|
+
zh: '已写入 {{count}} 条最终 LLM 请求快照到 {{file}}。快照含敏感会话与提示词数据;文件位于当前工作区,若工作区在同步/共享目录请注意清理。',
|
|
304
|
+
en: {
|
|
305
|
+
one: 'Wrote 1 final LLM request snapshot to {{file}}. It contains sensitive conversation and prompt data, and lives in the current workspace — clean it up promptly if the workspace is synced or shared.',
|
|
306
|
+
other: 'Wrote {{count}} final LLM request snapshots to {{file}}. It contains sensitive conversation and prompt data, and lives in the current workspace — clean it up promptly if the workspace is synced or shared.',
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
// ── questions.ts ─────────────────────────────────────────────────────
|
|
310
|
+
'questionnaire-answered': { zh: '📋 问卷已答 · {{total}} 题', en: '📋 Questionnaire answered · {{total}} questions' },
|
|
311
|
+
// ── utils/loaded-context.ts ─────────────────────────────────────────
|
|
312
|
+
'context-truncated': { zh: '…(已截断)', en: '… (truncated)' },
|
|
313
|
+
'context-sections': { zh: '系统提示词 {{n}} 段', en: 'System prompt {{n}} sections' },
|
|
314
|
+
'context-files': { zh: '工作区指令 ×{{n}}', en: 'Workspace instructions ×{{n}}' },
|
|
315
|
+
'context-runtime': { zh: '运行时上下文 {{n}} 项', en: 'Runtime context {{n}} items' },
|
|
316
|
+
'context-skills': { zh: '技能 {{n}}', en: 'Skills {{n}}' },
|
|
317
|
+
'context-tools': { zh: '工具 {{n}}', en: 'Tools {{n}}' },
|
|
318
|
+
// ── screens/Chat.tsx ────────────────────────────────────────────────
|
|
319
|
+
'skill-unavailable': { zh: '技能 {{name}} 已不可用或未开放用户直调', en: 'Skill {{name}} is gone or not user-invocable' },
|
|
320
|
+
'context-loaded': { zh: '已加载上下文', en: 'Context loaded' },
|
|
321
|
+
'context-panel-expand': { zh: ' 展开', en: ' to expand' },
|
|
322
|
+
'context-panel-collapse': { zh: ' 折叠', en: ' to collapse' },
|
|
323
|
+
'copied-chars': { zh: '已复制 {{n}} 个字符', en: 'Copied {{n}} characters' },
|
|
324
|
+
'copy-refused-stale': { zh: '选区内容已变化,已取消复制', en: 'Content under the selection changed; copy cancelled' },
|
|
325
|
+
'migrate-failed': { zh: '{{n}} 个源导入失败,详见输出', en: '{{n}} source(s) failed — see the output' },
|
|
326
|
+
'migrate-spawn-failed': { zh: '无法启动迁移子进程(找不到本包 bin)', en: 'Could not start the migration child process (package bin not found)' },
|
|
327
|
+
'migrate-child-timeout': { zh: '(子进程超过 {{minutes}} 分钟未结束,已终止)', en: '(the child ran past {{minutes}} minutes and was terminated)' },
|
|
328
|
+
'migrate-usage': { zh: '一次只能迁移一个源:/migrate <agent> [--dry-run]', en: 'One source per run: /migrate <agent> [--dry-run]' },
|
|
329
|
+
'migrate-dry-run-needs-source': { zh: '请指明要预览的源:/migrate <agent> --dry-run', en: 'Name the source to preview: /migrate <agent> --dry-run' },
|
|
330
|
+
'picker-title-migrate': { zh: '迁移哪个代理的对话?', en: 'Import conversations from which agent?' },
|
|
331
|
+
'migrate-picker-empty': { zh: '没有可用的迁移源', en: 'No migration sources available' },
|
|
332
|
+
'migrate-picker-scanning': { zh: '正在扫描各源…', en: 'Scanning sources…' },
|
|
333
|
+
'migrate-picker-recent': { zh: '{{minutes}} 分钟前刚活动过', en: 'active {{minutes}} min ago' },
|
|
334
|
+
'migrate-picker-cold': { zh: '最近未活动', en: 'not active recently' },
|
|
335
|
+
'migrate-picker-count': { zh: '{{n}} 个会话文件', en: '{{n}} session files' },
|
|
336
|
+
'migrate-hint-notify': { zh: '刚刚从 {{agent}} 过来?/migrate 来快速迁移', en: 'Just came from {{agent}}? /migrate imports it quickly' },
|
|
337
|
+
'migrate-picker-hint': { zh: '空格 勾选 · a 全选/全不选 · Enter 确认 · Esc 关闭', en: 'Space toggle · a all/none · Enter confirm · Esc close' },
|
|
338
|
+
'migrate-confirm-title': { zh: '确认导入', en: 'Confirm import' },
|
|
339
|
+
'migrate-confirm-line': { zh: '{{label}}:将导入 {{n}} 个会话文件', en: '{{label}}: {{n}} session files to import' },
|
|
340
|
+
'migrate-confirm-note': { zh: '已存在的自动跳过,可重复执行', en: 'Existing sessions are skipped automatically; safe to re-run' },
|
|
341
|
+
'migrate-confirm-actions': { zh: 'Enter 导入 · d 干跑预览 · Esc 返回选择', en: 'Enter import · d dry-run · Esc back' },
|
|
342
|
+
'migrate-importing-source': { zh: '正在导入 {{label}}({{i}}/{{n}})…', en: 'Importing {{label}} ({{i}}/{{n}})…' },
|
|
343
|
+
'migrate-previewing-source': { zh: '正在预览 {{label}}({{i}}/{{n}})…', en: 'Previewing {{label}} ({{i}}/{{n}})…' },
|
|
344
|
+
'migrate-source-done': { zh: '{{label}}:导入 {{imported}} · 已存在 {{existing}}', en: '{{label}}: imported {{imported}} · already present {{existing}}' },
|
|
345
|
+
'migrate-all-done': { zh: '迁移完成({{n}} 个源)', en: 'Migration finished ({{n}} source(s))' },
|
|
346
|
+
'migrate-all-previewed': { zh: '预览完成({{n}} 个源,未写入)', en: 'Preview finished ({{n}} source(s), nothing written)' },
|
|
347
|
+
'migrate-unknown-agent': { zh: '未知迁移源 {{agent}},可用源见 /migrate', en: 'Unknown migration source {{agent}}; see /migrate for the list' },
|
|
348
|
+
'activity-current-preset': { zh: '当前预设 {{name}}', en: 'Current preset {{name}}' },
|
|
349
|
+
'activity-switch-hint': { zh: '切换 /activity(选择器)或 /activity frames <名>', en: 'Switch /activity (picker) or /activity frames <name>' },
|
|
350
|
+
'activity-persist-hint': { zh: '持久化 ~/.dsh-tui/working-activity.json(重启后仍生效)', en: 'Persisted ~/.dsh-tui/working-activity.json (survives restart)' },
|
|
351
|
+
'activity-current-direct': { zh: '当前预设:{{name}} · /activity frames <名> 直接切换:', en: 'Current preset: {{name}} · /activity frames <name> to switch directly:' },
|
|
352
|
+
'activity-random-each': { zh: '每次随机', en: 'random each time' },
|
|
353
|
+
'activity-current-marker': { zh: ' ← 当前', en: ' ← current' },
|
|
354
|
+
'activity-usage': { zh: '用法:/activity | /activity frames <名> | /activity status', en: 'Usage: /activity | /activity frames <name> | /activity status' },
|
|
355
|
+
'preset-current': { zh: '当前 preset {{name}}', en: 'Current preset {{name}}' },
|
|
356
|
+
'preset-roster-missing': { zh: '(未挂载名册)', en: '(roster not mounted)' },
|
|
357
|
+
'preset-switch-hint': { zh: '切换 /preset(选择器)或 /preset <id>', en: 'Switch /preset (picker) or /preset <id>' },
|
|
358
|
+
'preset-persist-hint': { zh: '持久化 ~/.dsh-tui/agent-preset.json(重启后仍生效;cordis.yml preset 优先)', en: 'Persisted ~/.dsh-tui/agent-preset.json (survives restart; cordis.yml preset wins)' },
|
|
359
|
+
'preset-lock-hint': { zh: '锁定规则 已开始的会话不可切换(官方 blank-only 规则)', en: 'Lock rule started sessions cannot switch (official blank-only rule)' },
|
|
360
|
+
'preset-roster-unmounted': { zh: '当前组合未挂载 agent-presets 名册(preset 不可用)', en: 'The agent-presets roster is not mounted (presets unavailable)' },
|
|
361
|
+
'theme-current': { zh: '当前主题 {{name}}', en: 'Current theme {{name}}' },
|
|
362
|
+
'theme-switch-hint': { zh: '切换 /theme(选择器)或 /theme <名字>', en: 'Switch /theme (picker) or /theme <name>' },
|
|
363
|
+
'theme-persist-hint': { zh: '持久化 ~/.dsh-tui/theme.json(重启后仍生效;DSH_TUI_THEME 优先)', en: 'Persisted ~/.dsh-tui/theme.json (survives restart; DSH_TUI_THEME wins)' },
|
|
364
|
+
'theme-custom-hint': { zh: '自定义 静态 ~/.dsh-tui/themes/<名字>.json(插件也可提供运行时主题;见 README「自定义主题」)', en: 'Custom static ~/.dsh-tui/themes/<name>.json (plugins may also provide runtime themes; see README "Custom themes")' },
|
|
365
|
+
'theme-auto-resolved': { zh: '自动解析 当前为 {{name}}(跟随终端背景)', en: 'Auto-resolved currently {{name}} (follows terminal background)' },
|
|
366
|
+
'theme-switched-saved': { zh: '主题已切换:{{name}}(已保存)', en: 'Theme switched: {{name}} (saved)' },
|
|
367
|
+
'theme-unknown': { zh: '未知主题「{{name}}」· /theme 查看全部', en: 'Unknown theme "{{name}}" · /theme to view all' },
|
|
368
|
+
'status-model': { zh: '模型 {{model}}', en: 'Model {{model}}' },
|
|
369
|
+
'status-working': { zh: '工作中', en: 'working' },
|
|
370
|
+
'status-idle': { zh: '空闲', en: 'idle' },
|
|
371
|
+
'status-state': { zh: '状态 {{state}}', en: 'Status {{state}}' },
|
|
372
|
+
'status-session': { zh: '会话 {{id}}', en: 'Session {{id}}' },
|
|
373
|
+
'status-dir': { zh: '目录 {{cwd}}', en: 'Directory {{cwd}}' },
|
|
374
|
+
'workspace-picker-title': { zh: '工作区', en: 'Workspace' },
|
|
375
|
+
'workspace-picker-hint': { zh: '**Enter** 切换并新建会话 · Esc 退出 · 也可输入 /workspace open <路径或 URI>', en: '**Enter** switch and start a new session · Esc to exit · or type /workspace open <path-or-URI>' },
|
|
376
|
+
'workspace-none': { zh: '没有可用工作区', en: 'No workspaces available' },
|
|
377
|
+
'workspace-list-failed': { zh: '读取工作区失败 · {{err}}', en: 'Failed to list workspaces · {{err}}' },
|
|
378
|
+
'workspace-uri-invalid': { zh: '无法解析工作区目标:{{uri}}', en: 'Cannot resolve workspace target: {{uri}}' },
|
|
379
|
+
'workspace-uri-failed': { zh: '加载工作区失败 · {{err}}', en: 'Failed to load workspace · {{err}}' },
|
|
380
|
+
'workspace-switch-working': { zh: 'Agent 运行中,无法切换工作区', en: 'Cannot switch workspaces while the agent is running' },
|
|
381
|
+
'workspace-open-invalid': { zh: '无法打开工作区:{{target}} 不是存在的目录', en: 'Cannot open workspace: {{target}} is not an existing directory' },
|
|
382
|
+
'workspace-switched': { zh: '已切换工作区:{{target}}', en: 'Workspace switched: {{target}}' },
|
|
383
|
+
'workspace-flow-hint': { zh: '**Enter** 选择 · Esc 退出', en: '**Enter** select · Esc to exit' },
|
|
384
|
+
'workspace-flow-edit-hint': { zh: '**Enter** 选择当前目录 · Tab 手动输入路径 · Esc 退出', en: '**Enter** select current directory · Tab enter a path · Esc to exit' },
|
|
385
|
+
'workspace-flow-input-hint': { zh: '输入绝对路径 · **Enter** 读取目录 · Esc 返回', en: 'Enter an absolute path · **Enter** load directory · Esc back' },
|
|
386
|
+
'workspace-flow-input-empty': { zh: '目录路径不能为空', en: 'Directory path cannot be empty' },
|
|
387
|
+
'workspace-flow-loading': { zh: '正在连接并读取目录… · Esc 关闭', en: 'Connecting and loading directories… · Esc to close' },
|
|
388
|
+
'workspace-menu-title': { zh: 'Workspace 操作', en: 'Workspace actions' },
|
|
389
|
+
'workspace-menu-resume-desc': { zh: '切换到另一个工作区', en: 'Switch to another workspace' },
|
|
390
|
+
'workspace-menu-rename-desc': { zh: '重命名当前工作区(需输入名称)', en: 'Rename the current workspace (needs a name)' },
|
|
391
|
+
'workspace-menu-open-desc': { zh: '打开路径或工作区 URI(需输入路径)', en: 'Open a path or workspace URI (needs a path)' },
|
|
392
|
+
'workspace-open-usage': { zh: '用法:/workspace open <路径或 URI>', en: 'Usage: /workspace open <path-or-URI>' },
|
|
393
|
+
'workspace-rename-usage': { zh: '用法:/workspace rename <名称>', en: 'Usage: /workspace rename <name>' },
|
|
394
|
+
'workspace-command-unknown': { zh: '未知的 workspace 子命令:{{command}}', en: 'Unknown workspace subcommand: {{command}}' },
|
|
395
|
+
'workspace-command-empty': { zh: '该 workspace 操作没有可选目标', en: 'This workspace action has no available targets' },
|
|
396
|
+
'workspace-command-failed': { zh: 'workspace 操作失败 · {{err}}', en: 'Workspace action failed · {{err}}' },
|
|
397
|
+
'workspace-renamed': { zh: '工作区已重命名:{{title}}', en: 'Workspace renamed: {{title}}' },
|
|
398
|
+
'workspace-rename-failed': { zh: '工作区重命名失败 · {{err}}', en: 'Failed to rename workspace · {{err}}' },
|
|
399
|
+
'workspace-removed': { zh: '已从工作区列表移除:{{target}}(会话与目录保留)', en: 'Removed from the workspace list: {{target}} (sessions and directory kept)' },
|
|
400
|
+
'workspace-remove-unknown': { zh: '工作区列表中没有:{{target}}', en: 'Not in the workspace list: {{target}}' },
|
|
401
|
+
'workspace-remove-failed': { zh: '移除工作区失败 · {{err}}', en: 'Failed to remove the workspace · {{err}}' },
|
|
402
|
+
// ── 工作区栏与菜单(screens/SessionSupervisor.tsx + HomeWorkspaceRow)──
|
|
403
|
+
'home-section-workspaces': { zh: '工作区({{n}})', en: 'Workspaces ({{n}})' },
|
|
404
|
+
'home-add-workspace': { zh: '添加工作区', en: 'Add workspace' },
|
|
405
|
+
'home-add-hint': { zh: '选择目录并加入列表', en: 'Pick a directory and add it to the list' },
|
|
406
|
+
'home-workspace-missing': { zh: '目录不存在', en: 'directory missing' },
|
|
407
|
+
'home-no-workspaces': { zh: '还没有工作区 · 在任意目录启动 dsh-tui 即可自动加入', en: 'No workspaces yet · start dsh-tui in a directory to add it' },
|
|
408
|
+
'home-sessions-title': { zh: '{{name}} 的会话', en: 'Sessions in {{name}}' },
|
|
409
|
+
'home-sessions-count': { zh: '{{n}} 个会话', en: { one: '{{n}} session', other: '{{n}} sessions' } },
|
|
410
|
+
'home-no-sessions': { zh: '这个工作区还没有会话 · Enter 新建一个', en: 'No sessions in this workspace yet · Enter starts one' },
|
|
411
|
+
'home-sessions-loading': { zh: '正在读取会话…', en: 'Loading sessions…' },
|
|
412
|
+
'home-sessions-failed': { zh: '读取会话失败 · {{err}}', en: 'Failed to load sessions · {{err}}' },
|
|
413
|
+
'home-hint-list': { zh: '**←/→** 切换栏位 · **↑/↓** 选择 · **Enter** 编辑 · Ctrl+N 新建 · Esc 进入会话', en: '**←/→** switch pane · **↑/↓** move · **Enter** edit · Ctrl+N new · Esc enter the session' },
|
|
414
|
+
'home-hint-menu': { zh: '**↑/↓** 选择 · **Enter** 确认 · Esc 关闭', en: '**↑/↓** move · **Enter** confirm · Esc close' },
|
|
415
|
+
'home-hint-rename': { zh: '输入新名称 · **Enter** 保存 · Esc 取消', en: 'Type a new name · **Enter** save · Esc cancel' },
|
|
416
|
+
'home-hint-confirm-remove': { zh: '**Enter** 确认移除 · Esc 取消', en: '**Enter** confirm removal · Esc cancel' },
|
|
417
|
+
'home-menu-edit': { zh: '编辑', en: 'Edit' },
|
|
418
|
+
'home-menu-new': { zh: '在此新建会话', en: 'New session here' },
|
|
419
|
+
'home-menu-rename': { zh: '重命名工作区', en: 'Rename workspace' },
|
|
420
|
+
'home-menu-remove': { zh: '从列表移除', en: 'Remove from list' },
|
|
421
|
+
'home-rename-placeholder': { zh: '新名称', en: 'New name' },
|
|
422
|
+
'home-rename-empty': { zh: '名称不能为空', en: 'The name cannot be empty' },
|
|
423
|
+
'home-rename-failed': { zh: '重命名失败 · {{err}}', en: 'Rename failed · {{err}}' },
|
|
424
|
+
'home-remove-title': { zh: '移除工作区「{{name}}」?', en: 'Remove workspace "{{name}}"?' },
|
|
425
|
+
'home-remove-detail': { zh: '只从列表移除,会话记录与磁盘目录都会保留', en: 'Only the list entry goes away; sessions and the directory stay' },
|
|
426
|
+
// ── screens/SessionSupervisor.tsx(三合一会话管理:/resume /agentview /home)─
|
|
427
|
+
'supervisor-title': { zh: '会话管理', en: 'Sessions' },
|
|
428
|
+
'supervisor-unregistered': { zh: '未登记的工作区', en: 'Unregistered' },
|
|
429
|
+
'supervisor-no-matches': { zh: '没有匹配的会话 · Esc 清空筛选', en: 'No sessions match · Esc clears the filter' },
|
|
430
|
+
'supervisor-subtitle': { zh: '本终端托管多个会话 · 切换不中断', en: 'This terminal hosts several sessions · switching does not stop them' },
|
|
431
|
+
'supervisor-filter-placeholder': { zh: '输入以搜索会话…', en: 'Type to search sessions…' },
|
|
432
|
+
'supervisor-hint-list': { zh: '**←/→** 切换栏位 · **Enter** 进入会话 · Ctrl+N 新建 · Ctrl+X 停止 · Esc 返回', en: '**←/→** switch pane · **Enter** enter · Ctrl+N new · Ctrl+X stop · Esc back' },
|
|
433
|
+
'supervisor-hint-filter': { zh: '输入过滤会话 · **Enter** 进入 · Esc 清空', en: 'Type to filter · **Enter** enter · Esc clears' },
|
|
434
|
+
'supervisor-occupied': { zh: '被其他 TUI 终端占用(pid {{pid}}),无法进入', en: 'Held by another TUI terminal (pid {{pid}}) — cannot enter' },
|
|
435
|
+
'supervisor-occupied-badge': { zh: '占用 pid {{pid}}', en: 'held by pid {{pid}}' },
|
|
436
|
+
'supervisor-current': { zh: '当前', en: 'current' },
|
|
437
|
+
'supervisor-counts': { zh: '{{working}} 运行中 · {{live}} 个活跃 · 共 {{total}}', en: '{{working}} working · {{live}} live · {{total}} total' },
|
|
438
|
+
'supervisor-new-session': { zh: '+ 新建会话', en: '+ New session' },
|
|
439
|
+
'supervisor-new-session-hint': { zh: '在「{{name}}」新建一个会话', en: 'Start a session in "{{name}}"' },
|
|
440
|
+
'supervisor-stopped': { zh: '已停止会话「{{name}}」', en: 'Stopped session {{name}}' },
|
|
441
|
+
'supervisor-stop-failed': { zh: '无法停止该会话', en: 'Could not stop that session' },
|
|
442
|
+
'supervisor-stop-current': { zh: '不能停止当前正在使用的会话', en: 'The session you are attached to cannot be stopped' },
|
|
443
|
+
'supervisor-open-failed': { zh: '无法进入会话「{{name}}」· 原因见下方通知', en: 'Could not enter {{name}} · the reason is in the notification below' },
|
|
444
|
+
'cost-cache-rate': { zh: '缓存率 {{rate}}% · {{read}} 读 / {{write}} 写', en: 'Cache rate {{rate}}% · {{read}} read / {{write}} write' },
|
|
445
|
+
'cost-context': { zh: '上下文 {{pct}}%', en: 'Context {{pct}}%' },
|
|
446
|
+
'status-title': { zh: '标题 {{title}}', en: 'Title {{title}}' },
|
|
447
|
+
'cost-cache-hit-rate': { zh: '缓存命中率 {{rate}}% · 缓存 {{read}} 读 / {{write}} 写', en: 'Cache hit rate {{rate}}% · cache {{read}} read / {{write}} write' },
|
|
448
|
+
'cost-note': { zh: '注:DSH 不提供 API 费用计量,以上为 token 用量(按 provider 账单计费)', en: 'Note: DSH provides no API cost metering; the above is token usage (billed by your provider)' },
|
|
449
|
+
'status-cost-label': { zh: '≈', en: '≈' },
|
|
450
|
+
'status-cost-note': { zh: '估算(官方单价,非账单)', en: 'estimate (official rates, not a bill)' },
|
|
451
|
+
// 高峰/空闲时段名(用户玩梗命名:高峰=梁文峰,低谷=梁文谷)
|
|
452
|
+
'cost-peak-name': { zh: '梁文峰', en: 'peak' },
|
|
453
|
+
'cost-idle-name': { zh: '梁文谷', en: 'idle' },
|
|
454
|
+
// 状态栏字段上的当前时段短标记(峰/谷)
|
|
455
|
+
'cost-now-peak': { zh: '峰', en: 'peak' },
|
|
456
|
+
'cost-now-idle': { zh: '谷', en: 'idle' },
|
|
457
|
+
// /balance:DeepSeek 官方余额查询(BalanceReportRow 组件)
|
|
458
|
+
'balance-summary-loading': { zh: 'DeepSeek 余额 · 查询中…', en: 'DeepSeek balance · querying…' },
|
|
459
|
+
'balance-summary-ok': { zh: 'DeepSeek 余额 ¥{{total}} · {{state}}', en: 'DeepSeek balance ¥{{total}} · {{state}}' },
|
|
460
|
+
'balance-summary-state-ok': { zh: '可用', en: 'available' },
|
|
461
|
+
'balance-summary-state-off': { zh: '不可用', en: 'unavailable' },
|
|
462
|
+
'balance-summary-fail': { zh: 'DeepSeek 余额 · 查询失败', en: 'DeepSeek balance · query failed' },
|
|
463
|
+
'balance-currency': { zh: '{{currency}} 总额 ¥{{total}} · 赠送 ¥{{granted}} · 充值 ¥{{toppedUp}}', en: '{{currency}} total ¥{{total}} · granted ¥{{granted}} · topped up ¥{{toppedUp}}' },
|
|
464
|
+
'balance-no-key': { zh: '未配置 DeepSeek API key(DEEPSEEK_API_KEY)', en: 'No DeepSeek API key configured (DEEPSEEK_API_KEY)' },
|
|
465
|
+
'balance-unauthorized': { zh: '认证失败——key 无效或已被撤销', en: 'Authentication failed — the key is invalid or revoked' },
|
|
466
|
+
'balance-network-error': { zh: '网络错误或请求超时', en: 'Network error or request timeout' },
|
|
467
|
+
'balance-http-error': { zh: '余额接口返回 HTTP {{status}}', en: 'Balance endpoint returned HTTP {{status}}' },
|
|
468
|
+
'balance-invalid': { zh: '余额接口响应格式异常', en: 'Unexpected balance endpoint response' },
|
|
469
|
+
'balance-fail-hint': { zh: '仅 DeepSeek 官方 API key 可查询;/login 可查看凭据状态', en: 'Only a DeepSeek official API key can be queried; /login shows credential status' },
|
|
470
|
+
'balance-hover-tokens': { zh: '本会话 tokens {{input}} in → {{output}} out · ≈¥{{cost}}({{peakName}} ¥{{peak}} / {{idleName}} ¥{{idle}})', en: 'Session tokens {{input}} in → {{output}} out · ≈¥{{cost}} ({{peakName}} ¥{{peak}} / {{idleName}} ¥{{idle}})' },
|
|
471
|
+
'balance-current-rate': { zh: '当前时段:{{name}} · 输入 ¥{{input}}/百万 · 输出 ¥{{output}}/百万', en: 'Current window: {{name}} · input ¥{{input}}/M · output ¥{{output}}/M' },
|
|
472
|
+
'balance-refresh': { zh: '点击刷新', en: 'click to refresh' },
|
|
473
|
+
'balance-retry': { zh: '点击重试', en: 'click to retry' },
|
|
474
|
+
'balance-close': { zh: '关闭', en: 'dismiss' },
|
|
475
|
+
'balance-hint': { zh: '余额查询免费 · 以 DeepSeek 平台为准', en: 'balance queries are free · authoritative on the DeepSeek platform' },
|
|
476
|
+
'doctor-example-config': { zh: '示例配置 {{path}}', en: 'Example config {{path}}' },
|
|
477
|
+
'doctor-user-config': { zh: '用户配置 {{path}}', en: 'User config {{path}}' },
|
|
478
|
+
'doctor-launch-hint': { zh: '启动方式 dsh-tui.cmd / dsh --profile dsh-tui', en: 'Launch dsh-tui.cmd / dsh --profile dsh-tui' },
|
|
479
|
+
'doctor-route-hint': { zh: '模型路由 由 cordis.yml 的 llm-deepseek 段决定(/model 仅提示重启生效)', en: 'Model route set by the llm-deepseek block in cordis.yml (/model only hints at restart)' },
|
|
480
|
+
'export-failed': { zh: '导出失败(无法写入工作目录)', en: 'Export failed (cannot write to working directory)' },
|
|
481
|
+
// 导出/调试快照都落在会话工作区根:同步盘(Dropbox/网盘)或共享目录
|
|
482
|
+
// 会把含完整对话的文件带出本机,提示语提醒用户及时清理。
|
|
483
|
+
'export-saved': { zh: '已导出: {{target}}(文件位于当前工作区,若工作区在同步/共享目录请注意清理)', en: 'Exported: {{target}} (the file lives in the current workspace — clean it up promptly if the workspace is synced or shared)' },
|
|
484
|
+
'agentsmd-create-failed': { zh: '创建 AGENTS.md 失败', en: 'Failed to create AGENTS.md' },
|
|
485
|
+
'agentsmd-exists': { zh: 'AGENTS.md 已存在,未覆盖', en: 'AGENTS.md already exists, not overwritten' },
|
|
486
|
+
'agentsmd-created': { zh: '已创建 {{result}}', en: 'Created {{result}}' },
|
|
487
|
+
'login-api-key': { zh: 'API key: {{status}}', en: 'API key: {{status}}' },
|
|
488
|
+
'login-key-configured': { zh: '已配置({{ref}})', en: 'configured ({{ref}})' },
|
|
489
|
+
'login-key-missing': { zh: '未配置(DEEPSEEK_API_KEY)', en: 'not configured (DEEPSEEK_API_KEY)' },
|
|
490
|
+
'login-credentials-unavailable': { zh: '无法检查(credentials service 不可用)', en: 'unavailable (credentials service unavailable)' },
|
|
491
|
+
'login-credential-source': { zh: '凭据来源: {{source}}', en: 'Credential source: {{source}}' },
|
|
492
|
+
'login-source-none': { zh: '无', en: 'none' },
|
|
493
|
+
'login-credential-storage': { zh: '凭据存储: {{mode}}', en: 'Credential storage: {{mode}}' },
|
|
494
|
+
'login-storage-writable': { zh: '可写', en: 'writable' },
|
|
495
|
+
'login-storage-read-only': { zh: '只读', en: 'read-only' },
|
|
496
|
+
'login-base-url': { zh: 'Base URL: {{url}}', en: 'Base URL: {{url}}' },
|
|
497
|
+
'login-official-endpoint': { zh: '官方端点', en: 'official endpoint' },
|
|
498
|
+
'login-logout-hint': { zh: '使用 /provider 管理 DSH 凭据;若来源为 env,请删除对应环境变量并重启 dsh-tui', en: 'Manage DSH credentials with /provider; for env sources, remove the corresponding environment variable and restart dsh-tui' },
|
|
499
|
+
// /login 的 OAuth 账号状态段(dsh-auth 类插件挂载时追加)
|
|
500
|
+
'login-oauth-heading': { zh: '提供商认证:', en: 'Provider authentication:' },
|
|
501
|
+
'login-oauth-row': { zh: ' {{provider}} — {{state}}', en: ' {{provider}} — {{state}}' },
|
|
502
|
+
'login-oauth-in': { zh: '已登录 · 令牌到期 {{time}}', en: 'signed in · token expires {{time}}' },
|
|
503
|
+
'login-auth-in': { zh: '已登录', en: 'signed in' },
|
|
504
|
+
'login-oauth-expired': { zh: '已登录但令牌已过期,重新登录可恢复', en: 'signed in but the token expired — sign in again to restore' },
|
|
505
|
+
'login-oauth-signed-out': { zh: '未登录', en: 'not signed in' },
|
|
506
|
+
'login-oauth-hint': { zh: ' 登录/登出:/provider 提供商认证,或 /auth login <provider>', en: ' Sign in/out: /provider authentication, or /auth login <provider>' },
|
|
507
|
+
'permission-policy-hint': { zh: 'DSH 权限策略由 fs-policy / bash-sandbox 配置决定(当前 leaf:workspace 内读写、写入需已读文件)。', en: 'DSH permission policy is set by fs-policy / bash-sandbox config (current leaf: read/write in workspace, writes need a prior read).' },
|
|
508
|
+
'permission-approval-hint': { zh: '审批通道已挂载:命令申请权限提升(sandbox_permissions)时弹出审批条,Yes 放行一次、No / Esc 拒绝。', en: 'The approval channel is mounted: sandbox escalations (sandbox_permissions) raise an approval bar — Yes allows once, No / Esc rejects.' },
|
|
509
|
+
'permission-root-hint': { zh: '当前文件系统策略以工作目录为根:{{cwd}}', en: 'Current filesystem policy is rooted at the working directory: {{cwd}}' },
|
|
510
|
+
'permission-path-hint': { zh: '模型工具相对路径均解析自该目录;跨目录访问由 fs-policy 拦截。', en: 'Relative paths of model tools resolve from this directory; cross-directory access is blocked by fs-policy.' },
|
|
511
|
+
'permission-current': { zh: '当前预设 {{name}}', en: 'Current preset {{name}}' },
|
|
512
|
+
'permission-roster-unavailable': { zh: '权限预设名册不可用', en: 'Permission preset roster unavailable' },
|
|
513
|
+
'permission-picker-title': { zh: '权限预设', en: 'Permission preset' },
|
|
514
|
+
'permission-preset-readonly': { zh: '只读', en: 'Read-only' },
|
|
515
|
+
'permission-preset-readonly-desc': { zh: '会话只读:不写文件、不执行命令', en: 'Read-only session: no file writes, no commands' },
|
|
516
|
+
'permission-preset-workspace-write': { zh: '工作区读写', en: 'Workspace read/write' },
|
|
517
|
+
'permission-preset-workspace-write-desc': { zh: '工作区内读写;写入需先读该文件', en: 'Read/write inside the workspace; writes need a prior read' },
|
|
518
|
+
'permission-preset-full-access': { zh: '完全访问', en: 'Full access' },
|
|
519
|
+
'permission-preset-full-access-desc': { zh: '不受限读写,无需审批', en: 'Unrestricted access, no approvals' },
|
|
520
|
+
'plan-picker-title': { zh: '计划模式', en: 'Plan mode' },
|
|
521
|
+
'plan-mode-on': { zh: '开启', en: 'On' },
|
|
522
|
+
'plan-mode-on-desc': { zh: '进入计划模式:只读,先规划后动手', en: 'Enter plan mode: read-only, plan before acting' },
|
|
523
|
+
'plan-mode-off': { zh: '关闭', en: 'Off' },
|
|
524
|
+
'plan-mode-off-desc': { zh: '退出计划模式,恢复正常执行', en: 'Exit plan mode, back to normal execution' },
|
|
525
|
+
'hooks-not-mounted': { zh: 'DSH hooks(dsh-hooks-claude / dsh-hooks-codex)未在本 leaf 挂载。', en: 'DSH hooks (dsh-hooks-claude / dsh-hooks-codex) are not mounted in this leaf.' },
|
|
526
|
+
'hooks-mount-hint': { zh: '需要时可在 cordis.yml 挂载对应 hooks 插件。', en: 'Mount the matching hooks plugin in cordis.yml when needed.' },
|
|
527
|
+
'update-unavailable': { zh: '当前运行方式不支持自动更新(需经 dsh --profile 启动),请在终端执行 dsh plugin --profile <name> update dsh-cli', en: 'Automatic update is unavailable in this launch mode (needs dsh --profile). Run dsh plugin --profile <name> update dsh-cli in a terminal.' },
|
|
528
|
+
'update-working': { zh: '当前回合仍在运行,请等待完成后再更新 TUI。', en: 'The current turn is still running. Wait for it to finish before updating the TUI.' },
|
|
529
|
+
'update-starting': { zh: '正在更新 dsh-cli,完成后会自动重启并恢复当前会话……', en: 'Updating dsh-cli. The TUI will restart and resume this session when finished…' },
|
|
530
|
+
'update-available': { zh: '发现新版本:v{{latest}}(当前 v{{current}})· 输入 /update 更新 TUI', en: 'New version available: v{{latest}} (current v{{current}}) · type /update to update the TUI' },
|
|
531
|
+
'update-already-latest': { zh: '当前已是最新版本(v{{current}})。', en: 'Already on the latest version (v{{current}}).' },
|
|
532
|
+
'update-check-failed': { zh: '无法确认新版本(网络或 registry 不可达),已尝试直接更新……', en: 'Could not confirm a newer version (network or registry unreachable); attempting the update anyway…' },
|
|
533
|
+
'update-refused-deadlock': { zh: '已取消更新:镜像 registry 目前只能装到 v{{latest}},而该版本在旧全局启动器的 patch 下会启动死锁(#183/#307);官方最新为 v{{authoritative}},待镜像同步后再 /update。', en: 'Update cancelled: the mirror registry can only serve v{{latest}}, which deadlocks boot under older global-launcher patches (#183/#307); official latest is v{{authoritative}} — retry /update after the mirror syncs.' },
|
|
534
|
+
'update-mirror-lag': { zh: '镜像 registry 滞后:本次安装 v{{latest}};官方最新 v{{authoritative}},镜像同步后可再 /update。', en: 'Mirror registry lag: installing v{{latest}} now; official latest is v{{authoritative}} — run /update again once the mirror syncs.' },
|
|
535
|
+
'update-standalone-available': { zh: '发现便携包新版本:v{{latest}}(当前 v{{current}})· 输入 /update 自动更新', en: 'New standalone version available: v{{latest}} (current v{{current}}) · type /update to update' },
|
|
536
|
+
'update-standalone-no-checksum': { zh: '该版本未发布 SHA256 校验和,更新包完整性无法验证', en: 'this release publishes no SHA256 checksums; the update payload cannot be integrity-verified' },
|
|
537
|
+
'update-standalone-starting': { zh: '正在下载便携包新版本并自动替换,完成后会自动重启并恢复当前会话……', en: 'Downloading and replacing standalone binary. The TUI will restart and resume this session when finished…' },
|
|
538
|
+
// ── /reload (pi-style soft reload) ────────────────────────────────────
|
|
539
|
+
'reload-header': { zh: '已重读偏好文件:', en: 'Preferences reloaded:' },
|
|
540
|
+
'reload-applied': { zh: '{{kind}} {{from}} → {{to}}(已应用)', en: '{{kind}} {{from}} → {{to}} (applied)' },
|
|
541
|
+
'reload-unchanged': { zh: '{{kind}} 无变化', en: '{{kind}} unchanged' },
|
|
542
|
+
'reload-skipped-env': { zh: '{{kind}} 跳过:环境变量优先', en: '{{kind}} skipped: env override wins' },
|
|
543
|
+
'reload-skipped-config': { zh: '{{kind}} 跳过:显式配置优先', en: '{{kind}} skipped: explicit config wins' },
|
|
544
|
+
'reload-skipped-invalid': { zh: '{{kind}} 跳过:文件缺失或无效', en: '{{kind}} skipped: missing or invalid file' },
|
|
545
|
+
'reload-footer': { zh: '提示:settings.yaml / cordis.patch.yml 由 watcher 自动热重载;cordis.yml 根配置改动需 /restart', en: 'Note: settings.yaml / cordis.patch.yml hot-reload via watchers; cordis.yml root config changes need /restart' },
|
|
546
|
+
'reload-kind-theme': { zh: '主题', en: 'theme' },
|
|
547
|
+
'reload-kind-lang': { zh: '语言', en: 'language' },
|
|
548
|
+
'reload-kind-preset': { zh: '预设', en: 'preset' },
|
|
549
|
+
'reload-kind-model': { zh: '模型', en: 'model' },
|
|
550
|
+
'reload-kind-activity': { zh: '活动指示', en: 'activity' },
|
|
551
|
+
// ── /restart (process restart with session resume) ────────────────────
|
|
552
|
+
'restart-starting': { zh: '正在重启 dsh-tui,完成后自动恢复当前会话……', en: 'Restarting dsh-tui. The session resumes when it comes back…' },
|
|
553
|
+
'restart-unavailable': { zh: '当前运行方式不支持进程内重启(未挂载重启通道)。', en: 'Restart is unavailable in this launch mode (no restart channel mounted).' },
|
|
554
|
+
'streaming-folded': { zh: '…(前 {{count}} 字符流式期间已折叠,落定后完整显示)', en: '…(first {{count}} chars folded while streaming; full text renders once the turn settles)' },
|
|
555
|
+
'mermaid-too-wide': { zh: '(图需要 {{width}} 列,当前宽度不足,显示源码)', en: '(diagram needs {{width}} columns; showing the source)' },
|
|
556
|
+
'vim-on': { zh: 'vim 模式已开启(Esc 切 normal,i/a/o 回 insert)', en: 'vim mode on (Esc = normal, i/a/o = insert)' },
|
|
557
|
+
'vim-off': { zh: 'vim 模式已关闭', en: 'vim mode off' },
|
|
558
|
+
'terminal-setup-hint': { zh: '推荐 Windows Terminal(≥110 列、等宽字体、TrueColor)。', en: 'Recommended: Windows Terminal (≥110 columns, monospace, TrueColor).' },
|
|
559
|
+
'terminal-paste-hint': { zh: '{{mod}}V 或 Alt+V 粘贴文本、文件路径或图片;Ctrl+Shift+V 终端原生粘贴;右键粘贴同样可用;快捷键可在 /settings 修改。', en: '{{mod}}V or Alt+V pastes text, file paths, or images; Ctrl+Shift+V is native terminal paste; right-click paste also works; remappable via /settings.' },
|
|
560
|
+
'connect-none': { zh: '当前环境未提供远程连接服务。', en: 'No remote connection service is available in this environment.' },
|
|
561
|
+
'theme-switch-failed': { zh: '主题「{{name}}」切换失败(无法写入 ~/.dsh-tui/theme.json)', en: 'Theme "{{name}}" switch failed (cannot write ~/.dsh-tui/theme.json)' },
|
|
562
|
+
'interrupt-delivered': { zh: '已打断当前回合,{{n}} 条消息立即处理', en: 'Interrupted current turn, {{n}} messages processed immediately' },
|
|
563
|
+
'btw-usage': { zh: '用法:/btw <问题> —— 不打断当前对话的快速侧问', en: 'Usage: /btw <question> — quick side question without interrupting the conversation' },
|
|
564
|
+
'btw-answering': { zh: '思考中…', en: 'Answering…' },
|
|
565
|
+
'btw-hint-loading': { zh: 'Esc 取消', en: 'Esc cancel' },
|
|
566
|
+
'btw-hint-done': { zh: '↑/↓ 滚动 · Space/Enter/Esc 关闭 · c 复制', en: '↑/↓ scroll · Space/Enter/Esc dismiss · c copy' },
|
|
567
|
+
'btw-llm-unavailable': { zh: '侧问不可用(llm 服务未挂载)', en: 'Side question unavailable (llm service not mounted)' },
|
|
568
|
+
'recap-llm-unavailable': { zh: 'recap 不可用(llm 服务未挂载)', en: 'Recap unavailable (llm service not mounted)' },
|
|
569
|
+
'recap-no-activity': { zh: '会话还没有可总结的活动', en: 'No session activity to recap yet' },
|
|
570
|
+
'recap-answering': { zh: '正在总结最近活动…', en: 'Summarizing recent activity…' },
|
|
571
|
+
'recap-title-label': { zh: '建议标题', en: 'Suggested title' },
|
|
572
|
+
'recap-apply-title': { zh: '应用', en: 'Apply' },
|
|
573
|
+
'recap-title-applied': { zh: '已应用', en: 'Applied' },
|
|
574
|
+
'recap-title-applied-notify': { zh: '已将会话标题设为「{{title}}」', en: 'Session title set to "{{title}}"' },
|
|
575
|
+
'recap-hint': { zh: '↑/↓ 滚动 · Space/Enter/Esc 关闭 · c 复制{{apply}}', en: '↑/↓ scroll · Space/Enter/Esc dismiss · c copy{{apply}}' },
|
|
576
|
+
'recap-auto-hint': { zh: '点击展开查看/应用', en: 'Click to expand & apply' },
|
|
577
|
+
'recap-auto-close': { zh: '关闭', en: 'Dismiss' },
|
|
578
|
+
'recap-auto-line': { zh: '回顾:{{summary}}', en: 'Recap: {{summary}}' },
|
|
579
|
+
'recap-panel-title': { zh: '会话回顾', en: 'Session recap' },
|
|
580
|
+
'recap-panel-subtitle': { zh: '最近活动的快速复盘', en: 'A quick recap of recent activity' },
|
|
581
|
+
'color-current': { zh: '当前会话颜色 {{name}}', en: 'Current session color {{name}}' },
|
|
582
|
+
'color-current-none': { zh: '当前会话未设置颜色(用主题默认)', en: 'No session color set (theme default)' },
|
|
583
|
+
'color-usage': { zh: '用法:/color <{{list}}|reset> —— 颜色按会话保存,resume 后仍在', en: 'Usage: /color <{{list}}|reset> — per-session, survives resume' },
|
|
584
|
+
'color-reset': { zh: '已清除会话颜色,恢复主题默认', en: 'Session color cleared — back to the theme default' },
|
|
585
|
+
'color-unknown': { zh: '未知颜色「{{name}}」· 可选:{{list}}', en: 'Unknown color "{{name}}" · available: {{list}}' },
|
|
586
|
+
'color-set': { zh: '会话颜色已设为 {{name}}', en: 'Session color set to {{name}}' },
|
|
587
|
+
'exit-press-again': { zh: '再次按 Ctrl+C 退出', en: 'Press Ctrl+C again to exit' },
|
|
588
|
+
'esc-again-rewind': { zh: '再次按 Esc 时间回溯', en: 'Press Esc again to rewind' },
|
|
589
|
+
'esc-again-clear': { zh: '再次按 Esc 清空', en: 'Press Esc again to clear' },
|
|
590
|
+
'new-session-started': { zh: '已新建会话', en: 'New session started' },
|
|
591
|
+
'command-not-found': { zh: '/{{name}}:没有这个命令', en: '/{{name}}: no such command' },
|
|
592
|
+
'command-images-unsupported': {
|
|
593
|
+
zh: '/{{name}} 不接受图片;草稿已保留',
|
|
594
|
+
en: '/{{name}} does not accept images; the draft was preserved',
|
|
595
|
+
},
|
|
596
|
+
'command-images-runtime-unsupported': {
|
|
597
|
+
zh: '/{{name}}:当前命令运行时不支持图片;草稿已保留',
|
|
598
|
+
en: '/{{name}}: this command runtime cannot accept images; the draft was preserved',
|
|
599
|
+
},
|
|
600
|
+
'command-images-limit': {
|
|
601
|
+
zh: '/{{name}}:图片数量或总大小超过当前 profile 限制;草稿已保留',
|
|
602
|
+
en: '/{{name}}: the image batch exceeds this profile\'s limits; the draft was preserved',
|
|
603
|
+
},
|
|
604
|
+
'command-images-missing': {
|
|
605
|
+
zh: '/{{name}}:图片已失效或不可读取({{paths}});草稿已保留',
|
|
606
|
+
en: '/{{name}}: images are stale or unreadable ({{paths}}); the draft was preserved',
|
|
607
|
+
},
|
|
608
|
+
'command-running': {
|
|
609
|
+
zh: '命令仍在执行,请等待本次结果',
|
|
610
|
+
en: 'The command is still running; wait for this attempt to settle',
|
|
611
|
+
},
|
|
612
|
+
'command-changed': {
|
|
613
|
+
zh: '/{{name}} 在图片准备期间发生变化;未执行,草稿已保留',
|
|
614
|
+
en: '/{{name}} changed while its images were prepared; it was not run and the draft was preserved',
|
|
615
|
+
},
|
|
616
|
+
'shell-images-unsupported': {
|
|
617
|
+
zh: 'Shell 命令不接受图片;草稿已保留',
|
|
618
|
+
en: 'Shell commands do not accept images; the draft was preserved',
|
|
619
|
+
},
|
|
620
|
+
'thinking-toggled': { zh: '思考过程:{{state}}', en: 'Thinking display: {{state}}' },
|
|
621
|
+
'thinking-on': { zh: '显示', en: 'shown' },
|
|
622
|
+
'thinking-off': { zh: '隐藏', en: 'hidden' },
|
|
623
|
+
'tokens-usage': { zh: 'Tokens:{{in}} 输入 · {{out}} 输出', en: 'Tokens: {{in}} in · {{out}} out' },
|
|
624
|
+
'tokens-usage-context': { zh: '{{usage}} · 上下文 {{percent}}%', en: '{{usage}} · {{percent}}% of context' },
|
|
625
|
+
// ── plugin.ts — /update flow ───────────────────────────────────────
|
|
626
|
+
'update-aborted-no-profile': { zh: 'dsh-tui 更新中止:未解析到 dsh profile。', en: 'dsh-tui update aborted: no dsh profile resolved.' },
|
|
627
|
+
// 0.8.3 launcher alignment bridge: /update only replaces the profile
|
|
628
|
+
// copy; the global `dsh-tui` launcher must be aligned separately.
|
|
629
|
+
'update-launcher-align-unknown': {
|
|
630
|
+
zh: 'Profile 已更新到 v{{version}}。如果你平时使用全局 dsh-tui 命令启动,请同步更新全局启动器:\n npm install -g --legacy-peer-deps dsh-cli@{{version}}\n(--legacy-peer-deps 可绕过 npm 12 的 peer 解析崩溃,全局启动器是瘦壳,跳过全局 peer 解析是安全的)',
|
|
631
|
+
en: 'The profile is now v{{version}}. If you normally launch with the global dsh-tui command, align the global launcher too:\n npm install -g --legacy-peer-deps dsh-cli@{{version}}\n(--legacy-peer-deps works around an npm 12 peer-resolution crash; the global launcher is a thin shim, so skipping global peer resolution is safe.)',
|
|
632
|
+
},
|
|
633
|
+
'update-launcher-outdated': {
|
|
634
|
+
zh: 'Profile 已更新到 v{{profile}},但全局启动器仍是 v{{launcher}}。请同步更新:\n npm install -g --legacy-peer-deps dsh-cli@{{profile}}\n(--legacy-peer-deps 可绕过 npm 12 的 peer 解析崩溃,见 #459)',
|
|
635
|
+
en: 'The profile is now v{{profile}}, but the global launcher is still v{{launcher}}. Align it with:\n npm install -g --legacy-peer-deps dsh-cli@{{profile}}\n(--legacy-peer-deps works around an npm 12 peer-resolution crash, see #459.)',
|
|
636
|
+
},
|
|
637
|
+
// ── components/ActivityLine.tsx ──────────────────────────────────────
|
|
638
|
+
'activity-ctx-warn': { zh: '⚠ 上下文', en: '⚠ ctx ' },
|
|
639
|
+
// ── components/ActivityPicker.tsx ─────────────────────────────────────
|
|
640
|
+
'activity-random-each-preset': { zh: '每次随机一个预设', en: 'random preset each time' },
|
|
641
|
+
// ── components/PresetPicker.tsx ──────────────────────────────────────
|
|
642
|
+
'preset-default-tag': { zh: '(默认)', en: ' (default)' },
|
|
643
|
+
'preset-broken-tag': { zh: '(无法加载)', en: ' (failed to load)' },
|
|
644
|
+
// ── channel.ts — reasoning-effort notifications ──────────────────────
|
|
645
|
+
'effort-unavailable': { zh: '推理等级切换不可用(llm 服务未挂载)', en: 'Reasoning effort switching unavailable (llm service not mounted)' },
|
|
646
|
+
'effort-read-failed': { zh: '推理等级读取失败 · {{error}}', en: 'Failed to read reasoning efforts · {{error}}' },
|
|
647
|
+
'effort-single-tier': { zh: '当前模型只有一档推理等级({{name}})', en: 'Current model has a single reasoning effort ({{name}})' },
|
|
648
|
+
'effort-unsupported': { zh: '当前模型不支持推理等级切换', en: 'Current model does not support reasoning effort switching' },
|
|
649
|
+
'effort-preference-downgraded': { zh: '偏好推理强度 {{preferred}} 不被当前模型支持,已就近降档至 {{applied}}', en: 'Preferred reasoning effort {{preferred}} is unavailable on this model; fell back to the nearest lower tier {{applied}}' },
|
|
650
|
+
'effort-preference-unsupported': { zh: '偏好推理强度 {{preferred}} 不被当前模型支持,且无更低可用档,保持模型默认', en: 'Preferred reasoning effort {{preferred}} is unavailable on this model with no lower tier; keeping the model default' },
|
|
651
|
+
'effort-switched': { zh: '推理强度 → {{name}}', en: 'Reasoning effort → {{name}}' },
|
|
652
|
+
'effort-invalid': { zh: '未知推理等级 {{id}}(当前模型可选:{{ids}})', en: 'Unknown reasoning effort {{id}} (this model offers: {{ids}})' },
|
|
653
|
+
'effort-current': { zh: '当前推理强度 {{name}}', en: 'Current reasoning effort {{name}}' },
|
|
654
|
+
'effort-usage': { zh: '用法:/effort(滑杆)| /effort <id> | /effort status', en: 'Usage: /effort (slider) | /effort <id> | /effort status' },
|
|
655
|
+
// ── channel.ts — Shift+Tab session modes ────────────────────────────
|
|
656
|
+
'mode-switched': { zh: '模式 → {{name}}', en: 'Mode → {{name}}' },
|
|
657
|
+
'mode-default': { zh: '默认', en: 'default' },
|
|
658
|
+
'mode-plan': { zh: '计划模式', en: 'plan mode' },
|
|
659
|
+
'mode-full': { zh: '完全访问', en: 'full access' },
|
|
660
|
+
'mode-plan-unavailable': { zh: '当前 preset 未注册 /plan 命令,无法切换计划模式', en: 'The active preset does not register /plan; cannot toggle plan mode' },
|
|
661
|
+
'mode-permission-unregistered': { zh: '当前 preset 未注册 /permission 命令,无法切换权限模式', en: 'The active preset does not register /permission; cannot switch the permission mode' },
|
|
662
|
+
'mode-permission-invoke-failed': { zh: '/permission 切换失败,请重试或查看日志', en: '/permission switch failed; retry or check the logs' },
|
|
663
|
+
'mode-permission-unconfirmed': { zh: '权限切换未被 DSH 确认,模式未改变', en: 'The permission switch was not confirmed by DSH; the mode is unchanged' },
|
|
664
|
+
'mode-permission-no-canonical': { zh: '模式「{{name}}」的 sandbox/approval 组合没有对应权限预设,无法安全切换', en: 'Mode "{{name}}" has no matching permission preset for its sandbox/approval combo; cannot switch safely' },
|
|
665
|
+
'cmd-desc-permission': { zh: '切换权限预设(沙箱模式 + 审批策略)', en: 'Switch the permission preset (sandbox mode + approval policy)' },
|
|
666
|
+
// ── components/LogoV2.tsx ───────────────────────────────────────────
|
|
667
|
+
'logo-tagline': { zh: '探索未至之境!', en: 'Explore the uncharted!' },
|
|
668
|
+
'logo-tip-prefix': { zh: '提示:', en: 'Tip: ' },
|
|
669
|
+
'logo-tip-more': { zh: '更多技巧', en: 'more tips' },
|
|
670
|
+
// Upstream-drift notice (merged one-liner under the tip; copy explains
|
|
671
|
+
// the problem AND the fix — the command pins the validated line).
|
|
672
|
+
'logo-drift-newer': {
|
|
673
|
+
zh: 'dsh 引擎为 {{installed}},比本界面验证过的 {{validated}} 新,可能出现兼容问题;求稳可执行 npm i -g @deepseek-ai/dsh@{{primary}} 降级,或等待 dsh-tui 适配新版。',
|
|
674
|
+
en: 'The dsh engine ({{installed}}) is newer than the {{validated}} this UI is validated against, so issues are possible; downgrade via npm i -g @deepseek-ai/dsh@{{primary}} for stability, or wait for a dsh-tui update.',
|
|
675
|
+
},
|
|
676
|
+
'logo-drift-older': {
|
|
677
|
+
zh: 'dsh 引擎为 {{installed}},低于本界面验证过的 {{validated}},部分功能可能不可用;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 升级。',
|
|
678
|
+
en: 'The dsh engine ({{installed}}) is older than the {{validated}} this UI is validated against; some features may be missing. Upgrade via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
679
|
+
},
|
|
680
|
+
'logo-drift-mixed': {
|
|
681
|
+
zh: '检测到 dsh 引擎多版本混装({{installed}}),容易出现奇怪问题;建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 统一版本。',
|
|
682
|
+
en: 'Mixed dsh engine versions detected ({{installed}}), which can cause odd behavior; unify them via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
683
|
+
},
|
|
684
|
+
'logo-drift-broken': {
|
|
685
|
+
zh: 'dsh 引擎版本异常({{installed}}),本界面验证过 {{validated}};建议执行 npm i -g @deepseek-ai/dsh@{{primary}} 重装。',
|
|
686
|
+
en: 'Unexpected dsh engine versions ({{installed}}); this UI is validated against {{validated}}. Reinstall via npm i -g @deepseek-ai/dsh@{{primary}}.',
|
|
687
|
+
},
|
|
688
|
+
// ── components/PromptInput.tsx ──────────────────────────────────────
|
|
689
|
+
'input-sent-after-turn': { zh: '已发送,当前回合结束后处理', en: 'Sent, processed after the current turn' },
|
|
690
|
+
'input-injected': { zh: '已从编辑器发送', en: 'Sent from editor' },
|
|
691
|
+
'input-interrupted-next': { zh: '已插话 · 下一步立即处理', en: 'Interrupted · processed next' },
|
|
692
|
+
'input-queued-after-turn': { zh: '已排队 · 回合结束后处理', en: 'Queued · processed after the turn' },
|
|
693
|
+
'input-cannot-retract': { zh: '无法撤回:消息可能已被处理,或当前版本不支持', en: 'Cannot retract: the message may already be processed, or this version doesn\'t support it' },
|
|
694
|
+
'input-retracted': { zh: '已撤回,可编辑后重新发送', en: 'Retracted, editable and resendable' },
|
|
695
|
+
'input-empty': { zh: '输入为空,没有可发送的内容', en: 'Empty input, nothing to send' },
|
|
696
|
+
'input-interrupt-immediate': { zh: '已打断当前回合,正在立即处理', en: 'Interrupted current turn, processing immediately' },
|
|
697
|
+
'input-clipboard-empty': { zh: '剪贴板为空', en: 'Clipboard is empty' },
|
|
698
|
+
'input-editor-unavailable': { zh: '错误:未配置编辑器。请设置 $VISUAL 或 $EDITOR 环境变量。', en: 'Error: No editor configured. Set $VISUAL or $EDITOR environment variable.' },
|
|
699
|
+
'input-editor-failed': { zh: '外部编辑器失败:{{name}}', en: 'External editor failed: {{name}}' },
|
|
700
|
+
'input-clipboard-read-failed': { zh: '读取剪贴板失败', en: 'Failed to read the clipboard' },
|
|
701
|
+
'input-clipboard-unavailable': { zh: '无法读取剪贴板:没有可用的 wl-paste / xclip / xsel(未安装或会话不可连接)', en: 'Cannot read clipboard: no usable wl-paste / xclip / xsel (not installed or session unreachable)' },
|
|
702
|
+
'input-image-pasted': { zh: '已粘贴图片 {{token}}', en: 'Pasted image {{token}}' },
|
|
703
|
+
'input-image-pasted-adjusted': { zh: '已粘贴图片 {{token}}({{detail}})', en: 'Pasted image {{token}} ({{detail}})' },
|
|
704
|
+
'input-image-detail-resized': { zh: '已缩放至 {{width}}×{{height}}', en: 'resized to {{width}}×{{height}}' },
|
|
705
|
+
'input-image-detail-converted': { zh: '{{from}} 已转 {{to}}', en: '{{from}} converted to {{to}}' },
|
|
706
|
+
'input-image-detail-converted-flattened': { zh: '{{from}} 已转 {{to}},透明区域已填白', en: '{{from}} converted to {{to}}, transparency filled white' },
|
|
707
|
+
'input-image-paste-failed': { zh: '粘贴图片失败:{{err}}', en: 'Could not paste image: {{err}}' },
|
|
708
|
+
'input-image-paste-limit': { zh: '图片数量超过当前配置的单条消息上限', en: 'Image count exceeds the per-message limit for this profile' },
|
|
709
|
+
'input-image-format-unsupported': { zh: '剪贴板图片格式不受支持;请使用 PNG、JPEG、WebP 或 GIF', en: 'Clipboard image format is unsupported; use PNG, JPEG, WebP, or GIF' },
|
|
710
|
+
'input-pending-steer-label': { zh: '插话 · 下一步送达', en: 'Steer · delivered next' },
|
|
711
|
+
'input-pending-queue-label': { zh: '排队 · 回合结束后送达', en: 'Queued · delivered after the turn' },
|
|
712
|
+
'input-pending-actions-hint': { zh: '撤回 · Esc 打断并立即发送', en: 'Retract · Esc interrupts and sends immediately' },
|
|
713
|
+
// U+30FB (not U+00B7): the separator participates in the folded-chip
|
|
714
|
+
// width arithmetic; U+00B7 is EA-ambiguous and paints 2 cells on CJK
|
|
715
|
+
// terminal fonts while the model measures 1 (see PromptInput foldBadge).
|
|
716
|
+
'input-fold-stats': { zh: '{{lines}} 行・{{chars}} 字', en: '{{lines}} lines・{{chars}} chars' },
|
|
717
|
+
'input-fold-hover': { zh: '悬停查看', en: 'hover to peek' },
|
|
718
|
+
'input-fold-peek-footer': { zh: '… 共 {{lines}} 行・点击展开编辑', en: '… {{lines}} lines total・click to edit' },
|
|
719
|
+
// ── 全屏草稿编辑(PromptInput 展开态 + PromptEditor Layer)─────────
|
|
720
|
+
'input-expand-editor-title': { zh: '草稿编辑', en: 'Draft editor' },
|
|
721
|
+
'input-expand-editor-position': { zh: '行 {{line}} · 列 {{col}}', en: 'Ln {{line}}, Col {{col}}' },
|
|
722
|
+
'input-expand-editor-scroll': { zh: '滚轮翻动 · 光标行自动跟随', en: 'wheel scrolls · caret row follows' },
|
|
723
|
+
'input-expand-editor-send': { zh: '发送', en: 'Send' },
|
|
724
|
+
'input-expand-editor-collapse': { zh: '收起', en: 'Collapse' },
|
|
725
|
+
'input-expand-editor-hint-send': { zh: 'Ctrl+Enter 发送', en: 'Ctrl+Enter sends' },
|
|
726
|
+
'input-expand-editor-hint-collapse': { zh: 'Esc 收起', en: 'Esc collapses' },
|
|
727
|
+
// ── messages/AssistantToolUseMessage.tsx(工具卡头部悬停元数据浮层)─────
|
|
728
|
+
// 头部已完整显示标题/参数时,悬停不再重复可见文本,改弹卡片元数据:
|
|
729
|
+
// 开始/结束/失败时刻、退出码与信号(这些头部都没有)。时长不入内——
|
|
730
|
+
// settled 卡的头部 chip(`· 5m30s`)与运行中卡的 body 已显示时长。
|
|
731
|
+
'tool-tip-started': { zh: '开始 {{time}}', en: 'started {{time}}' },
|
|
732
|
+
'tool-tip-finished': { zh: '结束 {{time}}', en: 'finished {{time}}' },
|
|
733
|
+
'tool-tip-failed': { zh: '失败 {{time}}', en: 'failed {{time}}' },
|
|
734
|
+
'tool-tip-exit': { zh: '退出码 {{code}}', en: 'exit {{code}}' },
|
|
735
|
+
'tool-tip-signal': { zh: '信号 {{name}}', en: 'signal {{name}}' },
|
|
736
|
+
// ── 工具卡本体(AssistantToolUseMessage.tsx / SplitDiffView.tsx)─────
|
|
737
|
+
// 工具名走 `tool-name-*` 家族:displayName() 用字面键映射表查字典(键在
|
|
738
|
+
// 代码里以字面量出现,无需登记 DYNAMIC_PREFIXES)。bash / powershell 是
|
|
739
|
+
// 产品名,zh 不译;未登记的 id(插件、上游新增)回退首字母大写——那是
|
|
740
|
+
// 名字不是文案,没有可翻译的内容。
|
|
741
|
+
'tool-name-bash': { zh: 'Bash', en: 'Bash' },
|
|
742
|
+
'tool-name-powershell': { zh: 'PowerShell', en: 'PowerShell' },
|
|
743
|
+
'tool-name-read': { zh: '读取', en: 'Read' },
|
|
744
|
+
'tool-name-glob': { zh: '文件搜索', en: 'Glob' },
|
|
745
|
+
'tool-name-grep': { zh: '内容搜索', en: 'Grep' },
|
|
746
|
+
'tool-name-write': { zh: '写入', en: 'Write' },
|
|
747
|
+
'tool-name-edit': { zh: '编辑', en: 'Edit' },
|
|
748
|
+
'tool-name-todo_write': { zh: '待办清单', en: 'TodoWrite' },
|
|
749
|
+
'tool-name-subagent': { zh: '子代理', en: 'Task' },
|
|
750
|
+
'tool-name-web_search': { zh: '联网搜索', en: 'WebSearch' },
|
|
751
|
+
// 正文错误行与运行中占位(区别于上面 tooltip 的短促小写风格):
|
|
752
|
+
'tool-exit-code': { zh: '退出码 {{code}}', en: 'Exit code {{code}}' },
|
|
753
|
+
'tool-killed-signal': { zh: '被信号 {{name}} 终止', en: 'Killed by signal {{name}}' },
|
|
754
|
+
'tool-running-elapsed': { zh: '运行中…({{duration}})', en: 'Running… ({{duration}})' },
|
|
755
|
+
// 搜索结果截断行(search 卡 paths 形态):
|
|
756
|
+
'search-results-total': { zh: '…(共 {{n}} 条)', en: '… ({{n}} total)' },
|
|
757
|
+
// 按行折叠的溢出提示:卡片正文行预算(capLines)、终端卡多行命令折叠
|
|
758
|
+
// (foldTerminalCommand)、分屏 diff 隐藏行(SplitDiffView)。按字符折叠
|
|
759
|
+
// 的行内标记见 long-line-folded。
|
|
760
|
+
'lines-folded-expand': { zh: '… +{{n}} 行(ctrl+o 展开)', en: '… +{{n}} lines (ctrl+o to expand)' },
|
|
761
|
+
// ── components/SuggestionCard.tsx(/ 命令菜单 · @ 文件菜单)─────────
|
|
762
|
+
'sugg-commands-title': { zh: '命令', en: 'commands' },
|
|
763
|
+
'sugg-files-title': { zh: '文件', en: 'files' },
|
|
764
|
+
'sugg-count': { zh: '共 {{n}} 项', en: '{{n}} items' },
|
|
765
|
+
'sugg-more-above': { zh: '↑{{n}}', en: '↑{{n}}' },
|
|
766
|
+
'sugg-more-below': { zh: '↓{{n}}', en: '↓{{n}}' },
|
|
767
|
+
// 二级补全子项描述(/lang /theme /effort /preset /activity 的 children)
|
|
768
|
+
'sugg-status-desc': { zh: '显示当前选择', en: 'Show the current choice' },
|
|
769
|
+
'sugg-lang-zh-desc': { zh: '切换界面语言到中文', en: 'Switch the UI language to Chinese' },
|
|
770
|
+
'sugg-lang-en-desc': { zh: '切换界面语言到英文', en: 'Switch the UI language to English' },
|
|
771
|
+
'sugg-theme-auto-desc': { zh: '跟随终端背景自动切换', en: 'Follow the terminal background' },
|
|
772
|
+
'sugg-theme-builtin-desc': { zh: '内置主题', en: 'Built-in theme' },
|
|
773
|
+
'sugg-theme-user-desc': { zh: '用户主题({{base}} 基底)', en: 'User theme ({{base}} base)' },
|
|
774
|
+
'sugg-theme-plugin-desc': { zh: '插件主题({{base}} 基底)', en: 'Plugin theme ({{base}} base)' },
|
|
775
|
+
'sugg-effort-level-desc': { zh: '思考强度档位', en: 'Reasoning effort level' },
|
|
776
|
+
'sugg-activity-frames-desc': { zh: '列出或切换动画帧预设', en: 'List or switch frame presets' },
|
|
777
|
+
'sugg-activity-frame-desc': { zh: '动画帧预设', en: 'Animation frame preset' },
|
|
778
|
+
'sugg-color-reset-desc': { zh: '清除会话颜色,恢复主题默认', en: 'Clear the session color' },
|
|
779
|
+
'sugg-color-name-desc': { zh: '会话强调色', en: 'Session accent color' },
|
|
780
|
+
// ── dsh-adapter/plugin.ts(/settings 渲染设置)───────────────────────
|
|
781
|
+
'settings-fullscreen-restart': { zh: '全屏设置已保存,重启 dsh-tui 后生效', en: 'Fullscreen preference saved — restart dsh-tui to apply' },
|
|
782
|
+
'settings-terminal-images-restart': { zh: '图片预览设置已保存,使用 /restart 重启 TUI 后生效', en: 'Image preview preference saved — use /restart to apply' },
|
|
783
|
+
'settings-fullscreen-migrated': { zh: '全屏已是出厂默认(已清除更新前的 inline 选择);偏好 inline 可在 /settings 改回', en: 'Fullscreen is now the factory default (pre-update inline choice cleared); prefer inline? Switch back in /settings' },
|
|
784
|
+
// ── components/HelpMenu.tsx ─────────────────────────────────────────
|
|
785
|
+
'help-for-commands': { zh: '/ 查看命令', en: '/ for commands' },
|
|
786
|
+
'help-this-help': { zh: '? 查看本帮助', en: '? for this help' },
|
|
787
|
+
'help-verbose-output': { zh: '{{mod}}o 详细输出', en: '{{mod}}o for verbose output' },
|
|
788
|
+
'help-open-trajectory': { zh: '{{mod}}t 打开会话轨迹', en: '{{mod}}t to open trajectory' },
|
|
789
|
+
'help-search-history': { zh: '{{mod}}r 搜索历史', en: '{{mod}}r to search history' },
|
|
790
|
+
'help-interrupt': { zh: 'ctrl+c 打断', en: 'ctrl+c to interrupt' },
|
|
791
|
+
'help-exit': { zh: 'ctrl+d 退出', en: 'ctrl+d to exit' },
|
|
792
|
+
'help-redraw': { zh: '{{mod}}l 重绘', en: '{{mod}}l to redraw' },
|
|
793
|
+
'help-clear-input': { zh: 'esc 清空输入', en: 'esc to clear input' },
|
|
794
|
+
'help-history-nav': { zh: '↑/↓ 历史', en: '↑/↓ for history' },
|
|
795
|
+
'help-move-cursor': { zh: '←/→ 移动光标', en: '←/→ to move cursor' },
|
|
796
|
+
'help-word-jumps': { zh: '{{mod}}←/→ 按词跳转', en: '{{mod}}←/→ for word jumps' },
|
|
797
|
+
'help-complete-command': { zh: 'tab 补全命令', en: 'tab to complete command' },
|
|
798
|
+
'help-cycle-mode': { zh: 'shift+tab 切换模式', en: 'shift+tab to cycle mode' },
|
|
799
|
+
'help-open-editor': { zh: 'ctrl+g 打开编辑器', en: 'ctrl+g to open editor' },
|
|
800
|
+
'help-fold-todos': { zh: '{{mod}}q 折叠待办', en: '{{mod}}q to fold todos' },
|
|
801
|
+
'goal-todo-fold-hint': { zh: '{{mod}}q 折叠', en: '{{mod}}q to fold' },
|
|
802
|
+
'help-commands-title': { zh: '命令:', en: 'commands:' },
|
|
803
|
+
'help-scroll-hint': {
|
|
804
|
+
zh: '↑/↓ 滚动 · PgUp/PgDn 翻页 · Home/End 首尾 · Esc 关闭',
|
|
805
|
+
en: '↑/↓ scroll · PgUp/PgDn page · Home/End jump · Esc close',
|
|
806
|
+
},
|
|
807
|
+
'tips-title': { zh: '使用技巧(快捷键 · 命令 · 工作流 · 个性化 · 避坑)', en: 'Usage tips (shortcuts · commands · workflow · display · gotchas)' },
|
|
808
|
+
'tips-hint': { zh: '↑/↓ 滚动 · Esc 关闭', en: '↑/↓ scroll · Esc to close' },
|
|
809
|
+
// ── components/TurnInterruptedRow.tsx ────────────────────────────────
|
|
810
|
+
'interrupted-by-user': { zh: '已打断 ', en: 'Interrupted ' },
|
|
811
|
+
'interrupted-ask-next': { zh: '· 接下来想让 DeepSeek 做什么?', en: '· What should DeepSeek do instead?' },
|
|
812
|
+
// ── components/MessageList.tsx ──────────────────────────────────────
|
|
813
|
+
'load-earlier': { zh: ' ↑ 加载更早消息(会话日志完整,/export 导出全文) ', en: ' ↑ load earlier messages (full session log; /export for full text) ' },
|
|
814
|
+
'show-previous-messages': { zh: ' ctrl+e 显示前 {{n}} 条消息 ', en: ' ctrl+e to show {{n}} previous messages ' },
|
|
815
|
+
// ── screens/Chat.tsx (/resume) ──────────────────────────────────────
|
|
816
|
+
'resume-resumed': { zh: '已恢复会话', en: 'Session resumed' },
|
|
817
|
+
// ── channel/agent-view-projection.ts + background-action.ts (session overview) ─
|
|
818
|
+
'agentview-empty-prompt': { zh: '派发内容不能为空', en: 'Dispatch prompt cannot be empty' },
|
|
819
|
+
'agentview-dispatch-unavailable': { zh: '无法派发后台会话——agent 服务不可用', en: 'Cannot dispatch a background session — the agent service is unavailable' },
|
|
820
|
+
'agentview-dispatch-failed': { zh: '后台会话创建失败 · {{err}}', en: 'Background session creation failed · {{err}}' },
|
|
821
|
+
'agentview-reply-empty': { zh: '回复内容为空', en: 'Reply is empty' },
|
|
822
|
+
'agentview-reply-stopped': { zh: '该会话未运行——回车切换进去后回复', en: 'This session is not running — press Enter to attach and reply' },
|
|
823
|
+
// Approval panel annotation for a background session's ask.
|
|
824
|
+
'approval-background-agent': { zh: '来自后台会话 {{id}} 的审批请求', en: 'Approval request from background session {{id}}' },
|
|
825
|
+
// Prompt footer session navigation: the ← affordance's hint.
|
|
826
|
+
'input-background-hint-count': { zh: '← {{n}} 个会话等待输入', en: '← {{n}} agents' },
|
|
827
|
+
'input-background-hint-idle': { zh: '← 会话总览', en: '← for agents' },
|
|
828
|
+
// ── screens/Settings.tsx (/settings, issue #165) ───────────────────
|
|
829
|
+
'settings-title': { zh: '插件设置', en: 'Plugin settings' },
|
|
830
|
+
'settings-unavailable': { zh: '设置服务未挂载——只读', en: 'settings service absent — read-only' },
|
|
831
|
+
'settings-empty': { zh: '没有可配置的插件设置(尚无插件注册设置区块)', en: 'No configurable plugin settings (no plugin has registered a section)' },
|
|
832
|
+
'settings-group-empty': { zh: '此分组没有可配置字段', en: 'No configurable fields in this group' },
|
|
833
|
+
'settings-section-unavailable': { zh: '命名空间未注册', en: 'namespace not served' },
|
|
834
|
+
'settings-badge-restart': { zh: '重启生效', en: 'applies on restart' },
|
|
835
|
+
'settings-badge-dirty': { zh: '未保存', en: 'unsaved' },
|
|
836
|
+
'settings-badge-saving': { zh: '保存中', en: 'saving' },
|
|
837
|
+
'settings-badge-failed': { zh: '保存失败', en: 'save failed' },
|
|
838
|
+
'settings-field-customized': { zh: '已自定义', en: 'customized' },
|
|
839
|
+
'settings-field-empty': { zh: '(未设置)', en: '(unset)' },
|
|
840
|
+
'settings-field-invalid': { zh: '无效输入', en: 'invalid' },
|
|
841
|
+
'settings-secret-set': { zh: '●●●●●●(已配置)', en: '●●●●●● (configured)' },
|
|
842
|
+
'settings-secret-unset': { zh: '(未配置)', en: '(not configured)' },
|
|
843
|
+
'settings-secret-staged': { zh: '(待保存)', en: '(pending save)' },
|
|
844
|
+
'settings-saved': { zh: '已保存 {{ns}}', en: 'Saved {{ns}}' },
|
|
845
|
+
'settings-save-failed': { zh: '保存 {{ns}} 失败——请重试', en: 'Saving {{ns}} failed — please retry' },
|
|
846
|
+
'settings-secret-ref-reserved': { zh: '凭据 {{ref}} 由宿主保留,写入被拒绝:第三方设置区块不能覆盖宿主共享凭据', en: 'Credential {{ref}} is reserved by the host; write rejected: third-party settings sections cannot overwrite host-shared credentials' },
|
|
847
|
+
'settings-hint-list': { zh: '**Enter** 进入/编辑/切换(改动即保存) · Esc 退出', en: '**Enter** open/edit/toggle (auto-saves) · Esc exit' },
|
|
848
|
+
'settings-hint-group': { zh: '**Enter** 编辑/切换(改动即保存) · Esc 返回', en: '**Enter** edit/toggle (auto-saves) · Esc back' },
|
|
849
|
+
'settings-hint-edit': { zh: '**Enter** 确认并保存 · Esc 取消', en: '**Enter** to confirm & save · Esc to cancel' },
|
|
850
|
+
// ── 会话与工作区列表行:行、计数、筛选、预览 ─────────────────────────
|
|
851
|
+
'session-resume-failed': { zh: '恢复会话失败 · {{err}}', en: 'Resuming the session failed · {{err}}' },
|
|
852
|
+
'session-when-now': { zh: '刚刚', en: 'just now' },
|
|
853
|
+
'session-when-minutes': { zh: '{{n}} 分钟前', en: '{{n}}m ago' },
|
|
854
|
+
'session-when-hours': { zh: '{{n}} 小时前', en: '{{n}}h ago' },
|
|
855
|
+
'session-when-days': { zh: '{{n}} 天前', en: '{{n}}d ago' },
|
|
856
|
+
'session-when-date': { zh: '{{month}} 月 {{day}} 日', en: '{{month}}/{{day}}' },
|
|
857
|
+
'session-children': { zh: '{{n}} 个子运行', en: '{{n}} runs' },
|
|
858
|
+
'session-kind-root': { zh: '对话', en: 'Conversation' },
|
|
859
|
+
'session-kind-fork': { zh: '回溯分支', en: 'Rewound branch' },
|
|
860
|
+
'session-kind-subagent': { zh: '子 agent 运行', en: 'Sub-agent run' },
|
|
861
|
+
'session-project-unknown': { zh: '(未记录目录)', en: '(no directory recorded)' },
|
|
862
|
+
'session-workspace-all': { zh: '全部工作目录', en: 'All working directories' },
|
|
863
|
+
'session-workspace-current': { zh: '当前', en: 'current' },
|
|
864
|
+
'session-workspace-project-count': { zh: '{{n}} 个目录', en: '{{n}} directories' },
|
|
865
|
+
'session-workspace-all-detail': { zh: '跨目录浏览 · {{n}} 个会话', en: 'browse across directories · {{n}} sessions' },
|
|
866
|
+
'session-workspace-empty': { zh: '暂无历史会话', en: 'no history yet' },
|
|
867
|
+
// Right-click session menu items (components/sessions/SessionListRow.tsx).
|
|
868
|
+
'resume-menu-pin': { zh: '固定到顶部', en: 'Pin to top' },
|
|
869
|
+
'resume-menu-unpin': { zh: '取消固定', en: 'Unpin' },
|
|
870
|
+
// Session pinning (supervisor toasts + persisted pin state).
|
|
871
|
+
'resume-pin-save-failed': { zh: '固定状态保存失败,未应用更改', en: 'Could not save pin; no change was applied' },
|
|
872
|
+
'session-count-shown': { zh: '{{n}} 个会话', en: '{{n}} sessions' },
|
|
873
|
+
'session-preview-times': { zh: '创建于 {{created}} · 最后活动 {{updated}}', en: 'created {{created}} · last active {{updated}}' },
|
|
874
|
+
'session-preview-loading': { zh: '正在读取会话结尾…', en: 'Reading the end of this session…' },
|
|
875
|
+
'session-preview-empty': { zh: '这个会话没有可预览的往来消息', en: 'No exchanges to preview in this session' },
|
|
876
|
+
// ── picker 通用快捷键提示(整句本地化,zh 不用 "to" 结构;**段** 渲染为粗体主快捷键)─
|
|
877
|
+
'hint-confirm-exit': { zh: '**Enter** 确认 · Esc 退出', en: '**Enter** to confirm · Esc to exit' },
|
|
878
|
+
'hint-select-exit': { zh: '**Enter** 选择 · Esc 退出', en: '**Enter** to select · Esc to exit' },
|
|
879
|
+
'hint-fill-exit': { zh: '**Enter** 填入命令 · Esc 退出', en: '**Enter** to insert · Esc to exit' },
|
|
880
|
+
'hint-rewind-back': { zh: '**Enter** 回退 · Esc 返回', en: '**Enter** to rewind · Esc to back' },
|
|
881
|
+
'statusline-hint-select': { zh: 'esc 返回输入', en: 'esc to return to input' },
|
|
882
|
+
'statusline-hint-working': { zh: 'esc 中断', en: 'esc to interrupt' },
|
|
883
|
+
'statusline-hint-shortcuts': { zh: '? 查看快捷键', en: '? for shortcuts' },
|
|
884
|
+
// ── 底栏字段 hover 明细(补充行读出;技术标签 ctx/free/read 等保持不译)──
|
|
885
|
+
'status-detail-session-id': { zh: '会话日志目录与此 id 同名', en: 'the session log directory is named after this id' },
|
|
886
|
+
'hint-ext-dialog-input': { zh: '**Enter** 确认 · Esc 取消', en: '**Enter** to confirm · Esc to cancel' },
|
|
887
|
+
'hint-adjust-done': { zh: '**←/→** 调整 · Enter/Esc 完成', en: '**←/→** to adjust · Enter/Esc to done' },
|
|
888
|
+
'hint-history-search': { zh: '↑/↓ 选择 · **Enter** 确认 · Esc 取消', en: '↑/↓ to navigate · **Enter** to select · Esc to cancel' },
|
|
889
|
+
'hint-expand-ctrl-o': { zh: '(ctrl+o 展开)', en: '(ctrl+o to expand)' },
|
|
890
|
+
// 转录里的超长单行(utils/fold-long-lines.ts):行尾内联标记。鼠标点整行
|
|
891
|
+
// (工具卡点卡面)即可展开/收起,键盘走 ctrl+o —— 两种都写进文案。
|
|
892
|
+
'long-line-folded': { zh: '… 已折叠 {{n}} 字符(点击或 ctrl+o 展开)', en: '… {{n}} chars folded (click or ctrl+o to expand)' },
|
|
893
|
+
// ── components/FileActionsPanel.tsx(点击文件路径弹出的操作菜单)──
|
|
894
|
+
'file-actions-title': { zh: '文件操作', en: 'File actions' },
|
|
895
|
+
'file-actions-open': { zh: '打开文件', en: 'Open file' },
|
|
896
|
+
'file-actions-open-dir': { zh: '打开文件夹', en: 'Open folder' },
|
|
897
|
+
'file-actions-reveal': { zh: '打开所在文件夹', en: 'Reveal in folder' },
|
|
898
|
+
'file-actions-copy': { zh: '复制绝对路径', en: 'Copy absolute path' },
|
|
899
|
+
// ── components/ModelPicker.tsx / ThemePicker.tsx / ActivityPicker.tsx / EffortSlider.tsx ──
|
|
900
|
+
'picker-title-model': { zh: '模型', en: 'Model' },
|
|
901
|
+
'picker-group-recent': { zh: '最近使用', en: 'Recently used' },
|
|
902
|
+
'picker-group-count': { zh: '{{count}} 个模型', en: '{{count}} models' },
|
|
903
|
+
'hint-model-groups': { zh: '**Enter** 查看模型 · Esc 退出', en: '**Enter** to view models · Esc to exit' },
|
|
904
|
+
'hint-model-back': { zh: '**Enter** 切换模型 · Esc/⌫ 返回上级', en: '**Enter** to switch · Esc/⌫ to go back' },
|
|
905
|
+
'picker-title-skills': { zh: '技能', en: 'Skills' },
|
|
906
|
+
'skills-loading': { zh: '正在加载技能', en: 'Loading skills' },
|
|
907
|
+
'skills-loading-subtitle': { zh: '正在查询技能注册表…', en: 'Querying the skill registry…' },
|
|
908
|
+
'skills-empty': { zh: '当前会话没有可用技能', en: 'No skills available in this session' },
|
|
909
|
+
'skills-load-failed': { zh: '技能列表加载失败', en: 'Failed to load the skill list' },
|
|
910
|
+
'skills-unknown': { zh: '未知技能「{{name}}」', en: 'Unknown skill "{{name}}"' },
|
|
911
|
+
'skills-not-invocable': { zh: '技能「{{name}}」不可直接调用', en: 'Skill "{{name}}" is not directly invocable' },
|
|
912
|
+
'plugin-scene-crashed': { zh: '插件场景「{{id}}」渲染崩溃:{{err}}(已自动关闭)', en: 'Plugin scene "{{id}}" crashed while rendering: {{err}} (closed)' },
|
|
913
|
+
'skills-source-bundled': { zh: '内置', en: 'built-in' },
|
|
914
|
+
'skills-source-user': { zh: '用户', en: 'user' },
|
|
915
|
+
'skills-source-project': { zh: '项目', en: 'project' },
|
|
916
|
+
'skills-source-runtime': { zh: '运行时', en: 'runtime' },
|
|
917
|
+
'skills-source-custom': { zh: '自定义', en: 'custom' },
|
|
918
|
+
'picker-title-theme': { zh: '颜色主题', en: 'Color theme' },
|
|
919
|
+
'picker-title-activity': { zh: '指示器预设', en: 'Indicator preset' },
|
|
920
|
+
'picker-title-color': { zh: '会话强调色', en: 'Session accent color' },
|
|
921
|
+
'picker-title-effort': { zh: '推理强度', en: 'Reasoning effort' },
|
|
922
|
+
'model-loading': { zh: '正在加载模型', en: 'Loading models' },
|
|
923
|
+
'model-loading-subtitle': { zh: '正在查询 provider…', en: 'Querying the provider…' },
|
|
924
|
+
'model-switching': { zh: '正在切换模型到 {{name}}…', en: 'Switching model to {{name}}…' },
|
|
925
|
+
'model-switched': { zh: '模型已切换为 {{name}}', en: 'Model switched to {{name}}' },
|
|
926
|
+
// ── components/RewindPicker.tsx ─────────────────────────────────────
|
|
927
|
+
'rewind-title': { zh: '回退', en: 'Rewind' },
|
|
928
|
+
'rewind-subtitle': { zh: '选择一条消息,将对话回退到该处', en: 'Pick a message to rewind the conversation to' },
|
|
929
|
+
'rewind-confirm-title': { zh: '将对话回退到这条消息?', en: 'Rewind conversation to this message?' },
|
|
930
|
+
'rewind-confirm-desc': { zh: '对话从此处重新开始', en: 'conversation restarts here' },
|
|
931
|
+
'rewind-empty': { zh: '没有可回退的消息', en: 'No messages to rewind to' },
|
|
932
|
+
'rewind-last-message': { zh: '最近一条消息', en: 'last message' },
|
|
933
|
+
'rewind-none': { zh: '还没有可回退的消息', en: 'Nothing to rewind yet' },
|
|
934
|
+
'rewind-done': { zh: '已回退——编辑后按 Enter 重新发送', en: 'Rewound — edit and press Enter to resend' },
|
|
935
|
+
'rewind-mode-default': { zh: '仅回退会话', en: 'Conversation only' },
|
|
936
|
+
'rewind-waiting-plugins': { zh: '正在等待插件决定…(Esc 放弃等待)', en: 'Waiting for plugins… (Esc to stop waiting)' },
|
|
937
|
+
// ── 插件扩展缝(dsh-tui-extensions:决策事件 + 托管对话框 + 快捷键)──
|
|
938
|
+
'ext-action-cancelled': { zh: '操作已被插件取消', en: 'Action cancelled by a plugin' },
|
|
939
|
+
'ext-action-handled': { zh: '输入已由插件处理', en: 'Input handled by a plugin' },
|
|
940
|
+
'ext-decision-pending': { zh: '正在等待插件决定({{event}})…', en: 'Waiting for a plugin decision ({{event}})…' },
|
|
941
|
+
'ext-stale-dropped': { zh: '等待插件期间会话已切换,该条输入已丢弃', en: 'Session switched while a plugin decided — the input was dropped' },
|
|
942
|
+
'ext-compact-stale': { zh: '等待插件期间会话已切换,压缩已取消', en: 'Session switched while a plugin decided — compaction abandoned' },
|
|
943
|
+
'ext-shortcut-failed': { zh: '插件快捷键 {{combo}} 执行失败', en: 'Plugin shortcut {{combo}} failed' },
|
|
944
|
+
'command-invoke-denied': { zh: '命令调用已被授权文件拒绝(commands.invoke 已撤销)', en: 'Command invocation denied by the grants file (commands.invoke revoked)' },
|
|
945
|
+
'command-invoke-denied-owner': {
|
|
946
|
+
zh: '命令 "/{{name}}" 的调用已被拒绝——注册它的插件 "{{owner}}" 已被撤销 commands.invoke',
|
|
947
|
+
en: 'Command "/{{name}}" invocation denied — its owner plugin "{{owner}}" lost commands.invoke',
|
|
948
|
+
},
|
|
949
|
+
// /plugins 诊断面(C-070 信任披露 + 协商诊断)
|
|
950
|
+
'plugins-trust-banner': {
|
|
951
|
+
zh: '插件与宿主同进程运行:授权是行为约束而非安全隔离;通过校验 ≠ 插件安全(C-070)。',
|
|
952
|
+
en: 'Plugins run in-process with the host: grants are behavioral constraints, not a security boundary; passing validation ≠ a safe plugin (C-070).',
|
|
953
|
+
},
|
|
954
|
+
'plugins-host-unavailable': { zh: 'plugin-host 行未挂载:Host Descriptor 与授权矩阵按无信息降级。', en: 'plugin-host row not mounted: Host Descriptor and grant matrix degraded to no-data.' },
|
|
955
|
+
'plugins-contract-dropped': { zh: '已剔除(vendored 哈希漂移)', en: 'dropped (vendored hash drift)' },
|
|
956
|
+
'plugins-matrix-note': { zh: '授权矩阵(✓ 允许 / · 拒绝;仅显示有足迹的插件——授权文件、效果台账与存储目录的并集):', en: 'Grant matrix (✓ allowed / · denied; plugins with footprints only — union of the grants file, effect ledger, and storage directory):' },
|
|
957
|
+
'plugins-matrix-no-registry': { zh: '(权限注册表不可用)', en: '(permission registry unavailable)' },
|
|
958
|
+
'plugins-matrix-empty': { zh: '(暂无插件足迹)', en: '(no plugin footprints yet)' },
|
|
959
|
+
'plugins-footprint-overflow': { zh: '…另有 {{count}} 个插件未显示', en: { one: '…{{count}} more plugin not shown', other: '…{{count}} more plugins not shown' } },
|
|
960
|
+
'plugins-ledger-empty': { zh: '效果台账为空。', en: 'The effect ledger is empty.' },
|
|
961
|
+
'plugins-ledger-header': { zh: '效果台账({{file}})尾 5 条:', en: 'Effect ledger ({{file}}), last 5 records:' },
|
|
962
|
+
'plugins-unknown-subcommand': { zh: '未知子命令:{{sub}}(支持:check <路径>)', en: 'Unknown subcommand: {{sub}} (supported: check <path>)' },
|
|
963
|
+
'plugins-check-usage': { zh: '用法:/plugins check <dsh-plugin.json 路径>', en: 'Usage: /plugins check <path-to-dsh-plugin.json>' },
|
|
964
|
+
'plugins-check-not-found': { zh: '文件不存在:{{path}}', en: 'File not found: {{path}}' },
|
|
965
|
+
'plugins-check-invalid-json': { zh: '不是可解析的 JSON:{{err}}', en: 'Not parseable JSON: {{err}}' },
|
|
966
|
+
'plugins-check-spec-unavailable': { zh: 'vendored 规范数据不可用(dsh-ecosystem-spec/),无法校验。', en: 'Vendored spec data unavailable (dsh-ecosystem-spec/); cannot validate.' },
|
|
967
|
+
'plugins-check-schema-failed': { zh: 'schema 校验失败:{{err}}', en: 'Schema validation failed: {{err}}' },
|
|
968
|
+
'plugins-check-invalid': { zh: '语义校验失败:{{err}}', en: 'Semantic validation failed: {{err}}' },
|
|
969
|
+
'plugins-check-state': { zh: '协商结果:{{state}}', en: 'Negotiation decision: {{state}}' },
|
|
970
|
+
'plugins-grant-hint': {
|
|
971
|
+
zh: '授权方法:在 ~/.dsh-tui/extension-grants.json 的 "grants" 段为插件 id 添加规则(如 { "name": "<权限>", "scope": "<范围>" }),保存即生效、无需重启。',
|
|
972
|
+
en: 'To grant: add a rule for the plugin id under "grants" in ~/.dsh-tui/extension-grants.json (e.g. { "name": "<permission>", "scope": "<scope>" }); saved changes apply immediately, no restart.',
|
|
973
|
+
},
|
|
974
|
+
'plugins-check-grant-hint': {
|
|
975
|
+
zh: '授权方法:在 ~/.dsh-tui/extension-grants.json 的 "grants" 段加入 "{{id}}": [{ "name": "<权限>", "scope": "<范围>" }];待授权权限:{{perms}}。',
|
|
976
|
+
en: 'To authorize: add "{{id}}": [{ "name": "<permission>", "scope": "<scope>" }] under "grants" in ~/.dsh-tui/extension-grants.json; pending permissions: {{perms}}.',
|
|
977
|
+
},
|
|
978
|
+
'plugins-check-dropped': { zh: '(宿主描述符已剔除漂移契约:{{dropped}})', en: '(host descriptor dropped drifted contracts: {{dropped}})' },
|
|
979
|
+
'plugins-check-host-unavailable': { zh: '当前没有 live Host Descriptor;只做静态 manifest 校验,不进行协议支持声明/协商。', en: 'No live Host Descriptor is available; only static manifest validation was performed, no protocol support declaration/negotiation.' },
|
|
980
|
+
'doctor-plugin-generation': { zh: '插件运行时 generation:{{id}}', en: 'Plugin runtime generation: {{id}}' },
|
|
981
|
+
'doctor-plugin-registry': { zh: '插件规范注册表自检:{{state}}', en: 'Plugin-spec registry self-check: {{state}}' },
|
|
982
|
+
'doctor-plugin-host-missing': { zh: 'plugin-host 行未挂载', en: 'plugin-host row not mounted' },
|
|
983
|
+
'ext-dialog-yes': { zh: '是', en: 'Yes' },
|
|
984
|
+
'ext-dialog-no': { zh: '否', en: 'No' },
|
|
985
|
+
// ── components/ThinkingToggle.tsx + messages/AssistantThinkingMessage.tsx ──
|
|
986
|
+
'thinking-title': { zh: '思考过程显示', en: 'Thinking display' },
|
|
987
|
+
'thinking-subtitle': { zh: '只控制思考过程是否显示,不改变模型的思考行为。', en: 'Only controls whether reasoning is shown; it does not change model behavior.' },
|
|
988
|
+
'thinking-enabled': { zh: '显示', en: 'Shown' },
|
|
989
|
+
'thinking-enabled-desc': { zh: '在对话中显示 DeepSeek 的思考过程', en: "Show DeepSeek's reasoning in the conversation" },
|
|
990
|
+
'thinking-disabled': { zh: '隐藏', en: 'Hidden' },
|
|
991
|
+
'thinking-disabled-desc': { zh: '隐藏思考过程;模型仍会照常思考', en: 'Hide reasoning; the model will still think as usual' },
|
|
992
|
+
'thinking-label': { zh: '思考', en: 'Thinking' },
|
|
993
|
+
// ── components/HistorySearchDialog.tsx ──────────────────────────────
|
|
994
|
+
'history-search-title': { zh: '搜索历史', en: 'Search history' },
|
|
995
|
+
'history-search-placeholder': { zh: '输入以搜索…', en: 'Type to search…' },
|
|
996
|
+
'history-search-empty': { zh: '没有匹配的命令', en: 'No matching commands' },
|
|
997
|
+
'time-now': { zh: '刚刚', en: 'now' },
|
|
998
|
+
'time-minutes-ago': { zh: '{{n}} 分钟前', en: '{{n}}m ago' },
|
|
999
|
+
'time-hours-ago': { zh: '{{n}} 小时前', en: '{{n}}h ago' },
|
|
1000
|
+
'time-days-ago': { zh: '{{n}} 天前', en: '{{n}}d ago' },
|
|
1001
|
+
// ── screens/Chat.tsx(/ 转录搜索条)─────────────────────────────────
|
|
1002
|
+
'search-no-matches': { zh: '无匹配', en: 'no matches' },
|
|
1003
|
+
'rename-usage': { zh: '用法 /rename <新名称>', en: 'Usage /rename <new title>' },
|
|
1004
|
+
'rename-current': { zh: '当前名称 {{title}}', en: 'Current title {{title}}' },
|
|
1005
|
+
'rename-done': { zh: '已重命名为「{{title}}」', en: 'Renamed to "{{title}}"' },
|
|
1006
|
+
'compact-summary-folded': { zh: '摘要已折叠', en: 'Summary folded' },
|
|
1007
|
+
'new-message': { zh: '↓ {{n}} 条新消息', en: '↓ 1 new message' },
|
|
1008
|
+
'new-messages': { zh: '↓ {{n}} 条新消息', en: '↓ {{n}} new messages' },
|
|
1009
|
+
'back-to-bottom': { zh: '↓ 回到底部(Enter/End)', en: '↓ back to bottom (Enter/End)' },
|
|
1010
|
+
// ── components/ThemePicker.tsx ──────────────────────────────────────
|
|
1011
|
+
'theme-builtin-base': { zh: '内置 · {{name}} 基底', en: 'Built-in · {{name}} base' },
|
|
1012
|
+
'theme-auto-base': { zh: '内置 · 跟随系统/终端背景自动选择 light/dark', en: 'Built-in · follows the system/terminal background (light/dark)' },
|
|
1013
|
+
'theme-user-base': { zh: '{{base}} 基底 · ~/.dsh-tui/themes/{{name}}.json', en: '{{base}} base · ~/.dsh-tui/themes/{{name}}.json' },
|
|
1014
|
+
'theme-plugin-base': { zh: '插件 · {{base}} 基底 · {{name}}', en: 'Plugin · {{base}} base · {{name}}' },
|
|
1015
|
+
// ── components/LoadedContextPanel.tsx ───────────────────────────────
|
|
1016
|
+
'context-unavailable': { zh: '当前会话没有已加载的上下文', en: 'No loaded context is available for this session' },
|
|
1017
|
+
'context-panel-sections': { zh: '系统提示词 · {{n}} 段', en: 'System prompt · {{n}} sections' },
|
|
1018
|
+
'context-panel-files': { zh: '工作区指令 · {{n}} 个文件', en: 'Workspace instructions · {{n}} files' },
|
|
1019
|
+
'context-panel-runtime': { zh: '运行时上下文 · {{n}} 项', en: 'Runtime context · {{n}} items' },
|
|
1020
|
+
'context-panel-skills': { zh: '技能 · {{n}}', en: 'Skills · {{n}}' },
|
|
1021
|
+
'context-panel-tools': { zh: '工具 · {{n}}', en: 'Tools · {{n}}' },
|
|
1022
|
+
// ── components/questions/AskUserQuestionPanel.tsx ───────────────────
|
|
1023
|
+
'question-provider-occupied': { zh: '⚠️ 问卷通道已被非宿主组件 {{id}} 占用,模型提问可能被代答(本界面未接入问卷)', en: '⚠️ The questionnaire channel is held by a non-host component ({{id}}); model questions may be answered by it (this UI did not take the seat)' },
|
|
1024
|
+
'question-provider-occupied-unverified': { zh: '⚠️ 问卷通道被一个自报为 {{id}} 的组件占用——身份未经宿主验证,模型提问可能被代答(本界面未接入问卷)', en: '⚠️ The questionnaire channel is held by a component self-reporting as {{id}} — identity not host-verified; model questions may be answered by it (this UI did not take the seat)' },
|
|
1025
|
+
'question-provider-occupied-unknown': { zh: '身份未知', en: 'identity unknown' },
|
|
1026
|
+
'question-select-or-answer': { zh: '至少选择一个选项,或在最后一行输入回答', en: 'Select at least one option, or type an answer on the last line' },
|
|
1027
|
+
'question-answer-or-check': { zh: '输入回答或勾选选项后再提交', en: 'Type an answer or check options before submitting' },
|
|
1028
|
+
'question-type-answer-first': { zh: '先输入回答内容再提交', en: 'Type your answer before submitting' },
|
|
1029
|
+
'question-header-progress': { zh: ' 📋 提问 · 第 {{position}}/{{total}} 题{{remaining}} ', en: ' 📋 Question {{position}}/{{total}} {{remaining}} ' },
|
|
1030
|
+
'question-remaining-more': { zh: ' · 还剩 {{n}} 题', en: ' · {{n}} left' },
|
|
1031
|
+
'question-hint-type': { zh: '输入回答', en: 'Type answer' },
|
|
1032
|
+
'question-hint-paste': { zh: 'Ctrl+V 粘贴', en: 'Ctrl+V paste' },
|
|
1033
|
+
'question-hint-enter': { zh: 'Enter 提交', en: 'Enter submit' },
|
|
1034
|
+
'question-hint-back': { zh: '↑ 返回选项', en: '↑ back to options' },
|
|
1035
|
+
'question-hint-esc': { zh: 'Esc 中断', en: 'Esc cancel' },
|
|
1036
|
+
'question-hint-previous': { zh: 'Esc 上一题', en: 'Esc previous question' },
|
|
1037
|
+
'question-hint-cancel': { zh: 'Ctrl+C 取消整批', en: 'Ctrl+C cancel batch' },
|
|
1038
|
+
'question-hint-selected': { zh: '已选 {{n}}', en: 'Selected {{n}}' },
|
|
1039
|
+
'question-hint-select': { zh: '↑/↓ 选择', en: '↑/↓ select' },
|
|
1040
|
+
'question-hint-multi': { zh: 'Space 多选', en: 'Space multi-select' },
|
|
1041
|
+
'question-hint-attach': { zh: '输入文字附带回答', en: 'Type text to attach an answer' },
|
|
1042
|
+
'question-fold-waiting': { zh: '正在等你回答', en: 'Waiting for your answer' },
|
|
1043
|
+
'question-fold-expand': { zh: '{{combo}} 展开', en: '{{combo}} to expand' },
|
|
1044
|
+
'question-fold-hint': { zh: '{{combo}} 折叠 / 点标题行收起', en: '{{combo}} to fold / click the header' },
|
|
1045
|
+
'question-submit-selection': { zh: '提交选择(Enter)', en: 'Submit selection (Enter)' },
|
|
1046
|
+
'question-custom-tab': { zh: '自定义回答', en: 'Custom answer' },
|
|
1047
|
+
'question-attached-label': { zh: '(附加:{{label}})', en: '(attached: {{label}})' },
|
|
1048
|
+
'question-direct-input': { zh: '直接输入…', en: 'Type directly…' },
|
|
1049
|
+
'question-paste-not-text': { zh: '剪贴板内容是图片或文件,无法作为文字粘贴', en: 'Clipboard holds an image or file — not pastable as text' },
|
|
1050
|
+
'question-paste-too-long': { zh: '粘贴内容过长(最多 {{n}} 个字符),请精简后再试', en: 'Pasted content is too long (max {{n}} characters) — trim it and try again' },
|
|
1051
|
+
// ── components/approvals/ApprovalPanel.tsx ──────────────────────────
|
|
1052
|
+
'approval-waiting': { zh: ' ⏳ 等待审批 · {{tool}} ', en: ' Awaiting approval · {{tool}} ' },
|
|
1053
|
+
'approval-external-hint': { zh: '外部来源:该审批未关联当前会话的活跃工具调用,命令文本可能被伪造,请核实后再决定', en: 'External origin: this approval is not tied to a live tool call of this session — the command text may be forged; verify before deciding' },
|
|
1054
|
+
'approval-proceed': { zh: '要允许这次操作吗?', en: 'Allow this operation?' },
|
|
1055
|
+
'approval-yes': { zh: '允许(仅本次)', en: 'Yes, allow once' },
|
|
1056
|
+
'approval-no': { zh: '拒绝', en: 'No' },
|
|
1057
|
+
'approval-hint': { zh: '↑/↓ 选择 · Enter 确认 · Esc 拒绝', en: '↑/↓ select · Enter confirm · Esc reject' },
|
|
1058
|
+
// ── components/Subagent*.tsx ────────────────────────────────────────
|
|
1059
|
+
'subagent-model': { zh: '模型', en: 'Model' },
|
|
1060
|
+
'subagent-duration': { zh: '时长', en: 'Duration' },
|
|
1061
|
+
'subagent-status-label': { zh: '状态', en: 'Status' },
|
|
1062
|
+
'subagent-status-cancelled': { zh: '已取消', en: 'Cancelled' },
|
|
1063
|
+
'subagent-count-running': { zh: '运行中', en: 'running' },
|
|
1064
|
+
'subagent-count-completed': { zh: '已完成', en: 'completed' },
|
|
1065
|
+
'subagent-count-failed': { zh: '失败', en: 'failed' },
|
|
1066
|
+
'subagent-started': { zh: '开始时间', en: 'Started' },
|
|
1067
|
+
'subagent-completed': { zh: '完成时间', en: 'Completed' },
|
|
1068
|
+
'subagent-error-label': { zh: '错误', en: 'Error' },
|
|
1069
|
+
'subagent-output-label': { zh: '输出', en: 'Output' },
|
|
1070
|
+
'subagent-no-output': { zh: '暂无输出', en: 'No output yet' },
|
|
1071
|
+
'subagent-dashboard-title': { zh: ' 子代理面板 ', en: ' Subagent Dashboard ' },
|
|
1072
|
+
'subagent-dashboard-hint-basic': { zh: '↑/↓ 浏览 · Esc 关闭', en: '↑/↓ browse · Esc close' },
|
|
1073
|
+
'subagent-dashboard-hint-detail': { zh: '↑/↓ 选择 · Enter 查看详情 · Esc 关闭', en: '↑/↓ select · Enter view detail · Esc close' },
|
|
1074
|
+
'subagent-card-prefix': { zh: '子代理:', en: 'Subagent: ' },
|
|
1075
|
+
'subagent-tab-summary': { zh: '摘要', en: 'Summary' },
|
|
1076
|
+
'subagent-no-summary': { zh: '暂无摘要', en: 'No summary yet' },
|
|
1077
|
+
'subagent-no-tools': { zh: '暂无工具调用', en: 'No tool calls' },
|
|
1078
|
+
'subagent-hint-page': { zh: '切页', en: 'page' },
|
|
1079
|
+
'subagent-hint-scroll': { zh: '滚动', en: 'scroll' },
|
|
1080
|
+
'subagent-hint-back': { zh: '返回', en: 'back' },
|
|
1081
|
+
'subagent-empty-hint': { zh: '让主代理发起 Task 后,子代理会出现在这里', en: 'Subagents appear here once the main agent starts Task delegations' },
|
|
1082
|
+
// ── background jobs (ctx.jobs): JobCard / JobsPanel / status chip ─────
|
|
1083
|
+
'jobs-card-prefix': { zh: '任务:', en: 'job: ' },
|
|
1084
|
+
'jobs-status-running': { zh: '运行中', en: 'running' },
|
|
1085
|
+
'jobs-status-stopping': { zh: '停止中', en: 'stopping' },
|
|
1086
|
+
'jobs-status-completed': { zh: '已完成', en: 'completed' },
|
|
1087
|
+
'jobs-status-failed': { zh: '失败', en: 'failed' },
|
|
1088
|
+
'jobs-status-killed': { zh: '已停止', en: 'killed' },
|
|
1089
|
+
'jobs-panel-title': { zh: ' 后台任务 ', en: ' Background Jobs ' },
|
|
1090
|
+
'jobs-panel-count-running': { zh: '运行中', en: 'running' },
|
|
1091
|
+
'jobs-panel-count-completed': { zh: '已完成', en: 'completed' },
|
|
1092
|
+
'jobs-panel-count-failed': { zh: '失败', en: 'failed' },
|
|
1093
|
+
'jobs-panel-empty': { zh: '当前会话暂无后台任务', en: 'No background jobs in the current session' },
|
|
1094
|
+
'jobs-panel-empty-hint': { zh: '后台运行的命令(run_in_background)会出现在这里', en: 'Commands the agent runs in the background appear here' },
|
|
1095
|
+
'jobs-panel-hint': { zh: '↑/↓ 选择(聚焦行显示详情)· k 停止选中任务 · Esc 关闭', en: '↑/↓ select (focused row shows details) · k kill focused job · Esc close' },
|
|
1096
|
+
'jobs-panel-started': { zh: '开始', en: 'started' },
|
|
1097
|
+
'jobs-panel-finished': { zh: '结束', en: 'finished' },
|
|
1098
|
+
'jobs-panel-command': { zh: '命令', en: 'command' },
|
|
1099
|
+
'jobs-panel-output-at': { zh: '输出更新于', en: 'output updated' },
|
|
1100
|
+
'jobs-panel-no-output-yet': { zh: '(暂无镜像输出——agent 读取后显示)', en: '(no mirrored output yet — appears when the agent reads it)' },
|
|
1101
|
+
'jobs-toast-completed': { zh: '后台任务完成:{{label}}({{id}} · 用时 {{duration}})', en: 'Background job completed: {{label}} ({{id}} · {{duration}})' },
|
|
1102
|
+
'jobs-toast-failed': { zh: '后台任务失败:{{label}}({{id}} · {{detail}})', en: 'Background job failed: {{label}} ({{id}} · {{detail}})' },
|
|
1103
|
+
'jobs-toast-killed': { zh: '后台任务已停止:{{label}}({{id}} · 用时 {{duration}})', en: 'Background job killed: {{label}} ({{id}} · {{duration}})' },
|
|
1104
|
+
'jobs-kill-failed': { zh: '无法停止任务 {{id}}(任务不存在或任务服务未挂载)', en: 'Could not kill job {{id}} (unknown job or jobs service not mounted)' },
|
|
1105
|
+
'jobs-steer-killed': { zh: '我通过 /jobs 面板停止了后台任务 {{id}}({{label}})', en: 'I killed background job {{id}} ({{label}}) via the /jobs panel' },
|
|
1106
|
+
// ── components/questions/PlanReviewPanel.tsx ────────────────────────
|
|
1107
|
+
'plan-review-fallback-header': { zh: '计划评审', en: 'Plan review' },
|
|
1108
|
+
'plan-review-feedback-placeholder': { zh: '输入反馈,告诉模型要改什么…', en: 'Tell the model what to change…' },
|
|
1109
|
+
'plan-review-approve-needs-empty': { zh: '请先清空反馈再批准(或在输入行回车提交反馈)', en: 'Clear the feedback to approve (or press Enter on the input row to send it)' },
|
|
1110
|
+
'plan-review-hint': { zh: '↑/↓ 选择 · 1/2 快选 · 打字输入反馈 · Ctrl+V 粘贴 · Enter 提交 · Esc 打断评审', en: '↑/↓ select · 1/2 quick-pick · type feedback · Ctrl+V paste · Enter submit · Esc dismiss' },
|
|
1111
|
+
// ── providerWizard.ts ────────────────────────────────────────────────
|
|
1112
|
+
'provider-unavailable': { zh: '/provider 需要经 dsh profile 启动(settings / credentials / llm-pi-ai 服务未挂载)', en: '/provider requires starting through a dsh profile (settings / credentials / llm-pi-ai services not mounted)' },
|
|
1113
|
+
'provider-q-mode': { zh: '要添加哪种模型提供方?', en: 'Which kind of model provider do you want to add?' },
|
|
1114
|
+
'provider-opt-catalog': { zh: '内置 provider', en: 'Built-in provider' },
|
|
1115
|
+
'provider-opt-catalog-desc': { zh: 'openai、anthropic、deepseek 等内置目录,自动继承端点与协议', en: 'Built-in catalog such as openai, anthropic, deepseek — endpoint and protocol inherited' },
|
|
1116
|
+
'provider-opt-custom': { zh: '自定义 API 端点', en: 'Custom API endpoint' },
|
|
1117
|
+
'provider-opt-custom-desc': { zh: 'OpenAI / Anthropic 兼容的网关或自建服务', en: 'An OpenAI/Anthropic-compatible gateway or self-hosted server' },
|
|
1118
|
+
'provider-q-catalog': { zh: '选择 provider', en: 'Choose a provider' },
|
|
1119
|
+
'provider-opt-other-route': { zh: '其他(手动输入路由名)', en: 'Other (enter a route name)' },
|
|
1120
|
+
'provider-opt-other-route-desc': { zh: '目录里没列出的 catalog 路由', en: 'A catalog route not listed above' },
|
|
1121
|
+
'provider-q-route-id': { zh: '输入路由名', en: 'Enter a route name' },
|
|
1122
|
+
'provider-q-route-id-detail': { zh: '小写字母开头,可含数字与连字符,如 my-gateway', en: 'Lowercase letter first, digits and dashes allowed, e.g. my-gateway' },
|
|
1123
|
+
'provider-route-id-invalid': { zh: '路由名不合法:须以小写字母开头,仅含小写字母 / 数字 / 连字符', en: 'Invalid route name: must start with a lowercase letter, only lowercase letters / digits / dashes' },
|
|
1124
|
+
'provider-q-apikey': { zh: '输入 API key', en: 'Enter the API key' },
|
|
1125
|
+
'provider-q-apikey-detail': { zh: '密钥将写入 ~/.dsh/.credentials.yaml(权限 0600),不会出现在会话记录中', en: 'The key is stored in ~/.dsh/.credentials.yaml (mode 0600) and never shown in the transcript' },
|
|
1126
|
+
'provider-q-baseurl-choice': { zh: '是否覆盖默认 API 端点(baseURL)?', en: 'Override the default API endpoint (baseURL)?' },
|
|
1127
|
+
'provider-opt-baseurl-skip': { zh: '跳过,使用默认端点', en: 'Skip — use the default endpoint' },
|
|
1128
|
+
'provider-opt-baseurl-input': { zh: '现在输入 baseURL', en: 'Enter a baseURL now' },
|
|
1129
|
+
'provider-q-baseurl': { zh: '输入 baseURL', en: 'Enter the baseURL' },
|
|
1130
|
+
'provider-q-protocol': { zh: '选择 API 协议', en: 'Choose the wire protocol' },
|
|
1131
|
+
'provider-protocol-completions-desc': { zh: 'OpenAI Chat Completions 兼容(大多数网关)', en: 'OpenAI Chat Completions compatible (most gateways)' },
|
|
1132
|
+
'provider-protocol-responses-desc': { zh: 'OpenAI Responses API', en: 'OpenAI Responses API' },
|
|
1133
|
+
'provider-protocol-anthropic-desc': { zh: 'Anthropic Messages API', en: 'Anthropic Messages API' },
|
|
1134
|
+
'provider-discovery-running': { zh: '正在探测该端点公布的模型…', en: 'Discovering the models this endpoint advertises…' },
|
|
1135
|
+
'provider-discovery-failed': { zh: '模型探测失败,改为手动输入模型 id', en: 'Model discovery failed — enter model ids manually instead' },
|
|
1136
|
+
'provider-q-models': { zh: '选择要启用的模型(可在输入行逗号分隔补充)', en: 'Select the models to enable (add more comma-separated on the input row)' },
|
|
1137
|
+
'provider-q-models-fallback': { zh: '输入模型 id(逗号分隔)', en: 'Enter model ids (comma-separated)' },
|
|
1138
|
+
'provider-models-required': { zh: '自定义端点至少需要一个模型 id', en: 'A custom endpoint needs at least one model id' },
|
|
1139
|
+
'provider-q-confirm': { zh: '确认写入该 provider 配置?', en: 'Write this provider configuration?' },
|
|
1140
|
+
'provider-route-exists-warning': { zh: '⚠ 该路由已有配置,写入将覆盖现有设置', en: '⚠ This route is already configured — writing overwrites it' },
|
|
1141
|
+
'provider-opt-confirm-write': { zh: '写入并启用', en: 'Write and enable' },
|
|
1142
|
+
'provider-opt-confirm-cancel': { zh: '取消', en: 'Cancel' },
|
|
1143
|
+
'provider-line-route': { zh: '路由:{{route}}', en: 'Route: {{route}}' },
|
|
1144
|
+
'provider-line-keyref': { zh: '密钥引用:{{ref}}(已写入 ~/.dsh/.credentials.yaml)', en: 'Key ref: {{ref}} (stored in ~/.dsh/.credentials.yaml)' },
|
|
1145
|
+
'provider-line-keyref-env': { zh: '密钥引用:{{ref}}(进程环境已提供同名变量,跳过写入)', en: 'Key ref: {{ref}} (already in the process environment, write skipped)' },
|
|
1146
|
+
'provider-line-baseurl': { zh: 'baseURL:{{url}}', en: 'baseURL: {{url}}' },
|
|
1147
|
+
'provider-line-protocol': { zh: '协议:{{api}}', en: 'Protocol: {{api}}' },
|
|
1148
|
+
'provider-line-models': { zh: '模型:{{models}}', en: 'Models: {{models}}' },
|
|
1149
|
+
'provider-line-models-catalog': { zh: '模型:整个 catalog(未收窄)', en: 'Models: the whole catalog (not narrowed)' },
|
|
1150
|
+
'provider-rollback-ok': { zh: '已回滚刚写入的密钥', en: 'Rolled back the just-written key' },
|
|
1151
|
+
'provider-rollback-failed': { zh: '密钥回滚失败,请手动检查 ~/.dsh/.credentials.yaml', en: 'Key rollback failed — check ~/.dsh/.credentials.yaml manually' },
|
|
1152
|
+
'provider-write-failed': { zh: 'provider 配置写入失败 · {{{err}}}', en: 'Failed to write the provider configuration · {{{err}}}' },
|
|
1153
|
+
'provider-cancelled': { zh: '已取消添加 provider', en: 'Provider setup cancelled' },
|
|
1154
|
+
'provider-success': { zh: 'provider {{route}} 已添加', en: 'Provider {{route}} added' },
|
|
1155
|
+
'provider-switch-hint': { zh: '运行 /model 可切换到新 provider 的模型', en: 'Run /model to switch to the new provider’s models' },
|
|
1156
|
+
'provider-q-switch': { zh: '立即切换到新 provider?', en: 'Switch to the new provider now?' },
|
|
1157
|
+
'provider-opt-switch-now': { zh: '切换到 {{model}}', en: 'Switch to {{model}}' },
|
|
1158
|
+
'provider-opt-switch-keep': { zh: '保持当前模型', en: 'Keep the current model' },
|
|
1159
|
+
// /provider OAuth 分支(dsh-auth 等插件挂载 ctx.dshAuth 时出现)
|
|
1160
|
+
'provider-opt-oauth': { zh: '提供商认证', en: 'Provider authentication' },
|
|
1161
|
+
'provider-opt-oauth-desc': { zh: '管理已挂载提供商的 OAuth 或 API key', en: 'Manage OAuth or API keys for mounted providers' },
|
|
1162
|
+
'provider-q-oauth': { zh: '认证哪个提供商?', en: 'Authenticate which provider?' },
|
|
1163
|
+
'provider-oauth-state-in': { zh: '已登录 · 令牌到期 {{time}}', en: 'Signed in · token expires {{time}}' },
|
|
1164
|
+
'provider-auth-state-in': { zh: '已登录', en: 'Signed in' },
|
|
1165
|
+
'provider-oauth-state-expired': { zh: '已登录但令牌已过期,重新登录即可恢复', en: 'Signed in but the token expired — sign in again to restore' },
|
|
1166
|
+
'provider-q-oauth-signed': { zh: '{{provider}} 已登录,接下来?', en: '{{provider}} is signed in — what next?' },
|
|
1167
|
+
'provider-opt-oauth-relogin': { zh: '重新登录', en: 'Sign in again' },
|
|
1168
|
+
'provider-opt-oauth-relogin-desc': { zh: '更换账号或刷新已有凭据', en: 'Switch accounts or refresh the stored credential' },
|
|
1169
|
+
'provider-opt-oauth-logout': { zh: '登出', en: 'Sign out' },
|
|
1170
|
+
'provider-opt-oauth-logout-desc': { zh: '删除本地保存的认证凭据', en: 'Remove the locally stored credential' },
|
|
1171
|
+
'provider-oauth-none': { zh: '没有可认证的 provider(检查 dsh-auth 插件是否挂载)', en: 'No authenticatable providers (check whether the dsh-auth plugin is mounted)' },
|
|
1172
|
+
'provider-oauth-login-ok': { zh: '{{provider}} 登录成功', en: 'Signed in to {{provider}}' },
|
|
1173
|
+
'provider-oauth-login-failed': { zh: '认证失败 · {{{err}}}', en: 'Authentication failed · {{{err}}}' },
|
|
1174
|
+
'provider-oauth-logout-ok': { zh: '{{provider}} 已登出', en: 'Signed out of {{provider}}' },
|
|
1175
|
+
'provider-line-oauth-provider': { zh: '路由:{{provider}}', en: 'Route: {{provider}}' },
|
|
1176
|
+
'provider-line-oauth-flow': { zh: '登录方式:{{flow}}', en: 'Sign-in: {{flow}}' },
|
|
1177
|
+
'provider-line-oauth-expires': { zh: '令牌到期:{{time}}', en: 'Token expires: {{time}}' },
|
|
1178
|
+
'provider-auth-model-warning': { zh: '凭据已保存,但模型列表不可用:{{{err}}}', en: 'Credential saved, but models are unavailable: {{{err}}}' },
|
|
1179
|
+
'provider-line-oauth-out': { zh: '已登出,本地凭据已删除', en: 'Signed out — the stored credential was removed' },
|
|
1180
|
+
// /provider 动作层(添加/编辑;删除并入编辑菜单)
|
|
1181
|
+
'provider-q-action': { zh: '要做什么?', en: 'What do you want to do?' },
|
|
1182
|
+
'provider-opt-action-add': { zh: '添加新 provider', en: 'Add a new provider' },
|
|
1183
|
+
'provider-opt-action-add-desc': { zh: '内置目录或自定义 API 端点', en: 'Built-in catalog or a custom API endpoint' },
|
|
1184
|
+
'provider-opt-action-edit': { zh: '编辑已有 provider', en: 'Edit an existing provider' },
|
|
1185
|
+
'provider-opt-action-edit-desc': { zh: '修改密钥、端点、协议、模型,或删除该 provider', en: 'Change the key, endpoint, protocol, or models — or delete the provider' },
|
|
1186
|
+
'provider-q-edit': { zh: '选择要编辑的 provider', en: 'Choose a provider to edit' },
|
|
1187
|
+
'provider-none-configured': { zh: '没有已配置的 provider,先用「添加新 provider」创建', en: 'No configured providers — create one with “Add a new provider” first' },
|
|
1188
|
+
'provider-row-models': { zh: '{{n}} 个模型', en: '{{n}} models' },
|
|
1189
|
+
'provider-row-catalog': { zh: '整个 catalog', en: 'whole catalog' },
|
|
1190
|
+
'provider-row-key-shadowed': { zh: '密钥来自环境变量', en: 'key from the environment' },
|
|
1191
|
+
// /provider 编辑菜单(选中 provider 后;每项改完立即保存并退出)
|
|
1192
|
+
'provider-q-edit-menu': { zh: '{{route}} 要编辑哪一项?', en: 'What would you like to change for {{route}}?' },
|
|
1193
|
+
'provider-opt-edit-key': { zh: '编辑 API Key', en: 'Edit API Key' },
|
|
1194
|
+
'provider-opt-edit-baseurl': { zh: '编辑 Base URL', en: 'Edit Base URL' },
|
|
1195
|
+
'provider-opt-edit-protocol': { zh: '编辑 wire protocol', en: 'Edit wire protocol' },
|
|
1196
|
+
'provider-opt-edit-models': { zh: '编辑模型列表', en: 'Edit model list' },
|
|
1197
|
+
'provider-opt-edit-delete': { zh: '删除该 provider', en: 'Delete this provider' },
|
|
1198
|
+
'provider-opt-edit-delete-desc': { zh: '移除配置与 API key', en: 'Remove the configuration and the API key' },
|
|
1199
|
+
'provider-key-env-not-editable': { zh: '{{route}} 的 API key 来自环境变量({{ref}}),无法在此修改', en: '{{route}}’s API key comes from the environment ({{ref}}) and cannot be edited here' },
|
|
1200
|
+
'provider-key-no-ref': { zh: '{{route}} 未配置密钥引用(没有可持久化的 API key),无法在此修改', en: '{{route}} has no credential ref (no persisted API key) and cannot be edited here' },
|
|
1201
|
+
'provider-line-key-none': { zh: '密钥:未配置(无密钥引用,环境提供时按需读取)', en: 'Key: none configured (no credential ref; resolved from environment when present)' },
|
|
1202
|
+
'provider-key-empty': { zh: 'API key 不能为空,未作修改', en: 'API key cannot be empty — no change made' },
|
|
1203
|
+
'provider-q-key-overwrite-confirm': { zh: '密钥 {{ref}} 被多个 provider 共用,确认覆盖?', en: 'Key ref {{ref}} is shared by several providers — overwrite it?' },
|
|
1204
|
+
'provider-opt-key-overwrite-yes': { zh: '覆盖共用密钥', en: 'Overwrite the shared key' },
|
|
1205
|
+
'provider-key-overwrite-warning': { zh: '⚠ 该密钥还被 {{routes}} 使用,写入新 key 会同时替换它们的凭据', en: '⚠ This key is also used by {{routes}}; writing a new one rotates the credential for all of them' },
|
|
1206
|
+
'provider-row-model-missing': { zh: '本次未发现(保留现有配置)', en: 'not found in this discovery (kept as configured)' },
|
|
1207
|
+
'provider-edit-no-changes': { zh: '没有做任何修改', en: 'No changes made' },
|
|
1208
|
+
'provider-line-key-kept': { zh: '密钥:保持不变({{ref}})', en: 'Key: unchanged ({{ref}})' },
|
|
1209
|
+
'provider-line-key-updated': { zh: '密钥引用:{{ref}}(已更新)', en: 'Key ref: {{ref}} (updated)' },
|
|
1210
|
+
'provider-edit-current': { zh: '当前值:{{value}}', en: 'Current: {{value}}' },
|
|
1211
|
+
'provider-edit-success': { zh: 'provider {{route}} 已更新', en: 'Provider {{route}} updated' },
|
|
1212
|
+
'provider-edit-cancelled': { zh: '已取消编辑 provider', en: 'Provider edit cancelled' },
|
|
1213
|
+
// /provider 删除分支
|
|
1214
|
+
'provider-q-delete-confirm': { zh: '确认删除 provider {{route}}?', en: 'Delete provider {{route}}?' },
|
|
1215
|
+
'provider-opt-delete-yes': { zh: '删除配置和密钥', en: 'Delete config and key' },
|
|
1216
|
+
'provider-delete-cancelled': { zh: '已取消删除 provider', en: 'Provider deletion cancelled' },
|
|
1217
|
+
'provider-delete-success': { zh: 'provider {{route}} 已删除', en: 'Provider {{route}} deleted' },
|
|
1218
|
+
'provider-delete-failed': { zh: '删除失败 · {{{err}}}', en: 'Failed to delete · {{{err}}}' },
|
|
1219
|
+
'provider-line-deleted-key': { zh: '已删除密钥引用 {{ref}}', en: 'Removed key ref {{ref}}' },
|
|
1220
|
+
'provider-line-deleted-key-shadowed': { zh: '密钥引用 {{ref}} 来自环境变量,未删除', en: 'Key ref {{ref}} comes from the environment; not removed' },
|
|
1221
|
+
'provider-delete-shared-warning': { zh: '⚠ 密钥 {{ref}} 与 {{routes}} 共用,删除本 provider 不会移除该密钥', en: '⚠ Key ref {{ref}} is shared with {{routes}}; deleting this provider keeps the key' },
|
|
1222
|
+
'provider-line-deleted-key-shared': { zh: '密钥引用 {{ref}} 仍被 {{routes}} 使用,未删除', en: 'Key ref {{ref}} is still used by {{routes}}; not removed' },
|
|
1223
|
+
'provider-line-deleted-key-reserved': { zh: '密钥引用 {{ref}} 属于宿主保留命名空间,未删除', en: 'Key ref {{ref}} is in the host-reserved credential namespace; not removed' },
|
|
1224
|
+
'provider-unknown-ref-users': { zh: '(引用查询不可用)', en: '(ref query unavailable)' },
|
|
1225
|
+
'provider-line-deleted-key-cleanup-failed': { zh: '密钥引用 {{ref}} 清理失败,请手动检查 ~/.dsh/.credentials.yaml', en: 'Failed to remove key ref {{ref}} — check ~/.dsh/.credentials.yaml manually' },
|
|
1226
|
+
'provider-delete-key-cleanup-failed': { zh: 'provider {{route}} 已删除,但密钥 {{ref}} 清理失败,请手动处理', en: 'Provider {{route}} deleted, but removing key {{ref}} failed — clean it up manually' },
|
|
1227
|
+
// ── commands.ts — slash-command descriptions ─────────────────────────
|
|
1228
|
+
// zh-only on purpose: the English text stays in `LOCAL_COMMANDS` (and in
|
|
1229
|
+
// the DSH registry for external commands) as the single source of truth,
|
|
1230
|
+
// so `localizedDescription` falls back to it whenever the active language
|
|
1231
|
+
// has no entry here. `cmd-desc-<name>` keys are resolved at render time,
|
|
1232
|
+
// so `/lang` switches apply on the next repaint.
|
|
1233
|
+
// Conversation
|
|
1234
|
+
'cmd-desc-new': { zh: '新开会话' },
|
|
1235
|
+
'cmd-desc-clear': { zh: '清空当前会话' },
|
|
1236
|
+
'cmd-desc-compact': { zh: '压缩会话历史' },
|
|
1237
|
+
'cmd-desc-resume': { zh: '恢复历史会话' },
|
|
1238
|
+
'cmd-desc-agentview': { zh: '打开会话总览' },
|
|
1239
|
+
'cmd-desc-bg': { zh: '当前会话转入后台并打开总览' },
|
|
1240
|
+
'cmd-desc-background': { zh: '当前会话转入后台并打开总览' },
|
|
1241
|
+
'cmd-desc-rename': { zh: '重命名当前会话' },
|
|
1242
|
+
'cmd-desc-recap': { zh: '生成最近会话活动摘要(可应用建议标题)' },
|
|
1243
|
+
'cmd-desc-quit': { zh: '退出 dsh-tui' },
|
|
1244
|
+
'cmd-desc-q': { zh: '退出 dsh-tui' },
|
|
1245
|
+
'cmd-desc-rewind': { zh: '回退会话到历史消息' },
|
|
1246
|
+
'cmd-desc-tree': { zh: '浏览会话分叉树(回退/分叉/切分支)' },
|
|
1247
|
+
'cmd-desc-fork': { zh: '把当前会话分叉为可恢复副本' },
|
|
1248
|
+
'cmd-desc-export': { zh: '导出会话为 Markdown 文件' },
|
|
1249
|
+
// Session / environment
|
|
1250
|
+
'cmd-desc-context': { zh: '查看已加载的上下文明细' },
|
|
1251
|
+
'cmd-desc-status': { zh: '查看会话状态' },
|
|
1252
|
+
'cmd-desc-cost': { zh: '查看会话 token 用量' },
|
|
1253
|
+
'cmd-desc-balance': { zh: '查看 DeepSeek 账户余额' },
|
|
1254
|
+
'cmd-desc-config': { zh: '查看 dsh-tui 配置来源' },
|
|
1255
|
+
'cmd-desc-reload': { zh: '重读偏好文件并立即生效' },
|
|
1256
|
+
'cmd-desc-settings': { zh: '查看和编辑插件设置' },
|
|
1257
|
+
'cmd-desc-doctor': { zh: '运行环境检查' },
|
|
1258
|
+
'cmd-desc-migrate': { zh: '从其他编程代理导入对话(claude-code/codex/omp/zcode/grok-build)' },
|
|
1259
|
+
'cmd-desc-init': { zh: '在工作目录创建 AGENTS.md' },
|
|
1260
|
+
'cmd-desc-agents': { zh: '查看本会话的子代理' },
|
|
1261
|
+
'cmd-desc-jobs': { zh: '查看本会话的后台任务' },
|
|
1262
|
+
// Model / display
|
|
1263
|
+
'cmd-desc-activity': { zh: '切换工作状态指示器预设' },
|
|
1264
|
+
'cmd-desc-preset': { zh: '切换 Agent 预设(含梁神模式)' },
|
|
1265
|
+
'cmd-desc-theme': { zh: '切换配色主题(auto 跟随系统,或内置/静态 JSON/插件主题)' },
|
|
1266
|
+
'cmd-desc-color': { zh: '设置当前会话强调色(输入框边框与会话标签)' },
|
|
1267
|
+
'cmd-desc-lang': { zh: '切换界面语言(en / zh)' },
|
|
1268
|
+
'cmd-desc-model': { zh: '查看当前模型' },
|
|
1269
|
+
'cmd-desc-thinking': { zh: '显示或隐藏思考过程' },
|
|
1270
|
+
'cmd-desc-tokens': { zh: '查看会话 token 用量' },
|
|
1271
|
+
// Account / policy
|
|
1272
|
+
'cmd-desc-provider': { zh: '添加、编辑或删除模型提供方(内置目录或自定义 API 端点)' },
|
|
1273
|
+
'cmd-desc-login': { zh: '查看 API 凭证状态' },
|
|
1274
|
+
'cmd-desc-logout': { zh: '清除 API 凭证' },
|
|
1275
|
+
'cmd-desc-add-dir': { zh: '查看文件系统策略范围' },
|
|
1276
|
+
'cmd-desc-hooks': { zh: '查看 hooks 状态' },
|
|
1277
|
+
'cmd-desc-mcp': { zh: '查看 MCP 状态' },
|
|
1278
|
+
'cmd-desc-skills': { zh: '列出所有可用技能' },
|
|
1279
|
+
'cmd-desc-plugins': { zh: '显示插件契约、授权与台账诊断' },
|
|
1280
|
+
'cmd-desc-update': { zh: '更新 dsh-tui 并重启' },
|
|
1281
|
+
// Misc
|
|
1282
|
+
'cmd-desc-vim': { zh: '切换 vim 模式' },
|
|
1283
|
+
'cmd-desc-terminal-setup': { zh: '查看终端配置建议' },
|
|
1284
|
+
'cmd-desc-connect': { zh: '连接远程机器' },
|
|
1285
|
+
'cmd-desc-workspace': { zh: '切换、重命名或打开工作区' },
|
|
1286
|
+
'cmd-desc-workspace-resume': { zh: '切换到另一个工作区', en: 'Switch to another workspace' },
|
|
1287
|
+
'cmd-desc-workspace-rename': { zh: '重命名当前工作区', en: 'Rename the current workspace' },
|
|
1288
|
+
'cmd-desc-workspace-open': { zh: '打开路径或工作区 URI', en: 'Open a path or workspace URI' },
|
|
1289
|
+
// Help / exit
|
|
1290
|
+
'cmd-desc-help': { zh: '查看快捷键与命令' },
|
|
1291
|
+
'cmd-desc-restart': { zh: '重启 dsh-tui 并恢复当前会话' },
|
|
1292
|
+
'cmd-desc-exit': { zh: '退出 dsh-tui' },
|
|
1293
|
+
// Registry-injected (external) commands — zh only; en falls back to the
|
|
1294
|
+
// registry's own description, and unlisted externals always fall back.
|
|
1295
|
+
'cmd-desc-plan': { zh: '切换计划模式(/plan off 退出)' },
|
|
1296
|
+
'cmd-desc-goal': { zh: '设置或查看会话目标' },
|
|
1297
|
+
'cmd-desc-feedback': { zh: '提交使用反馈' },
|
|
1298
|
+
// ── /lang command ───────────────────────────────────────────────────
|
|
1299
|
+
'lang-current': { zh: '当前语言 {{lang}}', en: 'Current language {{lang}}' },
|
|
1300
|
+
'lang-switch-hint': { zh: '切换 /lang en | /lang zh', en: 'Switch /lang en | /lang zh' },
|
|
1301
|
+
'lang-persist-hint': { zh: '持久化 ~/.dsh-tui/lang.json(重启后仍生效;DSH_TUI_LANG 优先)', en: 'Persisted ~/.dsh-tui/lang.json (survives restart; DSH_TUI_LANG wins)' },
|
|
1302
|
+
'lang-switched': { zh: '语言已切换:{{lang}}(已保存)', en: 'Language switched: {{lang}} (saved)' },
|
|
1303
|
+
'lang-unknown': { zh: '未知语言「{{lang}}」· /lang 查看全部(en / zh)', en: 'Unknown language "{{lang}}" · /lang to view all (en / zh)' },
|
|
1304
|
+
'lang-switch-failed': { zh: '语言「{{lang}}」切换失败(无法写入 ~/.dsh-tui/lang.json)', en: 'Language "{{lang}}" switch failed (cannot write ~/.dsh-tui/lang.json)' },
|
|
1305
|
+
'lang-picker-title': { zh: '界面语言', en: 'UI language' },
|
|
1306
|
+
'lang-zh-desc': { zh: '简体中文(默认)', en: 'Simplified Chinese (default)' },
|
|
1307
|
+
'lang-en-desc': { zh: 'English(英文)', en: 'English' },
|
|
1308
|
+
// ── screens/StatusLine.tsx ───────────────────────────────────────────
|
|
1309
|
+
'status-cache-label': { zh: '缓存 ', en: 'cache ' },
|
|
1310
|
+
// ── screens/TrajectoryScene.tsx(issue #80 演进:全屏轨迹场景)──────────
|
|
1311
|
+
'traj-title': { zh: '轨迹', en: 'Trajectory' },
|
|
1312
|
+
'traj-totals': { zh: '{{turns}} 轮 · {{steps}} 步', en: '{{turns}} turns · {{steps}} rows' },
|
|
1313
|
+
'traj-errors': { zh: '{{n}} 错', en: '{{n}} failed' },
|
|
1314
|
+
'traj-retries': { zh: '{{n}} 重试', en: '{{n}} retries' },
|
|
1315
|
+
'traj-matches': { zh: '{{n}}/{{total}} 匹配', en: '{{n}}/{{total}} matched' },
|
|
1316
|
+
'traj-tab-timeline': { zh: '时序', en: 'Timeline' },
|
|
1317
|
+
'traj-tab-hotspot': { zh: '热点', en: 'Hotspot' },
|
|
1318
|
+
'traj-hot-tools': { zh: '工具', en: 'Tools' },
|
|
1319
|
+
'traj-hot-model': { zh: '模型', en: 'Model' },
|
|
1320
|
+
'traj-hot-turns': { zh: '轮次', en: 'Turns' },
|
|
1321
|
+
'traj-sort-duration': { zh: '按耗时', en: 'by duration' },
|
|
1322
|
+
'traj-sort-count': { zh: '按次数', en: 'by count' },
|
|
1323
|
+
'traj-sort-tokens': { zh: '按 token', en: 'by tokens' },
|
|
1324
|
+
'traj-proj-sequence': { zh: '序号等宽', en: 'even' },
|
|
1325
|
+
'traj-proj-time': { zh: '真实墙钟', en: 'wall-clock' },
|
|
1326
|
+
'traj-proj-compressed': { zh: '压缩空闲', en: 'compressed' },
|
|
1327
|
+
'traj-hint-timeline': {
|
|
1328
|
+
zh: '**↑/↓** 移动 · **←/→** 视图 · **[ ]** 跳错 · **{ }** 跳轮 · **/** 查询 · **m** 投影 · **enter** 详情 · **q** 退出',
|
|
1329
|
+
en: '**↑/↓** move · **←/→** view · **[ ]** failures · **{ }** turns · **/** query · **m** projection · **enter** detail · **q** exit',
|
|
1330
|
+
},
|
|
1331
|
+
'traj-hint-hotspot': {
|
|
1332
|
+
zh: '**↑/↓** 移动 · **←/→** 视图 · **t** 排序 · **enter** 回时序定位 · **q** 退出',
|
|
1333
|
+
en: '**↑/↓** move · **←/→** view · **t** sort · **enter** locate in timeline · **q** exit',
|
|
1334
|
+
},
|
|
1335
|
+
'traj-hint-query': {
|
|
1336
|
+
zh: '**tool:** **kind:** **turn:** **err:** **run:** **>10s** **tok>1k** · 裸词全文 · **enter** 确认 · **esc** 清除',
|
|
1337
|
+
en: '**tool:** **kind:** **turn:** **err:** **run:** **>10s** **tok>1k** · bare word = full text · **enter** apply · **esc** clear',
|
|
1338
|
+
},
|
|
1339
|
+
'traj-hint-expanded': {
|
|
1340
|
+
zh: '**j/k** 翻页 · **enter/esc** 收起 · **q** 退出',
|
|
1341
|
+
en: '**j/k** page · **enter/esc** collapse · **q** exit',
|
|
1342
|
+
},
|
|
1343
|
+
'traj-hint-failure': { zh: '{{key}} 看完整轨迹', en: '{{key}} for the full trajectory' },
|
|
1344
|
+
};
|
|
1345
|
+
/** The active language, module-level so non-React modules (channel.ts,
|
|
1346
|
+
* loaded-context.ts) resolve strings without a context. Defaults to `zh`
|
|
1347
|
+
* (the original hard-coded language). */
|
|
1348
|
+
// Resolved at import time (env var → persisted /lang → OS locale → zh) so
|
|
1349
|
+
// direct consumers of t() — repro/verify scripts that never reach
|
|
1350
|
+
// plugin.apply — still get the pinned language instead of a hardcoded zh.
|
|
1351
|
+
let activeLang = resolveStartupLang();
|
|
1352
|
+
const listeners = new Set();
|
|
1353
|
+
/** Subscribe to language switches (mirrors themePrefs subscription style). */
|
|
1354
|
+
export function subscribeLang(listener) {
|
|
1355
|
+
listeners.add(listener);
|
|
1356
|
+
return () => listeners.delete(listener);
|
|
1357
|
+
}
|
|
1358
|
+
/** The currently active language. */
|
|
1359
|
+
export function getLang() {
|
|
1360
|
+
return activeLang;
|
|
1361
|
+
}
|
|
1362
|
+
/** Switch the active language and notify subscribers. */
|
|
1363
|
+
export function setLang(lang) {
|
|
1364
|
+
activeLang = lang;
|
|
1365
|
+
for (const listener of listeners)
|
|
1366
|
+
listener();
|
|
1367
|
+
}
|
|
1368
|
+
/** Is a string a valid shipped language code? */
|
|
1369
|
+
export function isLang(value) {
|
|
1370
|
+
return value === 'zh' || value === 'en';
|
|
1371
|
+
}
|
|
1372
|
+
/**
|
|
1373
|
+
* Translate a dictionary key into the active language, substituting
|
|
1374
|
+
* `{{name}}` placeholders with params. Missing keys render the key itself
|
|
1375
|
+
* so a typo is visible instead of silently blank.
|
|
1376
|
+
* @param key - Dictionary key (see dict).
|
|
1377
|
+
* @param params - Placeholder values.
|
|
1378
|
+
*/
|
|
1379
|
+
export function t(key, params = {}) {
|
|
1380
|
+
const entry = dict[key];
|
|
1381
|
+
return substitute(pickText(entry?.[activeLang], params) ?? key, params);
|
|
1382
|
+
}
|
|
1383
|
+
// Cached per shipped language; CLDR-backed and built into Node, so zh always
|
|
1384
|
+
// selects `other` and en selects `one` exactly at count 1.
|
|
1385
|
+
const pluralRules = {
|
|
1386
|
+
zh: new Intl.PluralRules('zh'),
|
|
1387
|
+
en: new Intl.PluralRules('en'),
|
|
1388
|
+
};
|
|
1389
|
+
/** Resolve plural forms to one template using the `count` param. */
|
|
1390
|
+
function pickText(text, params) {
|
|
1391
|
+
if (text === undefined || typeof text === 'string')
|
|
1392
|
+
return text;
|
|
1393
|
+
const count = Number(params.count);
|
|
1394
|
+
const category = pluralRules[activeLang].select(Number.isFinite(count) ? count : 0);
|
|
1395
|
+
return category === 'one' ? text.one : text.other;
|
|
1396
|
+
}
|
|
1397
|
+
/** Substitute `{{name}}` placeholders, leaving unknown names visible. */
|
|
1398
|
+
function substitute(template, params) {
|
|
1399
|
+
return template.replace(/\{\{(\w+)\}\}/g, (match, name) => name in params ? String(params[name]) : match);
|
|
1400
|
+
}
|
|
1401
|
+
/**
|
|
1402
|
+
* Translate a runtime-computed key (e.g. `cmd-desc-${name}`), falling back
|
|
1403
|
+
* to the given text when the key is missing or has no entry in the active
|
|
1404
|
+
* language — unlike {@link t}, which renders the key itself. Used where the
|
|
1405
|
+
* fallback holds the authoritative text (command descriptions: the en copy
|
|
1406
|
+
* lives in `LOCAL_COMMANDS` / the DSH registry, the dict carries zh only).
|
|
1407
|
+
* @param key - Dictionary key, computed at runtime so it is not type-checked.
|
|
1408
|
+
* @param fallback - Text used when no translation exists.
|
|
1409
|
+
* @param params - Placeholder values substituted into whichever text wins.
|
|
1410
|
+
*/
|
|
1411
|
+
export function tOr(key, fallback, params = {}) {
|
|
1412
|
+
const entry = dict[key];
|
|
1413
|
+
return substitute(pickText(entry?.[activeLang], params) ?? fallback, params);
|
|
1414
|
+
}
|
|
1415
|
+
/** Read-only view of the dictionary for audits (scripts/verify-i18n.ts). */
|
|
1416
|
+
export const i18nDict = dict;
|
|
1417
|
+
// ── persistence (~/.dsh-tui/lang.json) ─────────────────────────────────
|
|
1418
|
+
/**
|
|
1419
|
+
* Parse a persisted `{ lang }` value; anything else yields undefined.
|
|
1420
|
+
* @param text - Raw file contents.
|
|
1421
|
+
*/
|
|
1422
|
+
export function parseLangPref(text) {
|
|
1423
|
+
try {
|
|
1424
|
+
const parsed = JSON.parse(text);
|
|
1425
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
1426
|
+
return undefined;
|
|
1427
|
+
const lang = parsed.lang;
|
|
1428
|
+
return isLang(lang) ? lang : undefined;
|
|
1429
|
+
}
|
|
1430
|
+
catch {
|
|
1431
|
+
return undefined;
|
|
1432
|
+
}
|
|
1433
|
+
}
|
|
1434
|
+
/** The persisted `/lang` choice, or undefined when unset or invalid. */
|
|
1435
|
+
export function readLangPref(dir = PREFS_DIR) {
|
|
1436
|
+
try {
|
|
1437
|
+
return parseLangPref(readFileSync(join(dir, 'lang.json'), 'utf8'));
|
|
1438
|
+
}
|
|
1439
|
+
catch {
|
|
1440
|
+
return undefined;
|
|
1441
|
+
}
|
|
1442
|
+
}
|
|
1443
|
+
/** Persist the chosen language (best effort). */
|
|
1444
|
+
export function writeLangPref(lang, dir = PREFS_DIR) {
|
|
1445
|
+
try {
|
|
1446
|
+
// 0700 on creation: DATA_DIR hosts private history/logs; match that mode
|
|
1447
|
+
// whenever this happens to be the first writer.
|
|
1448
|
+
mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
1449
|
+
writeFileSync(join(dir, 'lang.json'), JSON.stringify({ lang }, null, 2));
|
|
1450
|
+
return true;
|
|
1451
|
+
}
|
|
1452
|
+
catch {
|
|
1453
|
+
return false;
|
|
1454
|
+
}
|
|
1455
|
+
}
|
|
1456
|
+
/**
|
|
1457
|
+
* Guess the user's language from the OS locale (`LC_ALL`, `LC_MESSAGES`,
|
|
1458
|
+
* `LANG`). Only consulted when nothing else (env var, cordis.yml `lang`,
|
|
1459
|
+
* persisted `/lang` choice) pinned a language. `zh*` maps to zh; every
|
|
1460
|
+
* other stated locale (en, but also fr/de/ja/…) maps to en — English is
|
|
1461
|
+
* the lingua-franca fallback for a locale we don't ship, and a German
|
|
1462
|
+
* user must not get a Chinese UI. The POSIX/C locale means "no locale
|
|
1463
|
+
* selected" and conventionally maps to English — importantly it is what
|
|
1464
|
+
* CI runners (LANG=C.UTF-8) report, so tests asserting English UI copy
|
|
1465
|
+
* stay deterministic. Only an ABSENT locale (typical on Windows, where
|
|
1466
|
+
* these POSIX vars don't exist and imply nothing about the user) keeps
|
|
1467
|
+
* the zh default.
|
|
1468
|
+
*/
|
|
1469
|
+
export function detectLocaleLang() {
|
|
1470
|
+
// `||` (not `??`): an EMPTY locale variable means "unset" and must fall
|
|
1471
|
+
// through to the next one — runners and shells sometimes export LC_ALL=''.
|
|
1472
|
+
const raw = process.env.LC_ALL ||
|
|
1473
|
+
process.env.LC_MESSAGES ||
|
|
1474
|
+
process.env.LANG ||
|
|
1475
|
+
'';
|
|
1476
|
+
const locale = raw.split('.')[0]?.toLowerCase() ?? '';
|
|
1477
|
+
if (locale === '')
|
|
1478
|
+
return 'zh';
|
|
1479
|
+
return locale.startsWith('zh') ? 'zh' : 'en';
|
|
1480
|
+
}
|
|
1481
|
+
/**
|
|
1482
|
+
* Resolve the startup language: `DSH_TUI_LANG` when it holds a valid value
|
|
1483
|
+
* (pinned at process start — the repro/verify scripts rely on this for
|
|
1484
|
+
* deterministic UI copy), else the persisted `/lang` choice, else the OS
|
|
1485
|
+
* locale guess, else `zh` (the original hard-coded language). The
|
|
1486
|
+
* cordis.yml `lang` precedence lives in plugin.apply.
|
|
1487
|
+
*/
|
|
1488
|
+
export function resolveStartupLang() {
|
|
1489
|
+
const envLang = process.env.DSH_TUI_LANG;
|
|
1490
|
+
if (isLang(envLang))
|
|
1491
|
+
return envLang;
|
|
1492
|
+
return readLangPref() ?? detectLocaleLang();
|
|
1493
|
+
}
|