@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,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command ownership attribution — the data source for the C-041 invoke
|
|
3
|
+
* checkpoint's per-owner grant decision.
|
|
4
|
+
*
|
|
5
|
+
* dsh-commands has NO owner concept (its `normalizeDefinition` rebuilds a
|
|
6
|
+
* frozen object and drops unknown fields, and its scoped layers key by
|
|
7
|
+
* agent, not by registrant), and neither realistic access path can carry
|
|
8
|
+
* the caller's identity to `register` for us: `ctx.get('commands')` is an
|
|
9
|
+
* accessor that bypasses cordis's `internal/get` waterfall, and an
|
|
10
|
+
* inject-declared property read resolves before it. So attribution does
|
|
11
|
+
* NOT try to spy on the registry — it is a MEDIATED REGISTRATION surface,
|
|
12
|
+
* the same honest-identity pattern as storage.local / messages.observe:
|
|
13
|
+
* the plugin-host row's `registerCommand(pluginCtx, definition)` supplies a
|
|
14
|
+
* unique wrapper handler and stamps that actual registered definition with
|
|
15
|
+
* the verified Component id and activation on success. The invoke checkpoint resolves the
|
|
16
|
+
* effective definition for its receiving agent first, then looks up that
|
|
17
|
+
* definition's handler here. This mirrors dsh-commands' scoped shadowing:
|
|
18
|
+
* same-name definitions in separate agent scopes never share attribution.
|
|
19
|
+
*
|
|
20
|
+
* A plugin that registers directly through `ctx.get('commands')` keeps its
|
|
21
|
+
* command UNATTRIBUTED: the invoke checkpoint then applies the root grant
|
|
22
|
+
* only — the documented C-070 trusted-in-process boundary, exactly like a
|
|
23
|
+
* plugin calling `ctx.commands.execute` directly. Attribution only ever
|
|
24
|
+
* TIGHTENS the check, never widens it.
|
|
25
|
+
*
|
|
26
|
+
* The map is keyed by the cordis ROOT so the row and the channel (two
|
|
27
|
+
* different contexts of one runtime) share one view.
|
|
28
|
+
*/
|
|
29
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
30
|
+
import type { VerifiedComponentIdentity } from './component-identity.js';
|
|
31
|
+
export interface CommandOwner {
|
|
32
|
+
componentId: string;
|
|
33
|
+
activationId: string;
|
|
34
|
+
commandId: string;
|
|
35
|
+
}
|
|
36
|
+
/** The registrant's display name for diagnostics only: the passed context's
|
|
37
|
+
* fiber name (nearest named ancestor), 'root' for host-side or degraded
|
|
38
|
+
* contexts. Authorization never uses this display value. */
|
|
39
|
+
export declare function fiberNameOf(ctx: Context): string;
|
|
40
|
+
/** Record one mediated command definition's owner after successful registration. */
|
|
41
|
+
export declare function stampCommandOwner(ctx: Context, definition: unknown, identity: VerifiedComponentIdentity, commandId: string): void;
|
|
42
|
+
/** Lift one definition's stamp without touching a later registration. */
|
|
43
|
+
export declare function unstampCommandOwner(ctx: Context, definition: unknown, activationId: string): void;
|
|
44
|
+
/**
|
|
45
|
+
* The recorded owner of the EFFECTIVE command definition, or undefined when
|
|
46
|
+
* it is unattributed (root-side/direct registrations are the documented
|
|
47
|
+
* C-070 boundary). Callers must pass `commands.find(agent, name)`, not only
|
|
48
|
+
* the command name, so agent-scoped shadows select their own owner.
|
|
49
|
+
*/
|
|
50
|
+
export declare function commandOwner(ctx: Context, definition: unknown): CommandOwner | undefined;
|
|
51
|
+
//# sourceMappingURL=command-attribution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-attribution.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/command-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAExE,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AASD;;4DAE4D;AAC5D,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQhD;AAYD,oFAAoF;AACpF,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,UAAU,EAAE,OAAO,EACnB,QAAQ,EAAE,yBAAyB,EACnC,SAAS,EAAE,MAAM,GAChB,IAAI,CAUN;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAMjG;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAG,YAAY,GAAG,SAAS,CAKxF"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command ownership attribution — the data source for the C-041 invoke
|
|
3
|
+
* checkpoint's per-owner grant decision.
|
|
4
|
+
*
|
|
5
|
+
* dsh-commands has NO owner concept (its `normalizeDefinition` rebuilds a
|
|
6
|
+
* frozen object and drops unknown fields, and its scoped layers key by
|
|
7
|
+
* agent, not by registrant), and neither realistic access path can carry
|
|
8
|
+
* the caller's identity to `register` for us: `ctx.get('commands')` is an
|
|
9
|
+
* accessor that bypasses cordis's `internal/get` waterfall, and an
|
|
10
|
+
* inject-declared property read resolves before it. So attribution does
|
|
11
|
+
* NOT try to spy on the registry — it is a MEDIATED REGISTRATION surface,
|
|
12
|
+
* the same honest-identity pattern as storage.local / messages.observe:
|
|
13
|
+
* the plugin-host row's `registerCommand(pluginCtx, definition)` supplies a
|
|
14
|
+
* unique wrapper handler and stamps that actual registered definition with
|
|
15
|
+
* the verified Component id and activation on success. The invoke checkpoint resolves the
|
|
16
|
+
* effective definition for its receiving agent first, then looks up that
|
|
17
|
+
* definition's handler here. This mirrors dsh-commands' scoped shadowing:
|
|
18
|
+
* same-name definitions in separate agent scopes never share attribution.
|
|
19
|
+
*
|
|
20
|
+
* A plugin that registers directly through `ctx.get('commands')` keeps its
|
|
21
|
+
* command UNATTRIBUTED: the invoke checkpoint then applies the root grant
|
|
22
|
+
* only — the documented C-070 trusted-in-process boundary, exactly like a
|
|
23
|
+
* plugin calling `ctx.commands.execute` directly. Attribution only ever
|
|
24
|
+
* TIGHTENS the check, never widens it.
|
|
25
|
+
*
|
|
26
|
+
* The map is keyed by the cordis ROOT so the row and the channel (two
|
|
27
|
+
* different contexts of one runtime) share one view.
|
|
28
|
+
*/
|
|
29
|
+
const ownerMaps = new WeakMap();
|
|
30
|
+
function rootKeyOf(ctx) {
|
|
31
|
+
const root = ctx.root ?? ctx;
|
|
32
|
+
return typeof root === 'object' && root !== null ? root : undefined;
|
|
33
|
+
}
|
|
34
|
+
/** The registrant's display name for diagnostics only: the passed context's
|
|
35
|
+
* fiber name (nearest named ancestor), 'root' for host-side or degraded
|
|
36
|
+
* contexts. Authorization never uses this display value. */
|
|
37
|
+
export function fiberNameOf(ctx) {
|
|
38
|
+
try {
|
|
39
|
+
const resolved = ctx.fiber?.name;
|
|
40
|
+
if (typeof resolved === 'string' && resolved !== '')
|
|
41
|
+
return resolved;
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// Degraded context without fiber access: 'root'.
|
|
45
|
+
}
|
|
46
|
+
return 'root';
|
|
47
|
+
}
|
|
48
|
+
function handlerOf(definition) {
|
|
49
|
+
try {
|
|
50
|
+
const handler = definition?.handler;
|
|
51
|
+
return typeof handler === 'function' ? handler : undefined;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// An exotic definition cannot participate in attribution safely.
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/** Record one mediated command definition's owner after successful registration. */
|
|
59
|
+
export function stampCommandOwner(ctx, definition, identity, commandId) {
|
|
60
|
+
const key = rootKeyOf(ctx);
|
|
61
|
+
const handler = handlerOf(definition);
|
|
62
|
+
if (key === undefined || handler === undefined)
|
|
63
|
+
return;
|
|
64
|
+
let map = ownerMaps.get(key);
|
|
65
|
+
if (map === undefined) {
|
|
66
|
+
map = new WeakMap();
|
|
67
|
+
ownerMaps.set(key, map);
|
|
68
|
+
}
|
|
69
|
+
map.set(handler, Object.freeze({ componentId: identity.componentId, activationId: identity.activationId, commandId }));
|
|
70
|
+
}
|
|
71
|
+
/** Lift one definition's stamp without touching a later registration. */
|
|
72
|
+
export function unstampCommandOwner(ctx, definition, activationId) {
|
|
73
|
+
const key = rootKeyOf(ctx);
|
|
74
|
+
const handler = handlerOf(definition);
|
|
75
|
+
if (key === undefined || handler === undefined)
|
|
76
|
+
return;
|
|
77
|
+
const map = ownerMaps.get(key);
|
|
78
|
+
if (map?.get(handler)?.activationId === activationId)
|
|
79
|
+
map.delete(handler);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* The recorded owner of the EFFECTIVE command definition, or undefined when
|
|
83
|
+
* it is unattributed (root-side/direct registrations are the documented
|
|
84
|
+
* C-070 boundary). Callers must pass `commands.find(agent, name)`, not only
|
|
85
|
+
* the command name, so agent-scoped shadows select their own owner.
|
|
86
|
+
*/
|
|
87
|
+
export function commandOwner(ctx, definition) {
|
|
88
|
+
const key = rootKeyOf(ctx);
|
|
89
|
+
const handler = handlerOf(definition);
|
|
90
|
+
if (key === undefined || handler === undefined)
|
|
91
|
+
return undefined;
|
|
92
|
+
return ownerMaps.get(key)?.get(handler);
|
|
93
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* commands contract error-code alignment (C-041,
|
|
3
|
+
* `commands.dsh/v1alpha1#Command`): the official `dsh-commands` runtime
|
|
4
|
+
* reports a duplicate registration as a plain `Error` whose MESSAGE is the
|
|
5
|
+
* only signal:
|
|
6
|
+
*
|
|
7
|
+
* `command "<name>" is already registered (…)`
|
|
8
|
+
* `command "<name>" is already registered in this scope`
|
|
9
|
+
*
|
|
10
|
+
* The v0.15 contract names the code `DUPLICATE_CONTRIBUTION_ID`. This module
|
|
11
|
+
* maps the message-shaped error onto an `Error` carrying that `.code`, at
|
|
12
|
+
* the HOST-MEDIATED registration/invocation points (the channel's skill
|
|
13
|
+
* command registration and registry-command execution).
|
|
14
|
+
*
|
|
15
|
+
* Known boundary (C-070, trusted-in-process): a plugin calling
|
|
16
|
+
* `ctx.commands.register` / `ctx.commands.execute` DIRECTLY bypasses this
|
|
17
|
+
* mapping — code-level wrapping can only cover the points the host owns.
|
|
18
|
+
* That is declared platform behavior, not a bug.
|
|
19
|
+
*/
|
|
20
|
+
/** The contract's command error vocabulary. */
|
|
21
|
+
export declare const COMMAND_ERROR_CODES: readonly ["COMMAND_NOT_FOUND", "DUPLICATE_CONTRIBUTION_ID", "PERMISSION_NOT_GRANTED", "COMMAND_FAILED", "INVOCATION_CANCELLED", "INVOCATION_DEADLINE_EXCEEDED"];
|
|
22
|
+
export type CommandErrorCode = (typeof COMMAND_ERROR_CODES)[number];
|
|
23
|
+
/** An Error carrying a contract error code on `.code`. */
|
|
24
|
+
export interface CodedCommandError extends Error {
|
|
25
|
+
code: CommandErrorCode;
|
|
26
|
+
cause?: unknown;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Map a thrown dsh-commands error onto its contract code. A duplicate
|
|
30
|
+
* registration comes back as a CodedCommandError with
|
|
31
|
+
* `DUPLICATE_CONTRIBUTION_ID` (original on `.cause`); every other value
|
|
32
|
+
* passes through unchanged.
|
|
33
|
+
*/
|
|
34
|
+
export declare function mapCommandError(error: unknown): unknown;
|
|
35
|
+
/** True when `error` carries the given contract code. */
|
|
36
|
+
export declare function hasCommandErrorCode(error: unknown, code: CommandErrorCode): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Run `operation` and rethrow any duplicate-registration failure with its
|
|
39
|
+
* contract code attached (see {@link mapCommandError}).
|
|
40
|
+
*/
|
|
41
|
+
export declare function withCommandErrorMapping<T>(operation: () => T | Promise<T>): Promise<T>;
|
|
42
|
+
//# sourceMappingURL=command-errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-errors.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/command-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,+CAA+C;AAC/C,eAAO,MAAM,mBAAmB,iKAOtB,CAAA;AACV,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAEnE,0DAA0D;AAC1D,MAAM,WAAW,iBAAkB,SAAQ,KAAK;IAC9C,IAAI,EAAE,gBAAgB,CAAA;IACtB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB;AAID;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CASvD;AAED,yDAAyD;AACzD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAMnF;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAM5F"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* commands contract error-code alignment (C-041,
|
|
3
|
+
* `commands.dsh/v1alpha1#Command`): the official `dsh-commands` runtime
|
|
4
|
+
* reports a duplicate registration as a plain `Error` whose MESSAGE is the
|
|
5
|
+
* only signal:
|
|
6
|
+
*
|
|
7
|
+
* `command "<name>" is already registered (…)`
|
|
8
|
+
* `command "<name>" is already registered in this scope`
|
|
9
|
+
*
|
|
10
|
+
* The v0.15 contract names the code `DUPLICATE_CONTRIBUTION_ID`. This module
|
|
11
|
+
* maps the message-shaped error onto an `Error` carrying that `.code`, at
|
|
12
|
+
* the HOST-MEDIATED registration/invocation points (the channel's skill
|
|
13
|
+
* command registration and registry-command execution).
|
|
14
|
+
*
|
|
15
|
+
* Known boundary (C-070, trusted-in-process): a plugin calling
|
|
16
|
+
* `ctx.commands.register` / `ctx.commands.execute` DIRECTLY bypasses this
|
|
17
|
+
* mapping — code-level wrapping can only cover the points the host owns.
|
|
18
|
+
* That is declared platform behavior, not a bug.
|
|
19
|
+
*/
|
|
20
|
+
/** The contract's command error vocabulary. */
|
|
21
|
+
export const COMMAND_ERROR_CODES = [
|
|
22
|
+
'COMMAND_NOT_FOUND',
|
|
23
|
+
'DUPLICATE_CONTRIBUTION_ID',
|
|
24
|
+
'PERMISSION_NOT_GRANTED',
|
|
25
|
+
'COMMAND_FAILED',
|
|
26
|
+
'INVOCATION_CANCELLED',
|
|
27
|
+
'INVOCATION_DEADLINE_EXCEEDED',
|
|
28
|
+
];
|
|
29
|
+
const DUPLICATE_PATTERN = /^command "[^"]+" is already registered/;
|
|
30
|
+
/**
|
|
31
|
+
* Map a thrown dsh-commands error onto its contract code. A duplicate
|
|
32
|
+
* registration comes back as a CodedCommandError with
|
|
33
|
+
* `DUPLICATE_CONTRIBUTION_ID` (original on `.cause`); every other value
|
|
34
|
+
* passes through unchanged.
|
|
35
|
+
*/
|
|
36
|
+
export function mapCommandError(error) {
|
|
37
|
+
if (error instanceof Error && DUPLICATE_PATTERN.test(error.message)) {
|
|
38
|
+
const mapped = new Error(error.message);
|
|
39
|
+
mapped.name = error.name;
|
|
40
|
+
mapped.code = 'DUPLICATE_CONTRIBUTION_ID';
|
|
41
|
+
mapped.cause = error;
|
|
42
|
+
return mapped;
|
|
43
|
+
}
|
|
44
|
+
return error;
|
|
45
|
+
}
|
|
46
|
+
/** True when `error` carries the given contract code. */
|
|
47
|
+
export function hasCommandErrorCode(error, code) {
|
|
48
|
+
return (error !== null &&
|
|
49
|
+
typeof error === 'object' &&
|
|
50
|
+
error.code === code);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Run `operation` and rethrow any duplicate-registration failure with its
|
|
54
|
+
* contract code attached (see {@link mapCommandError}).
|
|
55
|
+
*/
|
|
56
|
+
export async function withCommandErrorMapping(operation) {
|
|
57
|
+
try {
|
|
58
|
+
return await operation();
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
throw mapCommandError(error);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** Verified Component identity bound to one Cordis activation owner. */
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
3
|
+
import type { ComponentManifest, PluginManifest } from '@dsh-std/manifest';
|
|
4
|
+
export type ComponentIdentityErrorCode = 'COMPONENT_NOT_ADMITTED' | 'COMPONENT_ALREADY_ADMITTED';
|
|
5
|
+
export declare class ComponentIdentityError extends Error {
|
|
6
|
+
readonly code: ComponentIdentityErrorCode;
|
|
7
|
+
constructor(code: ComponentIdentityErrorCode, message: string);
|
|
8
|
+
}
|
|
9
|
+
export interface VerifiedComponentIdentity {
|
|
10
|
+
readonly componentId: string;
|
|
11
|
+
readonly version: string;
|
|
12
|
+
readonly facet: 'host';
|
|
13
|
+
readonly activationId: string;
|
|
14
|
+
readonly manifest: PluginManifest;
|
|
15
|
+
readonly projection: ComponentManifest;
|
|
16
|
+
}
|
|
17
|
+
/** Activation ids are host-issued opaque values. Keep them bounded and free
|
|
18
|
+
* of control characters because the same value is written to the effect
|
|
19
|
+
* ledger and used as a grant principal selector. */
|
|
20
|
+
export declare const ACTIVATION_ID_MAX_LENGTH = 128;
|
|
21
|
+
export declare function bindComponentIdentity(context: Context, manifest: PluginManifest, projection: ComponentManifest, activationId?: string): VerifiedComponentIdentity;
|
|
22
|
+
export declare function componentIdentityOf(context: Context): VerifiedComponentIdentity | undefined;
|
|
23
|
+
export declare function requireComponentIdentity(context: Context): VerifiedComponentIdentity;
|
|
24
|
+
export declare function declaresPermission(identity: VerifiedComponentIdentity, permission: string, actualScope: string): boolean;
|
|
25
|
+
export declare function declaresCommand(identity: VerifiedComponentIdentity, commandId: string): boolean;
|
|
26
|
+
export declare function declaresObserverScope(identity: VerifiedComponentIdentity, actualScope: string): boolean;
|
|
27
|
+
export declare function requiresDecisionEvents(identity: VerifiedComponentIdentity): boolean;
|
|
28
|
+
//# sourceMappingURL=component-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component-identity.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/component-identity.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAGxE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAG1E,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,GAAG,4BAA4B,CAAA;AAEhG,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,0BAA0B;gBAAhC,IAAI,EAAE,0BAA0B,EAAE,OAAO,EAAE,MAAM;CAIvE;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAA;CACvC;AAED;;oDAEoD;AACpD,eAAO,MAAM,wBAAwB,MAAM,CAAA;AAyB3C,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,iBAAiB,EAC7B,YAAY,GAAE,MAAqB,GAClC,yBAAyB,CA2B3B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,yBAAyB,GAAG,SAAS,CAM3F;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,yBAAyB,CASpF;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,yBAAyB,EACnC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAQT;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,yBAAyB,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE/F;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAUvG;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,yBAAyB,GAAG,OAAO,CAGnF"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/** Verified Component identity bound to one Cordis activation owner. */
|
|
2
|
+
import { randomUUID } from 'node:crypto';
|
|
3
|
+
import { normalizePermissionScope, scopeCovers } from '../plugin-spec/permission-scope.js';
|
|
4
|
+
export class ComponentIdentityError extends Error {
|
|
5
|
+
code;
|
|
6
|
+
constructor(code, message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.code = code;
|
|
9
|
+
this.name = 'ComponentIdentityError';
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/** Activation ids are host-issued opaque values. Keep them bounded and free
|
|
13
|
+
* of control characters because the same value is written to the effect
|
|
14
|
+
* ledger and used as a grant principal selector. */
|
|
15
|
+
export const ACTIVATION_ID_MAX_LENGTH = 128;
|
|
16
|
+
function validateActivationId(value) {
|
|
17
|
+
if (typeof value !== 'string' || value.length === 0 || value.length > ACTIVATION_ID_MAX_LENGTH
|
|
18
|
+
|| /[\x00-\x1f\x7f-\x9f]/u.test(value)) {
|
|
19
|
+
throw new ComponentIdentityError('COMPONENT_NOT_ADMITTED', `activationId must be a non-empty control-free string of at most ${ACTIVATION_ID_MAX_LENGTH} characters`);
|
|
20
|
+
}
|
|
21
|
+
return value;
|
|
22
|
+
}
|
|
23
|
+
const identities = new WeakMap();
|
|
24
|
+
function ownerKey(context) {
|
|
25
|
+
try {
|
|
26
|
+
const fiber = context.fiber;
|
|
27
|
+
if (typeof fiber === 'object' && fiber !== null)
|
|
28
|
+
return fiber;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// A real plugin context always has a fiber; reject degraded callers below.
|
|
32
|
+
}
|
|
33
|
+
throw new ComponentIdentityError('COMPONENT_NOT_ADMITTED', 'a Component activation requires an owning Cordis fiber');
|
|
34
|
+
}
|
|
35
|
+
export function bindComponentIdentity(context, manifest, projection, activationId = randomUUID()) {
|
|
36
|
+
const key = ownerKey(context);
|
|
37
|
+
if (identities.has(key)) {
|
|
38
|
+
throw new ComponentIdentityError('COMPONENT_ALREADY_ADMITTED', 'this activation already has a verified Component identity');
|
|
39
|
+
}
|
|
40
|
+
const identity = Object.freeze({
|
|
41
|
+
componentId: projection.metadata.name,
|
|
42
|
+
version: projection.metadata.version,
|
|
43
|
+
facet: 'host',
|
|
44
|
+
activationId: validateActivationId(activationId),
|
|
45
|
+
manifest,
|
|
46
|
+
projection,
|
|
47
|
+
});
|
|
48
|
+
identities.set(key, identity);
|
|
49
|
+
const release = () => {
|
|
50
|
+
if (identities.get(key) === identity)
|
|
51
|
+
identities.delete(key);
|
|
52
|
+
};
|
|
53
|
+
try {
|
|
54
|
+
context.effect(() => release);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
identities.delete(key);
|
|
58
|
+
throw new ComponentIdentityError('COMPONENT_NOT_ADMITTED', `cannot bind Component identity to an inactive activation: ${error instanceof Error ? error.message : String(error)}`);
|
|
59
|
+
}
|
|
60
|
+
return identity;
|
|
61
|
+
}
|
|
62
|
+
export function componentIdentityOf(context) {
|
|
63
|
+
try {
|
|
64
|
+
return identities.get(ownerKey(context));
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return undefined;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export function requireComponentIdentity(context) {
|
|
71
|
+
const identity = componentIdentityOf(context);
|
|
72
|
+
if (identity === undefined) {
|
|
73
|
+
throw new ComponentIdentityError('COMPONENT_NOT_ADMITTED', 'the calling activation has no verified dsh-plugin.json Component identity');
|
|
74
|
+
}
|
|
75
|
+
return identity;
|
|
76
|
+
}
|
|
77
|
+
export function declaresPermission(identity, permission, actualScope) {
|
|
78
|
+
const actual = normalizePermissionScope(permission, actualScope, identity.componentId);
|
|
79
|
+
if (actual === undefined)
|
|
80
|
+
return false;
|
|
81
|
+
return identity.manifest.permissions.some(request => {
|
|
82
|
+
if (request.name !== permission)
|
|
83
|
+
return false;
|
|
84
|
+
const declared = normalizePermissionScope(permission, request.scope, identity.componentId);
|
|
85
|
+
return declared !== undefined && scopeCovers(declared, actual);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export function declaresCommand(identity, commandId) {
|
|
89
|
+
return identity.manifest.contributes.commands.some(command => command.id === commandId);
|
|
90
|
+
}
|
|
91
|
+
export function declaresObserverScope(identity, actualScope) {
|
|
92
|
+
const actual = normalizePermissionScope('messages.observe.read', actualScope, identity.componentId);
|
|
93
|
+
if (actual === undefined)
|
|
94
|
+
return false;
|
|
95
|
+
return identity.manifest.subscriptions.some(subscription => {
|
|
96
|
+
if (typeof subscription === 'string')
|
|
97
|
+
return subscription === 'messages.observe';
|
|
98
|
+
if (subscription.apiVersion !== 'messages.dsh/v1alpha1' || subscription.kind !== 'MessageObserver')
|
|
99
|
+
return false;
|
|
100
|
+
if (subscription.scope === undefined)
|
|
101
|
+
return true;
|
|
102
|
+
const declared = normalizePermissionScope('messages.observe.read', subscription.scope, identity.componentId);
|
|
103
|
+
return declared !== undefined && scopeCovers(declared, actual);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
export function requiresDecisionEvents(identity) {
|
|
107
|
+
return identity.manifest.requires.contracts.some(requirement => requirement.apiVersion === 'tui.dsh/v1alpha1' && requirement.kind === 'DecisionEvents');
|
|
108
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export declare const UPSTREAM_VALIDATED_VERSION = "0.1.0-rc.
|
|
1
|
+
export declare const UPSTREAM_VALIDATED_VERSION = "0.1.0-rc.7";
|
|
2
2
|
/**
|
|
3
3
|
* Framework packages version on their own lines; the contract validates
|
|
4
4
|
* their MAJOR (breaking surface), not the harness rc number.
|
|
5
5
|
*/
|
|
6
6
|
export declare const UPSTREAM_FRAMEWORK_MAJORS: Record<string, number>;
|
|
7
7
|
/** Official packages the adapter consumes at runtime or as types. */
|
|
8
|
-
export declare const UPSTREAM_BLESSED_PACKAGES: readonly ["@deepseek-ai/cordis", "@deepseek-ai/schemastery", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-presets", "@deepseek-ai/dsh-commands", "@deepseek-ai/dsh-cordis-host-runner", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-persona", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-storage", "@deepseek-ai/dsh-storage-domain", "@deepseek-ai/dsh-storage-json", "@deepseek-ai/dsh-workspace", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-terminal", "@deepseek-ai/dsh-terminal-bash", "@deepseek-ai/dsh-tool-ask-user", "@deepseek-ai/dsh-tool-bash-persistent", "@deepseek-ai/dsh-tool-cordis", "@deepseek-ai/dsh-user-approval", "@deepseek-ai/dsh-user-questions"];
|
|
8
|
+
export declare const UPSTREAM_BLESSED_PACKAGES: readonly ["@deepseek-ai/cordis", "@deepseek-ai/schemastery", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-presets", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-commands", "@deepseek-ai/dsh-cordis-host-runner", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-persona", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-storage", "@deepseek-ai/dsh-storage-domain", "@deepseek-ai/dsh-storage-json", "@deepseek-ai/dsh-workspace", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-terminal", "@deepseek-ai/dsh-terminal-bash", "@deepseek-ai/dsh-tool-ask-user", "@deepseek-ai/dsh-tool-bash-persistent", "@deepseek-ai/dsh-tool-cordis", "@deepseek-ai/dsh-user-approval", "@deepseek-ai/dsh-user-questions"];
|
|
9
9
|
export interface UpstreamDriftEntry {
|
|
10
10
|
package: string;
|
|
11
11
|
installed: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/contract.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,0BAA0B,eAAe,CAAA;AAEtD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG5D,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/contract.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,0BAA0B,eAAe,CAAA;AAEtD;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAG5D,CAAA;AAED,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,8xBA0B5B,CAAA;AAEV,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,GAAG,SAAS,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAA;CAClB;AAWD,wBAAgB,yBAAyB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAgB9E;AAOD;;;GAGG;AACH,wBAAgB,aAAa,IAAI,kBAAkB,EAAE,CAsBpD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Upstream compatibility contract.
|
|
3
3
|
*
|
|
4
|
-
* The TUI is validated against one upstream release line (0.1.0-rc.
|
|
4
|
+
* The TUI is validated against one upstream release line (0.1.0-rc.7).
|
|
5
5
|
* Every official package this adapter touches is blessed here; anything
|
|
6
6
|
* else must go through upstream channels or the adapter, never the UI.
|
|
7
7
|
*
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { readFileSync } from 'node:fs';
|
|
13
13
|
import { fileURLToPath } from 'node:url';
|
|
14
|
-
export const UPSTREAM_VALIDATED_VERSION = '0.1.0-rc.
|
|
14
|
+
export const UPSTREAM_VALIDATED_VERSION = '0.1.0-rc.7';
|
|
15
15
|
/**
|
|
16
16
|
* Framework packages version on their own lines; the contract validates
|
|
17
17
|
* their MAJOR (breaking surface), not the harness rc number.
|
|
@@ -28,6 +28,7 @@ export const UPSTREAM_BLESSED_PACKAGES = [
|
|
|
28
28
|
'@deepseek-ai/dsh-agent',
|
|
29
29
|
'@deepseek-ai/dsh-agent-instructions',
|
|
30
30
|
'@deepseek-ai/dsh-agent-presets',
|
|
31
|
+
'@deepseek-ai/dsh-atomic-write',
|
|
31
32
|
'@deepseek-ai/dsh-commands',
|
|
32
33
|
'@deepseek-ai/dsh-cordis-host-runner',
|
|
33
34
|
'@deepseek-ai/dsh-llm',
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RFC 0005 D-7 enforcement: subscribing to an intercept-class (decision)
|
|
3
|
+
* event requires an explicit host-side grant — default deny.
|
|
4
|
+
*
|
|
5
|
+
* Interception is strictly more powerful than observation: a plugin that can
|
|
6
|
+
* veto user input or a session switch can change what the user's intent
|
|
7
|
+
* actually does. So `tui/input`, `tui/rewind-prompt`, `tui/session-switch`
|
|
8
|
+
* and `tui/compact` are NOT free-for-all `ctx.on` targets: the subscribing
|
|
9
|
+
* plugin (identified by its verified Component identity) must hold the
|
|
10
|
+
* matching `domain.resource.intercept` grant. Grant answers
|
|
11
|
+
* come from the unified 8-permission GrantStore in ./grants.js (registry-
|
|
12
|
+
* driven defaults, `grants`/`denies` sections, corrupt fail-closed) — this
|
|
13
|
+
* module is only the subscribe-time CHECKPOINT: which event needs which
|
|
14
|
+
* permission, and the cordis bail hook that enforces it.
|
|
15
|
+
*
|
|
16
|
+
* A denied subscription never enters the dispatch chain — it is "as if
|
|
17
|
+
* unregistered" (D-7) and the caller gets a no-op disposer plus a logger
|
|
18
|
+
* warning naming the plugin, the event, and the missing grant.
|
|
19
|
+
*
|
|
20
|
+
* Re-check semantics (D-7: subscription, revocation, scope change): every
|
|
21
|
+
* operation reads the live GrantStore and grant-owned registrations are
|
|
22
|
+
* released when its change watcher observes a revocation.
|
|
23
|
+
*
|
|
24
|
+
* Mechanism: cordis bails `internal/listener` on EVERY `ctx.on` before
|
|
25
|
+
* registering, with `this` bound to the subscribing context; a truthy bail
|
|
26
|
+
* result skips the registration and becomes the caller's disposer. That is
|
|
27
|
+
* the whole hook — no patching of the events service.
|
|
28
|
+
*/
|
|
29
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
30
|
+
import { EXTENSION_GRANTS_FILE, type GrantStore } from './grants.js';
|
|
31
|
+
import { type VerifiedComponentIdentity } from './component-identity.js';
|
|
32
|
+
/** The intercept permission each decision event requires (D-7 naming:
|
|
33
|
+
* `domain.resource.intercept`). Observe-class events (tui/rewind-done,
|
|
34
|
+
* tui/session-switched) are deliberately absent. */
|
|
35
|
+
export declare const DECISION_EVENT_PERMISSIONS: Readonly<Record<string, string>>;
|
|
36
|
+
export { EXTENSION_GRANTS_FILE };
|
|
37
|
+
/** @deprecated Use GrantStore from ./grants.js (same shape, plus more). */
|
|
38
|
+
export type ExtensionGrants = GrantStore;
|
|
39
|
+
/** @deprecated Use parseGrantStore from ./grants.js. */
|
|
40
|
+
export declare const parseExtensionGrants: (text: string) => GrantStore;
|
|
41
|
+
/** @deprecated Use readGrantStore from ./grants.js. */
|
|
42
|
+
export declare const readExtensionGrants: (dir?: string) => GrantStore;
|
|
43
|
+
export interface DecisionHandlerMetadata {
|
|
44
|
+
componentId: string;
|
|
45
|
+
activationId: string;
|
|
46
|
+
event: string;
|
|
47
|
+
order: string;
|
|
48
|
+
}
|
|
49
|
+
/** A host-mediated DecisionEvents registration. The registry is deliberately
|
|
50
|
+
* separate from Cordis' private `_hooks`: admission and dispatch must not
|
|
51
|
+
* depend on plugin load order or on an implementation detail of the event
|
|
52
|
+
* service. */
|
|
53
|
+
export interface DecisionRegistrationOptions {
|
|
54
|
+
/** Scope covered by this handler. When omitted it is derived from the
|
|
55
|
+
* manifest declaration; an unsafe concrete-session declaration is refused. */
|
|
56
|
+
scope?: string;
|
|
57
|
+
/** Deterministic order key. Handlers with the same activation/event must use
|
|
58
|
+
* distinct keys; registration order is never used as a policy. */
|
|
59
|
+
order?: string;
|
|
60
|
+
}
|
|
61
|
+
export interface RegisteredDecisionHandler {
|
|
62
|
+
readonly event: string;
|
|
63
|
+
readonly scope: string;
|
|
64
|
+
readonly componentId: string;
|
|
65
|
+
readonly activationId: string;
|
|
66
|
+
readonly order: string;
|
|
67
|
+
readonly identity: VerifiedComponentIdentity;
|
|
68
|
+
readonly ownerContext: Context;
|
|
69
|
+
readonly listener: (payload: Record<string, unknown>) => unknown;
|
|
70
|
+
}
|
|
71
|
+
export interface DecisionRegistry {
|
|
72
|
+
grants: GrantStore;
|
|
73
|
+
handlers: Map<string, Map<string, RegisteredDecisionHandler>>;
|
|
74
|
+
}
|
|
75
|
+
export declare function decisionRegistryOf(ctx: Context): DecisionRegistry;
|
|
76
|
+
/** Return a stable snapshot of handlers for one event and payload scope. */
|
|
77
|
+
export declare function decisionHandlersOf(ctx: Context, event: string, payloadScope?: string): readonly RegisteredDecisionHandler[];
|
|
78
|
+
/** Host-only registration used by TuiPluginHostRuntime. */
|
|
79
|
+
export declare function registerDecisionHandler(pluginCtx: Context, identity: VerifiedComponentIdentity, event: string, listener: (payload: Record<string, unknown>) => unknown, options?: DecisionRegistrationOptions, onRelease?: () => void): () => boolean;
|
|
80
|
+
/** Execute ctx.on for one host-mediated decision registration. */
|
|
81
|
+
export declare function withDecisionRegistration<T>(ctx: Context, callback: () => T): T;
|
|
82
|
+
export declare function decisionHandlerMetadataOf(listener: Function): DecisionHandlerMetadata | undefined;
|
|
83
|
+
export declare function installDecisionGuard(ctx: Context, grants: GrantStore): void;
|
|
84
|
+
//# sourceMappingURL=decision-guard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decision-guard.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/decision-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EACL,qBAAqB,EAGrB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EAIL,KAAK,yBAAyB,EAC/B,MAAM,yBAAyB,CAAA;AAQhC;;qDAEqD;AACrD,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKvE,CAAA;AAMD,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAEhC,2EAA2E;AAC3E,MAAM,MAAM,eAAe,GAAG,UAAU,CAAA;AAExC,wDAAwD;AACxD,eAAO,MAAM,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAA4B,CAAA;AAEjF,uDAAuD;AACvD,eAAO,MAAM,mBAAmB,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,UAA2B,CAAA;AAgB/E,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AAGD;;;cAGc;AACd,MAAM,WAAW,2BAA2B;IAC1C;kFAC8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;sEACkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,QAAQ,EAAE,yBAAyB,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;IAC9B,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAA;CACjE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,CAAA;IAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,CAAA;CAC9D;AAsBD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAEjE;AAED,4EAA4E;AAC5E,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,MAAM,EACb,YAAY,CAAC,EAAE,MAAM,GACpB,SAAS,yBAAyB,EAAE,CA6BtC;AAsCD,2DAA2D;AAC3D,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,OAAO,EAClB,QAAQ,EAAE,yBAAyB,EACnC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,EACvD,OAAO,GAAE,2BAAgC,EACzC,SAAS,CAAC,EAAE,MAAM,IAAI,GACrB,MAAM,OAAO,CA4Ff;AAkBD,kEAAkE;AAClE,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAI9E;AAED,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,QAAQ,GAAG,uBAAuB,GAAG,SAAS,CAEjG;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CA+D3E"}
|