@dsh-plugin/dsh-loader 1.1.0-dev.32287576957 → 1.2.0-dev.32741629392
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/dist/adapters/dsh-1-x.js +4 -0
- package/dist/adapters/dsh-1-x.js.map +1 -1
- package/dist/api.d.ts +2 -0
- package/dist/api.js +18 -2
- package/dist/api.js.map +1 -1
- package/dist/client.d.ts +0 -1
- package/dist/client.js +13 -3
- package/dist/client.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/patch.d.ts +112 -0
- package/dist/patch.js +179 -0
- package/dist/patch.js.map +1 -0
- package/dist/services/dsh-symbols.d.ts +70 -0
- package/dist/services/dsh-symbols.js +82 -0
- package/dist/services/dsh-symbols.js.map +1 -0
- package/dist/services/llm.d.ts +30 -0
- package/dist/services/llm.js +35 -0
- package/dist/services/llm.js.map +1 -0
- package/dist/services/registry.d.ts +144 -0
- package/dist/services/registry.js +209 -0
- package/dist/services/registry.js.map +1 -0
- package/dist/services/settings.d.ts +6 -0
- package/dist/services/settings.js +29 -1
- package/dist/services/settings.js.map +1 -1
- package/dist/services/web.js +20 -4
- package/dist/services/web.js.map +1 -1
- package/dist/setup.js +17 -1
- package/dist/setup.js.map +1 -1
- package/dist/types.d.ts +55 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/lib/client.js +2775 -4
- package/lib/client.js.map +1 -1
- package/lib/types/adapters/dsh-1-x.d.ts +23 -0
- package/lib/types/adapters/index.d.ts +22 -0
- package/lib/types/client-ui.d.ts +40 -0
- package/lib/types/client.d.ts +156 -0
- package/lib/types/patch.d.ts +112 -0
- package/lib/types/registry.d.ts +35 -0
- package/lib/types/services/dsh-symbols.d.ts +70 -0
- package/lib/types/services/llm.d.ts +30 -0
- package/lib/types/services/registry.d.ts +144 -0
- package/lib/types/services/settings.d.ts +47 -0
- package/lib/types/types.d.ts +166 -0
- package/lib/types/ui/anchors.d.ts +56 -0
- package/lib/types/ui/components.d.ts +159 -0
- package/lib/types/ui/icons.d.ts +142 -0
- package/lib/types/ui/index.d.ts +30 -0
- package/lib/types/ui/menu.d.ts +104 -0
- package/lib/types/ui/slots.d.ts +152 -0
- package/lib/types/ui/style.d.ts +97 -0
- package/lib/types/version.d.ts +2 -0
- package/package.json +42 -9
- package/src/stable/compaction-basic.d.ts +1 -0
- package/src/stable/compaction-basic.js +5 -0
- package/src/stable/credentials.d.ts +1 -0
- package/src/stable/credentials.js +5 -0
- package/src/stable/subagent.d.ts +1 -0
- package/src/stable/subagent.js +5 -0
- package/src/stable/timeout.d.ts +1 -0
- package/src/stable/timeout.js +5 -0
package/dist/adapters/dsh-1-x.js
CHANGED
|
@@ -40,6 +40,10 @@ export const hostPackageAliases = {
|
|
|
40
40
|
'@dsh-plugin/dsh-loader/llm': '@deepseek-ai/dsh-llm',
|
|
41
41
|
'@dsh-plugin/dsh-loader/agent': '@deepseek-ai/dsh-agent',
|
|
42
42
|
'@dsh-plugin/dsh-loader/settings': '@deepseek-ai/dsh-settings',
|
|
43
|
+
'@dsh-plugin/dsh-loader/timeout': '@deepseek-ai/dsh-timeout',
|
|
44
|
+
'@dsh-plugin/dsh-loader/subagent': '@deepseek-ai/dsh-subagent',
|
|
45
|
+
'@dsh-plugin/dsh-loader/credentials': '@deepseek-ai/dsh-credentials',
|
|
46
|
+
'@dsh-plugin/dsh-loader/compaction-basic': '@deepseek-ai/dsh-compaction-basic',
|
|
43
47
|
};
|
|
44
48
|
/**
|
|
45
49
|
* Install a Module._resolveFilename hook that maps old package names to
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dsh-1-x.js","sourceRoot":"","sources":["../../src/adapters/dsh-1-x.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,wDAAwD;AACxD,gEAAgE;AAChE,+DAA+D;AAC/D,4DAA4D;AAC5D,+EAA+E;AAC/E,2EAA2E;AAC3E,2DAA2D;AAC3D,uEAAuE;AACvE,uEAAuE;AACvE,gEAAgE;AAChE,EAAE;AACF,0EAA0E;AAC1E,2EAA2E;AAC3E,4DAA4D;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAGjF,iEAAiE;AACjE,2EAA2E;AAC3E,wEAAwE;AACxE,4EAA4E;AAC5E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,QAAQ,GAAG,qBAAqB,CAAC;AAC9C,MAAM,CAAC,MAAM,IAAI,GAAG,SAAS,CAAC;AAE9B,6EAA6E;AAC7E,4BAA4B;AAC5B,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C,wEAAwE;AACxE,yEAAyE;AACzE,2EAA2E;AAC3E,qEAAqE;AACrE,EAAE;AACF,8DAA8D;AAC9D,0EAA0E;AAC1E,wEAAwE;AACxE,cAAc;AACd,MAAM,CAAC,MAAM,kBAAkB,GAA2B;IACxD,8BAA8B,EAAE,wBAAwB;IACxD,4BAA4B,EAAE,sBAAsB;IACpD,8BAA8B,EAAE,wBAAwB;IACxD,iCAAiC,EAAE,2BAA2B;CAC/
|
|
1
|
+
{"version":3,"file":"dsh-1-x.js","sourceRoot":"","sources":["../../src/adapters/dsh-1-x.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type RegistryModules } from './services/registry.js';
|
|
1
2
|
import type { CordisContext, AdapterFactory, HostAdapter, HostAPI } from './types.js';
|
|
2
3
|
/**
|
|
3
4
|
* @param opts
|
|
@@ -10,4 +11,5 @@ export declare function createHostAPI(opts: {
|
|
|
10
11
|
exposeAllNamespaces?: boolean;
|
|
11
12
|
whitelist?: Set<string>;
|
|
12
13
|
hostPackageAliases?: Record<string, string>;
|
|
14
|
+
registryModules?: RegistryModules;
|
|
13
15
|
}): HostAPI;
|
package/dist/api.js
CHANGED
|
@@ -10,12 +10,16 @@ import { LOADER_VERSION } from './version.js';
|
|
|
10
10
|
import { createSettingsAPI } from './services/settings.js';
|
|
11
11
|
import { createWebAPI } from './services/web.js';
|
|
12
12
|
import { createServicesAPI } from './services/services.js';
|
|
13
|
+
import { createRegistryAPI } from './services/registry.js';
|
|
14
|
+
import { createLlmAPI } from './services/llm.js';
|
|
15
|
+
import { createDshSymbolsAPI } from './services/dsh-symbols.js';
|
|
16
|
+
import { createPatchAPI } from './patch.js';
|
|
13
17
|
import { installHostPackageAliases } from './adapters/dsh-1-x.js';
|
|
14
18
|
/**
|
|
15
19
|
* @param opts
|
|
16
20
|
*/
|
|
17
21
|
export function createHostAPI(opts) {
|
|
18
|
-
const { ctx, dshVersion, factory, adapter, exposeAllNamespaces = false, whitelist, hostPackageAliases = {}, } = opts;
|
|
22
|
+
const { ctx, dshVersion, factory, adapter, exposeAllNamespaces = false, whitelist, hostPackageAliases = {}, registryModules, } = opts;
|
|
19
23
|
const base = {
|
|
20
24
|
version: LOADER_VERSION,
|
|
21
25
|
dshVersion,
|
|
@@ -23,9 +27,17 @@ export function createHostAPI(opts) {
|
|
|
23
27
|
};
|
|
24
28
|
// Adapters may override any capability (design.md §4.4 HostAdapter.{settings,
|
|
25
29
|
// web, services}); otherwise the default stable impl is used.
|
|
26
|
-
const settings = adapter?.settings ??
|
|
30
|
+
const settings = adapter?.settings ??
|
|
31
|
+
createSettingsAPI({ ctx, exposeAllNamespaces, whitelist, module: registryModules?.settings });
|
|
27
32
|
const web = adapter?.web ?? createWebAPI({ ctx });
|
|
28
33
|
const services = adapter?.services ?? createServicesAPI({ ctx });
|
|
34
|
+
// `patch` is environment-agnostic and version-independent (the protocol never
|
|
35
|
+
// touches dsh shapes), so no adapter override seam is needed. `registry` DOES
|
|
36
|
+
// name private dsh shapes, so adapters may replace it wholesale.
|
|
37
|
+
const patch = createPatchAPI();
|
|
38
|
+
const registry = adapter?.registry ?? createRegistryAPI({ ctx, modules: registryModules });
|
|
39
|
+
const llm = createLlmAPI({ module: registryModules?.llm });
|
|
40
|
+
const dsh = createDshSymbolsAPI({ modules: registryModules });
|
|
29
41
|
// Runtime host package-name alias registration. The adapter's apply()
|
|
30
42
|
// installs the static set at boot; this method lets plugins add more
|
|
31
43
|
// aliases at runtime (e.g. for packages the adapter didn't know about).
|
|
@@ -40,6 +52,10 @@ export function createHostAPI(opts) {
|
|
|
40
52
|
settings,
|
|
41
53
|
web,
|
|
42
54
|
services,
|
|
55
|
+
patch,
|
|
56
|
+
registry,
|
|
57
|
+
llm,
|
|
58
|
+
dsh,
|
|
43
59
|
registerPackageAlias,
|
|
44
60
|
};
|
|
45
61
|
}
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAC9E,oEAAoE;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAWlE;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,0EAA0E;AAC1E,8EAA8E;AAC9E,oEAAoE;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAA0C,MAAM,wBAAwB,CAAC;AACnG,OAAO,EAAE,YAAY,EAAe,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAsB,MAAM,2BAA2B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAWlE;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAS7B;IACC,MAAM,EACJ,GAAG,EACH,UAAU,EACV,OAAO,EACP,OAAO,EACP,mBAAmB,GAAG,KAAK,EAC3B,SAAS,EACT,kBAAkB,GAAG,EAAE,EACvB,eAAe,GAChB,GAAG,IAAI,CAAC;IAET,MAAM,IAAI,GAAG;QACX,OAAO,EAAE,cAAc;QACvB,UAAU;QACV,cAAc,EAAE,OAAO,CAAC,QAAQ;KACjC,CAAC;IAEF,8EAA8E;IAC9E,8DAA8D;IAC9D,MAAM,QAAQ,GACZ,OAAO,EAAE,QAAQ;QACjB,iBAAiB,CAAC,EAAE,GAAG,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,CAAC,CAAC;IAChG,MAAM,GAAG,GAAW,OAAO,EAAE,GAAG,IAAI,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAgB,OAAO,EAAE,QAAQ,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;IAC9E,8EAA8E;IAC9E,8EAA8E;IAC9E,iEAAiE;IACjE,MAAM,KAAK,GAAa,cAAc,EAAE,CAAC;IACzC,MAAM,QAAQ,GACX,OAAO,EAAE,QAAoC,IAAI,iBAAiB,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IACzG,MAAM,GAAG,GAAW,YAAY,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,MAAM,GAAG,GAAkB,mBAAmB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAE7E,sEAAsE;IACtE,qEAAqE;IACrE,wEAAwE;IACxE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACvE,MAAM,oBAAoB,GAAG,CAAC,OAAe,EAAE,OAAe,EAAQ,EAAE;QACtE,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzC,4CAA4C;QAC5C,yBAAyB,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC;IAEF,OAAO;QACL,GAAG,IAAI;QACP,QAAQ;QACR,GAAG;QACH,QAAQ;QACR,KAAK;QACL,QAAQ;QACR,GAAG;QACH,GAAG;QACH,oBAAoB;KACrB,CAAC;AACJ,CAAC"}
|
package/dist/client.d.ts
CHANGED
package/dist/client.js
CHANGED
|
@@ -18,6 +18,15 @@
|
|
|
18
18
|
import { LOADER_VERSION, LOG_PREFIX } from './version.js';
|
|
19
19
|
import { clientAdapters } from './adapters/index.js';
|
|
20
20
|
import { BRIDGE_PREFIX } from './adapters/dsh-1-x.js';
|
|
21
|
+
/**
|
|
22
|
+
* The ambient browser `window`, when this module runs in a browser-like realm.
|
|
23
|
+
* Read off `globalThis` so no DOM lib and no global declaration is required.
|
|
24
|
+
*/
|
|
25
|
+
function ambientWindow() {
|
|
26
|
+
const scope = globalThis;
|
|
27
|
+
const found = scope.window;
|
|
28
|
+
return typeof found === 'object' && found !== null ? found : undefined;
|
|
29
|
+
}
|
|
21
30
|
export class ModuleNotFoundError extends Error {
|
|
22
31
|
specifier;
|
|
23
32
|
constructor(specifier) {
|
|
@@ -109,7 +118,7 @@ export function createClientAPI(opts = {}) {
|
|
|
109
118
|
* Install dshloader into a browser-like environment.
|
|
110
119
|
*/
|
|
111
120
|
export function installClient(opts = {}) {
|
|
112
|
-
const win = opts.window ?? (
|
|
121
|
+
const win = opts.window ?? ambientWindow();
|
|
113
122
|
if (win === undefined)
|
|
114
123
|
return undefined;
|
|
115
124
|
const dshVersion = opts.dshVersion ?? win.__DSHLOADER_VERSION__;
|
|
@@ -289,7 +298,8 @@ export function installSettingsFetchInterceptor(win, bridgePrefix = BRIDGE_PREFI
|
|
|
289
298
|
export const name = '@dsh-plugin/dsh-loader';
|
|
290
299
|
export const inject = [];
|
|
291
300
|
export function apply(ctx) {
|
|
292
|
-
|
|
293
|
-
|
|
301
|
+
const win = ambientWindow();
|
|
302
|
+
if (win !== undefined)
|
|
303
|
+
installClient({ window: win, clientCtx: ctx });
|
|
294
304
|
}
|
|
295
305
|
//# sourceMappingURL=client.js.map
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,oBAAoB;AACpB,6EAA6E;AAC7E,yBAAyB;AACzB,6EAA6E;AAC7E,0EAA0E;AAC1E,oCAAoC;AACpC,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,kDAAkD;AAClD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,EAAE;AACF,yEAAyE;AACzE,oBAAoB;AACpB,6EAA6E;AAC7E,yBAAyB;AACzB,6EAA6E;AAC7E,0EAA0E;AAC1E,oCAAoC;AACpC,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,2EAA2E;AAC3E,4EAA4E;AAC5E,EAAE;AACF,6EAA6E;AAC7E,kDAAkD;AAClD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AA0BtD;;;GAGG;AACH,SAAS,aAAa;IACpB,MAAM,KAAK,GAAG,UAAkC,CAAC;IACjD,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC,CAAC,CAAE,KAA6B,CAAC,CAAC,CAAC,SAAS,CAAC;AAClG,CAAC;AAED,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,SAAS,CAAS;IAElB,YAAY,SAAiB;QAC3B,KAAK,CAAC,GAAG,UAAU,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AASD;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,UAAmB;IAC5C,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAeD;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAI,GAAwB,EAAE;IAC5D,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE;QACxD,MAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,yEAAyE;IACzE,0EAA0E;IAC1E,mCAAmC;IACnC,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,YAAY,GAAG;QACvD,CAAC,CAAC,IAAI,CAAC,cAAc;QACrB,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;IAEvD,MAAM,GAAG,GAAG;QACV,OAAO,EAAE,cAAc;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;QAEnC,OAAO,CAAC,SAAiB;YACvB,IAAI,OAAO,SAAS,KAAK,QAAQ;gBAAE,MAAM,IAAI,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YACpF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,mBAAmB,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC;YACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,mBAAmB,CAAC,KAAa,EAAE,MAAc;YAC/C,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED;;;;;;WAMG;QACH,oBAAoB,CAAC,OAAe,EAAE,OAAe;YACnD,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACvC,CAAC;QAED;;;;;;;;;WASG;QACH,QAAQ,EAAE;YACR,GAAG,CAAC,IAAY;gBACd,IAAI,SAAS,KAAK,SAAS,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,UAAU;oBAAE,OAAO,SAAS,CAAC;gBACrF,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;SACF;QAED,GAAG,EAAE,IAAI,CAAC,WAAW;YACnB,CAAC,CAAC;gBACE,QAAQ,EAAE;oBACR,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,WAAY,CAAC,QAAQ,EAAE;oBAC5C,MAAM,EAAE,CAAC,EAAU,EAAE,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;oBAC5F,OAAO,EAAE,CAAC,EAAU,EAAE,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;oBAC9F,MAAM,EAAE,CAAC,EAAU,EAAE,GAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;iBACrF;aACF;YACH,CAAC,CAAC,SAAS;KACd,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAYD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,IAAI,GAAsB,EAAE;IACxD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,IAAI,aAAa,EAAE,CAAC;IAC3C,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAExC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,qBAAqB,CAAC;IAChE,MAAM,OAAO,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,CAAC;IAC3D,wEAAwE;IACxE,sEAAsE;IACtE,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;QACxB,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC;YAAE,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IAED,iEAAiE;IACjE,MAAM,mBAAmB,GAAG,OAAO,CACjC,IAAI,CAAC,mBAAmB,IAAI,GAAG,CAAC,oBAAoB,EAAE,mBAAmB,CAC1E,CAAC;IACF,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,IAAI,aAAa,CAAC;IAE5D,MAAM,WAAW,GAAG,mBAAmB;QACrC,CAAC,CAAC;YACE,QAAQ,EAAE,GAAG,EAAE,CACb,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,oBAAoB,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACnH,KAAK,EAAE,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CACvC,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,aAAa,IAAI,EAAE,EAAE;gBAC5C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SAC3B;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,GAAG,GAAG,eAAe,CAAC;QAC1B,UAAU;QACV,cAAc,EAAE,OAAO,CAAC,QAAQ;QAChC,aAAa;QACb,cAAc;QACd,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,oBAAoB,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7E,WAAW;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IACH,GAAG,CAAC,aAAa,GAAG,GAAG,CAAC;IAExB,mEAAmE;IACnE,qEAAqE;IACrE,uEAAuE;IACvE,oDAAoD;IACpD,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC;IACpC,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,IAAI,GAAG,SAAS,aAAa,CAAC,OAAyE;YAC5G,MAAM,cAAc,GAAG,CAAC,OAA8B,EAAE,EAAE;gBACxD,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE;oBACtC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACxC,OAAO,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC;gBACjC,CAAC,CAAC;gBACF,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACzC,CAAC,CAAC;YACF,OAAO,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAChD,KAAK,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC;gBACV,EAAE,EAAE,OAAO;gBACX,OAAO,EAAE,CAAC,OAA8B,EAAE,EAAE;oBAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC5B,0DAA0D;oBAC1D,IAAI,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;wBACxF,OAAO,EAAE,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC;oBACtD,CAAC;oBACD,OAAO,GAAG,CAAC;gBACb,CAAC;aACF,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,mBAAmB,EAAE,CAAC;QACxB,+BAA+B,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,qEAAqE,CAAC,CAAC;IACnG,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,+BAA+B,CAC7C,GAAwB,EACxB,YAAY,GAAG,aAAa;IAE5B,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU;QAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IACrD,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC;IAChC,4EAA4E;IAC5E,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,GAAG,CAAC,KAAK,GAAG,KAAK,UAAU,cAAc,CAAgB,KAAU,EAAE,IAAU;QAC7E,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,KAA0B,CAAC,GAAG,CAAC;YACpF,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,kBAAkB,CAAC,CAAC,QAAQ,CAAC;QAC7F,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;QAErD,gEAAgE;QAChE,IAAI,QAAQ,KAAK,wBAAwB,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,UAAU,GAAG,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;oBAAE,OAAO,QAAQ,CAAC;gBAChD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC7B,IAAI,OAAO,GAAG,EAAE,EAAE,KAAK,QAAQ;wBAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,CAAC;gBACD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,YAAY,oBAAoB,EAAE;oBAChF,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;iBACxC,CAAC,CAAC;gBACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;gBACrC,IAAI,SAAS,EAAE,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;oBAAE,OAAO,QAAQ,CAAC;gBACpF,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACtE,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,GAAmB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC3G,MAAM,YAAY,GAAG,GAAG,CAAC,QAAS,CAAC;gBACnC,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,EAC5G,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACjE,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,IACE,CAAC,QAAQ,KAAK,sBAAsB,IAAI,QAAQ,KAAK,sBAAsB,IAAI,QAAQ,KAAK,uBAAuB,CAAC;YACpH,MAAM,KAAK,MAAM,EACjB,CAAC;YACD,IAAI,KAAK,GAAY,IAAI,CAAC;YAC1B,IAAI,OAAO,GAAiD,IAAI,CAAC;YACjE,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;gBACtD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gBACrB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,2CAA2C;YAC7C,CAAC;YACD,MAAM,EAAE,GAAG,OAAO,OAAO,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,IAAI,KAAK,KAAK,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxF,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;oBACrD,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,YAAY,aAAa,IAAI,EAAE,EAAE;wBAC7E,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;wBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;qBAC9B,CAAC,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9B,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;wBACjB,MAAM,YAAY,GAAG,GAAG,CAAC,QAAS,CAAC;wBACnC,OAAO,IAAI,YAAY,CACrB,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EACvE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACjE,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,wCAAwC;gBAC1C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC;IAEF,OAAO,GAAG,EAAE;QACV,GAAG,CAAC,KAAK,GAAG,aAAa,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC;AAED,0EAA0E;AAC1E,wEAAwE;AACxE,2EAA2E;AAC3E,yEAAyE;AACzE,wEAAwE;AACxE,yEAAyE;AACzE,sEAAsE;AACtE,2CAA2C;AAC3C,MAAM,CAAC,MAAM,IAAI,GAAG,wBAAwB,CAAA;AAC5C,MAAM,CAAC,MAAM,MAAM,GAAa,EAAE,CAAA;AAClC,MAAM,UAAU,KAAK,CAAC,GAAoC;IACxD,MAAM,GAAG,GAAG,aAAa,EAAE,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS;QAAE,aAAa,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC;AACxE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { join, resolve } from 'node:path';
|
|
|
11
11
|
import { AdapterRegistry, detectDshVersion, UnsupportedDshVersionError } from './registry.js';
|
|
12
12
|
import { registerHostAdapters } from './adapters/index.js';
|
|
13
13
|
import { createHostAPI } from './api.js';
|
|
14
|
+
import { preloadRegistryModules } from './services/registry.js';
|
|
14
15
|
export const name = '@dsh-plugin/dsh-loader';
|
|
15
16
|
// dshloader itself depends on `webServer` so its fiber only activates once
|
|
16
17
|
// the real web server is provided — the alias then points `httpServer` at it.
|
|
@@ -61,6 +62,10 @@ export async function applyAdapter(ctx, opts = {}) {
|
|
|
61
62
|
const { factory, mode, dshVersion } = selection;
|
|
62
63
|
const adapter = factory.create(ctx, config);
|
|
63
64
|
await adapter.apply?.();
|
|
65
|
+
// Optional dsh modules the registry facade proxies (sandbox escalation
|
|
66
|
+
// targets, permission-preset folding). Absent modules degrade that facade
|
|
67
|
+
// method to a logged no-op — see services/registry.ts.
|
|
68
|
+
const registryModules = await preloadRegistryModules();
|
|
64
69
|
const api = createHostAPI({
|
|
65
70
|
ctx,
|
|
66
71
|
dshVersion,
|
|
@@ -68,10 +73,11 @@ export async function applyAdapter(ctx, opts = {}) {
|
|
|
68
73
|
adapter,
|
|
69
74
|
exposeAllNamespaces: config.exposeAllNamespaces,
|
|
70
75
|
hostPackageAliases: config.hostPackageAliases,
|
|
76
|
+
registryModules,
|
|
71
77
|
});
|
|
72
78
|
ctx.reflect.provide('dshLoader', api);
|
|
73
79
|
console.log(`${LOG_PREFIX} loaded adapter ${factory.name} for dsh ${dshVersion} (mode: ${mode})`);
|
|
74
|
-
console.log(`${LOG_PREFIX} registered stable API: settings, web, services`);
|
|
80
|
+
console.log(`${LOG_PREFIX} registered stable API: settings, web, services, patch, registry, llm`);
|
|
75
81
|
if (config.exposeAllNamespaces) {
|
|
76
82
|
console.warn(`${LOG_PREFIX} exposeAllNamespaces enabled: bypassing official settings whitelist`);
|
|
77
83
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,oEAAoE;AACpE,yEAAyE;AACzE,wEAAwE;AACxE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/patch.d.ts
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dshloader PATCH protocol (`ctx.dshLoader.patch` / `__dshLoader__.patch`).
|
|
3
|
+
*
|
|
4
|
+
* Monkey-patching a host method or global is the only way to intervene in
|
|
5
|
+
* behaviour dsh exposes no extension point for. Three plugins in this family
|
|
6
|
+
* each hand-rolled the protocol and they did NOT agree:
|
|
7
|
+
*
|
|
8
|
+
* - dsh-loader's own `Module._resolveFilename` hook → identity-checked restore
|
|
9
|
+
* - dsh-network-settings' `globalThis.fetch` wrapper → identity-checked restore
|
|
10
|
+
* - dsh-better-sidebar's `workspaces.openPath` wrap → UNCONDITIONAL restore
|
|
11
|
+
*
|
|
12
|
+
* The last one silently destroys a later plugin's wrapper when it disposes
|
|
13
|
+
* first, even though its own comment promised the opposite. This module is the
|
|
14
|
+
* single correct implementation; every patch site delegates here.
|
|
15
|
+
*
|
|
16
|
+
* The five guarantees:
|
|
17
|
+
*
|
|
18
|
+
* 1. RAW original — each patch captures EXACTLY the value present when it
|
|
19
|
+
* installed (another plugin's wrapper when one is already there) and
|
|
20
|
+
* restores that value verbatim, never a bound copy. This is what lets a
|
|
21
|
+
* chain of wrappers survive disposal in any order.
|
|
22
|
+
* 2. Identity-checked restore — disposal only reverts the slot when it still
|
|
23
|
+
* holds OUR wrapper. If somebody patched on top afterwards, we leave the
|
|
24
|
+
* chain alone (reverting would delete their wrapper).
|
|
25
|
+
* 3. Re-apply safety — re-applying the same `id` recovers the true original
|
|
26
|
+
* first, so HMR / repeated `apply()` can never nest a wrapper in itself.
|
|
27
|
+
* This holds while our patch is the OUTERMOST one; if a foreign patch was
|
|
28
|
+
* layered on top in between, re-applying chains instead (un-nesting a
|
|
29
|
+
* middle wrapper is not possible without rebuilding the whole chain).
|
|
30
|
+
* 4. Cross-instance durability — slot bookkeeping lives in a WeakMap parked on
|
|
31
|
+
* `globalThis` under a `Symbol.for` key, so a reloaded module instance still
|
|
32
|
+
* sees the original captured by its predecessor. Targets are never mutated.
|
|
33
|
+
* 5. Loud misuse — patching a non-function method, or a missing target, throws
|
|
34
|
+
* instead of silently no-op'ing.
|
|
35
|
+
*
|
|
36
|
+
* Pure and environment-agnostic: no DOM, no Node builtins, so the same module
|
|
37
|
+
* serves the host half and the browser half.
|
|
38
|
+
*
|
|
39
|
+
* @module @dsh-plugin/dsh-loader/patch
|
|
40
|
+
*/
|
|
41
|
+
/** A live patch, disposed through {@link PatchHandle.dispose}. */
|
|
42
|
+
export interface PatchHandle {
|
|
43
|
+
/** Remove this patch when the slot still carries its wrapper (idempotent). */
|
|
44
|
+
dispose(): void;
|
|
45
|
+
/** Whether the target slot still carries this patch's wrapper. */
|
|
46
|
+
readonly active: boolean;
|
|
47
|
+
/** The raw value captured before any dshloader patch touched the slot. */
|
|
48
|
+
readonly original: unknown;
|
|
49
|
+
}
|
|
50
|
+
/** Options shared by every patch entry point. */
|
|
51
|
+
export interface PatchOptions {
|
|
52
|
+
/**
|
|
53
|
+
* Stable patch id. Re-applying the same id on the same slot recovers the
|
|
54
|
+
* true original before re-wrapping (guarantee 3), so HMR cannot nest
|
|
55
|
+
* wrappers. Defaults to `'anonymous'` — pass a real id (`'<plugin>:<what>'`)
|
|
56
|
+
* for any patch that can be re-applied.
|
|
57
|
+
*/
|
|
58
|
+
id?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Patch one slot of `target`. The low-level primitive behind
|
|
62
|
+
* {@link PatchAPI.method} and {@link PatchAPI.global}.
|
|
63
|
+
*
|
|
64
|
+
* @param target - object owning the slot (a service instance, `globalThis`, …).
|
|
65
|
+
* @param key - property key to wrap.
|
|
66
|
+
* @param wrap - receives the value currently in the slot (the previous wrapper
|
|
67
|
+
* when another patch is already installed — chaining is intended) and returns
|
|
68
|
+
* the replacement.
|
|
69
|
+
* @param options - see {@link PatchOptions}.
|
|
70
|
+
* @returns the handle whose `dispose()` reverts this patch.
|
|
71
|
+
*/
|
|
72
|
+
export declare function patchSlot<T = unknown>(target: object, key: PropertyKey, wrap: (original: T) => T, options?: PatchOptions): PatchHandle;
|
|
73
|
+
/** Whether a dshloader patch is currently installed on `target[key]`. */
|
|
74
|
+
export declare function isPatched(target: object, key: PropertyKey): boolean;
|
|
75
|
+
/** The patch id currently installed on `target[key]`, or `undefined`. */
|
|
76
|
+
export declare function patchIdOf(target: object, key: PropertyKey): string | undefined;
|
|
77
|
+
/** The stable `patch` facade exposed on the host and browser APIs. */
|
|
78
|
+
export interface PatchAPI {
|
|
79
|
+
/**
|
|
80
|
+
* Wrap a method of a service / object.
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const handle = ctx.dshLoader.patch.method(
|
|
84
|
+
* workspaces, 'openPath',
|
|
85
|
+
* original => (path: string) => takeover(path) ?? original.call(workspaces, path),
|
|
86
|
+
* { id: 'better-sidebar:openPath' },
|
|
87
|
+
* )
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
method<T extends object, K extends keyof T>(target: T, key: K, wrap: (original: T[K]) => T[K], options?: PatchOptions): PatchHandle;
|
|
91
|
+
/**
|
|
92
|
+
* Wrap a global function such as `fetch`. Defaults to `globalThis`; pass
|
|
93
|
+
* `scope` for `window` or a test double.
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* ctx.dshLoader.patch.global('fetch',
|
|
97
|
+
* original => (input, init) => original(rewrite(input), init),
|
|
98
|
+
* { id: 'network-settings:fetch' })
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
global<T = unknown>(key: PropertyKey, wrap: (original: T) => T, options?: PatchOptions & {
|
|
102
|
+
scope?: object;
|
|
103
|
+
}): PatchHandle;
|
|
104
|
+
/** Low-level primitive; `method`/`global` are thin wrappers over it. */
|
|
105
|
+
slot<T = unknown>(target: object, key: PropertyKey, wrap: (original: T) => T, options?: PatchOptions): PatchHandle;
|
|
106
|
+
/** Whether a dshloader patch currently occupies `target[key]`. */
|
|
107
|
+
isPatched(target: object, key: PropertyKey): boolean;
|
|
108
|
+
/** The patch id currently occupying `target[key]`, if any. */
|
|
109
|
+
patchIdOf(target: object, key: PropertyKey): string | undefined;
|
|
110
|
+
}
|
|
111
|
+
/** Build the `patch` facade. Stateless — all bookkeeping is in the global registry. */
|
|
112
|
+
export declare function createPatchAPI(): PatchAPI;
|
package/dist/patch.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The dshloader PATCH protocol (`ctx.dshLoader.patch` / `__dshLoader__.patch`).
|
|
3
|
+
*
|
|
4
|
+
* Monkey-patching a host method or global is the only way to intervene in
|
|
5
|
+
* behaviour dsh exposes no extension point for. Three plugins in this family
|
|
6
|
+
* each hand-rolled the protocol and they did NOT agree:
|
|
7
|
+
*
|
|
8
|
+
* - dsh-loader's own `Module._resolveFilename` hook → identity-checked restore
|
|
9
|
+
* - dsh-network-settings' `globalThis.fetch` wrapper → identity-checked restore
|
|
10
|
+
* - dsh-better-sidebar's `workspaces.openPath` wrap → UNCONDITIONAL restore
|
|
11
|
+
*
|
|
12
|
+
* The last one silently destroys a later plugin's wrapper when it disposes
|
|
13
|
+
* first, even though its own comment promised the opposite. This module is the
|
|
14
|
+
* single correct implementation; every patch site delegates here.
|
|
15
|
+
*
|
|
16
|
+
* The five guarantees:
|
|
17
|
+
*
|
|
18
|
+
* 1. RAW original — each patch captures EXACTLY the value present when it
|
|
19
|
+
* installed (another plugin's wrapper when one is already there) and
|
|
20
|
+
* restores that value verbatim, never a bound copy. This is what lets a
|
|
21
|
+
* chain of wrappers survive disposal in any order.
|
|
22
|
+
* 2. Identity-checked restore — disposal only reverts the slot when it still
|
|
23
|
+
* holds OUR wrapper. If somebody patched on top afterwards, we leave the
|
|
24
|
+
* chain alone (reverting would delete their wrapper).
|
|
25
|
+
* 3. Re-apply safety — re-applying the same `id` recovers the true original
|
|
26
|
+
* first, so HMR / repeated `apply()` can never nest a wrapper in itself.
|
|
27
|
+
* This holds while our patch is the OUTERMOST one; if a foreign patch was
|
|
28
|
+
* layered on top in between, re-applying chains instead (un-nesting a
|
|
29
|
+
* middle wrapper is not possible without rebuilding the whole chain).
|
|
30
|
+
* 4. Cross-instance durability — slot bookkeeping lives in a WeakMap parked on
|
|
31
|
+
* `globalThis` under a `Symbol.for` key, so a reloaded module instance still
|
|
32
|
+
* sees the original captured by its predecessor. Targets are never mutated.
|
|
33
|
+
* 5. Loud misuse — patching a non-function method, or a missing target, throws
|
|
34
|
+
* instead of silently no-op'ing.
|
|
35
|
+
*
|
|
36
|
+
* Pure and environment-agnostic: no DOM, no Node builtins, so the same module
|
|
37
|
+
* serves the host half and the browser half.
|
|
38
|
+
*
|
|
39
|
+
* @module @dsh-plugin/dsh-loader/patch
|
|
40
|
+
*/
|
|
41
|
+
/**
|
|
42
|
+
* Registry key on `globalThis`. `Symbol.for` (not a fresh Symbol) so a
|
|
43
|
+
* re-instantiated module — HMR, a second bundle copy — finds the same registry
|
|
44
|
+
* and therefore the same captured originals.
|
|
45
|
+
*/
|
|
46
|
+
const REGISTRY_KEY = Symbol.for('dshloader.patch.registry.v1');
|
|
47
|
+
/** The process-wide patch registry (targets are keys; nothing is written onto them). */
|
|
48
|
+
function registry() {
|
|
49
|
+
const scope = globalThis;
|
|
50
|
+
let found = scope[REGISTRY_KEY];
|
|
51
|
+
if (found === undefined) {
|
|
52
|
+
found = new WeakMap();
|
|
53
|
+
scope[REGISTRY_KEY] = found;
|
|
54
|
+
}
|
|
55
|
+
return found;
|
|
56
|
+
}
|
|
57
|
+
/** The slot table for one target, created on first use. */
|
|
58
|
+
function slotsOf(target) {
|
|
59
|
+
const reg = registry();
|
|
60
|
+
let table = reg.get(target);
|
|
61
|
+
if (table === undefined) {
|
|
62
|
+
table = new Map();
|
|
63
|
+
reg.set(target, table);
|
|
64
|
+
}
|
|
65
|
+
return table;
|
|
66
|
+
}
|
|
67
|
+
/** Read the current value of `target[key]` without tripping getters twice. */
|
|
68
|
+
function read(target, key) {
|
|
69
|
+
return target[key];
|
|
70
|
+
}
|
|
71
|
+
/** Write `target[key]`, surfacing a frozen / read-only slot as a loud error. */
|
|
72
|
+
function write(target, key, value, what) {
|
|
73
|
+
try {
|
|
74
|
+
target[key] = value;
|
|
75
|
+
}
|
|
76
|
+
catch (cause) {
|
|
77
|
+
throw new Error(`dshloader.patch: cannot write ${what} — the slot is read-only or frozen`, { cause });
|
|
78
|
+
}
|
|
79
|
+
if (read(target, key) !== value) {
|
|
80
|
+
// A non-writable data property assigns silently in sloppy mode.
|
|
81
|
+
throw new Error(`dshloader.patch: writing ${what} had no effect — the slot is not writable`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Build the handle for one installed slot. Kept separate so a re-apply of the
|
|
86
|
+
* same id can hand back a handle over the existing bookkeeping.
|
|
87
|
+
*/
|
|
88
|
+
function makeHandle(target, key, slot) {
|
|
89
|
+
return {
|
|
90
|
+
get active() {
|
|
91
|
+
return read(target, key) === slot.wrapper;
|
|
92
|
+
},
|
|
93
|
+
get original() {
|
|
94
|
+
return slot.original;
|
|
95
|
+
},
|
|
96
|
+
dispose() {
|
|
97
|
+
// Guarantee 2: only revert while the slot still carries OUR wrapper.
|
|
98
|
+
if (read(target, key) !== slot.wrapper)
|
|
99
|
+
return;
|
|
100
|
+
write(target, key, slot.original, `${String(key)} (restore)`);
|
|
101
|
+
const table = registry().get(target);
|
|
102
|
+
if (table?.get(key) === slot)
|
|
103
|
+
table.delete(key);
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Patch one slot of `target`. The low-level primitive behind
|
|
109
|
+
* {@link PatchAPI.method} and {@link PatchAPI.global}.
|
|
110
|
+
*
|
|
111
|
+
* @param target - object owning the slot (a service instance, `globalThis`, …).
|
|
112
|
+
* @param key - property key to wrap.
|
|
113
|
+
* @param wrap - receives the value currently in the slot (the previous wrapper
|
|
114
|
+
* when another patch is already installed — chaining is intended) and returns
|
|
115
|
+
* the replacement.
|
|
116
|
+
* @param options - see {@link PatchOptions}.
|
|
117
|
+
* @returns the handle whose `dispose()` reverts this patch.
|
|
118
|
+
*/
|
|
119
|
+
export function patchSlot(target, key, wrap, options = {}) {
|
|
120
|
+
if (target === null || (typeof target !== 'object' && typeof target !== 'function')) {
|
|
121
|
+
throw new TypeError(`dshloader.patch: target must be an object, received ${typeof target}`);
|
|
122
|
+
}
|
|
123
|
+
if (typeof wrap !== 'function') {
|
|
124
|
+
throw new TypeError('dshloader.patch: wrap must be a function');
|
|
125
|
+
}
|
|
126
|
+
const id = options.id ?? 'anonymous';
|
|
127
|
+
const table = slotsOf(target);
|
|
128
|
+
const existing = table.get(key);
|
|
129
|
+
// Guarantee 3: a re-apply of the same id must not wrap our own wrapper.
|
|
130
|
+
// Restore the captured original first, then patch the pristine slot.
|
|
131
|
+
if (existing !== undefined && existing.id === id && read(target, key) === existing.wrapper) {
|
|
132
|
+
write(target, key, existing.original, `${String(key)} (re-apply reset)`);
|
|
133
|
+
table.delete(key);
|
|
134
|
+
}
|
|
135
|
+
const current = read(target, key);
|
|
136
|
+
if (typeof current !== 'function') {
|
|
137
|
+
throw new TypeError(`dshloader.patch: ${String(key)} is ${current === undefined ? 'missing' : typeof current}, not a function`);
|
|
138
|
+
}
|
|
139
|
+
// Guarantee 1: capture EXACTLY the value present at install time. When another
|
|
140
|
+
// plugin already wrapped this slot, that wrapper is our original and restoring
|
|
141
|
+
// it is what keeps their patch alive (see the ordered-disposal tests).
|
|
142
|
+
const original = current;
|
|
143
|
+
const wrapper = wrap(current);
|
|
144
|
+
if (typeof wrapper !== 'function') {
|
|
145
|
+
throw new TypeError('dshloader.patch: wrap must return a function');
|
|
146
|
+
}
|
|
147
|
+
write(target, key, wrapper, String(key));
|
|
148
|
+
const slot = { original, wrapper, id };
|
|
149
|
+
table.set(key, slot);
|
|
150
|
+
return makeHandle(target, key, slot);
|
|
151
|
+
}
|
|
152
|
+
/** Whether a dshloader patch is currently installed on `target[key]`. */
|
|
153
|
+
export function isPatched(target, key) {
|
|
154
|
+
const slot = registry().get(target)?.get(key);
|
|
155
|
+
return slot !== undefined && read(target, key) === slot.wrapper;
|
|
156
|
+
}
|
|
157
|
+
/** The patch id currently installed on `target[key]`, or `undefined`. */
|
|
158
|
+
export function patchIdOf(target, key) {
|
|
159
|
+
const slot = registry().get(target)?.get(key);
|
|
160
|
+
return slot !== undefined && read(target, key) === slot.wrapper ? slot.id : undefined;
|
|
161
|
+
}
|
|
162
|
+
/** Build the `patch` facade. Stateless — all bookkeeping is in the global registry. */
|
|
163
|
+
export function createPatchAPI() {
|
|
164
|
+
return {
|
|
165
|
+
method(target, key, wrap, options) {
|
|
166
|
+
return patchSlot(target, key, wrap, options);
|
|
167
|
+
},
|
|
168
|
+
global(key, wrap, options = {}) {
|
|
169
|
+
const scope = options.scope ?? globalThis;
|
|
170
|
+
return patchSlot(scope, key, wrap, options);
|
|
171
|
+
},
|
|
172
|
+
slot(target, key, wrap, options) {
|
|
173
|
+
return patchSlot(target, key, wrap, options);
|
|
174
|
+
},
|
|
175
|
+
isPatched,
|
|
176
|
+
patchIdOf,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=patch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch.js","sourceRoot":"","sources":["../src/patch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/** Node's `setTimeout` ceiling (2^31 - 1), used when dsh-timeout is unavailable. */
|
|
2
|
+
export declare const NODE_MAX_TIMER_DELAY_MS = 2147483647;
|
|
3
|
+
/** The raw modules this facade forwards to, as resolved at boot. */
|
|
4
|
+
export interface DshSymbolModules {
|
|
5
|
+
tools?: {
|
|
6
|
+
defineTool?: unknown;
|
|
7
|
+
ToolArgsError?: unknown;
|
|
8
|
+
};
|
|
9
|
+
timeout?: {
|
|
10
|
+
deadline?: unknown;
|
|
11
|
+
MAX_TIMER_DELAY_MS?: number;
|
|
12
|
+
};
|
|
13
|
+
credentials?: {
|
|
14
|
+
credentialRef?: unknown;
|
|
15
|
+
};
|
|
16
|
+
subagent?: {
|
|
17
|
+
delegationDepthOf?: unknown;
|
|
18
|
+
};
|
|
19
|
+
compaction?: {
|
|
20
|
+
BasicCompactionEngine?: unknown;
|
|
21
|
+
};
|
|
22
|
+
llm?: {
|
|
23
|
+
BlockAssembler?: unknown;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Module-level dsh symbols, grouped by owning package.
|
|
28
|
+
*
|
|
29
|
+
* Types are deliberately loose (`any`-shaped call signatures): pinning dsh's
|
|
30
|
+
* internal shapes here would defeat the shim's purpose, exactly as
|
|
31
|
+
* `src/types.ts` explains for the service surfaces.
|
|
32
|
+
*/
|
|
33
|
+
export interface DshSymbolsAPI {
|
|
34
|
+
tools: {
|
|
35
|
+
/** `defineTool(definition)` — build a tool definition dsh's registry accepts. */
|
|
36
|
+
defineTool<T>(definition: T): T;
|
|
37
|
+
/** `ToolArgsError` — the error class dsh expects for invalid tool arguments. */
|
|
38
|
+
readonly ToolArgsError: new (messages: string[]) => Error;
|
|
39
|
+
};
|
|
40
|
+
timeout: {
|
|
41
|
+
/** `deadline(...)` — dsh's cancellation-aware deadline helper. */
|
|
42
|
+
deadline<T>(...args: any[]): T;
|
|
43
|
+
/** dsh's timer ceiling; falls back to Node's own 2^31-1 when unavailable. */
|
|
44
|
+
readonly MAX_TIMER_DELAY_MS: number;
|
|
45
|
+
};
|
|
46
|
+
credentials: {
|
|
47
|
+
/** `credentialRef(ref)` — brand a raw reference for `credentials.resolve`. */
|
|
48
|
+
credentialRef(ref: unknown): unknown;
|
|
49
|
+
};
|
|
50
|
+
subagent: {
|
|
51
|
+
/** `delegationDepthOf(agent)` — how deep a delegated agent sits. */
|
|
52
|
+
delegationDepthOf(agent: unknown): number;
|
|
53
|
+
};
|
|
54
|
+
compaction: {
|
|
55
|
+
/**
|
|
56
|
+
* `BasicCompactionEngine` — the base class a plugin subclasses to override
|
|
57
|
+
* `summarize`. Throws when unavailable, because a subclass declaration has
|
|
58
|
+
* no meaningful fallback.
|
|
59
|
+
*/
|
|
60
|
+
readonly BasicCompactionEngine: new (...args: any[]) => any;
|
|
61
|
+
};
|
|
62
|
+
llm: {
|
|
63
|
+
/** `BlockAssembler` — dsh's streaming content-block assembler. */
|
|
64
|
+
readonly BlockAssembler: new (...args: any[]) => any;
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/** Build the `ctx.dshLoader.dsh` facade over boot-resolved modules. */
|
|
68
|
+
export declare function createDshSymbolsAPI(opts: {
|
|
69
|
+
modules?: DshSymbolModules;
|
|
70
|
+
}): DshSymbolsAPI;
|