@jingyi0605/codingns4dsh 0.1.0 → 0.1.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.en.md +306 -0
- package/README.md +190 -993
- package/data/build/dist/client/account-bar.d.ts +2 -2
- package/data/build/dist/client/account-bar.js +96 -39
- package/data/build/dist/client/bundle.js +13722 -3611
- package/data/build/dist/client/cli-catalog.js +20 -3
- package/data/build/dist/client/cli-slots.d.ts +5 -0
- package/data/build/dist/client/cli-slots.js +57 -7
- package/data/build/dist/client/debug/ui.d.ts +1 -1
- package/data/build/dist/client/debug/ui.js +62 -32
- package/data/build/dist/client/dsh-runtime-version.d.ts +9 -2
- package/data/build/dist/client/dsh-runtime-version.js +24 -2
- package/data/build/dist/client/features/cli-adapters.d.ts +1 -1
- package/data/build/dist/client/features/cli-adapters.js +19 -16
- package/data/build/dist/client/features/debug.js +2 -2
- package/data/build/dist/client/features/index.d.ts +2 -1
- package/data/build/dist/client/features/index.js +3 -1
- package/data/build/dist/client/features/lan-access-panel.d.ts +1 -1
- package/data/build/dist/client/features/lan-access-panel.js +8 -10
- package/data/build/dist/client/features/lan-access.js +1 -1
- package/data/build/dist/client/features/login-protection-panel.d.ts +1 -1
- package/data/build/dist/client/features/login-protection-panel.js +7 -9
- package/data/build/dist/client/features/reverse-proxy-panel.d.ts +1 -1
- package/data/build/dist/client/features/reverse-proxy-panel.js +99 -11
- package/data/build/dist/client/features/reverse-proxy.d.ts +1 -1
- package/data/build/dist/client/features/reverse-proxy.js +19 -18
- package/data/build/dist/client/features/terminal-enhancement-panel.d.ts +1 -1
- package/data/build/dist/client/features/terminal-enhancement-panel.js +62 -55
- package/data/build/dist/client/features/terminal-enhancement.d.ts +1 -1
- package/data/build/dist/client/features/terminal-enhancement.js +3 -3
- package/data/build/dist/client/features/types.d.ts +14 -3
- package/data/build/dist/client/features/workspace-session-enhancement-panel.d.ts +1 -1
- package/data/build/dist/client/features/workspace-session-enhancement-panel.js +31 -9
- package/data/build/dist/client/features/workspace-session-enhancement.js +72 -11
- package/data/build/dist/client/git-management.d.ts +16 -0
- package/data/build/dist/client/git-management.js +757 -0
- package/data/build/dist/client/index.d.ts +3 -2
- package/data/build/dist/client/index.js +152 -27
- package/data/build/dist/client/locale.js +91 -29
- package/data/build/dist/client/quick-phrase-layout.d.ts +49 -0
- package/data/build/dist/client/quick-phrase-layout.js +95 -0
- package/data/build/dist/client/quick-phrase-slot.d.ts +7 -0
- package/data/build/dist/client/quick-phrase-slot.js +370 -0
- package/data/build/dist/client/remote-web-context.js +1 -1
- package/data/build/dist/client/settings-bridge.d.ts +9 -6
- package/data/build/dist/client/settings-bridge.js +51 -27
- package/data/build/dist/client/settings-section.d.ts +3 -2
- package/data/build/dist/client/settings-section.js +33 -19
- package/data/build/dist/client/subscription-slot.d.ts +3 -0
- package/data/build/dist/client/subscription-slot.js +108 -16
- package/data/build/dist/client/terminal/model.d.ts +14 -2
- package/data/build/dist/client/terminal/model.js +109 -21
- package/data/build/dist/client/terminal/recovery.d.ts +50 -0
- package/data/build/dist/client/terminal/recovery.js +101 -0
- package/data/build/dist/client/terminal/ui.d.ts +2 -2
- package/data/build/dist/client/terminal/ui.js +49 -11
- package/data/build/dist/client/terminal/xterm-view.d.ts +2 -2
- package/data/build/dist/client/terminal/xterm-view.js +2 -1
- package/data/build/dist/client/theme.d.ts +6 -1
- package/data/build/dist/client/theme.js +32 -1
- package/data/build/dist/client/workspace-session-archive-dom.d.ts +12 -0
- package/data/build/dist/client/workspace-session-archive-dom.js +27 -5
- package/data/build/dist/client/workspace-session-visibility-dom.d.ts +30 -0
- package/data/build/dist/client/workspace-session-visibility-dom.js +604 -0
- package/data/build/dist/dsh-capabilities/client/config-forms-adapter.d.ts +50 -0
- package/data/build/dist/dsh-capabilities/client/config-forms-adapter.js +139 -0
- package/data/build/dist/dsh-capabilities/client/conversation-adapter.d.ts +7 -0
- package/data/build/dist/dsh-capabilities/client/conversation-adapter.js +6 -0
- package/data/build/dist/dsh-capabilities/client/locale-adapter.d.ts +9 -0
- package/data/build/dist/dsh-capabilities/client/locale-adapter.js +4 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.d.ts +10 -0
- package/data/build/dist/dsh-capabilities/client/primitives-adapter.js +14 -0
- package/data/build/dist/dsh-capabilities/client/settings-scope-adapter.d.ts +8 -0
- package/data/build/dist/dsh-capabilities/client/settings-scope-adapter.js +16 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-adapter.d.ts +7 -0
- package/data/build/dist/dsh-capabilities/client/sidebar-adapter.js +5 -0
- package/data/build/dist/dsh-capabilities/client/theme-adapter.d.ts +6 -0
- package/data/build/dist/dsh-capabilities/client/theme-adapter.js +4 -0
- package/data/build/dist/dsh-capabilities/client/typert-adapter.d.ts +5 -0
- package/data/build/dist/dsh-capabilities/client/typert-adapter.js +4 -0
- package/data/build/dist/dsh-capabilities/host/config-forms-adapter.d.ts +19 -0
- package/data/build/dist/dsh-capabilities/host/config-forms-adapter.js +45 -0
- package/data/build/dist/dsh-capabilities/host/connection-rpc-adapter.d.ts +19 -0
- package/data/build/dist/dsh-capabilities/host/connection-rpc-adapter.js +13 -0
- package/data/build/dist/dsh-capabilities/host/settings-scope-adapter.d.ts +8 -0
- package/data/build/dist/dsh-capabilities/host/settings-scope-adapter.js +47 -0
- package/data/build/dist/dsh-capabilities/host/typert-adapter.d.ts +6 -0
- package/data/build/dist/dsh-capabilities/host/typert-adapter.js +4 -0
- package/data/build/dist/dsh-capabilities/index.d.ts +6 -0
- package/data/build/dist/dsh-capabilities/index.js +6 -0
- package/data/build/dist/dsh-capabilities/matrix.d.ts +15 -0
- package/data/build/dist/dsh-capabilities/matrix.js +32 -0
- package/data/build/dist/dsh-capabilities/registry.d.ts +22 -0
- package/data/build/dist/dsh-capabilities/registry.js +196 -0
- package/data/build/dist/dsh-capabilities/routes.d.ts +10 -0
- package/data/build/dist/dsh-capabilities/routes.js +34 -0
- package/data/build/dist/dsh-capabilities/settings-store.d.ts +29 -0
- package/data/build/dist/dsh-capabilities/settings-store.js +5 -0
- package/data/build/dist/dsh-capabilities/types.d.ts +50 -0
- package/data/build/dist/dsh-capabilities/types.js +23 -0
- package/data/build/dist/features/registry.d.ts +8 -2
- package/data/build/dist/features/registry.js +104 -1
- package/data/build/dist/host/auth-session.d.ts +8 -1
- package/data/build/dist/host/auth-session.js +28 -6
- package/data/build/dist/host/cli-adapters/claude-driver.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/claude-driver.js +19 -4
- package/data/build/dist/host/cli-adapters/claude-model-options.d.ts +14 -0
- package/data/build/dist/host/cli-adapters/claude-model-options.js +157 -0
- package/data/build/dist/host/cli-adapters/codex-driver.d.ts +11 -0
- package/data/build/dist/host/cli-adapters/codex-driver.js +166 -14
- package/data/build/dist/host/cli-adapters/driver.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/dsh-message-projector.d.ts +15 -0
- package/data/build/dist/host/cli-adapters/dsh-message-projector.js +120 -29
- package/data/build/dist/host/cli-adapters/dsh-tool-history.d.ts +4 -1
- package/data/build/dist/host/cli-adapters/dsh-tool-history.js +25 -7
- package/data/build/dist/host/cli-adapters/feature.js +74 -8
- package/data/build/dist/host/cli-adapters/gemini-driver.js +2 -2
- package/data/build/dist/host/cli-adapters/grok-driver.js +2 -2
- package/data/build/dist/host/cli-adapters/json-rpc-process.d.ts +4 -2
- package/data/build/dist/host/cli-adapters/json-rpc-process.js +8 -9
- package/data/build/dist/host/cli-adapters/kimi-driver.js +1 -1
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.d.ts +17 -0
- package/data/build/dist/host/cli-adapters/legacy-session-adapter.js +88 -0
- package/data/build/dist/host/cli-adapters/legacy-session-settings.d.ts +24 -0
- package/data/build/dist/host/cli-adapters/legacy-session-settings.js +162 -0
- package/data/build/dist/host/cli-adapters/official-provider-subscription.d.ts +29 -0
- package/data/build/dist/host/cli-adapters/official-provider-subscription.js +361 -0
- package/data/build/dist/host/cli-adapters/opencode-driver.d.ts +2 -0
- package/data/build/dist/host/cli-adapters/opencode-driver.js +97 -12
- package/data/build/dist/host/cli-adapters/pi-driver.js +69 -23
- package/data/build/dist/host/cli-adapters/provider-registry.d.ts +33 -0
- package/data/build/dist/host/cli-adapters/provider-registry.js +83 -0
- package/data/build/dist/host/cli-adapters/provider-subscription.d.ts +25 -3
- package/data/build/dist/host/cli-adapters/provider-subscription.js +346 -30
- package/data/build/dist/host/cli-adapters/registry.d.ts +6 -0
- package/data/build/dist/host/cli-adapters/registry.js +170 -13
- package/data/build/dist/host/cli-adapters/rpc-driver-utils.js +10 -0
- package/data/build/dist/host/cli-adapters/session-store.d.ts +7 -0
- package/data/build/dist/host/cli-adapters/session-store.js +39 -1
- package/data/build/dist/host/cli-adapters/standard-stream-driver.d.ts +3 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.d.ts +3 -0
- package/data/build/dist/host/cli-adapters/stream-normalizer.js +22 -2
- package/data/build/dist/host/control-api-client.d.ts +3 -3
- package/data/build/dist/host/control-api-client.js +2 -1
- package/data/build/dist/host/credential-store.js +11 -1
- package/data/build/dist/host/dsh-device-runtime.d.ts +4 -0
- package/data/build/dist/host/dsh-device-runtime.js +20 -9
- package/data/build/dist/host/dsh-runtime-version.d.ts +3 -2
- package/data/build/dist/host/dsh-runtime-version.js +71 -2
- package/data/build/dist/host/features/auth.js +8 -5
- package/data/build/dist/host/features/debug.js +1 -1
- package/data/build/dist/host/features/git-management.d.ts +5 -0
- package/data/build/dist/host/features/git-management.js +290 -0
- package/data/build/dist/host/features/host-status.js +1 -1
- package/data/build/dist/host/features/index.d.ts +1 -0
- package/data/build/dist/host/features/index.js +3 -0
- package/data/build/dist/host/features/terminal-process.js +1 -1
- package/data/build/dist/host/features/terminal-status.d.ts +3 -1
- package/data/build/dist/host/features/terminal-status.js +3 -1
- package/data/build/dist/host/index.d.ts +7 -3
- package/data/build/dist/host/index.js +79 -15
- package/data/build/dist/host/lan-access-dsh.js +18 -5
- package/data/build/dist/host/native-session-bridge.d.ts +23 -1
- package/data/build/dist/host/native-session-bridge.js +157 -10
- package/data/build/dist/host/rpc-table.d.ts +1 -1
- package/data/build/dist/host/rpc.js +60 -10
- package/data/build/dist/host/session-migration-repair.d.ts +19 -0
- package/data/build/dist/host/session-migration-repair.js +395 -0
- package/data/build/dist/host/settings.d.ts +8 -1
- package/data/build/dist/host/settings.js +94 -3
- package/data/build/dist/host/terminal/backends/tmux-backend.d.ts +1 -0
- package/data/build/dist/host/terminal/backends/tmux-backend.js +4 -2
- package/data/build/dist/host/terminal/controller-factory.d.ts +4 -0
- package/data/build/dist/host/terminal/controller-factory.js +26 -7
- package/data/build/dist/host/terminal/runtime-manager.d.ts +2 -1
- package/data/build/dist/host/terminal/runtime-manager.js +3 -0
- package/data/build/dist/host/terminal/startup.d.ts +2 -0
- package/data/build/dist/host/terminal/startup.js +2 -1
- package/data/build/dist/host/terminal/terminal-controller.d.ts +10 -3
- package/data/build/dist/host/terminal/terminal-controller.js +101 -15
- package/data/build/dist/host/terminal/terminal-process-service.js +3 -1
- package/data/build/dist/host/terminal/terminal-service.d.ts +2 -0
- package/data/build/dist/host/terminal/terminal-service.js +10 -0
- package/data/build/dist/index.d.ts +6 -2
- package/data/build/dist/index.js +8 -2
- package/data/build/dist/shared/contracts/cli-adapter.d.ts +14 -0
- package/data/build/dist/shared/contracts/config.d.ts +31 -1
- package/data/build/dist/shared/contracts/config.js +25 -0
- package/data/build/dist/shared/contracts/dsh-device.d.ts +13 -1
- package/data/build/dist/shared/contracts/errors.d.ts +1 -1
- package/data/build/dist/shared/contracts/feature.d.ts +6 -0
- package/data/build/dist/shared/contracts/git.d.ts +82 -0
- package/data/build/dist/shared/contracts/git.js +3 -0
- package/data/build/dist/shared/contracts/subscription.d.ts +46 -0
- package/data/build/dist/shared/contracts/terminal.d.ts +4 -1
- package/data/build/dist/shared/contracts/version.d.ts +2 -2
- package/data/build/dist/shared/contracts/version.js +4 -6
- package/data/build/dist/shared/debug.d.ts +14 -0
- package/data/build/dist/shared/debug.js +53 -0
- package/data/build/dist/shared/index.d.ts +7 -4
- package/data/build/dist/shared/index.js +2 -1
- package/data/build/dist/transport/debug.d.ts +1 -1
- package/data/build/dist/transport/debug.js +3 -30
- package/data/build/dist/transport/dsh-session.js +3 -3
- package/data/build/dist/typert.host.d.ts +1 -1
- package/data/build/dist/typert.host.js +6 -3
- package/data/build/dist/typert.remote-client.d.ts +11 -0
- package/data/build/dist/typert.remote-client.js +7 -0
- package/dsh.bundle.patch +1 -1
- package/package.json +13 -5
- package/profile/README.md +4 -4
- package/profile/package.json +6 -4
- package/profile/scripts/check-dsh-install.mjs +2 -2
- package/profile/version.json +2 -2
- package/scripts/check-dsh-install.mjs +2 -2
- package/version.json +2 -2
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { accepted } from '../settings-store.js';
|
|
2
|
+
import { debugInfo, debugWarn } from '../../shared/debug.js';
|
|
3
|
+
/** 0.1.7 Client ConfigForm 路由适配器。 */
|
|
4
|
+
export function createConfigFormSettingsStore(forms, namespace, options = {}) {
|
|
5
|
+
const form = forms.get(namespace);
|
|
6
|
+
if (form === undefined) {
|
|
7
|
+
return {
|
|
8
|
+
getSnapshot: () => ({ value: undefined, revision: undefined, writable: false, status: 'unavailable' }),
|
|
9
|
+
subscribe: () => () => undefined,
|
|
10
|
+
mutate: async () => false,
|
|
11
|
+
set: async () => false,
|
|
12
|
+
unset: async () => false,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
let snapshot = toStoreSnapshot(form.getSnapshot());
|
|
16
|
+
debugInfo('codingns4dsh: client config form selected', {
|
|
17
|
+
namespace,
|
|
18
|
+
status: snapshot.status,
|
|
19
|
+
revision: snapshot.revision,
|
|
20
|
+
writable: snapshot.writable,
|
|
21
|
+
});
|
|
22
|
+
const listeners = new Set();
|
|
23
|
+
const refresh = () => {
|
|
24
|
+
const next = toStoreSnapshot(form.getSnapshot());
|
|
25
|
+
// 自有 Host RPC 的写入答复可能先于原生 mirror 事件到达;旧 revision
|
|
26
|
+
// 只能被丢弃,不能把刚接受的模块开关覆盖回去。
|
|
27
|
+
if (snapshot.revision !== undefined && next.revision !== undefined && next.revision < snapshot.revision)
|
|
28
|
+
return;
|
|
29
|
+
if (sameSnapshot(snapshot, next))
|
|
30
|
+
return;
|
|
31
|
+
snapshot = next;
|
|
32
|
+
for (const listener of [...listeners])
|
|
33
|
+
listener();
|
|
34
|
+
};
|
|
35
|
+
const unsubscribeForm = form.subscribe(refresh);
|
|
36
|
+
const publishWrite = (response) => {
|
|
37
|
+
const next = {
|
|
38
|
+
value: toClientValue(response.value),
|
|
39
|
+
revision: response.revision,
|
|
40
|
+
writable: true,
|
|
41
|
+
status: 'ready',
|
|
42
|
+
};
|
|
43
|
+
if (sameSnapshot(snapshot, next))
|
|
44
|
+
return true;
|
|
45
|
+
snapshot = next;
|
|
46
|
+
for (const listener of [...listeners])
|
|
47
|
+
listener();
|
|
48
|
+
return true;
|
|
49
|
+
};
|
|
50
|
+
const write = async (operations, formWrite, formRetry = () => form.mutate(operations)) => {
|
|
51
|
+
if (options.writeUnfenced !== undefined) {
|
|
52
|
+
debugInfo('codingns4dsh: client settings host rpc write', {
|
|
53
|
+
namespace,
|
|
54
|
+
paths: operations.map((operation) => operation.path.join('.')),
|
|
55
|
+
});
|
|
56
|
+
const response = await options.writeUnfenced(operations);
|
|
57
|
+
debugInfo('codingns4dsh: client settings host rpc write accepted', {
|
|
58
|
+
namespace,
|
|
59
|
+
revision: response.revision,
|
|
60
|
+
});
|
|
61
|
+
return publishWrite(response);
|
|
62
|
+
}
|
|
63
|
+
const result = await writeWithRetry(formWrite, formRetry);
|
|
64
|
+
refresh();
|
|
65
|
+
return result;
|
|
66
|
+
};
|
|
67
|
+
return {
|
|
68
|
+
getSnapshot: () => snapshot,
|
|
69
|
+
subscribe: (listener) => { listeners.add(listener); return () => listeners.delete(listener); },
|
|
70
|
+
mutate: async (operations, revision) => {
|
|
71
|
+
return write(operations, () => form.mutate(operations, revision));
|
|
72
|
+
},
|
|
73
|
+
set: async (field, value) => {
|
|
74
|
+
return write([{ op: 'set', path: [field], value }], () => form.set(field, value), () => form.set(field, value));
|
|
75
|
+
},
|
|
76
|
+
unset: async (field) => {
|
|
77
|
+
return write([{ op: 'unset', path: [field] }], () => form.unset(field), () => form.unset(field));
|
|
78
|
+
},
|
|
79
|
+
dispose: () => {
|
|
80
|
+
unsubscribeForm();
|
|
81
|
+
listeners.clear();
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* ConfigForm 在 revision 过期时会返回 false,并先异步恢复 Host 快照。
|
|
87
|
+
* 设置页的编辑器不会感知这次恢复,因此立刻重试一次最新 revision,避免
|
|
88
|
+
* 用户看到控件可以操作却始终回弹到旧值。只重试一次,真正的拒绝仍然返回
|
|
89
|
+
* false,调用方可以显示明确错误。
|
|
90
|
+
*/
|
|
91
|
+
async function writeWithRetry(first, retry) {
|
|
92
|
+
const result = await accepted(first());
|
|
93
|
+
if (result)
|
|
94
|
+
return true;
|
|
95
|
+
debugWarn('codingns4dsh: client config form write rejected; retrying with latest revision');
|
|
96
|
+
const retried = await accepted(retry());
|
|
97
|
+
debugInfo('codingns4dsh: client config form write retry completed', { accepted: retried });
|
|
98
|
+
return retried;
|
|
99
|
+
}
|
|
100
|
+
function toStoreSnapshot(snapshot) {
|
|
101
|
+
const value = toClientValue(snapshot.value);
|
|
102
|
+
return {
|
|
103
|
+
value: value,
|
|
104
|
+
revision: snapshot.revision,
|
|
105
|
+
writable: snapshot.writable,
|
|
106
|
+
status: snapshot.status ?? 'ready',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
function toClientValue(value) {
|
|
110
|
+
return value === undefined
|
|
111
|
+
? undefined
|
|
112
|
+
: (({ cliSessions: _cliSessions, ...clientValue }) => clientValue)(value);
|
|
113
|
+
}
|
|
114
|
+
function sameSnapshot(left, right) {
|
|
115
|
+
return sameConfigValue(left.value, right.value)
|
|
116
|
+
&& left.revision === right.revision
|
|
117
|
+
&& left.writable === right.writable
|
|
118
|
+
&& left.status === right.status;
|
|
119
|
+
}
|
|
120
|
+
/** ConfigForm 可能在每次读取时返回新对象;按配置内容比较,避免无意义地唤醒所有消费者。 */
|
|
121
|
+
function sameConfigValue(left, right) {
|
|
122
|
+
if (Object.is(left, right))
|
|
123
|
+
return true;
|
|
124
|
+
if (left === null || right === null || typeof left !== 'object' || typeof right !== 'object')
|
|
125
|
+
return false;
|
|
126
|
+
if (Array.isArray(left) || Array.isArray(right)) {
|
|
127
|
+
if (!Array.isArray(left) || !Array.isArray(right) || left.length !== right.length)
|
|
128
|
+
return false;
|
|
129
|
+
return left.every((value, index) => sameConfigValue(value, right[index]));
|
|
130
|
+
}
|
|
131
|
+
const leftRecord = left;
|
|
132
|
+
const rightRecord = right;
|
|
133
|
+
const leftKeys = Object.keys(leftRecord);
|
|
134
|
+
const rightKeys = Object.keys(rightRecord);
|
|
135
|
+
if (leftKeys.length !== rightKeys.length)
|
|
136
|
+
return false;
|
|
137
|
+
return leftKeys.every((key) => Object.prototype.hasOwnProperty.call(rightRecord, key) && sameConfigValue(leftRecord[key], rightRecord[key]));
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=config-forms-adapter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface CodingNsConversationService {
|
|
2
|
+
registerTemporaryNode?: (definition: unknown) => (() => void) | void;
|
|
3
|
+
register?: (definition: unknown) => (() => void) | void;
|
|
4
|
+
}
|
|
5
|
+
/** 兼容不同版本的 Conversation 临时节点登记名。 */
|
|
6
|
+
export declare function registerConversationTemporaryNode(service: CodingNsConversationService, definition: unknown): () => void;
|
|
7
|
+
//# sourceMappingURL=conversation-adapter.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** 兼容不同版本的 Conversation 临时节点登记名。 */
|
|
2
|
+
export function registerConversationTemporaryNode(service, definition) {
|
|
3
|
+
const disposer = service.registerTemporaryNode?.(definition) ?? service.register?.(definition);
|
|
4
|
+
return typeof disposer === 'function' ? disposer : () => undefined;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=conversation-adapter.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** Locale 能力的内部最小接口,避免功能模块直接依赖 DSH 类型。 */
|
|
2
|
+
export interface CodingNsLocaleService<T = unknown> {
|
|
3
|
+
bind(namespace: string): unknown;
|
|
4
|
+
getSnapshot(): T;
|
|
5
|
+
subscribe(listener: () => void): () => void;
|
|
6
|
+
register(namespace: string, messages: Record<string, string>): unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function createLocaleService<T>(runtime: CodingNsLocaleService<T>): CodingNsLocaleService<T>;
|
|
9
|
+
//# sourceMappingURL=locale-adapter.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as primitives from '@deepseek-ai/dsh-client-ui-primitives';
|
|
2
|
+
type IconComponent = typeof primitives.IconPlusOutline16;
|
|
3
|
+
/**
|
|
4
|
+
* 图标导出兼容层。0.1.7 可能改名为 Regular/Medium,运行时优先使用新导出,
|
|
5
|
+
* 旧导出仍作为回退;业务组件不再直接判断 DSH 版本。
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolvePlusIcon(): IconComponent;
|
|
8
|
+
export declare function resolveChevronDownIcon(): IconComponent;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=primitives-adapter.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as primitives from '@deepseek-ai/dsh-client-ui-primitives';
|
|
2
|
+
/**
|
|
3
|
+
* 图标导出兼容层。0.1.7 可能改名为 Regular/Medium,运行时优先使用新导出,
|
|
4
|
+
* 旧导出仍作为回退;业务组件不再直接判断 DSH 版本。
|
|
5
|
+
*/
|
|
6
|
+
export function resolvePlusIcon() {
|
|
7
|
+
const value = primitives;
|
|
8
|
+
return value.IconPlusOutlineRegular ?? value.IconPlusOutlineMedium ?? primitives.IconPlusOutline16;
|
|
9
|
+
}
|
|
10
|
+
export function resolveChevronDownIcon() {
|
|
11
|
+
const value = primitives;
|
|
12
|
+
return value.IconChevronDownOutlineRegular ?? value.IconChevronDownOutlineMedium ?? primitives.IconChevronDownOutline14;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=primitives-adapter.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SettingsScope } from '@deepseek-ai/dsh-client-ui-settings/client';
|
|
2
|
+
import type { CodingNsSettings } from '../../shared/contracts/config.js';
|
|
3
|
+
import { type CodingNsSettingsOperation, type CodingNsSettingsSnapshot, type CodingNsSettingsStore } from '../settings-store.js';
|
|
4
|
+
/** 旧版 Client SettingsScope 到 Codingns4DSH 内部设置接口的适配器。 */
|
|
5
|
+
export declare function createLegacyClientSettingsStore(scope: SettingsScope<CodingNsSettings>): CodingNsSettingsStore<CodingNsSettings>;
|
|
6
|
+
export type CodingNsClientSettingsStore = CodingNsSettingsStore<CodingNsSettings>;
|
|
7
|
+
export type { CodingNsSettingsOperation, CodingNsSettingsSnapshot };
|
|
8
|
+
//# sourceMappingURL=settings-scope-adapter.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { accepted } from '../settings-store.js';
|
|
2
|
+
/** 旧版 Client SettingsScope 到 Codingns4DSH 内部设置接口的适配器。 */
|
|
3
|
+
export function createLegacyClientSettingsStore(scope) {
|
|
4
|
+
const store = {
|
|
5
|
+
getSnapshot: () => {
|
|
6
|
+
const snapshot = scope.getSnapshot();
|
|
7
|
+
return { value: snapshot.value, revision: snapshot.revision, writable: snapshot.writable, status: snapshot.status };
|
|
8
|
+
},
|
|
9
|
+
subscribe: (listener) => scope.subscribe(listener),
|
|
10
|
+
mutate: (operations, revision) => accepted(scope.mutate(operations, revision)),
|
|
11
|
+
set: (field, value) => accepted(scope.set(field, value)),
|
|
12
|
+
unset: (field) => accepted(scope.unset(field)),
|
|
13
|
+
};
|
|
14
|
+
return store;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=settings-scope-adapter.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface CodingNsSidebarService {
|
|
2
|
+
register?: (definition: unknown) => (() => void) | void;
|
|
3
|
+
registerTab?: (definition: unknown) => (() => void) | void;
|
|
4
|
+
open?: (id: string, options?: unknown) => void;
|
|
5
|
+
}
|
|
6
|
+
export declare function registerSidebarTab(service: CodingNsSidebarService, definition: unknown): () => void;
|
|
7
|
+
//# sourceMappingURL=sidebar-adapter.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface CodingNsThemeService<T = unknown> {
|
|
2
|
+
getTheme(): T;
|
|
3
|
+
subscribe(listener: () => void): () => void;
|
|
4
|
+
}
|
|
5
|
+
export declare function createThemeService<T>(runtime: CodingNsThemeService<T>): CodingNsThemeService<T>;
|
|
6
|
+
//# sourceMappingURL=theme-adapter.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CodingNsSettings } from '../../shared/contracts/config.js';
|
|
2
|
+
import type { CodingNsSettingsOperation, CodingNsSettingsStore } from '../settings-store.js';
|
|
3
|
+
/** 0.1.7 Config/SettingsForms 的最小结构化边界,避免业务代码绑定 DSH 类型包。 */
|
|
4
|
+
export interface DshHostConfigSettings {
|
|
5
|
+
describe(options?: {
|
|
6
|
+
readonly redactSecrets?: boolean;
|
|
7
|
+
}): readonly DshSettingsDescriptor[];
|
|
8
|
+
mutate(namespace: string, operations: readonly CodingNsSettingsOperation[], expectedRevision?: number): Promise<void>;
|
|
9
|
+
on?(event: 'settings/document-updated', listener: (namespace: string, revision: number) => void): () => void;
|
|
10
|
+
}
|
|
11
|
+
export interface DshSettingsDescriptor {
|
|
12
|
+
readonly ns: string;
|
|
13
|
+
readonly value: unknown;
|
|
14
|
+
readonly revision: number;
|
|
15
|
+
readonly writable?: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** 0.1.7 Host Config 路由适配器。 */
|
|
18
|
+
export declare function createConfigSettingsStore(settings: DshHostConfigSettings, namespace: string): CodingNsSettingsStore<CodingNsSettings>;
|
|
19
|
+
//# sourceMappingURL=config-forms-adapter.d.ts.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/** 0.1.7 Host Config 路由适配器。 */
|
|
2
|
+
export function createConfigSettingsStore(settings, namespace) {
|
|
3
|
+
const listeners = new Set();
|
|
4
|
+
const notify = () => { for (const listener of listeners)
|
|
5
|
+
listener(); };
|
|
6
|
+
const unsubscribeHost = settings.on?.('settings/document-updated', (updatedNamespace) => {
|
|
7
|
+
if (updatedNamespace === namespace)
|
|
8
|
+
notify();
|
|
9
|
+
});
|
|
10
|
+
const readSnapshot = () => {
|
|
11
|
+
const descriptor = settings.describe({ redactSecrets: true }).find((item) => item.ns === namespace);
|
|
12
|
+
if (descriptor === undefined)
|
|
13
|
+
return { value: undefined, revision: undefined, writable: false, status: 'unavailable' };
|
|
14
|
+
return { value: descriptor.value, revision: descriptor.revision, writable: descriptor.writable !== false, status: 'ready' };
|
|
15
|
+
};
|
|
16
|
+
let current = readSnapshot();
|
|
17
|
+
const refresh = () => {
|
|
18
|
+
const next = readSnapshot();
|
|
19
|
+
if (current.value === next.value && current.revision === next.revision && current.writable === next.writable && current.status === next.status)
|
|
20
|
+
return;
|
|
21
|
+
current = next;
|
|
22
|
+
notify();
|
|
23
|
+
};
|
|
24
|
+
return {
|
|
25
|
+
getSnapshot: () => current,
|
|
26
|
+
subscribe: (listener) => { listeners.add(listener); return () => listeners.delete(listener); },
|
|
27
|
+
mutate: async (operations, expectedRevision) => {
|
|
28
|
+
await settings.mutate(namespace, operations, expectedRevision);
|
|
29
|
+
refresh();
|
|
30
|
+
return true;
|
|
31
|
+
},
|
|
32
|
+
set: async (field, value) => {
|
|
33
|
+
await settings.mutate(namespace, [{ op: 'set', path: [field], value }]);
|
|
34
|
+
refresh();
|
|
35
|
+
return true;
|
|
36
|
+
},
|
|
37
|
+
unset: async (field) => {
|
|
38
|
+
await settings.mutate(namespace, [{ op: 'unset', path: [field] }]);
|
|
39
|
+
refresh();
|
|
40
|
+
return true;
|
|
41
|
+
},
|
|
42
|
+
dispose: () => { unsubscribeHost?.(); listeners.clear(); },
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=config-forms-adapter.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type CodingNsRpcTable } from '../../host/rpc-table.js';
|
|
2
|
+
/** 统一的内部 RPC 上下文;0.1.7 的 PeerScope 在边界层映射到 peer。 */
|
|
3
|
+
export interface CodingNsRpcContext {
|
|
4
|
+
readonly signal?: AbortSignal;
|
|
5
|
+
readonly peer?: {
|
|
6
|
+
readonly id?: string;
|
|
7
|
+
readonly scope?: unknown;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
export interface CodingNsRpcDispatchResult {
|
|
11
|
+
readonly ok: true;
|
|
12
|
+
readonly value: unknown;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 手写 HTTP、旧 Connection handler 和新 Peer-aware handler 共用的分发入口。
|
|
16
|
+
* 客户端不能通过 payload 自报 peer,peer 只来自宿主传入的 context。
|
|
17
|
+
*/
|
|
18
|
+
export declare function dispatchCodingNsRpc(table: CodingNsRpcTable, endpoint: string, payload: unknown, context?: CodingNsRpcContext): Promise<CodingNsRpcDispatchResult>;
|
|
19
|
+
//# sourceMappingURL=connection-rpc-adapter.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { CodingNsRpcError } from '../../host/rpc-table.js';
|
|
2
|
+
/**
|
|
3
|
+
* 手写 HTTP、旧 Connection handler 和新 Peer-aware handler 共用的分发入口。
|
|
4
|
+
* 客户端不能通过 payload 自报 peer,peer 只来自宿主传入的 context。
|
|
5
|
+
*/
|
|
6
|
+
export async function dispatchCodingNsRpc(table, endpoint, payload, context = {}) {
|
|
7
|
+
const target = table.resolve(endpoint);
|
|
8
|
+
if (target === null)
|
|
9
|
+
throw new CodingNsRpcError('CODINGNS_RPC_NOT_FOUND', `未知 Codingns4DSH RPC: ${endpoint}`);
|
|
10
|
+
const value = await target.handler(target.action, payload, context);
|
|
11
|
+
return { ok: true, value };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=connection-rpc-adapter.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SettingsScope } from '@deepseek-ai/dsh-settings';
|
|
2
|
+
import type { CodingNsSettings } from '../../shared/contracts/config.js';
|
|
3
|
+
import type { CodingNsSettingsOperation, CodingNsSettingsSnapshot, CodingNsSettingsStore } from '../settings-store.js';
|
|
4
|
+
/** 旧版 Host SettingsScope 到 Codingns4DSH 内部设置接口的适配器。 */
|
|
5
|
+
export declare function createLegacyHostSettingsStore<T>(scope: SettingsScope<T>): CodingNsSettingsStore<T>;
|
|
6
|
+
export type CodingNsHostSettingsStore = CodingNsSettingsStore<CodingNsSettings>;
|
|
7
|
+
export type { CodingNsSettingsOperation, CodingNsSettingsSnapshot };
|
|
8
|
+
//# sourceMappingURL=settings-scope-adapter.d.ts.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/** 旧版 Host SettingsScope 到 Codingns4DSH 内部设置接口的适配器。 */
|
|
2
|
+
export function createLegacyHostSettingsStore(scope) {
|
|
3
|
+
const listeners = new Set();
|
|
4
|
+
const unsubscribe = scope.watch(() => {
|
|
5
|
+
for (const listener of listeners)
|
|
6
|
+
listener();
|
|
7
|
+
});
|
|
8
|
+
const store = {
|
|
9
|
+
getSnapshot: () => ({ value: scope.get(), revision: undefined, writable: true, status: 'ready' }),
|
|
10
|
+
subscribe: (listener) => {
|
|
11
|
+
listeners.add(listener);
|
|
12
|
+
return () => listeners.delete(listener);
|
|
13
|
+
},
|
|
14
|
+
mutate: async (operations) => {
|
|
15
|
+
const patch = operationsToPatch(operations);
|
|
16
|
+
await scope.update(patch);
|
|
17
|
+
return true;
|
|
18
|
+
},
|
|
19
|
+
set: async (field, value) => {
|
|
20
|
+
await scope.update({ [field]: value });
|
|
21
|
+
return true;
|
|
22
|
+
},
|
|
23
|
+
unset: async (field) => {
|
|
24
|
+
const current = scope.get();
|
|
25
|
+
const next = { ...current };
|
|
26
|
+
delete next[field];
|
|
27
|
+
await scope.replace(next);
|
|
28
|
+
return true;
|
|
29
|
+
},
|
|
30
|
+
dispose: () => unsubscribe(),
|
|
31
|
+
};
|
|
32
|
+
return store;
|
|
33
|
+
}
|
|
34
|
+
function operationsToPatch(operations) {
|
|
35
|
+
const patch = {};
|
|
36
|
+
for (const operation of operations) {
|
|
37
|
+
if (operation.path.length !== 1)
|
|
38
|
+
throw new Error('旧版 SettingsScope 适配器只支持一级设置字段');
|
|
39
|
+
const field = operation.path[0];
|
|
40
|
+
if (operation.op === 'unset')
|
|
41
|
+
delete patch[field];
|
|
42
|
+
else
|
|
43
|
+
patch[field] = operation.value;
|
|
44
|
+
}
|
|
45
|
+
return patch;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=settings-scope-adapter.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface CodingNsTypertHostService {
|
|
2
|
+
register?: (manifest: unknown) => (() => void) | void;
|
|
3
|
+
remote?: unknown;
|
|
4
|
+
}
|
|
5
|
+
export declare function createTypertHostService(runtime: CodingNsTypertHostService): CodingNsTypertHostService;
|
|
6
|
+
//# sourceMappingURL=typert-adapter.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { DshCapabilityRegistry, DshCapabilityRegistryError } from './registry.js';
|
|
2
|
+
export { createDshCapabilityRegistry } from './routes.js';
|
|
3
|
+
export { accepted, type CodingNsSettingsOperation, type CodingNsSettingsSnapshot, type CodingNsSettingsStore, } from './settings-store.js';
|
|
4
|
+
export { DSH_CAPABILITY_MATRIX, type DshCapabilityMatrixRoute } from './matrix.js';
|
|
5
|
+
export { createCapabilityProfile, type DshCapabilityDiagnostic, type DshCapabilityId, type DshCapabilityProfile, type DshCapabilityResolution, type DshCapabilityRoute, type DshCapabilityRuntime, type DshCapabilityRouteStatus, type DshCapabilityResolutionStatus, type FeatureCapabilityRequirement, } from './types.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { DshCapabilityRegistry, DshCapabilityRegistryError } from './registry.js';
|
|
2
|
+
export { createDshCapabilityRegistry } from './routes.js';
|
|
3
|
+
export { accepted, } from './settings-store.js';
|
|
4
|
+
export { DSH_CAPABILITY_MATRIX } from './matrix.js';
|
|
5
|
+
export { createCapabilityProfile, } from './types.js';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DshCapabilityId, DshCapabilityRouteStatus, DshCapabilityRuntime } from './types.js';
|
|
2
|
+
export interface DshCapabilityMatrixRoute {
|
|
3
|
+
readonly capability: DshCapabilityId;
|
|
4
|
+
readonly routeId: string;
|
|
5
|
+
readonly supportedDsh: string;
|
|
6
|
+
readonly runtime: DshCapabilityRuntime;
|
|
7
|
+
readonly status: DshCapabilityRouteStatus;
|
|
8
|
+
readonly introducedIn: string;
|
|
9
|
+
readonly removableAfter?: string;
|
|
10
|
+
readonly replacement?: DshCapabilityId;
|
|
11
|
+
readonly consumers: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
/** 能力版本矩阵是运行时路由和版本检查的共同事实源。 */
|
|
14
|
+
export declare const DSH_CAPABILITY_MATRIX: readonly DshCapabilityMatrixRoute[];
|
|
15
|
+
//# sourceMappingURL=matrix.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** 能力版本矩阵是运行时路由和版本检查的共同事实源。 */
|
|
2
|
+
export const DSH_CAPABILITY_MATRIX = [
|
|
3
|
+
route('settings.store', 'legacy-settings-scope', 'host', '>=0.1.5-rc.3 <=0.1.6', 'supported', ['host/settings.ts', 'host/features/*']),
|
|
4
|
+
route('settings.store', 'config-forms', 'host', '>=0.1.7-rc.2 <=0.1.7-rc.2', 'supported', ['host/settings.ts', 'client/settings-bridge.ts']),
|
|
5
|
+
route('connection.rpc', 'legacy-rpc-handler', 'host', '>=0.1.5-rc.3 <=0.1.6', 'supported', ['host/rpc.ts']),
|
|
6
|
+
route('connection.rpc', 'peer-aware-rpc-handler', 'host', '>=0.1.7-rc.2 <=0.1.7-rc.2', 'supported', ['host/rpc.ts']),
|
|
7
|
+
route('connection.peer', 'no-peer-context', 'host', '>=0.1.5-rc.3 <=0.1.6', 'deprecated', ['host/rpc.ts'], 'connection.peer', '0.1.8-0'),
|
|
8
|
+
route('connection.peer', 'peer-scope', 'host', '>=0.1.7-rc.2 <=0.1.7-rc.2', 'supported', ['host/rpc.ts']),
|
|
9
|
+
route('ui.icon.plus', 'fixed-plus-icon', 'client', '>=0.1.5-rc.3 <=0.1.6', 'supported', ['client/terminal/xterm-view.ts']),
|
|
10
|
+
route('ui.icon.plus', 'regular-plus-icon', 'client', '>=0.1.7-rc.2 <=0.1.7-rc.2', 'supported', ['client/terminal/xterm-view.ts']),
|
|
11
|
+
route('ui.icon.chevron', 'fixed-chevron-icon', 'client', '>=0.1.5-rc.3 <=0.1.6', 'supported', ['client/terminal/ui.ts']),
|
|
12
|
+
route('ui.icon.chevron', 'regular-chevron-icon', 'client', '>=0.1.7-rc.2 <=0.1.7-rc.2', 'supported', ['client/terminal/ui.ts']),
|
|
13
|
+
route('locale.runtime', 'locale-runtime', 'client', '>=0.1.5-rc.3 <=0.1.7-rc.2', 'supported', ['client/locale.ts']),
|
|
14
|
+
route('theme.runtime', 'theme-runtime', 'client', '>=0.1.5-rc.3 <=0.1.7-rc.2', 'supported', ['client/theme.ts']),
|
|
15
|
+
route('conversation.tool-call', 'conversation-events', 'client', '>=0.1.5-rc.3 <=0.1.7-rc.2', 'supported', ['client/external-tool-stream.ts']),
|
|
16
|
+
route('sidebar.right', 'sidebar-right-tabs', 'client', '>=0.1.5-rc.3 <=0.1.7-rc.2', 'supported', ['client/terminal/ui.ts']),
|
|
17
|
+
route('typert.remote', 'remote-result', 'host', '>=0.1.5-rc.3 <=0.1.7-rc.2', 'supported', ['host/terminal/terminal-controller.ts', 'client/terminal/model.ts']),
|
|
18
|
+
];
|
|
19
|
+
function route(capability, routeId, runtime, supportedDsh, status, consumers, replacement, removableAfter) {
|
|
20
|
+
return {
|
|
21
|
+
capability,
|
|
22
|
+
routeId,
|
|
23
|
+
runtime,
|
|
24
|
+
supportedDsh,
|
|
25
|
+
status,
|
|
26
|
+
introducedIn: supportedDsh.slice(2).split(' ')[0] ?? supportedDsh,
|
|
27
|
+
...(replacement === undefined ? {} : { replacement }),
|
|
28
|
+
...(removableAfter === undefined ? {} : { removableAfter }),
|
|
29
|
+
consumers,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=matrix.js.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type DshCapabilityDiagnostic, type DshCapabilityId, type DshCapabilityProfile, type DshCapabilityRoute, type DshCapabilityRuntime } from './types.js';
|
|
2
|
+
export type DshCapabilityRegistryErrorCode = 'CAPABILITY_INVALID_ROUTE' | 'CAPABILITY_VERSION_UNSUPPORTED' | 'CAPABILITY_DETECT_FAILED' | 'CAPABILITY_ROUTE_CONFLICT' | 'CAPABILITY_UNAVAILABLE';
|
|
3
|
+
export declare class DshCapabilityRegistryError extends Error {
|
|
4
|
+
readonly code: DshCapabilityRegistryErrorCode;
|
|
5
|
+
readonly capability: DshCapabilityId | null;
|
|
6
|
+
constructor(code: DshCapabilityRegistryErrorCode, message: string, capability?: DshCapabilityId | null, options?: ErrorOptions);
|
|
7
|
+
}
|
|
8
|
+
/** 集中解析 DSH 能力路由;Profile 生成后不可变,避免运行期替换半初始化服务。 */
|
|
9
|
+
export declare class DshCapabilityRegistry {
|
|
10
|
+
readonly dshVersion: string;
|
|
11
|
+
readonly runtime: DshCapabilityRuntime;
|
|
12
|
+
private readonly routes;
|
|
13
|
+
private profile;
|
|
14
|
+
constructor(dshVersion: string, runtime: DshCapabilityRuntime);
|
|
15
|
+
register<T>(route: DshCapabilityRoute<T>): void;
|
|
16
|
+
registerMany(routes: readonly DshCapabilityRoute<unknown>[]): void;
|
|
17
|
+
resolve(context: unknown): DshCapabilityProfile;
|
|
18
|
+
getProfile(context: unknown): DshCapabilityProfile;
|
|
19
|
+
require<T>(profile: DshCapabilityProfile, capability: DshCapabilityId): T;
|
|
20
|
+
explain(profile: DshCapabilityProfile, capability?: DshCapabilityId): readonly DshCapabilityDiagnostic[];
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=registry.d.ts.map
|