@deepseek-harness-tui/dsh-tui 0.8.1 → 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 +22 -13
- 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/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/{ecosystem-spec → dsh-ecosystem-spec}/registry/permissions-0.1.json +1 -1
- package/dsh-ecosystem-spec/registry/registry-0.15.json +149 -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/components/LoadedContextPanel.d.ts +10 -5
- package/lib/types/components/LoadedContextPanel.d.ts.map +1 -1
- package/lib/types/components/LoadedContextPanel.js +18 -7
- package/lib/types/components/LogoV2.d.ts.map +1 -1
- package/lib/types/components/LogoV2.js +16 -7
- 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 +90 -9
- package/lib/types/components/PromptInput.d.ts.map +1 -1
- package/lib/types/components/PromptInput.js +26 -12
- 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/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 +12 -1
- package/lib/types/dsh-adapter/channel.d.ts +31 -4
- package/lib/types/dsh-adapter/channel.d.ts.map +1 -1
- package/lib/types/dsh-adapter/channel.js +267 -102
- 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.map +1 -1
- package/lib/types/dsh-adapter/command-attribution.js +2 -2
- 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 +5 -0
- package/lib/types/dsh-adapter/component-identity.d.ts.map +1 -1
- package/lib/types/dsh-adapter/component-identity.js +14 -14
- package/lib/types/dsh-adapter/decision-guard.d.ts.map +1 -1
- package/lib/types/dsh-adapter/decision-guard.js +10 -16
- package/lib/types/dsh-adapter/dialogs.d.ts +2 -3
- package/lib/types/dsh-adapter/dialogs.d.ts.map +1 -1
- package/lib/types/dsh-adapter/dialogs.js +114 -60
- package/lib/types/dsh-adapter/effect-ledger.d.ts +0 -8
- package/lib/types/dsh-adapter/effect-ledger.d.ts.map +1 -1
- package/lib/types/dsh-adapter/effect-ledger.js +73 -53
- package/lib/types/dsh-adapter/extension-events.d.ts.map +1 -1
- package/lib/types/dsh-adapter/extension-events.js +39 -1
- package/lib/types/dsh-adapter/grants.d.ts.map +1 -1
- package/lib/types/dsh-adapter/grants.js +43 -14
- 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 +2 -2
- package/lib/types/dsh-adapter/host-descriptor.d.ts.map +1 -1
- package/lib/types/dsh-adapter/host-descriptor.js +31 -8
- 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 +10 -15
- package/lib/types/dsh-adapter/message-observer.d.ts.map +1 -1
- package/lib/types/dsh-adapter/message-observer.js +114 -70
- package/lib/types/dsh-adapter/plugin-host.d.ts +39 -6
- package/lib/types/dsh-adapter/plugin-host.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-host.js +139 -44
- package/lib/types/dsh-adapter/plugin-storage.d.ts +0 -5
- package/lib/types/dsh-adapter/plugin-storage.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin-storage.js +48 -36
- package/lib/types/dsh-adapter/plugin.d.ts.map +1 -1
- package/lib/types/dsh-adapter/plugin.js +80 -16
- 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 +6 -14
- package/lib/types/dsh-adapter/renderers.d.ts.map +1 -1
- package/lib/types/dsh-adapter/renderers.js +81 -46
- package/lib/types/dsh-adapter/scenes.d.ts +8 -4
- package/lib/types/dsh-adapter/scenes.d.ts.map +1 -1
- package/lib/types/dsh-adapter/scenes.js +136 -37
- 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 +8 -10
- package/lib/types/dsh-adapter/shortcuts.d.ts.map +1 -1
- package/lib/types/dsh-adapter/shortcuts.js +108 -36
- package/lib/types/dsh-adapter/status.d.ts +6 -7
- package/lib/types/dsh-adapter/status.d.ts.map +1 -1
- package/lib/types/dsh-adapter/status.js +88 -22
- 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 +10 -5
- package/lib/types/extensions.d.ts.map +1 -1
- package/lib/types/extensions.js +11 -5
- 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 +14 -6
- package/lib/types/i18n.d.ts.map +1 -1
- package/lib/types/i18n.js +4 -2
- 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 +20 -3
- package/lib/types/ink/ink.d.ts.map +1 -1
- package/lib/types/ink/ink.js +57 -5
- package/lib/types/ink/log-update.d.ts.map +1 -1
- package/lib/types/ink/log-update.js +128 -9
- package/lib/types/ink/output.d.ts +28 -2
- package/lib/types/ink/output.d.ts.map +1 -1
- package/lib/types/ink/output.js +158 -12
- 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 +10 -2
- 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 +13 -11
- package/lib/types/plugin-host.d.ts.map +1 -1
- package/lib/types/plugin-host.js +16 -16
- package/lib/types/plugin-spec/registry.d.ts +2 -2
- package/lib/types/plugin-spec/registry.d.ts.map +1 -1
- package/lib/types/plugin-spec/registry.js +113 -18
- package/lib/types/plugin-spec/tui-extension.d.ts.map +1 -1
- package/lib/types/plugin-spec/tui-extension.js +2 -0
- package/lib/types/plugin-spec/validate.d.ts.map +1 -1
- package/lib/types/plugin-spec/validate.js +20 -1
- 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 +3 -3
- package/lib/types/screens/Chat.d.ts.map +1 -1
- package/lib/types/screens/Chat.js +38 -17
- 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/utils/execFileNoThrow.d.ts.map +1 -1
- package/lib/types/utils/execFileNoThrow.js +3 -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/package.json +1 -1
- package/node_modules/@dsh-std/connection/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/connection/lib/memory.d.ts +1 -1
- package/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -1
- package/node_modules/@dsh-std/connection/lib/memory.js +1 -0
- package/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/node_modules/@dsh-std/connection/package.json +1 -1
- package/node_modules/@dsh-std/core/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/core/package.json +1 -1
- package/node_modules/@dsh-std/manifest/CHANGELOG.md +9 -0
- package/node_modules/@dsh-std/manifest/package.json +1 -1
- package/node_modules/@dsh-std/messages/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/messages/package.json +1 -1
- package/node_modules/@dsh-std/presentation/CHANGELOG.md +9 -0
- package/node_modules/@dsh-std/presentation/README.md +2 -1
- package/node_modules/@dsh-std/presentation/README.zh.md +2 -1
- 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 +44 -1
- package/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -1
- package/node_modules/@dsh-std/presentation/lib/index.js +6 -3
- package/node_modules/@dsh-std/presentation/lib/index.js.map +1 -1
- package/node_modules/@dsh-std/presentation/package.json +7 -3
- package/node_modules/@dsh-std/storage/CHANGELOG.md +8 -0
- package/node_modules/@dsh-std/storage/package.json +1 -1
- package/package.json +10 -5
- 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/lib/memory.d.ts +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js +1 -0
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/connection/package.json +1 -1
- 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/package.json +1 -1
- 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/package.json +1 -1
- 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/README.md +2 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/README.zh.md +2 -1
- 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 +44 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.d.ts.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js +6 -3
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/lib/index.js.map +1 -1
- package/vendor/dsh-std/packages/command/node_modules/@dsh-std/presentation/package.json +7 -3
- 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/package.json +1 -1
- 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/package.json +1 -1
- 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/package.json +1 -1
- 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/lib/memory.d.ts +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.d.ts.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js +1 -0
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/lib/memory.js.map +1 -1
- package/vendor/dsh-std/packages/presentation/node_modules/@dsh-std/connection/package.json +1 -1
- 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/package.json +1 -1
- 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/package.json +1 -1
- package/ecosystem-spec/registry/registry-0.15.json +0 -57
- /package/{ecosystem-spec → dsh-ecosystem-spec}/registry/contracts/decision-events-v1alpha1.json +0 -0
- /package/{ecosystem-spec → dsh-ecosystem-spec}/registry/host-descriptor.tui.example.json +0 -0
- /package/{ecosystem-spec → dsh-ecosystem-spec}/schemas/conformance-claim.schema.json +0 -0
- /package/{ecosystem-spec → dsh-ecosystem-spec}/schemas/effect-ledger-record.schema.json +0 -0
- /package/{ecosystem-spec → dsh-ecosystem-spec}/schemas/host-descriptor.schema.json +0 -0
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
/** Provider-neutral full-screen scene registry for terminal front doors. */
|
|
2
2
|
import { Service } from '@deepseek-ai/cordis';
|
|
3
|
+
import { activationFiber, bindCallerEffect, compositionRoot, concreteService, requirePluginCaller } from './host-access.js';
|
|
4
|
+
import { componentIdentityOf } from './component-identity.js';
|
|
3
5
|
export const name = 'dsh-tui-scenes';
|
|
4
6
|
/**
|
|
5
7
|
* Small host-only registry; command execution remains owned by dsh-commands.
|
|
@@ -11,11 +13,33 @@ export const name = 'dsh-tui-scenes';
|
|
|
11
13
|
* takes the whole terminal the way the trajectory scene does.
|
|
12
14
|
*/
|
|
13
15
|
export class TuiSceneRuntime extends Service {
|
|
14
|
-
scenes = new Map();
|
|
15
|
-
listeners = new Set();
|
|
16
|
-
current;
|
|
17
16
|
constructor(ctx) {
|
|
18
17
|
super(ctx, 'tuiScenes');
|
|
18
|
+
compositionRoot(ctx);
|
|
19
|
+
const runtime = this;
|
|
20
|
+
const state = {
|
|
21
|
+
scenes: new Map(),
|
|
22
|
+
owners: new Map(),
|
|
23
|
+
listeners: new Set(),
|
|
24
|
+
current: undefined,
|
|
25
|
+
host: undefined,
|
|
26
|
+
logger: ctx.logger,
|
|
27
|
+
};
|
|
28
|
+
state.host = Object.freeze({
|
|
29
|
+
get active() {
|
|
30
|
+
return sceneStateFor(runtime).current;
|
|
31
|
+
},
|
|
32
|
+
open(id) {
|
|
33
|
+
return openScene(runtime, id);
|
|
34
|
+
},
|
|
35
|
+
close() {
|
|
36
|
+
closeScene(runtime);
|
|
37
|
+
},
|
|
38
|
+
subscribe(listener) {
|
|
39
|
+
return subscribeScenes(runtime, listener);
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
sceneStates.set(this, state);
|
|
19
43
|
}
|
|
20
44
|
/**
|
|
21
45
|
* Register a full-screen scene; returns the dispose function (caller
|
|
@@ -24,11 +48,21 @@ export class TuiSceneRuntime extends Service {
|
|
|
24
48
|
* records `undeclared` (C-060).
|
|
25
49
|
*/
|
|
26
50
|
register(descriptor, identity) {
|
|
51
|
+
const state = sceneStateFor(this);
|
|
52
|
+
const caller = requirePluginCaller(this.ctx, 'tuiScenes.register', this);
|
|
53
|
+
const activationOwner = activationFiber(caller);
|
|
54
|
+
if (activationOwner === undefined)
|
|
55
|
+
throw new Error('dsh-tui: tuiScenes.register requires a live activation');
|
|
56
|
+
const callerIdentity = componentIdentityOf(caller);
|
|
57
|
+
const suppliedIdentity = identity === undefined ? callerIdentity : componentIdentityOf(identity);
|
|
58
|
+
if (identity !== undefined && callerIdentity !== undefined && suppliedIdentity !== callerIdentity) {
|
|
59
|
+
throw new Error('dsh-tui: tuiScenes.register identity belongs to another activation');
|
|
60
|
+
}
|
|
27
61
|
const id = descriptor.id.trim().toLowerCase();
|
|
28
62
|
if (!/^[a-z][a-z0-9_-]*$/u.test(id))
|
|
29
63
|
throw new TypeError(`invalid TUI scene id: ${descriptor.id}`);
|
|
30
|
-
if (
|
|
31
|
-
|
|
64
|
+
if (state.scenes.has(id)) {
|
|
65
|
+
caller.get('tuiEffectLedger')?.record({
|
|
32
66
|
operation: 'create',
|
|
33
67
|
resource: { kind: 'scene', id },
|
|
34
68
|
result: 'failed',
|
|
@@ -36,20 +70,24 @@ export class TuiSceneRuntime extends Service {
|
|
|
36
70
|
}, identity);
|
|
37
71
|
throw new Error(`TUI scene "${id}" is already registered`);
|
|
38
72
|
}
|
|
39
|
-
const normalized = { ...descriptor, id };
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
73
|
+
const normalized = Object.freeze({ ...descriptor, id });
|
|
74
|
+
state.scenes.set(id, normalized);
|
|
75
|
+
state.owners.set(id, activationOwner);
|
|
76
|
+
caller.get('tuiEffectLedger')?.record({ operation: 'create', resource: { kind: 'scene', id }, result: 'applied' }, identity);
|
|
77
|
+
const dispose = () => {
|
|
78
|
+
if (state.scenes.get(id) !== normalized)
|
|
44
79
|
return;
|
|
45
|
-
|
|
46
|
-
|
|
80
|
+
state.scenes.delete(id);
|
|
81
|
+
state.owners.delete(id);
|
|
82
|
+
caller.get('tuiEffectLedger')?.record({ operation: 'release', resource: { kind: 'scene', id }, result: 'applied' }, identity);
|
|
47
83
|
// Disposing the open scene must not strand the user on a dead screen.
|
|
48
|
-
if (
|
|
49
|
-
|
|
50
|
-
|
|
84
|
+
if (state.current === normalized) {
|
|
85
|
+
state.current = undefined;
|
|
86
|
+
notifyScenes(state, activationOwner);
|
|
51
87
|
}
|
|
52
88
|
};
|
|
89
|
+
bindCallerEffect(caller, dispose);
|
|
90
|
+
return dispose;
|
|
53
91
|
}
|
|
54
92
|
/**
|
|
55
93
|
* Swap the conversation for the named scene. Returns false (and warns)
|
|
@@ -57,37 +95,98 @@ export class TuiSceneRuntime extends Service {
|
|
|
57
95
|
* the log, not silently do nothing in the UI.
|
|
58
96
|
*/
|
|
59
97
|
open(id) {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
return false;
|
|
64
|
-
}
|
|
65
|
-
if (scene === this.current)
|
|
66
|
-
return true;
|
|
67
|
-
this.current = scene;
|
|
68
|
-
this.notify();
|
|
69
|
-
return true;
|
|
98
|
+
const caller = requirePluginCaller(this.ctx, 'tuiScenes.open', this);
|
|
99
|
+
const owner = activationFiber(caller);
|
|
100
|
+
return owner === undefined ? false : openScene(this, id, caller, owner);
|
|
70
101
|
}
|
|
71
102
|
close() {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
103
|
+
const caller = requirePluginCaller(this.ctx, 'tuiScenes.close', this);
|
|
104
|
+
const owner = activationFiber(caller);
|
|
105
|
+
if (owner !== undefined)
|
|
106
|
+
closeScene(this, caller, owner);
|
|
76
107
|
}
|
|
77
108
|
/** The scene currently replacing the conversation, if any. */
|
|
78
109
|
get active() {
|
|
79
|
-
|
|
110
|
+
const caller = requirePluginCaller(this.ctx, 'tuiScenes.active', this);
|
|
111
|
+
const owner = activationFiber(caller);
|
|
112
|
+
const state = sceneStateFor(this);
|
|
113
|
+
return owner !== undefined && state.current !== undefined && state.owners.get(state.current.id) === owner
|
|
114
|
+
? state.current
|
|
115
|
+
: undefined;
|
|
80
116
|
}
|
|
81
117
|
/** UI-side change feed: fired after every open/close/dispose transition. */
|
|
82
118
|
subscribe(listener) {
|
|
83
|
-
this.
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
119
|
+
const caller = requirePluginCaller(this.ctx, 'tuiScenes.subscribe', this);
|
|
120
|
+
const owner = activationFiber(caller);
|
|
121
|
+
if (owner === undefined)
|
|
122
|
+
return () => { };
|
|
123
|
+
const dispose = subscribeScenes(this, listener, owner);
|
|
124
|
+
bindCallerEffect(caller, dispose);
|
|
125
|
+
return dispose;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
const sceneStates = new WeakMap();
|
|
129
|
+
function sceneStateFor(runtime) {
|
|
130
|
+
const state = sceneStates.get(concreteService(runtime));
|
|
131
|
+
if (state === undefined)
|
|
132
|
+
throw new Error('tuiScenes host state is unavailable');
|
|
133
|
+
return state;
|
|
134
|
+
}
|
|
135
|
+
function openScene(runtime, id, caller, owner) {
|
|
136
|
+
const state = sceneStateFor(runtime);
|
|
137
|
+
const scene = state.scenes.get(id.trim().toLowerCase());
|
|
138
|
+
if (scene === undefined) {
|
|
139
|
+
;
|
|
140
|
+
(caller?.logger ?? state.logger).warn(`dsh-tui: no TUI scene registered as "${id}"`);
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
if (owner !== undefined && state.owners.get(scene.id) !== owner) {
|
|
144
|
+
caller?.logger.warn(`dsh-tui: scene "${scene.id}" belongs to another activation`);
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
if (scene === state.current)
|
|
148
|
+
return true;
|
|
149
|
+
const previousOwner = state.current === undefined ? undefined : state.owners.get(state.current.id);
|
|
150
|
+
state.current = scene;
|
|
151
|
+
notifyScenes(state, previousOwner);
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
function closeScene(runtime, caller, owner) {
|
|
155
|
+
const state = sceneStateFor(runtime);
|
|
156
|
+
if (state.current === undefined)
|
|
157
|
+
return;
|
|
158
|
+
if (owner !== undefined && state.owners.get(state.current.id) !== owner) {
|
|
159
|
+
caller?.logger.warn(`dsh-tui: scene "${state.current.id}" belongs to another activation`);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
const previousOwner = state.owners.get(state.current.id);
|
|
163
|
+
state.current = undefined;
|
|
164
|
+
notifyScenes(state, previousOwner);
|
|
165
|
+
}
|
|
166
|
+
function subscribeScenes(runtime, listener, owner) {
|
|
167
|
+
const state = sceneStateFor(runtime);
|
|
168
|
+
const entry = { owner, listener };
|
|
169
|
+
state.listeners.add(entry);
|
|
170
|
+
return () => {
|
|
171
|
+
state.listeners.delete(entry);
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
function notifyScenes(state, previousOwner) {
|
|
175
|
+
const currentOwner = state.current === undefined ? undefined : state.owners.get(state.current.id);
|
|
176
|
+
for (const entry of state.listeners) {
|
|
177
|
+
if (entry.owner !== undefined && entry.owner !== currentOwner && entry.owner !== previousOwner)
|
|
178
|
+
continue;
|
|
179
|
+
entry.listener();
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
export function getHostSceneRuntime(runtime) {
|
|
183
|
+
if (runtime === undefined)
|
|
184
|
+
return undefined;
|
|
185
|
+
try {
|
|
186
|
+
return sceneStateFor(runtime).host ?? undefined;
|
|
87
187
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
listener();
|
|
188
|
+
catch {
|
|
189
|
+
return undefined;
|
|
91
190
|
}
|
|
92
191
|
}
|
|
93
192
|
export default TuiSceneRuntime;
|
|
@@ -86,6 +86,12 @@ export interface TuiSettingsSection {
|
|
|
86
86
|
/** Editable fields, in display order. */
|
|
87
87
|
fields: readonly TuiSettingsField[];
|
|
88
88
|
}
|
|
89
|
+
/** Host-only settings-section controls used by the TUI bootstrap/channel. */
|
|
90
|
+
export interface TuiSettingsSectionsHost {
|
|
91
|
+
register(section: TuiSettingsSection): () => void;
|
|
92
|
+
list(): readonly TuiSettingsSection[];
|
|
93
|
+
subscribe(listener: () => void): () => void;
|
|
94
|
+
}
|
|
89
95
|
declare module '@deepseek-ai/cordis' {
|
|
90
96
|
interface Context {
|
|
91
97
|
tuiSettingsSections: TuiSettingsSectionsRuntime;
|
|
@@ -97,8 +103,6 @@ export declare const name = "dsh-tui-settings-sections";
|
|
|
97
103
|
* the dsh settings service (`ctx.settings`).
|
|
98
104
|
*/
|
|
99
105
|
export declare class TuiSettingsSectionsRuntime extends Service {
|
|
100
|
-
private readonly sections;
|
|
101
|
-
private readonly listeners;
|
|
102
106
|
constructor(ctx: Context);
|
|
103
107
|
register(section: TuiSettingsSection): () => void;
|
|
104
108
|
/** Registered sections in registration order. */
|
|
@@ -110,7 +114,7 @@ export declare class TuiSettingsSectionsRuntime extends Service {
|
|
|
110
114
|
* re-read the section list (a plugin (un)loading mid-session changes it).
|
|
111
115
|
*/
|
|
112
116
|
subscribe(listener: () => void): () => void;
|
|
113
|
-
private emit;
|
|
114
117
|
}
|
|
118
|
+
export declare function getHostSettingsSections(runtime: TuiSettingsSectionsRuntime | undefined): TuiSettingsSectionsHost | undefined;
|
|
115
119
|
export default TuiSettingsSectionsRuntime;
|
|
116
120
|
//# sourceMappingURL=settings-sections.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-sections.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/settings-sections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;
|
|
1
|
+
{"version":3,"file":"settings-sections.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/settings-sections.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAA;AAG3D,iEAAiE;AACjE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAA;AAE3E,MAAM,WAAW,sBAAsB;IACrC,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,YAAY,CAAC,EAAE,qBAAqB,CAAA;CACrC;AAED,oEAAoE;AACpE,MAAM,MAAM,qBAAqB,GAC7B;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAA;AAErB,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IACvB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,qBAAqB,CAAA;IACxC,IAAI,EAAE,oBAAoB,CAAA;IAC1B,wDAAwD;IACxD,OAAO,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;IAC3C,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;;OAMG;IACH,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACxB;;;OAGG;IACH,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAA;IAC/B;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAA;CACxD;AAED,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,EAAE,EAAE,MAAM,CAAA;IACV,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAA;IACb,iDAAiD;IACjD,YAAY,CAAC,EAAE,qBAAqB,CAAA;IACpC,yCAAyC;IACzC,MAAM,EAAE,SAAS,gBAAgB,EAAE,CAAA;CACpC;AAED,6EAA6E;AAC7E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,IAAI,CAAA;IACjD,IAAI,IAAI,SAAS,kBAAkB,EAAE,CAAA;IACrC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,mBAAmB,EAAE,0BAA0B,CAAA;KAChD;CACF;AAED,eAAO,MAAM,IAAI,8BAA8B,CAAA;AAE/C;;;GAGG;AACH,qBAAa,0BAA2B,SAAQ,OAAO;gBACzC,GAAG,EAAE,OAAO;IAmBxB,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,IAAI;IASjD,iDAAiD;IACjD,IAAI,IAAI,SAAS,kBAAkB,EAAE;IAQrC,sDAAsD;IACtD,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAQnD;;;OAGG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;CAS5C;AAgED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,0BAA0B,GAAG,SAAS,GAAG,uBAAuB,GAAG,SAAS,CAO5H;AAED,eAAe,0BAA0B,CAAA"}
|
|
@@ -10,54 +10,134 @@
|
|
|
10
10
|
* metadata only.
|
|
11
11
|
*/
|
|
12
12
|
import { Service } from '@deepseek-ai/cordis';
|
|
13
|
+
import { activationFiber, bindCallerEffect, compositionRoot, concreteService, requirePluginCaller } from './host-access.js';
|
|
13
14
|
export const name = 'dsh-tui-settings-sections';
|
|
14
15
|
/**
|
|
15
16
|
* Small host-only registry; settings storage and validation remain owned by
|
|
16
17
|
* the dsh settings service (`ctx.settings`).
|
|
17
18
|
*/
|
|
18
19
|
export class TuiSettingsSectionsRuntime extends Service {
|
|
19
|
-
sections = new Map();
|
|
20
|
-
listeners = new Set();
|
|
21
20
|
constructor(ctx) {
|
|
22
21
|
super(ctx, 'tuiSettingsSections');
|
|
22
|
+
compositionRoot(ctx);
|
|
23
|
+
const runtime = this;
|
|
24
|
+
const state = { sections: new Map(), owners: new Map(), listeners: new Set(), host: undefined };
|
|
25
|
+
state.host = Object.freeze({
|
|
26
|
+
register(section) {
|
|
27
|
+
return registerSection(runtime, section);
|
|
28
|
+
},
|
|
29
|
+
list() {
|
|
30
|
+
return [...settingsSectionStateFor(runtime).sections.values()];
|
|
31
|
+
},
|
|
32
|
+
subscribe(listener) {
|
|
33
|
+
return subscribeSections(runtime, listener);
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
settingsSectionStates.set(this, state);
|
|
23
37
|
}
|
|
24
38
|
register(section) {
|
|
25
|
-
const
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
this.emit();
|
|
33
|
-
return () => {
|
|
34
|
-
if (this.sections.get(ns) === normalized) {
|
|
35
|
-
this.sections.delete(ns);
|
|
36
|
-
this.emit();
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
+
const caller = requirePluginCaller(this.ctx, 'tuiSettingsSections.register', this);
|
|
40
|
+
const owner = activationFiber(caller);
|
|
41
|
+
if (owner === undefined)
|
|
42
|
+
throw new Error('dsh-tui: tuiSettingsSections.register requires a live activation');
|
|
43
|
+
const dispose = registerSection(this, section, owner);
|
|
44
|
+
bindCallerEffect(caller, dispose);
|
|
45
|
+
return dispose;
|
|
39
46
|
}
|
|
40
47
|
/** Registered sections in registration order. */
|
|
41
48
|
list() {
|
|
42
|
-
|
|
49
|
+
const caller = requirePluginCaller(this.ctx, 'tuiSettingsSections.list', this);
|
|
50
|
+
const owner = activationFiber(caller);
|
|
51
|
+
return owner === undefined ? [] : [...settingsSectionStateFor(this).sections.entries()]
|
|
52
|
+
.filter(([ns]) => settingsSectionStateFor(this).owners.get(ns) === owner)
|
|
53
|
+
.map(([, section]) => section);
|
|
43
54
|
}
|
|
44
55
|
/** The section registered for a namespace, if any. */
|
|
45
56
|
section(ns) {
|
|
46
|
-
|
|
57
|
+
const caller = requirePluginCaller(this.ctx, 'tuiSettingsSections.section', this);
|
|
58
|
+
const owner = activationFiber(caller);
|
|
59
|
+
const state = settingsSectionStateFor(this);
|
|
60
|
+
const normalized = ns.trim();
|
|
61
|
+
return owner !== undefined && state.owners.get(normalized) === owner ? state.sections.get(normalized) : undefined;
|
|
47
62
|
}
|
|
48
63
|
/**
|
|
49
64
|
* Subscribe to register/unregister events so an open settings screen can
|
|
50
65
|
* re-read the section list (a plugin (un)loading mid-session changes it).
|
|
51
66
|
*/
|
|
52
67
|
subscribe(listener) {
|
|
53
|
-
this.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
68
|
+
const caller = requirePluginCaller(this.ctx, 'tuiSettingsSections.subscribe', this);
|
|
69
|
+
const owner = activationFiber(caller);
|
|
70
|
+
if (owner === undefined)
|
|
71
|
+
return () => { };
|
|
72
|
+
const dispose = subscribeSections(this, listener, owner);
|
|
73
|
+
bindCallerEffect(caller, dispose);
|
|
74
|
+
return dispose;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const settingsSectionStates = new WeakMap();
|
|
78
|
+
function settingsSectionStateFor(runtime) {
|
|
79
|
+
const state = settingsSectionStates.get(concreteService(runtime));
|
|
80
|
+
if (state === undefined)
|
|
81
|
+
throw new Error('tuiSettingsSections host state is unavailable');
|
|
82
|
+
return state;
|
|
83
|
+
}
|
|
84
|
+
function registerSection(runtime, section, owner) {
|
|
85
|
+
const state = settingsSectionStateFor(runtime);
|
|
86
|
+
const ns = section.ns.trim();
|
|
87
|
+
if (!/^[a-z][a-z0-9_-]*$/u.test(ns))
|
|
88
|
+
throw new TypeError(`invalid TUI settings-section namespace: ${section.ns}`);
|
|
89
|
+
if (state.sections.has(ns))
|
|
90
|
+
throw new Error(`TUI settings section "${ns}" is already registered`);
|
|
91
|
+
const normalized = Object.freeze({
|
|
92
|
+
...section,
|
|
93
|
+
ns,
|
|
94
|
+
descriptions: section.descriptions === undefined ? undefined : Object.freeze({ ...section.descriptions }),
|
|
95
|
+
fields: Object.freeze(section.fields.map(field => Object.freeze({
|
|
96
|
+
...field,
|
|
97
|
+
path: Object.freeze([...field.path]),
|
|
98
|
+
descriptions: field.descriptions === undefined ? undefined : Object.freeze({ ...field.descriptions }),
|
|
99
|
+
hintDescriptions: field.hintDescriptions === undefined ? undefined : Object.freeze({ ...field.hintDescriptions }),
|
|
100
|
+
options: field.options === undefined
|
|
101
|
+
? undefined
|
|
102
|
+
: Object.freeze(field.options.map(option => Object.freeze({ ...option, descriptions: option.descriptions === undefined ? undefined : Object.freeze({ ...option.descriptions }) }))),
|
|
103
|
+
secret: field.secret === undefined ? undefined : Object.freeze({ ...field.secret }),
|
|
104
|
+
}))),
|
|
105
|
+
});
|
|
106
|
+
state.sections.set(ns, normalized);
|
|
107
|
+
if (owner !== undefined)
|
|
108
|
+
state.owners.set(ns, owner);
|
|
109
|
+
emitSections(state, owner);
|
|
110
|
+
return () => {
|
|
111
|
+
if (state.sections.get(ns) !== normalized)
|
|
112
|
+
return;
|
|
113
|
+
state.sections.delete(ns);
|
|
114
|
+
state.owners.delete(ns);
|
|
115
|
+
emitSections(state, owner);
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function subscribeSections(runtime, listener, owner) {
|
|
119
|
+
const state = settingsSectionStateFor(runtime);
|
|
120
|
+
const entry = { owner, listener };
|
|
121
|
+
state.listeners.add(entry);
|
|
122
|
+
return () => {
|
|
123
|
+
state.listeners.delete(entry);
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
function emitSections(state, changedOwner) {
|
|
127
|
+
for (const entry of state.listeners) {
|
|
128
|
+
if (entry.owner !== undefined && entry.owner !== changedOwner)
|
|
129
|
+
continue;
|
|
130
|
+
entry.listener();
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
export function getHostSettingsSections(runtime) {
|
|
134
|
+
if (runtime === undefined)
|
|
135
|
+
return undefined;
|
|
136
|
+
try {
|
|
137
|
+
return settingsSectionStateFor(runtime).host ?? undefined;
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return undefined;
|
|
61
141
|
}
|
|
62
142
|
}
|
|
63
143
|
export default TuiSettingsSectionsRuntime;
|
|
@@ -42,6 +42,13 @@ export interface TuiShortcutKey {
|
|
|
42
42
|
pageUp?: boolean;
|
|
43
43
|
pageDown?: boolean;
|
|
44
44
|
}
|
|
45
|
+
/** Controls that only the Chat input path may use. They are kept out of the
|
|
46
|
+
* Cordis service object, so one plugin cannot synthesize an input event to
|
|
47
|
+
* invoke another plugin's shortcut handler. */
|
|
48
|
+
export interface TuiShortcutHost {
|
|
49
|
+
dispatch(input: string, key: TuiShortcutKey): boolean;
|
|
50
|
+
setErrorHandler(handler: (combo: string, error: unknown) => void): () => void;
|
|
51
|
+
}
|
|
45
52
|
export interface TuiShortcutOptions {
|
|
46
53
|
/** One-line description (shown by future /help surfaces; required so
|
|
47
54
|
* every binding is discoverable). */
|
|
@@ -74,10 +81,6 @@ declare module '@deepseek-ai/cordis' {
|
|
|
74
81
|
}
|
|
75
82
|
/** `ctx.tuiShortcuts` — plugin keyboard shortcut registry. */
|
|
76
83
|
export declare class TuiShortcutRuntime extends Service {
|
|
77
|
-
private readonly shortcuts;
|
|
78
|
-
/** Handler invocation errors are surfaced through this hook — the chat
|
|
79
|
-
* screen wires it to its notification toast. */
|
|
80
|
-
onError: ((combo: string, error: unknown) => void) | undefined;
|
|
81
84
|
constructor(ctx: Context);
|
|
82
85
|
/**
|
|
83
86
|
* Bind `combo` to `handler`. Invalid, modifier-less, reserved, or
|
|
@@ -98,12 +101,7 @@ export declare class TuiShortcutRuntime extends Service {
|
|
|
98
101
|
combo: string;
|
|
99
102
|
description: string;
|
|
100
103
|
}[];
|
|
101
|
-
/**
|
|
102
|
-
* Match a keypress; on a hit, run the handler and return true (the UI
|
|
103
|
-
* consumes the key). Handler rejections are caught and reported through
|
|
104
|
-
* {@link onError} — never propagated into the input path.
|
|
105
|
-
*/
|
|
106
|
-
dispatch(input: string, key: TuiShortcutKey): boolean;
|
|
107
104
|
}
|
|
105
|
+
export declare function getHostShortcuts(runtime: TuiShortcutRuntime | undefined): TuiShortcutHost | undefined;
|
|
108
106
|
export default TuiShortcutRuntime;
|
|
109
107
|
//# sourceMappingURL=shortcuts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/shortcuts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"shortcuts.d.ts","sourceRoot":"","sources":["../../../src/dsh-adapter/shortcuts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAItD;;iCAEiC;AACjC,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,GAAG,CAAC,EAAE,OAAO,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;+CAE+C;AAC/C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAA;IACrD,eAAe,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC9E;AAED,MAAM,WAAW,kBAAkB;IACjC;0CACsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACpC;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,cAAc,CAAA;IACrC,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CACvB;AA6DD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CA8CvE;AAkBD;mEACmE;AACnE,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAiB7F;AAED,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAU,OAAO;QACf,YAAY,EAAE,kBAAkB,CAAA;KACjC;CACF;AAED,8DAA8D;AAC9D,qBAAa,kBAAmB,SAAQ,OAAO;gBACjC,GAAG,EAAE,OAAO;IAwBxB;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,IAAI;IAmFpF,wEAAwE;IACxE,IAAI,IAAI,SAAS;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE;CAS1D;AAmCD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,eAAe,GAAG,SAAS,CAOrG;AAED,eAAe,kBAAkB,CAAA"}
|