@deepseek-harness-tui/dsh-tui 0.7.3 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -7
- package/bin/dsh-tui.js +19 -3
- package/cordis.patch.yml +43 -11
- package/cordis.yml +20 -1
- package/ecosystem-spec/registry/contracts/decision-events-v1alpha1.json +13 -0
- package/ecosystem-spec/registry/host-descriptor.tui.example.json +56 -0
- package/ecosystem-spec/registry/permissions-0.1.json +13 -0
- package/ecosystem-spec/registry/registry-0.15.json +57 -0
- package/ecosystem-spec/schemas/conformance-claim.schema.json +15 -0
- package/ecosystem-spec/schemas/effect-ledger-record.schema.json +16 -0
- package/ecosystem-spec/schemas/host-descriptor.schema.json +26 -0
- package/lib/types/cc/figures.d.ts +4 -0
- package/lib/types/cc/figures.d.ts.map +1 -1
- package/lib/types/cc/figures.js +4 -0
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +4 -1
- 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 +210 -0
- package/lib/types/components/HelpMenu.js +1 -1
- package/lib/types/components/LoadedContextPanel.d.ts +5 -10
- package/lib/types/components/LoadedContextPanel.d.ts.map +1 -1
- package/lib/types/components/LoadedContextPanel.js +7 -18
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +1 -2
- package/lib/types/components/MessageList.d.ts +3 -1
- package/lib/types/components/MessageList.d.ts.map +1 -1
- package/lib/types/components/MessageList.js +29 -5
- 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/RewindPicker.d.ts +13 -1
- package/lib/types/components/RewindPicker.d.ts.map +1 -1
- package/lib/types/components/RewindPicker.js +26 -2
- package/lib/types/components/SkillsPicker.d.ts +18 -0
- package/lib/types/components/SkillsPicker.d.ts.map +1 -0
- package/lib/types/components/SkillsPicker.js +50 -0
- package/lib/types/components/SplitDiffView.d.ts +28 -0
- package/lib/types/components/SplitDiffView.d.ts.map +1 -0
- package/lib/types/components/SplitDiffView.js +417 -0
- package/lib/types/components/ToolUseLoader.d.ts +8 -3
- package/lib/types/components/ToolUseLoader.d.ts.map +1 -1
- package/lib/types/components/ToolUseLoader.js +43 -9
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts +3 -1
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +17 -7
- package/lib/types/dsh-adapter/channel.d.ts +98 -7
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +623 -26
- 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/component-identity.d.ts +28 -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 +2 -2
- package/lib/types/dsh-adapter/contract.d.ts.map +1 -1
- package/lib/types/dsh-adapter/contract.js +3 -2
- package/lib/types/dsh-adapter/decision-guard.d.ts +84 -0
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -0
- package/lib/types/dsh-adapter/decision-guard.js +354 -0
- package/lib/types/dsh-adapter/dialogs.d.ts +146 -0
- package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -0
- package/lib/types/dsh-adapter/dialogs.js +262 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts +99 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -0
- package/lib/types/dsh-adapter/effect-ledger.js +231 -0
- package/lib/types/dsh-adapter/extension-events.d.ts +193 -0
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -0
- package/lib/types/dsh-adapter/extension-events.js +169 -0
- package/lib/types/dsh-adapter/extensions.d.ts +32 -0
- package/lib/types/dsh-adapter/extensions.d.ts.map +1 -0
- package/lib/types/dsh-adapter/extensions.js +42 -0
- package/lib/types/dsh-adapter/grants.d.ts +25 -0
- package/lib/types/dsh-adapter/grants.d.ts.map +1 -0
- package/lib/types/dsh-adapter/grants.js +184 -0
- package/lib/types/dsh-adapter/host-descriptor.d.ts +24 -0
- package/lib/types/dsh-adapter/host-descriptor.d.ts.map +1 -0
- package/lib/types/dsh-adapter/host-descriptor.js +146 -0
- package/lib/types/dsh-adapter/index.d.ts +4 -0
- package/lib/types/dsh-adapter/index.d.ts.map +1 -1
- package/lib/types/dsh-adapter/index.js +1 -0
- package/lib/types/dsh-adapter/message-observer.d.ts +178 -0
- package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -0
- package/lib/types/dsh-adapter/message-observer.js +509 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts +103 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-host.js +270 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts +113 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-storage.js +385 -0
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +106 -1
- 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 +276 -0
- package/lib/types/dsh-adapter/promptDebug.d.ts +10 -0
- package/lib/types/dsh-adapter/promptDebug.d.ts.map +1 -0
- package/lib/types/dsh-adapter/promptDebug.js +148 -0
- package/lib/types/dsh-adapter/renderers.d.ts +65 -0
- package/lib/types/dsh-adapter/renderers.d.ts.map +1 -0
- package/lib/types/dsh-adapter/renderers.js +138 -0
- package/lib/types/dsh-adapter/sanitize.d.ts +36 -0
- package/lib/types/dsh-adapter/sanitize.d.ts.map +1 -0
- package/lib/types/dsh-adapter/sanitize.js +65 -0
- package/lib/types/dsh-adapter/scenes.d.ts +81 -0
- package/lib/types/dsh-adapter/scenes.d.ts.map +1 -0
- package/lib/types/dsh-adapter/scenes.js +93 -0
- package/lib/types/dsh-adapter/settings-sections.d.ts +116 -0
- package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -0
- package/lib/types/dsh-adapter/settings-sections.js +63 -0
- package/lib/types/dsh-adapter/settingsEditor.d.ts +128 -0
- package/lib/types/dsh-adapter/settingsEditor.d.ts.map +1 -0
- package/lib/types/dsh-adapter/settingsEditor.js +244 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts +109 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -0
- package/lib/types/dsh-adapter/shortcuts.js +268 -0
- package/lib/types/dsh-adapter/status.d.ts +75 -0
- package/lib/types/dsh-adapter/status.d.ts.map +1 -0
- package/lib/types/dsh-adapter/status.js +168 -0
- package/lib/types/extensions.d.ts +8 -0
- package/lib/types/extensions.d.ts.map +1 -0
- package/lib/types/extensions.js +15 -0
- package/lib/types/i18n.d.ts +299 -26
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +89 -8
- package/lib/types/ink/ink.d.ts +11 -0
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +33 -0
- package/lib/types/ink/log-update.d.ts.map +1 -1
- package/lib/types/ink/log-update.js +101 -51
- package/lib/types/ink/output.d.ts +7 -0
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +125 -4
- package/lib/types/ink/render-node-to-output.d.ts.map +1 -1
- package/lib/types/ink/render-node-to-output.js +14 -6
- package/lib/types/ink/terminal.d.ts.map +1 -1
- package/lib/types/ink/terminal.js +18 -6
- 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/modelRoute.d.ts +10 -2
- package/lib/types/modelRoute.d.ts.map +1 -1
- package/lib/types/modelRoute.js +33 -4
- package/lib/types/plugin-host.d.ts +13 -0
- package/lib/types/plugin-host.d.ts.map +1 -0
- package/lib/types/plugin-host.js +17 -0
- package/lib/types/plugin-spec/negotiate.d.ts +11 -0
- package/lib/types/plugin-spec/negotiate.d.ts.map +1 -0
- package/lib/types/plugin-spec/negotiate.js +97 -0
- package/lib/types/plugin-spec/permission-scope.d.ts +32 -0
- package/lib/types/plugin-spec/permission-scope.d.ts.map +1 -0
- package/lib/types/plugin-spec/permission-scope.js +90 -0
- package/lib/types/plugin-spec/registry.d.ts +23 -0
- package/lib/types/plugin-spec/registry.d.ts.map +1 -0
- package/lib/types/plugin-spec/registry.js +157 -0
- package/lib/types/plugin-spec/schema-check.d.ts +17 -0
- package/lib/types/plugin-spec/schema-check.d.ts.map +1 -0
- package/lib/types/plugin-spec/schema-check.js +165 -0
- package/lib/types/plugin-spec/tui-extension.d.ts +16 -0
- package/lib/types/plugin-spec/tui-extension.d.ts.map +1 -0
- package/lib/types/plugin-spec/tui-extension.js +77 -0
- package/lib/types/plugin-spec/types.d.ts +114 -0
- package/lib/types/plugin-spec/types.d.ts.map +1 -0
- package/lib/types/plugin-spec/types.js +10 -0
- package/lib/types/plugin-spec/validate.d.ts +21 -0
- package/lib/types/plugin-spec/validate.d.ts.map +1 -0
- package/lib/types/plugin-spec/validate.js +119 -0
- package/lib/types/scenes.d.ts +3 -0
- package/lib/types/scenes.d.ts.map +1 -0
- package/lib/types/scenes.js +4 -0
- package/lib/types/screens/Chat.d.ts +14 -1
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +247 -48
- package/lib/types/screens/Settings.d.ts +20 -0
- package/lib/types/screens/Settings.d.ts.map +1 -0
- package/lib/types/screens/Settings.js +333 -0
- package/lib/types/screens/StatusLine.js +1 -1
- package/lib/types/settings-sections.d.ts +3 -0
- package/lib/types/settings-sections.d.ts.map +1 -0
- package/lib/types/settings-sections.js +4 -0
- package/lib/types/theme.d.ts +17 -0
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +51 -0
- package/lib/types/update.d.ts +20 -0
- package/lib/types/update.d.ts.map +1 -1
- package/lib/types/update.js +54 -7
- package/lib/types/utils/loaded-context.d.ts +8 -3
- package/lib/types/utils/loaded-context.d.ts.map +1 -1
- package/lib/types/utils/loaded-context.js +39 -3
- package/lib/types/utils/modifiers.d.ts.map +1 -1
- package/lib/types/utils/modifiers.js +3 -2
- package/lib/types/working-activity.d.ts +12 -0
- package/lib/types/working-activity.d.ts.map +1 -1
- package/lib/types/working-activity.js +13 -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/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 +257 -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/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/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/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/LICENSE +21 -0
- package/node_modules/@dsh-std/presentation/README.md +26 -0
- package/node_modules/@dsh-std/presentation/README.zh.md +28 -0
- package/node_modules/@dsh-std/presentation/lib/index.d.ts +219 -0
- package/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -0
- package/node_modules/@dsh-std/presentation/lib/index.js +547 -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 +21 -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 +118 -67
- 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 +257 -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/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/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/LICENSE +21 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.md +26 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.zh.md +28 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts +219 -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 +547 -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 +21 -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/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/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/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 +257 -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/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/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,50 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { t } from '../i18n.js';
|
|
3
|
+
import { Box, Text, useTerminalSize } from '../ui.js';
|
|
4
|
+
import { Pane } from './design-system/Pane.js';
|
|
5
|
+
import { ListItem } from './design-system/ListItem.js';
|
|
6
|
+
import { HintLine } from './design-system/HintLine.js';
|
|
7
|
+
import { LoadingState } from './design-system/LoadingState.js';
|
|
8
|
+
import { listWindow } from './listWindow.js';
|
|
9
|
+
/** 来源桶 → 本地化标签(未知桶原样显示,SkillSource 对自定义桶开放)。 */
|
|
10
|
+
function sourceLabel(source) {
|
|
11
|
+
switch (source) {
|
|
12
|
+
case 'bundled':
|
|
13
|
+
return t('skills-source-bundled');
|
|
14
|
+
case 'user-dsh':
|
|
15
|
+
case 'user-agents':
|
|
16
|
+
return t('skills-source-user');
|
|
17
|
+
case 'project-dsh':
|
|
18
|
+
case 'project-agents':
|
|
19
|
+
return t('skills-source-project');
|
|
20
|
+
case 'runtime':
|
|
21
|
+
return t('skills-source-runtime');
|
|
22
|
+
case 'custom':
|
|
23
|
+
return t('skills-source-custom');
|
|
24
|
+
default:
|
|
25
|
+
return source;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* `/skills` picker (issue #204) in the ModelPicker style: a
|
|
30
|
+
* permission-colored Pane listing the live agent's skill catalog —
|
|
31
|
+
* user-invocable skills lead with `/name`(它们在 / 菜单里也是这个形态),
|
|
32
|
+
* 描述行是「来源 · 简述」。Enter 由 Chat 填回 `/name `,Esc 关闭。
|
|
33
|
+
*
|
|
34
|
+
* 长列表按焦点窗口化(ModelPicker 同款):picker 经 OverlayAbove 浮层挂载后
|
|
35
|
+
* 有 maxHeight 裁剪,全量渲染会让焦点行被裁掉(看不到焦点按 Enter)。
|
|
36
|
+
*/
|
|
37
|
+
export function SkillsPicker({ skills, focusIndex, }) {
|
|
38
|
+
const { rows: terminalRows } = useTerminalSize();
|
|
39
|
+
// 每项恒占 2 行(正文 + 来源/简述描述行,均 truncate 成单行)。
|
|
40
|
+
// 框架行:浮层预留 8 + Pane 2 + 标题 2 + 页脚 1 = 13(ModelPicker 同款)。
|
|
41
|
+
const { start, end } = listWindow(skills.map(() => 2), focusIndex, Math.max(terminalRows - 13, 2));
|
|
42
|
+
return (_jsxs(Pane, { color: "permission", children: [_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { color: "remember", bold: true, children: t('picker-title-skills') }) }), skills.length === 0 ? (_jsx(Text, { dimColor: true, children: t('skills-empty') })) : (skills.slice(start, end).map((skill, index) => {
|
|
43
|
+
const absoluteIndex = start + index;
|
|
44
|
+
return (_jsx(ListItem, { isFocused: absoluteIndex === focusIndex, description: `${sourceLabel(skill.source)}${skill.description === '' ? '' : ` · ${skill.description}`}`, showScrollUp: absoluteIndex === start && start > 0, showScrollDown: absoluteIndex === end - 1 && end < skills.length, children: skill.userInvocable ? `/${skill.name}` : skill.name }, skill.name));
|
|
45
|
+
}))] }), _jsx(Text, { dimColor: true, italic: true, children: _jsx(HintLine, { text: t('hint-fill-exit') }) })] }));
|
|
46
|
+
}
|
|
47
|
+
/** `/skills` while the registry snapshot is still in flight (ModelPickerLoading 同款). */
|
|
48
|
+
export function SkillsPickerLoading() {
|
|
49
|
+
return (_jsx(Pane, { color: "permission", children: _jsxs(Box, { flexDirection: "column", gap: 1, children: [_jsx(Text, { bold: true, color: "permission", children: t('picker-title-skills') }), _jsx(LoadingState, { message: t('skills-loading'), bold: true, subtitle: t('skills-loading-subtitle') })] }) }));
|
|
50
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ToolFileDiff } from '../dsh-adapter/channel.js';
|
|
3
|
+
import { type CliHighlight } from '../cc/cliHighlight.js';
|
|
4
|
+
/** chalk style for one raw theme value. Accepts every form the theme
|
|
5
|
+
* loader documents: #rgb, #rrggbb, #rrggbbaa (alpha stripped), rgb() with
|
|
6
|
+
* or without spaces, ansi256(n), ansi:name (issue #250, P2-5). */
|
|
7
|
+
export declare function chalkFromToken(token: string): (text: string) => string;
|
|
8
|
+
/** Parse a cli-highlight ANSI string into colored runs, preserving open
|
|
9
|
+
* spans across embedded newlines (multi-line strings/comments). Handles
|
|
10
|
+
* truecolor 38;2, 256-color 38;5 (tmux / FORCE_COLOR=2, issue #250 P1-1),
|
|
11
|
+
* and single-code 16-color SGR. */
|
|
12
|
+
export declare function parseAnsiRuns(text: string): {
|
|
13
|
+
text: string;
|
|
14
|
+
color?: string;
|
|
15
|
+
}[];
|
|
16
|
+
export declare function highlightLines(text: string, language: string | undefined, hl: CliHighlight | null, chTheme: Record<string, (text: string) => string> | undefined, themeSig: string): readonly {
|
|
17
|
+
text: string;
|
|
18
|
+
color?: string;
|
|
19
|
+
}[][] | undefined;
|
|
20
|
+
export declare function SplitDiffView({ diffs, width, maxRows, verbose, }: {
|
|
21
|
+
readonly diffs: readonly ToolFileDiff[];
|
|
22
|
+
/** Content width available to the whole two-pane block (divider included). */
|
|
23
|
+
readonly width: number;
|
|
24
|
+
/** Row budget when not verbose; overflow folds into one hint row. */
|
|
25
|
+
readonly maxRows: number;
|
|
26
|
+
readonly verbose: boolean;
|
|
27
|
+
}): React.ReactNode;
|
|
28
|
+
//# sourceMappingURL=SplitDiffView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitDiffView.d.ts","sourceRoot":"","sources":["../../../src/components/SplitDiffView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAwFjF;;mEAEmE;AACnE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAmBtE;AAUD;;;oCAGoC;AACpC,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAuB9E;AAuBD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,EAAE,EAAE,YAAY,GAAG,IAAI,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,EAC7D,QAAQ,EAAE,MAAM,GACf,SAAS;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,GAAG,SAAS,CAe3D;AA6ND,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,KAAK,EACL,OAAO,EACP,OAAO,GACR,EAAE;IACD,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAA;IACvC,8EAA8E;IAC9E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,qEAAqE;IACrE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;CAC1B,GAAG,KAAK,CAAC,SAAS,CAiGlB"}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from '../ui.js';
|
|
4
|
+
import * as JsDiff from 'diff';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
import { extname } from 'node:path';
|
|
7
|
+
import { getCliHighlightPromise } from '../cc/cliHighlight.js';
|
|
8
|
+
import { getTheme } from '../theme.js';
|
|
9
|
+
import { useTheme } from './design-system/ThemeProvider.js';
|
|
10
|
+
/** Replace tabs so width math and alignment hold (pi convention). */
|
|
11
|
+
const expandTabs = (text) => text.replaceAll('\t', ' ');
|
|
12
|
+
// --- syntax highlighting ----------------------------------------------------
|
|
13
|
+
/** highlight.js token classes → theme syntax tokens. `default` catches
|
|
14
|
+
* every unmapped class so cli-highlight's own yellow never leaks through
|
|
15
|
+
* (issue #250, P2-6). */
|
|
16
|
+
const SYNTAX_CLASS_TO_TOKEN = {
|
|
17
|
+
keyword: 'syntaxKeyword',
|
|
18
|
+
built_in: 'syntaxKeyword',
|
|
19
|
+
literal: 'syntaxKeyword',
|
|
20
|
+
string: 'syntaxString',
|
|
21
|
+
subst: 'syntaxString',
|
|
22
|
+
quote: 'syntaxString',
|
|
23
|
+
comment: 'syntaxComment',
|
|
24
|
+
number: 'syntaxNumber',
|
|
25
|
+
title: 'syntaxFunction',
|
|
26
|
+
'title.function_': 'syntaxFunction',
|
|
27
|
+
function: 'syntaxFunction',
|
|
28
|
+
'title.class_': 'syntaxType',
|
|
29
|
+
type: 'syntaxType',
|
|
30
|
+
class: 'syntaxType',
|
|
31
|
+
tag: 'syntaxType',
|
|
32
|
+
name: 'syntaxType',
|
|
33
|
+
attr: 'syntaxVariable',
|
|
34
|
+
attribute: 'syntaxVariable',
|
|
35
|
+
variable: 'syntaxVariable',
|
|
36
|
+
'template-variable': 'syntaxVariable',
|
|
37
|
+
params: 'syntaxVariable',
|
|
38
|
+
operator: 'syntaxOperator',
|
|
39
|
+
punctuation: 'syntaxPunctuation',
|
|
40
|
+
meta: 'syntaxPunctuation',
|
|
41
|
+
symbol: 'syntaxConstant',
|
|
42
|
+
regexp: 'syntaxConstant',
|
|
43
|
+
default: 'syntaxVariable',
|
|
44
|
+
};
|
|
45
|
+
/** chalk style for one raw theme value. Accepts every form the theme
|
|
46
|
+
* loader documents: #rgb, #rrggbb, #rrggbbaa (alpha stripped), rgb() with
|
|
47
|
+
* or without spaces, ansi256(n), ansi:name (issue #250, P2-5). */
|
|
48
|
+
export function chalkFromToken(token) {
|
|
49
|
+
let match = /^#([0-9a-fA-F]{3})$/.exec(token);
|
|
50
|
+
if (match !== null) {
|
|
51
|
+
const [r, g, b] = match[1].split('').map(c => parseInt(c + c, 16));
|
|
52
|
+
return chalk.rgb(r, g, b);
|
|
53
|
+
}
|
|
54
|
+
match = /^#([0-9a-fA-F]{6})(?:[0-9a-fA-F]{2})?$/.exec(token);
|
|
55
|
+
if (match !== null)
|
|
56
|
+
return chalk.hex(`#${match[1]}`);
|
|
57
|
+
match = /^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/.exec(token);
|
|
58
|
+
if (match !== null)
|
|
59
|
+
return chalk.rgb(Number(match[1]), Number(match[2]), Number(match[3]));
|
|
60
|
+
match = /^ansi256\((\d+)\)$/.exec(token);
|
|
61
|
+
if (match !== null)
|
|
62
|
+
return chalk.ansi256(Number(match[1]));
|
|
63
|
+
match = /^ansi:(\w+)$/.exec(token);
|
|
64
|
+
if (match !== null) {
|
|
65
|
+
const name = match[1] === 'blackBright' ? 'gray' : match[1];
|
|
66
|
+
const style = chalk[name];
|
|
67
|
+
if (style !== undefined)
|
|
68
|
+
return style;
|
|
69
|
+
}
|
|
70
|
+
return (text) => text;
|
|
71
|
+
}
|
|
72
|
+
/** ANSI 16-color SGR codes → rgb() strings (the dark-ansi palette path). */
|
|
73
|
+
const ANSI16 = {
|
|
74
|
+
30: 'rgb(0,0,0)', 31: 'rgb(128,0,0)', 32: 'rgb(0,128,0)', 33: 'rgb(128,128,0)',
|
|
75
|
+
34: 'rgb(0,0,128)', 35: 'rgb(128,0,128)', 36: 'rgb(0,128,128)', 37: 'rgb(192,192,192)',
|
|
76
|
+
90: 'rgb(128,128,128)', 91: 'rgb(255,0,0)', 92: 'rgb(0,255,0)', 93: 'rgb(255,255,0)',
|
|
77
|
+
94: 'rgb(0,0,255)', 95: 'rgb(255,0,255)', 96: 'rgb(0,255,255)', 97: 'rgb(255,255,255)',
|
|
78
|
+
};
|
|
79
|
+
/** Parse a cli-highlight ANSI string into colored runs, preserving open
|
|
80
|
+
* spans across embedded newlines (multi-line strings/comments). Handles
|
|
81
|
+
* truecolor 38;2, 256-color 38;5 (tmux / FORCE_COLOR=2, issue #250 P1-1),
|
|
82
|
+
* and single-code 16-color SGR. */
|
|
83
|
+
export function parseAnsiRuns(text) {
|
|
84
|
+
const runs = [];
|
|
85
|
+
let color;
|
|
86
|
+
let rest = text;
|
|
87
|
+
// eslint-disable-next-line no-control-regex -- parsing SGR is the point
|
|
88
|
+
const sgr = /\x1b\[([0-9;]+)m/;
|
|
89
|
+
while (rest.length > 0) {
|
|
90
|
+
const match = sgr.exec(rest);
|
|
91
|
+
const chunk = match === null ? rest : rest.slice(0, match.index);
|
|
92
|
+
if (chunk !== '')
|
|
93
|
+
runs.push(color === undefined ? { text: chunk } : { text: chunk, color });
|
|
94
|
+
if (match === null)
|
|
95
|
+
break;
|
|
96
|
+
const codes = match[1].split(';').map(Number);
|
|
97
|
+
if (codes.includes(0) || codes.includes(39))
|
|
98
|
+
color = undefined;
|
|
99
|
+
else if (codes[0] === 38 && codes[1] === 2 && codes.length >= 5) {
|
|
100
|
+
color = `rgb(${codes[2]},${codes[3]},${codes[4]})`;
|
|
101
|
+
}
|
|
102
|
+
else if (codes[0] === 38 && codes[1] === 5 && codes.length >= 3) {
|
|
103
|
+
color = `ansi256(${codes[2]})`;
|
|
104
|
+
}
|
|
105
|
+
else if (codes.length === 1 && ANSI16[codes[0]] !== undefined) {
|
|
106
|
+
color = ANSI16[codes[0]];
|
|
107
|
+
}
|
|
108
|
+
rest = rest.slice(match.index + match[0].length);
|
|
109
|
+
}
|
|
110
|
+
return runs;
|
|
111
|
+
}
|
|
112
|
+
/** Split flat runs into per-line run arrays at embedded newlines. */
|
|
113
|
+
function splitRunsToLines(runs) {
|
|
114
|
+
const lines = [[]];
|
|
115
|
+
for (const run of runs) {
|
|
116
|
+
const parts = run.text.split('\n');
|
|
117
|
+
for (let i = 0; i < parts.length; i++) {
|
|
118
|
+
if (i > 0)
|
|
119
|
+
lines.push([]);
|
|
120
|
+
if (parts[i] !== '') {
|
|
121
|
+
lines[lines.length - 1].push(run.color === undefined ? { text: parts[i] } : { text: parts[i], color: run.color });
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return lines;
|
|
126
|
+
}
|
|
127
|
+
/** Whole-hunk syntax runs per line, cached per (theme signature + language
|
|
128
|
+
* + text): one entry survives any amount of card re-rendering, and the
|
|
129
|
+
* palette change invalidates it (issue #250, P1-2 + P2-8). */
|
|
130
|
+
const syntaxCache = new Map();
|
|
131
|
+
const SYNTAX_CACHE_MAX = 40;
|
|
132
|
+
export function highlightLines(text, language, hl, chTheme, themeSig) {
|
|
133
|
+
if (hl === null || chTheme === undefined || language === undefined)
|
|
134
|
+
return undefined;
|
|
135
|
+
if (text === '' || !hl.supportsLanguage(language))
|
|
136
|
+
return undefined;
|
|
137
|
+
const key = `${themeSig}${language}${text}`;
|
|
138
|
+
const cached = syntaxCache.get(key);
|
|
139
|
+
if (cached !== undefined)
|
|
140
|
+
return cached;
|
|
141
|
+
let lines;
|
|
142
|
+
try {
|
|
143
|
+
lines = splitRunsToLines(parseAnsiRuns(hl.highlight(text, { language, theme: chTheme })));
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
if (syntaxCache.size >= SYNTAX_CACHE_MAX)
|
|
149
|
+
syntaxCache.clear();
|
|
150
|
+
syntaxCache.set(key, lines);
|
|
151
|
+
return lines;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Merge syntax runs with word-diff change flags over the same string: both
|
|
155
|
+
* partition it, so an offset sweep yields runs carrying a syntax color AND
|
|
156
|
+
* a changed flag. The render layer lets `changed` override the color.
|
|
157
|
+
*/
|
|
158
|
+
function mergeRuns(syntax, words) {
|
|
159
|
+
const out = [];
|
|
160
|
+
let si = 0;
|
|
161
|
+
let wi = 0;
|
|
162
|
+
let sOff = 0;
|
|
163
|
+
let wOff = 0;
|
|
164
|
+
while (si < syntax.length && wi < words.length) {
|
|
165
|
+
const s = syntax[si];
|
|
166
|
+
const w = words[wi];
|
|
167
|
+
const sLen = s.text.length - sOff;
|
|
168
|
+
const wLen = w.text.length - wOff;
|
|
169
|
+
const take = Math.min(sLen, wLen);
|
|
170
|
+
if (take > 0) {
|
|
171
|
+
out.push({
|
|
172
|
+
text: w.text.slice(wOff, wOff + take),
|
|
173
|
+
changed: w.changed,
|
|
174
|
+
color: w.changed ? undefined : s.color,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
sOff += take;
|
|
178
|
+
wOff += take;
|
|
179
|
+
if (sOff >= s.text.length) {
|
|
180
|
+
si++;
|
|
181
|
+
sOff = 0;
|
|
182
|
+
}
|
|
183
|
+
if (wOff >= w.text.length) {
|
|
184
|
+
wi++;
|
|
185
|
+
wOff = 0;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return out;
|
|
189
|
+
}
|
|
190
|
+
// --- word-level diff --------------------------------------------------------
|
|
191
|
+
/** Strip the shared leading whitespace before word-diffing: otherwise the
|
|
192
|
+
* whole indent reads as one changed blob (pi's renderIntraLineDiff trick). */
|
|
193
|
+
function wordSegments(oldLine, newLine) {
|
|
194
|
+
const oldIndent = /^\s*/.exec(oldLine)?.[0] ?? '';
|
|
195
|
+
const newIndent = /^\s*/.exec(newLine)?.[0] ?? '';
|
|
196
|
+
const sharedIndent = oldIndent === newIndent ? oldIndent : '';
|
|
197
|
+
const parts = JsDiff.diffWords(oldLine.slice(sharedIndent.length), newLine.slice(sharedIndent.length));
|
|
198
|
+
const oldSegments = sharedIndent === '' ? [] : [{ text: sharedIndent, changed: false }];
|
|
199
|
+
const newSegments = sharedIndent === '' ? [] : [{ text: sharedIndent, changed: false }];
|
|
200
|
+
for (const part of parts) {
|
|
201
|
+
if (part.added)
|
|
202
|
+
newSegments.push({ text: part.value, changed: true });
|
|
203
|
+
else if (part.removed)
|
|
204
|
+
oldSegments.push({ text: part.value, changed: true });
|
|
205
|
+
else {
|
|
206
|
+
oldSegments.push({ text: part.value, changed: false });
|
|
207
|
+
newSegments.push({ text: part.value, changed: false });
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return { old: oldSegments, new: newSegments };
|
|
211
|
+
}
|
|
212
|
+
const plainSegments = (line) => [{ text: line, changed: false }];
|
|
213
|
+
// --- hunk alignment ---------------------------------------------------------
|
|
214
|
+
/**
|
|
215
|
+
* Pair the lines of an unequal removed+added block via a case-insensitive
|
|
216
|
+
* LCS: lines equal modulo case align as change pairs, everything before the
|
|
217
|
+
* first match stays block order. An inserted line above an edited one
|
|
218
|
+
* (`foo,bar` → `insert,FOO,bar`) therefore yields `insert` add-only, then
|
|
219
|
+
* `foo ↔ FOO`, instead of the index-zip misalignment (issue #250, P2-4).
|
|
220
|
+
*/
|
|
221
|
+
function lcsPairs(oldLines, newLines) {
|
|
222
|
+
const m = oldLines.length;
|
|
223
|
+
const n = newLines.length;
|
|
224
|
+
// dp[i][j] = LCS length of oldLines[i:] and newLines[j:].
|
|
225
|
+
const dp = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
|
|
226
|
+
const eq = (a, b) => a.toLowerCase() === b.toLowerCase();
|
|
227
|
+
for (let i = m - 1; i >= 0; i--) {
|
|
228
|
+
for (let j = n - 1; j >= 0; j--) {
|
|
229
|
+
dp[i][j] = eq(oldLines[i], newLines[j])
|
|
230
|
+
? dp[i + 1][j + 1] + 1
|
|
231
|
+
: Math.max(dp[i + 1][j], dp[i][j + 1]);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
const pairs = [];
|
|
235
|
+
let i = 0;
|
|
236
|
+
let j = 0;
|
|
237
|
+
while (i < m && j < n) {
|
|
238
|
+
if (eq(oldLines[i], newLines[j])) {
|
|
239
|
+
pairs.push([i, j]);
|
|
240
|
+
i++;
|
|
241
|
+
j++;
|
|
242
|
+
}
|
|
243
|
+
else if (dp[i + 1][j] >= dp[i][j + 1]) {
|
|
244
|
+
i++;
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
j++;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return pairs;
|
|
251
|
+
}
|
|
252
|
+
/** Align one file's hunks into rows (plain text + word flags; styling is a
|
|
253
|
+
* render-time concern over the visible slice). */
|
|
254
|
+
function alignFileDiff(fileIndex, oldText, newText) {
|
|
255
|
+
const rows = [];
|
|
256
|
+
const parts = JsDiff.diffLines(expandTabs(oldText ?? ''), expandTabs(newText));
|
|
257
|
+
let oldIndex = 0;
|
|
258
|
+
let newIndex = 0;
|
|
259
|
+
for (let i = 0; i < parts.length; i++) {
|
|
260
|
+
const part = parts[i];
|
|
261
|
+
const lines = part.value.replace(/\n$/, '').split('\n');
|
|
262
|
+
if (!part.added && !part.removed) {
|
|
263
|
+
for (const line of lines) {
|
|
264
|
+
rows.push({
|
|
265
|
+
kind: 'context',
|
|
266
|
+
fileIndex,
|
|
267
|
+
oldIndex: oldIndex++,
|
|
268
|
+
newIndex: newIndex++,
|
|
269
|
+
oldWords: plainSegments(line),
|
|
270
|
+
newWords: plainSegments(line),
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
continue;
|
|
274
|
+
}
|
|
275
|
+
if (part.removed) {
|
|
276
|
+
const addedPart = parts[i + 1]?.added === true ? parts[i + 1] : undefined;
|
|
277
|
+
const addedLines = addedPart === undefined ? [] : addedPart.value.replace(/\n$/, '').split('\n');
|
|
278
|
+
// Same-length replacement blocks zip index-for-index (the common
|
|
279
|
+
// edit case); unequal blocks pair through the ci-LCS so an inserted
|
|
280
|
+
// line cannot shift the alignment (issue #250, P2-4).
|
|
281
|
+
const pairs = lines.length === addedLines.length
|
|
282
|
+
? lines.map((_, index) => [index, index])
|
|
283
|
+
: lcsPairs(lines, addedLines);
|
|
284
|
+
// Block order: walk both lists; unpaired entries emit in place, pairs
|
|
285
|
+
// emit at the later of the two positions.
|
|
286
|
+
const events = [];
|
|
287
|
+
let oi = 0;
|
|
288
|
+
let ai = 0;
|
|
289
|
+
for (const [o, a] of pairs) {
|
|
290
|
+
while (oi < o)
|
|
291
|
+
events.push({ kind: 'del', o: oi++ });
|
|
292
|
+
while (ai < a)
|
|
293
|
+
events.push({ kind: 'add', a: ai++ });
|
|
294
|
+
events.push({ kind: 'change', o: oi++, a: ai++ });
|
|
295
|
+
}
|
|
296
|
+
while (oi < lines.length)
|
|
297
|
+
events.push({ kind: 'del', o: oi++ });
|
|
298
|
+
while (ai < addedLines.length)
|
|
299
|
+
events.push({ kind: 'add', a: ai++ });
|
|
300
|
+
for (const event of events) {
|
|
301
|
+
if (event.kind === 'change') {
|
|
302
|
+
const segments = wordSegments(lines[event.o], addedLines[event.a]);
|
|
303
|
+
rows.push({
|
|
304
|
+
kind: 'change',
|
|
305
|
+
fileIndex,
|
|
306
|
+
oldIndex: oldIndex++,
|
|
307
|
+
newIndex: newIndex++,
|
|
308
|
+
oldWords: segments.old,
|
|
309
|
+
newWords: segments.new,
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
else if (event.kind === 'del') {
|
|
313
|
+
rows.push({ kind: 'del', fileIndex, oldIndex: oldIndex++, oldWords: plainSegments(lines[event.o]) });
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
rows.push({ kind: 'add', fileIndex, newIndex: newIndex++, newWords: plainSegments(addedLines[event.a]) });
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
if (addedPart !== undefined)
|
|
320
|
+
i++;
|
|
321
|
+
continue;
|
|
322
|
+
}
|
|
323
|
+
for (const line of lines) {
|
|
324
|
+
rows.push({ kind: 'add', fileIndex, newIndex: newIndex++, newWords: plainSegments(line) });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
return rows;
|
|
328
|
+
}
|
|
329
|
+
// --- rendering --------------------------------------------------------------
|
|
330
|
+
function PaneLine({ side, kind, width, tone, padLeft = false, }) {
|
|
331
|
+
const backgroundColor = kind === 'context'
|
|
332
|
+
? 'toolCardBackground'
|
|
333
|
+
: tone === 'old'
|
|
334
|
+
? 'diffRemovedDimmed'
|
|
335
|
+
: 'diffAddedDimmed';
|
|
336
|
+
const wordColor = tone === 'old' ? 'diffRemovedWord' : 'diffAddedWord';
|
|
337
|
+
// Status gutter instead of line numbers: ToolFileDiff has no file
|
|
338
|
+
// offsets, and an invented number misleads (issue #250, P2-3).
|
|
339
|
+
const marker = kind === 'context' ? ' ' : tone === 'old' ? '−' : '+';
|
|
340
|
+
const prefix = padLeft ? ` ${marker}` : marker;
|
|
341
|
+
return (_jsxs(Box, { width: width, flexShrink: 0, backgroundColor: backgroundColor, children: [_jsx(Text, { dimColor: true, backgroundColor: backgroundColor, children: `${prefix} ` }), side === undefined ? (_jsx(Text, { backgroundColor: backgroundColor, children: " " })) : (_jsx(Text, { wrap: "truncate", backgroundColor: backgroundColor, children: side.segments.map((segment, index) => segment.changed ? (_jsx(Text, { color: wordColor, bold: true, backgroundColor: backgroundColor, children: segment.text }, index)) : (_jsx(Text, { color: segment.color, backgroundColor: backgroundColor, children: segment.text }, index))) }))] }));
|
|
342
|
+
}
|
|
343
|
+
export function SplitDiffView({ diffs, width, maxRows, verbose, }) {
|
|
344
|
+
const [hl, setHl] = React.useState(null);
|
|
345
|
+
React.useEffect(() => {
|
|
346
|
+
let mounted = true;
|
|
347
|
+
void getCliHighlightPromise().then(loaded => {
|
|
348
|
+
if (mounted)
|
|
349
|
+
setHl(loaded);
|
|
350
|
+
});
|
|
351
|
+
return () => { mounted = false; };
|
|
352
|
+
}, []);
|
|
353
|
+
const [themeName] = useTheme();
|
|
354
|
+
// Resolved-palette signature: covers dark→light, light→dark, AND the
|
|
355
|
+
// `auto` base flip where the name never changes (issue #250, P1-2).
|
|
356
|
+
const themeSig = React.useMemo(() => {
|
|
357
|
+
const theme = getTheme(themeName);
|
|
358
|
+
return Object.values(SYNTAX_CLASS_TO_TOKEN)
|
|
359
|
+
.map(key => theme[key] ?? '')
|
|
360
|
+
.join('|');
|
|
361
|
+
}, [themeName]);
|
|
362
|
+
const chTheme = React.useMemo(() => {
|
|
363
|
+
const theme = getTheme(themeName);
|
|
364
|
+
const out = {};
|
|
365
|
+
for (const [tokenClass, tokenKey] of Object.entries(SYNTAX_CLASS_TO_TOKEN)) {
|
|
366
|
+
const value = theme[tokenKey];
|
|
367
|
+
if (value !== undefined)
|
|
368
|
+
out[tokenClass] = chalkFromToken(value);
|
|
369
|
+
}
|
|
370
|
+
return out;
|
|
371
|
+
// themeSig changes exactly when any syntax token's resolved value does.
|
|
372
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
373
|
+
}, [themeSig]);
|
|
374
|
+
// Alignment is text-only and capped BEFORE styling: the highlighter and
|
|
375
|
+
// word-diff work lands only on the visible slice (issue #250, P2-8).
|
|
376
|
+
const rows = [];
|
|
377
|
+
let prevPath;
|
|
378
|
+
diffs.forEach((diff, fileIndex) => {
|
|
379
|
+
if (diffs.length > 1) {
|
|
380
|
+
if (diff.path !== prevPath)
|
|
381
|
+
rows.push({ separator: diff.path });
|
|
382
|
+
else
|
|
383
|
+
rows.push({ separator: '⋯' });
|
|
384
|
+
}
|
|
385
|
+
prevPath = diff.path;
|
|
386
|
+
rows.push(...alignFileDiff(fileIndex, diff.oldText, diff.newText));
|
|
387
|
+
});
|
|
388
|
+
const totalRows = rows.length;
|
|
389
|
+
const capped = verbose || totalRows <= maxRows || totalRows - maxRows === 1;
|
|
390
|
+
const visible = capped ? rows : rows.slice(0, maxRows);
|
|
391
|
+
const hidden = totalRows - visible.length;
|
|
392
|
+
const paneWidth = Math.max(20, Math.floor((width - 1) / 2));
|
|
393
|
+
// Whole-hunk highlight per file (multi-line lexer state preserved);
|
|
394
|
+
// only the visible rows merge syntax runs with word flags below.
|
|
395
|
+
const fileSyntax = diffs.map(diff => {
|
|
396
|
+
const language = extname(diff.path).replace(/^\./, '') || undefined;
|
|
397
|
+
return {
|
|
398
|
+
old: highlightLines(expandTabs(diff.oldText ?? ''), language, hl, chTheme, themeSig),
|
|
399
|
+
next: highlightLines(expandTabs(diff.newText), language, hl, chTheme, themeSig),
|
|
400
|
+
};
|
|
401
|
+
});
|
|
402
|
+
return (_jsxs(Box, { flexDirection: "column", width: paneWidth * 2 + 1, backgroundColor: "toolCardBackgroundDim", children: [visible.map((row, index) => {
|
|
403
|
+
if ('separator' in row) {
|
|
404
|
+
return (_jsx(Box, { width: paneWidth * 2 + 1, children: _jsx(Text, { dimColor: true, wrap: "truncate", children: row.separator === '⋯' ? '⋯' : ` ${row.separator}` }) }, index));
|
|
405
|
+
}
|
|
406
|
+
const syntax = fileSyntax[row.fileIndex];
|
|
407
|
+
const oldRuns = row.oldIndex !== undefined ? syntax?.old?.[row.oldIndex] : undefined;
|
|
408
|
+
const newRuns = row.newIndex !== undefined ? syntax?.next?.[row.newIndex] : undefined;
|
|
409
|
+
const oldSide = row.oldWords === undefined
|
|
410
|
+
? undefined
|
|
411
|
+
: { segments: oldRuns !== undefined ? mergeRuns(oldRuns, row.oldWords) : row.oldWords };
|
|
412
|
+
const newSide = row.newWords === undefined
|
|
413
|
+
? undefined
|
|
414
|
+
: { segments: newRuns !== undefined ? mergeRuns(newRuns, row.newWords) : row.newWords };
|
|
415
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(PaneLine, { side: oldSide, kind: row.kind === 'add' ? 'context' : row.kind, tone: "old", width: paneWidth }), _jsx(Box, { width: 1, flexShrink: 0, backgroundColor: "toolCardBackgroundDim", children: _jsx(Text, { dimColor: true, children: "\u2502" }) }), _jsx(PaneLine, { side: newSide, kind: row.kind === 'del' ? 'context' : row.kind, tone: "new", width: paneWidth, padLeft: true })] }, index));
|
|
416
|
+
}), hidden > 0 && (_jsx(Text, { dimColor: true, children: `… +${hidden} lines (ctrl+o to expand)` }))] }));
|
|
417
|
+
}
|
|
@@ -3,11 +3,16 @@ type Props = {
|
|
|
3
3
|
isError: boolean;
|
|
4
4
|
isUnresolved: boolean;
|
|
5
5
|
shouldAnimate: boolean;
|
|
6
|
+
/** Raw tool id (bash/read/edit/…) — picks the category color for a settled dot. */
|
|
7
|
+
toolName?: string;
|
|
6
8
|
};
|
|
7
9
|
/**
|
|
8
|
-
* The status dot on tool-call rows
|
|
9
|
-
*
|
|
10
|
+
* The status dot on tool-call rows. State shapes the glyph, the tool
|
|
11
|
+
* category picks the settled color: blinking `●` while running (attention),
|
|
12
|
+
* a smaller category-colored `•` once settled (quiet), and a red `✗` on
|
|
13
|
+
* error — a glyph swap, not just a hue, so failures read at a glance
|
|
14
|
+
* (Codex-style category colors; every color is a theme token).
|
|
10
15
|
*/
|
|
11
|
-
export declare function ToolUseLoader({ isError, isUnresolved, shouldAnimate, }: Props): React.ReactNode;
|
|
16
|
+
export declare function ToolUseLoader({ isError, isUnresolved, shouldAnimate, toolName, }: Props): React.ReactNode;
|
|
12
17
|
export {};
|
|
13
18
|
//# sourceMappingURL=ToolUseLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToolUseLoader.d.ts","sourceRoot":"","sources":["../../../src/components/ToolUseLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"ToolUseLoader.d.ts","sourceRoot":"","sources":["../../../src/components/ToolUseLoader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAA;IAChB,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAmCD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,YAAY,EACZ,aAAa,EACb,QAAQ,GACT,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAoBzB"}
|
|
@@ -1,17 +1,51 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import Box from '../ink/components/Box.js';
|
|
3
|
-
import Text from '../
|
|
3
|
+
import { Text } from '../ui.js';
|
|
4
4
|
import { useBlink } from '../hooks/useBlink.js';
|
|
5
|
-
import { BLACK_CIRCLE } from '../cc/figures.js';
|
|
5
|
+
import { BLACK_CIRCLE, BULLET, MULTIPLICATION_X } from '../cc/figures.js';
|
|
6
|
+
const CATEGORY_BY_TOOL = {
|
|
7
|
+
bash: 'exec',
|
|
8
|
+
powershell: 'exec',
|
|
9
|
+
pwsh: 'exec',
|
|
10
|
+
read: 'read',
|
|
11
|
+
grep: 'read',
|
|
12
|
+
glob: 'read',
|
|
13
|
+
search: 'read',
|
|
14
|
+
file_search: 'read',
|
|
15
|
+
edit: 'write',
|
|
16
|
+
write: 'write',
|
|
17
|
+
str_replace_editor: 'write',
|
|
18
|
+
multiedit: 'write',
|
|
19
|
+
web_search: 'web',
|
|
20
|
+
web_fetch: 'web',
|
|
21
|
+
browser: 'web',
|
|
22
|
+
subagent: 'task',
|
|
23
|
+
task: 'task',
|
|
24
|
+
job: 'task',
|
|
25
|
+
workflow: 'task',
|
|
26
|
+
};
|
|
27
|
+
const CATEGORY_TOKEN = {
|
|
28
|
+
exec: 'toolDotExec',
|
|
29
|
+
read: 'toolDotRead',
|
|
30
|
+
write: 'toolDotWrite',
|
|
31
|
+
web: 'toolDotWeb',
|
|
32
|
+
task: 'toolDotTask',
|
|
33
|
+
default: 'success',
|
|
34
|
+
};
|
|
6
35
|
/**
|
|
7
|
-
* The status dot on tool-call rows
|
|
8
|
-
*
|
|
36
|
+
* The status dot on tool-call rows. State shapes the glyph, the tool
|
|
37
|
+
* category picks the settled color: blinking `●` while running (attention),
|
|
38
|
+
* a smaller category-colored `•` once settled (quiet), and a red `✗` on
|
|
39
|
+
* error — a glyph swap, not just a hue, so failures read at a glance
|
|
40
|
+
* (Codex-style category colors; every color is a theme token).
|
|
9
41
|
*/
|
|
10
|
-
export function ToolUseLoader({ isError, isUnresolved, shouldAnimate, }) {
|
|
42
|
+
export function ToolUseLoader({ isError, isUnresolved, shouldAnimate, toolName, }) {
|
|
11
43
|
const [ref, isBlinking] = useBlink(shouldAnimate);
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
44
|
+
if (isError) {
|
|
45
|
+
return (_jsx(Box, { ref: ref, minWidth: 2, children: _jsx(Text, { color: "error", children: MULTIPLICATION_X }) }));
|
|
46
|
+
}
|
|
47
|
+
const category = CATEGORY_BY_TOOL[toolName ?? ''] ?? 'default';
|
|
48
|
+
const color = isUnresolved ? undefined : CATEGORY_TOKEN[category];
|
|
49
|
+
const char = shouldAnimate ? (isBlinking ? BLACK_CIRCLE : ' ') : BULLET;
|
|
16
50
|
return (_jsx(Box, { ref: ref, minWidth: 2, children: _jsx(Text, { color: color, dimColor: isUnresolved, children: char }) }));
|
|
17
51
|
}
|
|
@@ -19,6 +19,8 @@ type Props = {
|
|
|
19
19
|
* is worth less than mentioning it once.
|
|
20
20
|
*/
|
|
21
21
|
footnote?: string;
|
|
22
|
+
/** Diff presentation preference; `auto` picks by terminal width. */
|
|
23
|
+
diffLayout?: 'auto' | 'split' | 'unified';
|
|
22
24
|
};
|
|
23
25
|
/**
|
|
24
26
|
* Tool-call card: `● Edit /path` header with a blinking status dot, then the
|
|
@@ -26,6 +28,6 @@ type Props = {
|
|
|
26
28
|
* output, read content — instead of the raw result dump (mirroring Claude Code's `AssistantToolUseMessage.tsx` + the dsh-tools presentation views the
|
|
27
29
|
* channel captures per call).
|
|
28
30
|
*/
|
|
29
|
-
export declare function AssistantToolUseMessage({ tool, addMargin, verbose, isSelected, isExpanded, footnote, }: Props): React.ReactNode;
|
|
31
|
+
export declare function AssistantToolUseMessage({ tool, addMargin, verbose, isSelected, isExpanded, footnote, diffLayout, }: Props): React.ReactNode;
|
|
30
32
|
export {};
|
|
31
33
|
//# sourceMappingURL=AssistantToolUseMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantToolUseMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/AssistantToolUseMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAA8C,OAAO,EAAE,MAAM,8BAA8B,CAAA;
|
|
1
|
+
{"version":3,"file":"AssistantToolUseMessage.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/AssistantToolUseMessage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAA8C,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAKvG,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,OAAO,CAAA;IACb,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAA;IAClB,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAA;IAChB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;CAC1C,CAAA;AAyMD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,EACtC,IAAI,EACJ,SAAS,EACT,OAAO,EACP,UAAkB,EAClB,UAAkB,EAClB,QAAQ,EACR,UAAmB,GACpB,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAqIzB"}
|