@deepseek-harness-tui/dsh-tui 0.8.0 → 0.8.2
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 +32 -15
- package/cordis.patch.yml +21 -2
- package/cordis.yml +12 -1
- 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/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/command-trees.d.ts +2 -1
- package/lib/types/command-trees.d.ts.map +1 -1
- package/lib/types/command-trees.js +1 -1
- package/lib/types/commands.d.ts.map +1 -1
- package/lib/types/commands.js +2 -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 +210 -0
- package/lib/types/components/HelpMenu.js +1 -1
- package/lib/types/components/LoadedContextPanel.d.ts +5 -5
- package/lib/types/components/LoadedContextPanel.js +6 -6
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +16 -8
- package/lib/types/components/Markdown.d.ts +13 -1
- package/lib/types/components/Markdown.d.ts.map +1 -1
- package/lib/types/components/Markdown.js +15 -1
- 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 +111 -6
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +26 -12
- 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/StreamingMarkdown.d.ts +2 -8
- package/lib/types/components/StreamingMarkdown.d.ts.map +1 -1
- package/lib/types/components/StreamingMarkdown.js +51 -9
- 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/activityFrames.d.ts +1 -1
- package/lib/types/components/activityFrames.d.ts.map +1 -1
- package/lib/types/components/activityFrames.js +4 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts +5 -1
- package/lib/types/components/messages/AssistantThinkingMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantThinkingMessage.js +26 -3
- package/lib/types/components/messages/AssistantToolUseMessage.d.ts.map +1 -1
- package/lib/types/components/messages/AssistantToolUseMessage.js +13 -2
- package/lib/types/dsh-adapter/channel.d.ts +61 -11
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +767 -120
- package/lib/types/dsh-adapter/childStderr.d.ts.map +1 -1
- package/lib/types/dsh-adapter/childStderr.js +10 -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 +7 -1
- package/lib/types/dsh-adapter/command-trees.d.ts.map +1 -1
- package/lib/types/dsh-adapter/command-trees.js +70 -20
- 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 +1 -1
- package/lib/types/dsh-adapter/contract.js +2 -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 +348 -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 +316 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts +91 -0
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -0
- package/lib/types/dsh-adapter/effect-ledger.js +251 -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 +207 -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 +213 -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-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 +169 -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 +173 -0
- package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -0
- package/lib/types/dsh-adapter/message-observer.js +553 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts +136 -0
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-host.js +365 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts +108 -0
- package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -0
- package/lib/types/dsh-adapter/plugin-storage.js +397 -0
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +124 -14
- 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 +0 -6
- package/lib/types/dsh-adapter/promptDebug.d.ts.map +1 -1
- package/lib/types/dsh-adapter/promptDebug.js +13 -4
- package/lib/types/dsh-adapter/renderers.d.ts +57 -0
- package/lib/types/dsh-adapter/renderers.d.ts.map +1 -0
- package/lib/types/dsh-adapter/renderers.js +173 -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 +15 -5
- package/lib/types/dsh-adapter/scenes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/scenes.js +149 -35
- package/lib/types/dsh-adapter/settings-sections.d.ts +7 -3
- package/lib/types/dsh-adapter/settings-sections.d.ts.map +1 -1
- package/lib/types/dsh-adapter/settings-sections.js +106 -26
- package/lib/types/dsh-adapter/shortcuts.d.ts +107 -0
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -0
- package/lib/types/dsh-adapter/shortcuts.js +340 -0
- package/lib/types/dsh-adapter/status.d.ts +74 -0
- package/lib/types/dsh-adapter/status.d.ts.map +1 -0
- package/lib/types/dsh-adapter/status.js +234 -0
- package/lib/types/dsh-adapter/workspaces.d.ts +16 -5
- package/lib/types/dsh-adapter/workspaces.d.ts.map +1 -1
- package/lib/types/dsh-adapter/workspaces.js +287 -170
- package/lib/types/extensions.d.ts +13 -0
- package/lib/types/extensions.d.ts.map +1 -0
- package/lib/types/extensions.js +21 -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/i18n.d.ts +174 -20
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +56 -6
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/index.js +1 -0
- package/lib/types/ink/components/App.d.ts +2 -0
- package/lib/types/ink/components/App.d.ts.map +1 -1
- package/lib/types/ink/components/App.js +4 -0
- package/lib/types/ink/ink.d.ts +31 -3
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +90 -5
- package/lib/types/ink/log-update.d.ts.map +1 -1
- package/lib/types/ink/log-update.js +225 -56
- package/lib/types/ink/output.d.ts +35 -2
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +281 -14
- 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/screen.d.ts +39 -0
- package/lib/types/ink/screen.d.ts.map +1 -1
- package/lib/types/ink/screen.js +117 -0
- package/lib/types/ink/terminal.d.ts.map +1 -1
- package/lib/types/ink/terminal.js +26 -6
- package/lib/types/ink/wrapAnsi.d.ts +1 -1
- package/lib/types/ink/wrapAnsi.d.ts.map +1 -1
- package/lib/types/ink/wrapAnsi.js +29 -2
- package/lib/types/plugin-host.d.ts +15 -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 +252 -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 +79 -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 +138 -0
- package/lib/types/scenes.d.ts +2 -1
- package/lib/types/scenes.d.ts.map +1 -1
- package/lib/types/scenes.js +1 -1
- 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 +173 -49
- package/lib/types/screens/SessionBrowser.d.ts.map +1 -1
- package/lib/types/screens/SessionBrowser.js +10 -3
- package/lib/types/sessions/view.d.ts +3 -2
- package/lib/types/sessions/view.d.ts.map +1 -1
- package/lib/types/sessions/view.js +18 -0
- package/lib/types/settings-sections.d.ts +2 -1
- package/lib/types/settings-sections.d.ts.map +1 -1
- package/lib/types/settings-sections.js +1 -1
- package/lib/types/theme.d.ts +5 -0
- package/lib/types/theme.d.ts.map +1 -1
- package/lib/types/theme.js +15 -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/execFileNoThrow.d.ts.map +1 -1
- package/lib/types/utils/execFileNoThrow.js +3 -0
- 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/lib/types/workspaces.d.ts +2 -1
- package/lib/types/workspaces.d.ts.map +1 -1
- package/lib/types/workspaces.js +1 -1
- 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 +110 -70
- 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
|
@@ -2,8 +2,7 @@ import { coerce } from 'semver';
|
|
|
2
2
|
import { appendFileSync } from 'node:fs';
|
|
3
3
|
import { env } from '../utils/env.js';
|
|
4
4
|
import { gte } from '../utils/semver.js';
|
|
5
|
-
import {
|
|
6
|
-
import { cursorMove, cursorTo, eraseLines, SGR_RESET } from './termio/csi.js';
|
|
5
|
+
import { CURSOR_HOME, cursorMove, cursorTo, ERASE_SCREEN, eraseLines, SGR_RESET, } from './termio/csi.js';
|
|
7
6
|
import { BSU, ESU, HIDE_CURSOR, SHOW_CURSOR } from './termio/dec.js';
|
|
8
7
|
import { link } from './termio/osc.js';
|
|
9
8
|
/**
|
|
@@ -312,10 +311,31 @@ export function writeDiffToTerminal(terminal, diff, skipSyncMarkers = false) {
|
|
|
312
311
|
}
|
|
313
312
|
break;
|
|
314
313
|
case 'clearTerminal':
|
|
315
|
-
//
|
|
316
|
-
//
|
|
317
|
-
//
|
|
318
|
-
|
|
314
|
+
// Hard clear of screen + scrollback. MUST run OUTSIDE the BSU/ESU
|
|
315
|
+
// sync block: Windows Terminal snaps the viewport back to the top
|
|
316
|
+
// when 2J/3J execute inside a synchronized-update block
|
|
317
|
+
// (claude-code#35580) — the reason the scrollUp-based "soft" clear
|
|
318
|
+
// existed at all. Close the block, clear, reopen. Everything stays
|
|
319
|
+
// in the SAME write, so the terminal processes it with no
|
|
320
|
+
// intermediate paint. The hard clear actually removes the UI's
|
|
321
|
+
// scrollback snapshots (the duplicated whale-logo class of bugs);
|
|
322
|
+
// the old soft clear (CSI n S) PUSHED the live viewport into the
|
|
323
|
+
// scrollback instead, depositing a fresh full-UI copy per reset.
|
|
324
|
+
// Screen-only hard clear: 2J + home, NO 3J. Erasing the scrollback
|
|
325
|
+
// here destroyed the user's entire visible history on every settle
|
|
326
|
+
// shrink (the "context lost / cannot scroll" reports) — the inline
|
|
327
|
+
// transcript IS the scrollback; wiping it to avoid duplicate
|
|
328
|
+
// snapshots is never an acceptable trade. 2J clears the screen for
|
|
329
|
+
// the repaint while everything above the viewport survives.
|
|
330
|
+
// Executed OUTSIDE the DEC 2026 sync block (split begin/end): WT
|
|
331
|
+
// yanks the viewport to top when 2J runs inside a synchronized
|
|
332
|
+
// update (claude-code#35580).
|
|
333
|
+
buffer +=
|
|
334
|
+
(useSync ? ESU : '') +
|
|
335
|
+
SGR_RESET +
|
|
336
|
+
ERASE_SCREEN +
|
|
337
|
+
CURSOR_HOME +
|
|
338
|
+
(useSync ? BSU : '');
|
|
319
339
|
break;
|
|
320
340
|
case 'cursorHide':
|
|
321
341
|
buffer += HIDE_CURSOR;
|
|
@@ -7,7 +7,7 @@ type WrapAnsiOptions = {
|
|
|
7
7
|
* Wrap a string to a maximum column width, preserving ANSI escape sequences.
|
|
8
8
|
*
|
|
9
9
|
* Uses Bun.wrapAnsi when available; otherwise falls back to the wrap-ansi
|
|
10
|
-
* package.
|
|
10
|
+
* package (with the incremental fast path for growing streaming inputs).
|
|
11
11
|
* @param input - the string to wrap.
|
|
12
12
|
* @param columns - the maximum width in columns.
|
|
13
13
|
* @param options - wrap options: hard breaks long words, wordWrap splits on word boundaries, trim strips trailing whitespace.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wrapAnsi.d.ts","sourceRoot":"","sources":["../../../src/ink/wrapAnsi.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG;IACrB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;
|
|
1
|
+
{"version":3,"file":"wrapAnsi.d.ts","sourceRoot":"","sources":["../../../src/ink/wrapAnsi.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG;IACrB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AA0DD;;;;;;;;;GASG;AACH,QAAA,MAAM,QAAQ,EAAE,CACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,eAAe,KACtB,MAEmB,CAAA;AAExB,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -2,15 +2,42 @@ import wrapAnsiNpm from 'wrap-ansi';
|
|
|
2
2
|
const wrapAnsiBun = typeof Bun !== 'undefined' && typeof Bun.wrapAnsi === 'function'
|
|
3
3
|
? Bun.wrapAnsi
|
|
4
4
|
: null;
|
|
5
|
+
const SLOT_MIN_LENGTH = 2048;
|
|
6
|
+
let slot = null;
|
|
7
|
+
function slotOptionsApply(options) {
|
|
8
|
+
return options?.hard === true && (options?.trim ?? false) === false;
|
|
9
|
+
}
|
|
10
|
+
function wrapAnsiNpmIncremental(input, columns, options) {
|
|
11
|
+
const slottable = input.length > SLOT_MIN_LENGTH && slotOptionsApply(options);
|
|
12
|
+
if (slottable && slot !== null && slot.columns === columns && input.startsWith(slot.input)) {
|
|
13
|
+
const suffix = input.slice(slot.input.length);
|
|
14
|
+
if (!suffix.includes('\x1b') && !slot.remainder.includes('\x1b')) {
|
|
15
|
+
const tail = wrapAnsiNpm(slot.remainder + suffix, columns, options).split('\n');
|
|
16
|
+
const rows = [...slot.headRows, ...tail];
|
|
17
|
+
slot = { columns, input, headRows: rows.slice(0, -1), remainder: rows[rows.length - 1] ?? '' };
|
|
18
|
+
return rows.join('\n');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
const result = wrapAnsiNpm(input, columns, options);
|
|
22
|
+
if (slottable && !input.includes('\x1b')) {
|
|
23
|
+
const rows = result.split('\n');
|
|
24
|
+
slot = { columns, input, headRows: rows.slice(0, -1), remainder: rows[rows.length - 1] ?? '' };
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
slot = null;
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
5
31
|
/**
|
|
6
32
|
* Wrap a string to a maximum column width, preserving ANSI escape sequences.
|
|
7
33
|
*
|
|
8
34
|
* Uses Bun.wrapAnsi when available; otherwise falls back to the wrap-ansi
|
|
9
|
-
* package.
|
|
35
|
+
* package (with the incremental fast path for growing streaming inputs).
|
|
10
36
|
* @param input - the string to wrap.
|
|
11
37
|
* @param columns - the maximum width in columns.
|
|
12
38
|
* @param options - wrap options: hard breaks long words, wordWrap splits on word boundaries, trim strips trailing whitespace.
|
|
13
39
|
* @returns the wrapped string.
|
|
14
40
|
*/
|
|
15
|
-
const wrapAnsi = wrapAnsiBun ??
|
|
41
|
+
const wrapAnsi = wrapAnsiBun ??
|
|
42
|
+
wrapAnsiNpmIncremental;
|
|
16
43
|
export { wrapAnsi };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { name, apply } from './dsh-adapter/plugin-host.js';
|
|
2
|
+
export type { TuiPluginHost } from './dsh-adapter/plugin-host.js';
|
|
3
|
+
export type { GrantPrincipal, GrantStore } from './dsh-adapter/grants.js';
|
|
4
|
+
export type { HostContract, HostDescriptor, ContractCoordinate, ContractRef, NegotiationDecision, PermissionEntry, PermissionRegistry } from './plugin-spec/types.js';
|
|
5
|
+
export type { TuiPluginStorage, PluginStorageErrorCode, TuiPluginStorageRuntime } from './dsh-adapter/plugin-storage.js';
|
|
6
|
+
export { PluginStorageError, STORAGE_KEY_MAX_LENGTH, STORAGE_MAX_BYTES, STORAGE_MAX_KEYS } from './dsh-adapter/plugin-storage.js';
|
|
7
|
+
export { OBSERVE_CALLBACK_QUEUE_LIMIT, OBSERVE_CALLBACK_TIMEOUT_MS, OBSERVE_CONTENT_MAX_CHARS, OBSERVE_ID_MAX_CHARS, OBSERVE_IMAGE_BASE64_MAX_CHARS, OBSERVE_IMAGE_MAX_BYTES, OBSERVE_SCOPE_MAX_CHARS, OBSERVE_SUMMARY_CELLS, } from './dsh-adapter/message-observer.js';
|
|
8
|
+
export type { MessagesObserveContentBlock, MessagesObserveEnvelope, MessagesObserveListener, MessagesObservePayload, TuiMessageObserverRuntime, } from './dsh-adapter/message-observer.js';
|
|
9
|
+
export type { LedgerEntry, LedgerOperation, LedgerResult, TuiEffectLedgerRuntime } from './dsh-adapter/effect-ledger.js';
|
|
10
|
+
export { COMMAND_ERROR_CODES, hasCommandErrorCode, mapCommandError, withCommandErrorMapping, } from './dsh-adapter/command-errors.js';
|
|
11
|
+
export type { CommandErrorCode, CodedCommandError } from './dsh-adapter/command-errors.js';
|
|
12
|
+
export { DECISION_EVENT_PERMISSIONS, } from './dsh-adapter/decision-guard.js';
|
|
13
|
+
export { DECISION_HANDLER_TIMEOUT_MS, DECISION_TOTAL_TIMEOUT_MS, } from './dsh-adapter/extension-events.js';
|
|
14
|
+
export { DECISION_EVENTS_COORDINATE, TUI_EXTENSION_API_VERSION, TUI_DECISION_EVENT_NAMES, TUI_EXTENSION_PERMISSION_NAMES, createAdmissionCatalog, } from './plugin-spec/tui-extension.js';
|
|
15
|
+
//# sourceMappingURL=plugin-host.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-host.d.ts","sourceRoot":"","sources":["../../src/plugin-host.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,8BAA8B,CAAA;AAC1D,YAAY,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzE,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACrK,YAAY,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AACxH,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAIjI,OAAO,EACL,4BAA4B,EAC5B,2BAA2B,EAC3B,yBAAyB,EACzB,oBAAoB,EACpB,8BAA8B,EAC9B,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EACV,2BAA2B,EAC3B,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAE1C,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACxH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AACxC,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAK1F,OAAO,EACL,0BAA0B,GAC3B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,gCAAgC,CAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Public plugin-host shim. Keep the Cordis-backed implementation behind the
|
|
2
|
+
// adapter boundary: plugin authors receive protocol types and mediated service
|
|
3
|
+
// contracts, while loader-only admission, host ingress, mutable stores and
|
|
4
|
+
// attribution registries remain adapter-internal. Type-only runtime exports
|
|
5
|
+
// still load the adapter declarations so Context augmentation is available.
|
|
6
|
+
export { name, apply } from './dsh-adapter/plugin-host.js';
|
|
7
|
+
export { PluginStorageError, STORAGE_KEY_MAX_LENGTH, STORAGE_MAX_BYTES, STORAGE_MAX_KEYS } from './dsh-adapter/plugin-storage.js';
|
|
8
|
+
// The host-only message ingress accessor stays in the adapter module. Plugin
|
|
9
|
+
// authors receive the broker's subscribe surface and envelope vocabulary only.
|
|
10
|
+
export { OBSERVE_CALLBACK_QUEUE_LIMIT, OBSERVE_CALLBACK_TIMEOUT_MS, OBSERVE_CONTENT_MAX_CHARS, OBSERVE_ID_MAX_CHARS, OBSERVE_IMAGE_BASE64_MAX_CHARS, OBSERVE_IMAGE_MAX_BYTES, OBSERVE_SCOPE_MAX_CHARS, OBSERVE_SUMMARY_CELLS, } from './dsh-adapter/message-observer.js';
|
|
11
|
+
export { COMMAND_ERROR_CODES, hasCommandErrorCode, mapCommandError, withCommandErrorMapping, } from './dsh-adapter/command-errors.js';
|
|
12
|
+
// Command attribution and decision registration are host-internal. Exposing
|
|
13
|
+
// these functions would let a plugin inspect or rewrite another plugin's
|
|
14
|
+
// checkpoint, or install an unmediated handler.
|
|
15
|
+
export { DECISION_EVENT_PERMISSIONS, } from './dsh-adapter/decision-guard.js';
|
|
16
|
+
export { DECISION_HANDLER_TIMEOUT_MS, DECISION_TOTAL_TIMEOUT_MS, } from './dsh-adapter/extension-events.js';
|
|
17
|
+
export { DECISION_EVENTS_COORDINATE, TUI_EXTENSION_API_VERSION, TUI_DECISION_EVENT_NAMES, TUI_EXTENSION_PERMISSION_NAMES, createAdmissionCatalog, } from './plugin-spec/tui-extension.js';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Five-state admission decision using dsh-std projection and ProtocolCatalog. */
|
|
2
|
+
import type { ContractIndex } from './validate.js';
|
|
3
|
+
import type { HostDescriptor, NegotiationDecision, PluginManifest } from './types.js';
|
|
4
|
+
export interface GrantedPermission {
|
|
5
|
+
name: string;
|
|
6
|
+
scope: string;
|
|
7
|
+
/** Explicit effective answer. Omitted means a legacy positive grant row. */
|
|
8
|
+
granted?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function negotiate(index: ContractIndex, manifest: PluginManifest, host: HostDescriptor, grants?: readonly GrantedPermission[]): NegotiationDecision;
|
|
11
|
+
//# sourceMappingURL=negotiate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"negotiate.d.ts","sourceRoot":"","sources":["../../../src/plugin-spec/negotiate.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAIlF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAsB,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIzG,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,SAAS,CACvB,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,cAAc,EACxB,IAAI,EAAE,cAAc,EACpB,MAAM,GAAE,SAAS,iBAAiB,EAAO,GACxC,mBAAmB,CA6FrB"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/** Five-state admission decision using dsh-std projection and ProtocolCatalog. */
|
|
2
|
+
import { defineProtocolDeclaration } from '@dsh-std/core';
|
|
3
|
+
import { projectManifest } from '@dsh-std/manifest';
|
|
4
|
+
import { rawScopeCovers } from './permission-scope.js';
|
|
5
|
+
const coordinateKey = (ref) => `${ref.apiVersion}#${ref.kind}`;
|
|
6
|
+
export function negotiate(index, manifest, host, grants = []) {
|
|
7
|
+
const supported = new Map(host.contracts.map(contract => [coordinateKey(contract), contract]));
|
|
8
|
+
const required = manifest.requires.contracts.filter(reference => reference.optional !== true);
|
|
9
|
+
const optional = manifest.requires.contracts.filter(reference => reference.optional === true);
|
|
10
|
+
const unknown = manifest.requires.contracts.filter(reference => {
|
|
11
|
+
try {
|
|
12
|
+
return index.resolveContractRef(reference).unregisteredVersion;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
if (unknown.length > 0) {
|
|
19
|
+
return {
|
|
20
|
+
decision: 'unknown',
|
|
21
|
+
reasonCode: 'UNKNOWN_PROTOCOL_VERSION',
|
|
22
|
+
unknownContracts: unknown.map(coordinateKey),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
if (!host.facetApiVersions.includes(manifest.facets.host.apiVersion)) {
|
|
26
|
+
return {
|
|
27
|
+
decision: 'rejected',
|
|
28
|
+
reasonCode: 'FACET_API_VERSION_UNAVAILABLE',
|
|
29
|
+
facetApiVersion: manifest.facets.host.apiVersion,
|
|
30
|
+
hostFacetApiVersions: host.facetApiVersions,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
const missingRequired = required.filter(reference => !supported.has(coordinateKey(reference)));
|
|
34
|
+
const missingOptional = optional.filter(reference => !supported.has(coordinateKey(reference)));
|
|
35
|
+
if (missingRequired.length > 0) {
|
|
36
|
+
return {
|
|
37
|
+
decision: 'rejected',
|
|
38
|
+
reasonCode: 'REQUIRED_PROTOCOL_UNAVAILABLE',
|
|
39
|
+
missingRequired: missingRequired.map(coordinateKey),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const projected = projectManifest(manifest);
|
|
43
|
+
const facet = projected.spec.facets.find(candidate => candidate.name === 'host');
|
|
44
|
+
const supportedKeys = new Set(host.contracts.map(contract => coordinateKey(contract)));
|
|
45
|
+
const declaration = defineProtocolDeclaration({
|
|
46
|
+
participant: { id: manifest.id },
|
|
47
|
+
// An optional protocol that is absent is intentionally omitted from the
|
|
48
|
+
// evaluator input; its degraded state was already recorded above. This
|
|
49
|
+
// keeps ProtocolCatalog's required-support error meaningful for every
|
|
50
|
+
// remaining requirement.
|
|
51
|
+
requires: (facet?.protocols?.requires ?? []).filter(reference => reference.optional !== true || supportedKeys.has(coordinateKey(reference))),
|
|
52
|
+
});
|
|
53
|
+
const hostDeclaration = defineProtocolDeclaration({
|
|
54
|
+
participant: { id: host.hostId },
|
|
55
|
+
supports: host.contracts.map(contract => ({
|
|
56
|
+
apiVersion: contract.apiVersion,
|
|
57
|
+
kind: contract.kind,
|
|
58
|
+
...(Object.hasOwn(contract, 'spec') ? { spec: contract.spec } : {}),
|
|
59
|
+
})),
|
|
60
|
+
});
|
|
61
|
+
const report = index.protocols.negotiate([declaration, hostDeclaration]);
|
|
62
|
+
if (!report.compatible) {
|
|
63
|
+
return {
|
|
64
|
+
decision: 'rejected',
|
|
65
|
+
reasonCode: 'PROTOCOL_NEGOTIATION_FAILED',
|
|
66
|
+
issues: report.issues,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
const hostPermissions = new Set(host.contracts.flatMap(contract => contract.permissions));
|
|
70
|
+
const denied = manifest.permissions.filter((request) => {
|
|
71
|
+
if (!hostPermissions.has(request.name))
|
|
72
|
+
return true;
|
|
73
|
+
const definition = index.permissions.permissions.find(permission => permission.name === request.name);
|
|
74
|
+
if (definition === undefined)
|
|
75
|
+
return true;
|
|
76
|
+
const matching = grants.filter(grant => grant.name === request.name
|
|
77
|
+
&& rawScopeCovers(grant.name, grant.scope, request.scope, manifest.id));
|
|
78
|
+
// Explicit revocation wins over an allow-default permission. This keeps
|
|
79
|
+
// admission diagnostics aligned with the runtime checkpoint instead of
|
|
80
|
+
// reporting a plugin as compatible until its first invocation fails.
|
|
81
|
+
if (matching.some(grant => grant.granted === false))
|
|
82
|
+
return true;
|
|
83
|
+
if (definition.default === 'allow')
|
|
84
|
+
return false;
|
|
85
|
+
return !matching.some(grant => grant.granted !== false);
|
|
86
|
+
});
|
|
87
|
+
if (denied.length > 0) {
|
|
88
|
+
return {
|
|
89
|
+
decision: 'waiting_authorization',
|
|
90
|
+
reasonCode: 'PERMISSION_NOT_GRANTED',
|
|
91
|
+
deniedPermissions: denied.map(request => `${request.name}@${request.scope}`),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return missingOptional.length > 0
|
|
95
|
+
? { decision: 'compatible_degraded', missingOptional: missingOptional.map(coordinateKey) }
|
|
96
|
+
: { decision: 'compatible' };
|
|
97
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** Permission scope normalization shared by admission and runtime checks. */
|
|
2
|
+
export declare const STORAGE_PERMISSIONS: Set<string>;
|
|
3
|
+
export declare const INTERCEPT_PERMISSIONS: Set<string>;
|
|
4
|
+
/** The decision point controlled by each intercept permission. Keeping this
|
|
5
|
+
* mapping in the scope adapter (rather than accepting every `tui/*` name for
|
|
6
|
+
* every permission) prevents a manifest or grant from silently crossing an
|
|
7
|
+
* event boundary. */
|
|
8
|
+
export declare const INTERCEPT_EVENT_SCOPE_BY_PERMISSION: Readonly<Record<string, string>>;
|
|
9
|
+
/** A session scope is carried through the message envelope and may also be
|
|
10
|
+
* used by an intercept grant. Keep the canonical bound here so admission,
|
|
11
|
+
* grant evaluation, and runtime delivery cannot disagree about whether a
|
|
12
|
+
* scope is executable. */
|
|
13
|
+
export declare const SESSION_SCOPE_MAX_CHARS = 256;
|
|
14
|
+
export type ScopeKind = 'component' | 'command' | 'session' | 'event';
|
|
15
|
+
export interface NormalizedPermissionScope {
|
|
16
|
+
kind: ScopeKind;
|
|
17
|
+
value: string;
|
|
18
|
+
}
|
|
19
|
+
/** Return undefined when this adapter cannot enforce the supplied scope. */
|
|
20
|
+
export declare function normalizePermissionScope(permission: string, scope: string, componentId: string): NormalizedPermissionScope | undefined;
|
|
21
|
+
export declare function scopeCovers(declared: NormalizedPermissionScope, actual: NormalizedPermissionScope): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Permission-aware containment. An event-point grant is the parent scope of
|
|
24
|
+
* the sessions delivered through that point, while a session grant can never
|
|
25
|
+
* be promoted into an event-point grant. This relation is also used for
|
|
26
|
+
* denies, so a narrow `session:<id>` deny wins over a broad event grant.
|
|
27
|
+
*/
|
|
28
|
+
export declare function permissionScopeCovers(permission: string, declared: NormalizedPermissionScope, actual: NormalizedPermissionScope): boolean;
|
|
29
|
+
/** Decision permission scopes may be expressed as one named event point. */
|
|
30
|
+
export declare const TUI_EVENT_SCOPE_NAMES: Set<string>;
|
|
31
|
+
export declare function rawScopeCovers(permission: string, declared: string, actual: string, componentId: string): boolean;
|
|
32
|
+
//# sourceMappingURL=permission-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-scope.d.ts","sourceRoot":"","sources":["../../../src/plugin-spec/permission-scope.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAE7E,eAAO,MAAM,mBAAmB,aAAyD,CAAA;AACzF,eAAO,MAAM,qBAAqB,aAKhC,CAAA;AAEF;;;qBAGqB;AACrB,eAAO,MAAM,mCAAmC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK/E,CAAA;AAEF;;;0BAG0B;AAC1B,eAAO,MAAM,uBAAuB,MAAM,CAAA;AAI1C,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAA;AAErE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,SAAS,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;CACd;AAED,4EAA4E;AAC5E,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,GAClB,yBAAyB,GAAG,SAAS,CA2BvC;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,yBAAyB,EAAE,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAI3G;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,yBAAyB,EACnC,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAKT;AAED,4EAA4E;AAC5E,eAAO,MAAM,qBAAqB,aAOhC,CAAA;AAEF,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAMjH"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/** Permission scope normalization shared by admission and runtime checks. */
|
|
2
|
+
export const STORAGE_PERMISSIONS = new Set(['storage.local.read', 'storage.local.write']);
|
|
3
|
+
export const INTERCEPT_PERMISSIONS = new Set([
|
|
4
|
+
'session.input.intercept',
|
|
5
|
+
'session.rewind.intercept',
|
|
6
|
+
'session.switch.intercept',
|
|
7
|
+
'session.compact.intercept',
|
|
8
|
+
]);
|
|
9
|
+
/** The decision point controlled by each intercept permission. Keeping this
|
|
10
|
+
* mapping in the scope adapter (rather than accepting every `tui/*` name for
|
|
11
|
+
* every permission) prevents a manifest or grant from silently crossing an
|
|
12
|
+
* event boundary. */
|
|
13
|
+
export const INTERCEPT_EVENT_SCOPE_BY_PERMISSION = Object.freeze({
|
|
14
|
+
'session.input.intercept': 'tui/input',
|
|
15
|
+
'session.rewind.intercept': 'tui/rewind-prompt',
|
|
16
|
+
'session.switch.intercept': 'tui/session-switch',
|
|
17
|
+
'session.compact.intercept': 'tui/compact',
|
|
18
|
+
});
|
|
19
|
+
/** A session scope is carried through the message envelope and may also be
|
|
20
|
+
* used by an intercept grant. Keep the canonical bound here so admission,
|
|
21
|
+
* grant evaluation, and runtime delivery cannot disagree about whether a
|
|
22
|
+
* scope is executable. */
|
|
23
|
+
export const SESSION_SCOPE_MAX_CHARS = 256;
|
|
24
|
+
const CONTROL_CHARS = /[\x00-\x1f\x7f-\x9f]/u;
|
|
25
|
+
/** Return undefined when this adapter cannot enforce the supplied scope. */
|
|
26
|
+
export function normalizePermissionScope(permission, scope, componentId) {
|
|
27
|
+
if (typeof scope !== 'string' || scope === '')
|
|
28
|
+
return undefined;
|
|
29
|
+
if (STORAGE_PERMISSIONS.has(permission)) {
|
|
30
|
+
return scope === componentId ? { kind: 'component', value: componentId } : undefined;
|
|
31
|
+
}
|
|
32
|
+
if (permission === 'commands.invoke') {
|
|
33
|
+
return /^[a-z][a-z0-9]*(?:[.-][a-z0-9][a-z0-9-]*)+$/u.test(scope)
|
|
34
|
+
? { kind: 'command', value: scope }
|
|
35
|
+
: undefined;
|
|
36
|
+
}
|
|
37
|
+
if (INTERCEPT_PERMISSIONS.has(permission) && TUI_EVENT_SCOPE_NAMES.has(scope)) {
|
|
38
|
+
return INTERCEPT_EVENT_SCOPE_BY_PERMISSION[permission] === scope
|
|
39
|
+
? { kind: 'event', value: scope }
|
|
40
|
+
: undefined;
|
|
41
|
+
}
|
|
42
|
+
if (permission === 'messages.observe.read' || INTERCEPT_PERMISSIONS.has(permission)) {
|
|
43
|
+
if (scope === 'session:*')
|
|
44
|
+
return { kind: 'session', value: scope };
|
|
45
|
+
if (scope.startsWith('session:')
|
|
46
|
+
&& scope.length <= SESSION_SCOPE_MAX_CHARS
|
|
47
|
+
&& scope.length > 'session:'.length
|
|
48
|
+
&& !scope.includes('*')
|
|
49
|
+
&& !CONTROL_CHARS.test(scope)) {
|
|
50
|
+
return { kind: 'session', value: scope };
|
|
51
|
+
}
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
return undefined;
|
|
55
|
+
}
|
|
56
|
+
export function scopeCovers(declared, actual) {
|
|
57
|
+
if (declared.kind !== actual.kind)
|
|
58
|
+
return false;
|
|
59
|
+
return declared.value === actual.value
|
|
60
|
+
|| (declared.kind === 'session' && declared.value === 'session:*' && actual.value.startsWith('session:'));
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Permission-aware containment. An event-point grant is the parent scope of
|
|
64
|
+
* the sessions delivered through that point, while a session grant can never
|
|
65
|
+
* be promoted into an event-point grant. This relation is also used for
|
|
66
|
+
* denies, so a narrow `session:<id>` deny wins over a broad event grant.
|
|
67
|
+
*/
|
|
68
|
+
export function permissionScopeCovers(permission, declared, actual) {
|
|
69
|
+
if (scopeCovers(declared, actual))
|
|
70
|
+
return true;
|
|
71
|
+
return INTERCEPT_PERMISSIONS.has(permission)
|
|
72
|
+
&& declared.kind === 'event'
|
|
73
|
+
&& actual.kind === 'session';
|
|
74
|
+
}
|
|
75
|
+
/** Decision permission scopes may be expressed as one named event point. */
|
|
76
|
+
export const TUI_EVENT_SCOPE_NAMES = new Set([
|
|
77
|
+
'tui/input',
|
|
78
|
+
'tui/rewind-prompt',
|
|
79
|
+
'tui/rewind-done',
|
|
80
|
+
'tui/session-switch',
|
|
81
|
+
'tui/session-switched',
|
|
82
|
+
'tui/compact',
|
|
83
|
+
]);
|
|
84
|
+
export function rawScopeCovers(permission, declared, actual, componentId) {
|
|
85
|
+
const normalizedDeclared = normalizePermissionScope(permission, declared, componentId);
|
|
86
|
+
const normalizedActual = normalizePermissionScope(permission, actual, componentId);
|
|
87
|
+
return normalizedDeclared !== undefined
|
|
88
|
+
&& normalizedActual !== undefined
|
|
89
|
+
&& permissionScopeCovers(permission, normalizedDeclared, normalizedActual);
|
|
90
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/** Load and verify the pinned dsh-TUI admission profile. */
|
|
2
|
+
import type { ContractRegistry, PermissionRegistry, RegistryEntry } from './types.js';
|
|
3
|
+
export declare const DSH_STD_REVISION = "614dfa1ac168db79fcf4577cf0ebb34e2e3b944b";
|
|
4
|
+
export declare const ECOSYSTEM_SPEC_REVISION = "e1b902b0f95f4280a8e68d414ec7a4d25d6ce106";
|
|
5
|
+
export interface SpecData {
|
|
6
|
+
dir: string;
|
|
7
|
+
registry: ContractRegistry;
|
|
8
|
+
permissions: PermissionRegistry;
|
|
9
|
+
schemas: {
|
|
10
|
+
host: Record<string, unknown>;
|
|
11
|
+
ledger: Record<string, unknown>;
|
|
12
|
+
claim: Record<string, unknown>;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare function locateSpecDir(start?: string): string | undefined;
|
|
16
|
+
export declare function loadSpecData(dir?: string | undefined): SpecData | undefined;
|
|
17
|
+
export declare function registryEntries(registry: ContractRegistry): RegistryEntry[];
|
|
18
|
+
export declare function digestFile(dir: string, relative: string): `sha256:${string}`;
|
|
19
|
+
/** Verify definition availability and private profile digest pins. */
|
|
20
|
+
export declare function verifyRegistry(data: SpecData): string[];
|
|
21
|
+
/** Verify the TUI-owned definitions; public definitions live in dsh-std. */
|
|
22
|
+
export declare function verifyContractProfiles(data: SpecData): string[];
|
|
23
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/plugin-spec/registry.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAO5D,OAAO,KAAK,EAAE,gBAAgB,EAAmB,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAEtG,eAAO,MAAM,gBAAgB,6CAA6C,CAAA;AAC1E,eAAO,MAAM,uBAAuB,6CAA6C,CAAA;AAEjF,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,WAAW,EAAE,kBAAkB,CAAA;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAC/B,CAAA;CACF;AAuBD,wBAAgB,aAAa,CAAC,KAAK,GAAE,MAAgD,GAAG,MAAM,GAAG,SAAS,CASzG;AAiFD,wBAAgB,YAAY,CAAC,GAAG,GAAE,MAAM,GAAG,SAA2B,GAAG,QAAQ,GAAG,SAAS,CAiB5F;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,gBAAgB,GAAG,aAAa,EAAE,CAI3E;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,MAAM,EAAE,CAE5E;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAuCvD;AAED,4EAA4E;AAC5E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CA2C/D"}
|