@dsh-plugin/dsh-loader 1.1.0-dev.32287576957 → 1.2.0

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.
Files changed (62) hide show
  1. package/dist/adapters/dsh-1-x.js +4 -0
  2. package/dist/adapters/dsh-1-x.js.map +1 -1
  3. package/dist/api.d.ts +2 -0
  4. package/dist/api.js +18 -2
  5. package/dist/api.js.map +1 -1
  6. package/dist/client.d.ts +0 -1
  7. package/dist/client.js +13 -3
  8. package/dist/client.js.map +1 -1
  9. package/dist/index.js +7 -1
  10. package/dist/index.js.map +1 -1
  11. package/dist/patch.d.ts +112 -0
  12. package/dist/patch.js +179 -0
  13. package/dist/patch.js.map +1 -0
  14. package/dist/services/dsh-symbols.d.ts +70 -0
  15. package/dist/services/dsh-symbols.js +82 -0
  16. package/dist/services/dsh-symbols.js.map +1 -0
  17. package/dist/services/llm.d.ts +30 -0
  18. package/dist/services/llm.js +35 -0
  19. package/dist/services/llm.js.map +1 -0
  20. package/dist/services/registry.d.ts +144 -0
  21. package/dist/services/registry.js +209 -0
  22. package/dist/services/registry.js.map +1 -0
  23. package/dist/services/settings.d.ts +6 -0
  24. package/dist/services/settings.js +29 -1
  25. package/dist/services/settings.js.map +1 -1
  26. package/dist/services/web.js +20 -4
  27. package/dist/services/web.js.map +1 -1
  28. package/dist/setup.js +17 -1
  29. package/dist/setup.js.map +1 -1
  30. package/dist/types.d.ts +55 -0
  31. package/dist/version.d.ts +1 -1
  32. package/dist/version.js +1 -1
  33. package/lib/client.js +2775 -4
  34. package/lib/client.js.map +1 -1
  35. package/lib/types/adapters/dsh-1-x.d.ts +23 -0
  36. package/lib/types/adapters/index.d.ts +22 -0
  37. package/lib/types/client-ui.d.ts +40 -0
  38. package/lib/types/client.d.ts +156 -0
  39. package/lib/types/patch.d.ts +112 -0
  40. package/lib/types/registry.d.ts +35 -0
  41. package/lib/types/services/dsh-symbols.d.ts +70 -0
  42. package/lib/types/services/llm.d.ts +30 -0
  43. package/lib/types/services/registry.d.ts +144 -0
  44. package/lib/types/services/settings.d.ts +47 -0
  45. package/lib/types/types.d.ts +166 -0
  46. package/lib/types/ui/anchors.d.ts +56 -0
  47. package/lib/types/ui/components.d.ts +159 -0
  48. package/lib/types/ui/icons.d.ts +142 -0
  49. package/lib/types/ui/index.d.ts +30 -0
  50. package/lib/types/ui/menu.d.ts +104 -0
  51. package/lib/types/ui/slots.d.ts +152 -0
  52. package/lib/types/ui/style.d.ts +97 -0
  53. package/lib/types/version.d.ts +2 -0
  54. package/package.json +42 -9
  55. package/src/stable/compaction-basic.d.ts +1 -0
  56. package/src/stable/compaction-basic.js +5 -0
  57. package/src/stable/credentials.d.ts +1 -0
  58. package/src/stable/credentials.js +5 -0
  59. package/src/stable/subagent.d.ts +1 -0
  60. package/src/stable/subagent.js +5 -0
  61. package/src/stable/timeout.d.ts +1 -0
  62. package/src/stable/timeout.js +5 -0
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Module-level dsh symbols (`ctx.dshLoader.dsh`).
3
+ *
4
+ * Some things a plugin needs are MODULE-level exports of `@deepseek-ai/*`
5
+ * packages rather than methods on a cordis service, so `services.get(...)`
6
+ * cannot reach them: `defineTool`, `ToolArgsError`, `deadline`,
7
+ * `credentialRef`, `delegationDepthOf`, and the `BasicCompactionEngine` base
8
+ * class a plugin subclasses.
9
+ *
10
+ * WHY A FACADE AND NOT THE STABLE SUBPATHS: the `@dsh-plugin/dsh-loader/tools`
11
+ * style subpaths are `export * from '@deepseek-ai/...'`, which requires that
12
+ * package to be resolvable FROM dshloader's own location — true for a client
13
+ * bundle (the browser module table resolves it) but not reliably true on the
14
+ * host, where dshloader sits in the profile and dsh is installed globally. A
15
+ * failed ESM static import is a hard boot failure; a facade degrades per symbol
16
+ * and says why. See docs/facades.md §0.
17
+ *
18
+ * Resolution happens once at boot (see `preloadRegistryModules`), so every
19
+ * accessor here is synchronous.
20
+ *
21
+ * @module @dsh-plugin/dsh-loader/services/dsh-symbols
22
+ */
23
+ import { LOG_PREFIX } from '../version.js';
24
+ /** Node's `setTimeout` ceiling (2^31 - 1), used when dsh-timeout is unavailable. */
25
+ export const NODE_MAX_TIMER_DELAY_MS = 2147483647;
26
+ /** Build a loud accessor for one required symbol. */
27
+ function required(value, pkg, symbol) {
28
+ if (value === undefined || value === null) {
29
+ throw new Error(`${LOG_PREFIX}:dsh.${symbol} — ${pkg} is unavailable in this runtime; ` +
30
+ 'the calling plugin cannot proceed without it');
31
+ }
32
+ return value;
33
+ }
34
+ /** Build the `ctx.dshLoader.dsh` facade over boot-resolved modules. */
35
+ export function createDshSymbolsAPI(opts) {
36
+ const m = opts.modules ?? {};
37
+ return {
38
+ tools: {
39
+ defineTool(definition) {
40
+ const fn = required(m.tools?.defineTool, '@deepseek-ai/dsh-tools', 'tools.defineTool');
41
+ return fn(definition);
42
+ },
43
+ get ToolArgsError() {
44
+ return required(m.tools?.ToolArgsError, '@deepseek-ai/dsh-tools', 'tools.ToolArgsError');
45
+ },
46
+ },
47
+ timeout: {
48
+ deadline(...args) {
49
+ const fn = required(m.timeout?.deadline, '@deepseek-ai/dsh-timeout', 'timeout.deadline');
50
+ return fn(...args);
51
+ },
52
+ // A platform constant (Node's setTimeout ceiling), not a dsh-versioned
53
+ // value, so falling back to the literal is safe rather than a guess.
54
+ get MAX_TIMER_DELAY_MS() {
55
+ return m.timeout?.MAX_TIMER_DELAY_MS ?? NODE_MAX_TIMER_DELAY_MS;
56
+ },
57
+ },
58
+ credentials: {
59
+ credentialRef(ref) {
60
+ const fn = required(m.credentials?.credentialRef, '@deepseek-ai/dsh-credentials', 'credentials.credentialRef');
61
+ return fn(ref);
62
+ },
63
+ },
64
+ subagent: {
65
+ delegationDepthOf(agent) {
66
+ const fn = required(m.subagent?.delegationDepthOf, '@deepseek-ai/dsh-subagent', 'subagent.delegationDepthOf');
67
+ return fn(agent);
68
+ },
69
+ },
70
+ compaction: {
71
+ get BasicCompactionEngine() {
72
+ return required(m.compaction?.BasicCompactionEngine, '@deepseek-ai/dsh-compaction-basic', 'compaction.BasicCompactionEngine');
73
+ },
74
+ },
75
+ llm: {
76
+ get BlockAssembler() {
77
+ return required(m.llm?.BlockAssembler, '@deepseek-ai/dsh-llm', 'llm.BlockAssembler');
78
+ },
79
+ },
80
+ };
81
+ }
82
+ //# sourceMappingURL=dsh-symbols.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsh-symbols.js","sourceRoot":"","sources":["../../src/services/dsh-symbols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,oFAAoF;AACpF,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAsDlD,qDAAqD;AACrD,SAAS,QAAQ,CAAI,KAAc,EAAE,GAAW,EAAE,MAAc;IAC9D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,GAAG,UAAU,QAAQ,MAAM,MAAM,GAAG,mCAAmC;YACrE,8CAA8C,CACjD,CAAC;IACJ,CAAC;IACD,OAAO,KAAU,CAAC;AACpB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,mBAAmB,CAAC,IAAoC;IACtE,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IAC7B,OAAO;QACL,KAAK,EAAE;YACL,UAAU,CAAC,UAAU;gBACnB,MAAM,EAAE,GAAG,QAAQ,CACjB,CAAC,CAAC,KAAK,EAAE,UAAU,EACnB,wBAAwB,EACxB,kBAAkB,CACnB,CAAC;gBACF,OAAO,EAAE,CAAC,UAAU,CAAsB,CAAC;YAC7C,CAAC;YACD,IAAI,aAAa;gBACf,OAAO,QAAQ,CACb,CAAC,CAAC,KAAK,EAAE,aAAa,EACtB,wBAAwB,EACxB,qBAAqB,CACtB,CAAC;YACJ,CAAC;SACF;QACD,OAAO,EAAE;YACP,QAAQ,CAAC,GAAG,IAAW;gBACrB,MAAM,EAAE,GAAG,QAAQ,CACjB,CAAC,CAAC,OAAO,EAAE,QAAQ,EACnB,0BAA0B,EAC1B,kBAAkB,CACnB,CAAC;gBACF,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACrB,CAAC;YACD,uEAAuE;YACvE,qEAAqE;YACrE,IAAI,kBAAkB;gBACpB,OAAO,CAAC,CAAC,OAAO,EAAE,kBAAkB,IAAI,uBAAuB,CAAC;YAClE,CAAC;SACF;QACD,WAAW,EAAE;YACX,aAAa,CAAC,GAAG;gBACf,MAAM,EAAE,GAAG,QAAQ,CACjB,CAAC,CAAC,WAAW,EAAE,aAAa,EAC5B,8BAA8B,EAC9B,2BAA2B,CAC5B,CAAC;gBACF,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;SACF;QACD,QAAQ,EAAE;YACR,iBAAiB,CAAC,KAAK;gBACrB,MAAM,EAAE,GAAG,QAAQ,CACjB,CAAC,CAAC,QAAQ,EAAE,iBAAiB,EAC7B,2BAA2B,EAC3B,4BAA4B,CAC7B,CAAC;gBACF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;SACF;QACD,UAAU,EAAE;YACV,IAAI,qBAAqB;gBACvB,OAAO,QAAQ,CACb,CAAC,CAAC,UAAU,EAAE,qBAAqB,EACnC,mCAAmC,EACnC,kCAAkC,CACnC,CAAC;YACJ,CAAC;SACF;QACD,GAAG,EAAE;YACH,IAAI,cAAc;gBAChB,OAAO,QAAQ,CACb,CAAC,CAAC,GAAG,EAAE,cAAc,EACrB,sBAAsB,EACtB,oBAAoB,CACrB,CAAC;YACJ,CAAC;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,30 @@
1
+ /** The `@deepseek-ai/dsh-llm` surface the facades forward to. */
2
+ export interface LlmModule {
3
+ createUserMessage?: (input: unknown) => unknown;
4
+ deepFreeze?: <T>(value: T) => T;
5
+ /** Streaming content-block assembler; surfaced through `dshLoader.dsh.llm`. */
6
+ BlockAssembler?: unknown;
7
+ }
8
+ /** The `llm` facade exposed on the host API. */
9
+ export interface LlmAPI {
10
+ /**
11
+ * Build one identified, frozen user-role message.
12
+ *
13
+ * @param input - complete content and source for a new user message.
14
+ * @returns the immutable message.
15
+ * @throws when `@deepseek-ai/dsh-llm` is unavailable — callers building a
16
+ * message have no meaningful fallback, so this fails loudly rather than
17
+ * handing back something the agent loop would reject.
18
+ */
19
+ createUserMessage(input: unknown): unknown;
20
+ /**
21
+ * Deep-freeze a value with dsh's own helper (so frozen-ness matches what the
22
+ * runtime expects). Falls back to `Object.freeze` on the top level when the
23
+ * module is unavailable.
24
+ */
25
+ deepFreeze<T>(value: T): T;
26
+ }
27
+ /** Build the `ctx.dshLoader.llm` facade. */
28
+ export declare function createLlmAPI(opts: {
29
+ module?: LlmModule;
30
+ }): LlmAPI;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * LLM stable API (`ctx.dshLoader.llm`).
3
+ *
4
+ * Message CONSTRUCTION helpers are module-level exports of
5
+ * `@deepseek-ai/dsh-llm`, not methods on a cordis service, so
6
+ * `services.get('llm')` cannot reach them — a plugin that needs
7
+ * `createUserMessage` would otherwise have to import `@deepseek-ai/*`
8
+ * directly and lose its decoupling.
9
+ *
10
+ * Inference itself stays on the service: `services.get('llm').stream(...)`.
11
+ * This facade deliberately covers only the module-level helpers.
12
+ *
13
+ * @module @dsh-plugin/dsh-loader/services/llm
14
+ */
15
+ import { LOG_PREFIX } from '../version.js';
16
+ /** Build the `ctx.dshLoader.llm` facade. */
17
+ export function createLlmAPI(opts) {
18
+ const { module } = opts;
19
+ return {
20
+ createUserMessage(input) {
21
+ const make = module?.createUserMessage;
22
+ if (typeof make !== 'function') {
23
+ throw new Error(`${LOG_PREFIX}:llm.createUserMessage — @deepseek-ai/dsh-llm is unavailable; cannot construct a message`);
24
+ }
25
+ return make(input);
26
+ },
27
+ deepFreeze(value) {
28
+ const freeze = module?.deepFreeze;
29
+ if (typeof freeze === 'function')
30
+ return freeze(value);
31
+ return Object.freeze(value);
32
+ },
33
+ };
34
+ }
35
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/services/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA8B3C,4CAA4C;AAC5C,MAAM,UAAU,YAAY,CAAC,IAA4B;IACvD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,OAAO;QACL,iBAAiB,CAAC,KAAK;YACrB,MAAM,IAAI,GAAG,MAAM,EAAE,iBAAiB,CAAC;YACvC,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CACb,GAAG,UAAU,0FAA0F,CACxG,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,UAAU,CAAC,KAAK;YACd,MAAM,MAAM,GAAG,MAAM,EAAE,UAAU,CAAC;YAClC,IAAI,OAAO,MAAM,KAAK,UAAU;gBAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;YACvD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,144 @@
1
+ import type { CordisContext } from '../types.js';
2
+ /** A live tool definition as the tools registry holds it (shape kept loose on purpose). */
3
+ export interface ToolDefinitionLike {
4
+ name?: string;
5
+ description?: string;
6
+ parameters?: Record<string, unknown>;
7
+ execute?: (args: Record<string, unknown>, exec: unknown) => Promise<unknown>;
8
+ [key: string]: unknown;
9
+ }
10
+ /** One permission preset row as the `permissionPresets` table stores it. */
11
+ export interface PermissionPresetLike {
12
+ sandbox: string;
13
+ approval: string;
14
+ name?: string;
15
+ description?: string;
16
+ [key: string]: unknown;
17
+ }
18
+ /** The optional dsh modules the facades need, resolved once at boot. */
19
+ export interface RegistryModules {
20
+ /** `@deepseek-ai/dsh-sandbox` — for `ESCALATION_TARGETS`. */
21
+ sandbox?: {
22
+ ESCALATION_TARGETS?: readonly string[];
23
+ };
24
+ /** `@deepseek-ai/dsh-permission-presets` — for `effectivePermissionPreset`. */
25
+ permissionPresets?: {
26
+ effectivePermissionPreset?: (events: readonly unknown[]) => string | undefined;
27
+ };
28
+ /**
29
+ * `@deepseek-ai/dsh-settings` — the settings facade DELEGATES to these rather
30
+ * than reimplementing them. `installSettingsSection` in particular carries
31
+ * real upstream behaviour (register `base` from the composition entry, point
32
+ * the source thunk at the resolved scope, fall back to the entry when the
33
+ * service goes away, all riding the scoped fiber); copying that into a shim
34
+ * would be a bug farm.
35
+ */
36
+ settings?: {
37
+ installSettingsSection?: (ctx: unknown, ns: unknown, schema: unknown, entry: unknown, hooks: unknown) => void;
38
+ settingsNamespace?: (id: string) => unknown;
39
+ SettingsConflictError?: new (...args: never[]) => Error;
40
+ };
41
+ /**
42
+ * `@deepseek-ai/dsh-llm` — message-construction helpers are MODULE-level
43
+ * exports, not service methods, so `services.get('llm')` cannot reach them.
44
+ */
45
+ llm?: import('./llm.js').LlmModule;
46
+ /** `@deepseek-ai/dsh-tools` — `defineTool` / `ToolArgsError` are module-level. */
47
+ tools?: {
48
+ defineTool?: unknown;
49
+ ToolArgsError?: unknown;
50
+ };
51
+ /** `@deepseek-ai/dsh-timeout` — `deadline` / `MAX_TIMER_DELAY_MS`. */
52
+ timeout?: {
53
+ deadline?: unknown;
54
+ MAX_TIMER_DELAY_MS?: number;
55
+ };
56
+ /** `@deepseek-ai/dsh-credentials` — `credentialRef`. */
57
+ credentials?: {
58
+ credentialRef?: unknown;
59
+ };
60
+ /** `@deepseek-ai/dsh-subagent` — `delegationDepthOf`. */
61
+ subagent?: {
62
+ delegationDepthOf?: unknown;
63
+ };
64
+ /** `@deepseek-ai/dsh-compaction-basic` — the `BasicCompactionEngine` base class. */
65
+ compaction?: {
66
+ BasicCompactionEngine?: unknown;
67
+ };
68
+ }
69
+ /**
70
+ * Load the optional dsh modules the facades proxy.
71
+ *
72
+ * The specifiers are held in variables so TypeScript does not try to resolve
73
+ * them at build time: dshloader declares no `@deepseek-ai/*` dependency, and
74
+ * these packages only exist in the dsh runtime that loads the profile.
75
+ *
76
+ * @returns whatever resolved; a missing module simply stays `undefined`.
77
+ */
78
+ export declare function preloadRegistryModules(): Promise<RegistryModules>;
79
+ /** Tool-registry accessors. */
80
+ export interface ToolsRegistryAPI {
81
+ /** Every registered tool definition; `[]` when the registry shape is unreachable. */
82
+ list(): ToolDefinitionLike[];
83
+ /** One definition by tool name. */
84
+ get(name: string): ToolDefinitionLike | undefined;
85
+ /**
86
+ * Run `patcher` over every registered definition now and after every
87
+ * `tools/change`, so load order between this plugin and the tool plugins does
88
+ * not matter.
89
+ *
90
+ * A definition is handed to a given `id` at most once (a non-enumerable
91
+ * `Symbol.for` marker on the definition), which is what stops a `tools/change`
92
+ * storm from wrapping `execute` again and again.
93
+ *
94
+ * @param patcher - mutates one live definition; throwing is contained and logged.
95
+ * @param options.id - stable patch id, used for the once-per-definition marker.
96
+ * @returns a disposer that stops the replay (already-applied patches stay).
97
+ */
98
+ patchAll(patcher: (def: ToolDefinitionLike) => void, options: {
99
+ id: string;
100
+ }): () => void;
101
+ }
102
+ /** Sandbox-registry accessors. */
103
+ export interface SandboxRegistryAPI {
104
+ /** The escalation modes escalation tools advertise; `[]` when unreachable. */
105
+ escalationTargets(): readonly string[];
106
+ /**
107
+ * Advertise one extra escalation mode (idempotent).
108
+ * @returns a disposer removing the mode again; a no-op when unreachable.
109
+ */
110
+ addEscalationTarget(mode: string): () => void;
111
+ }
112
+ /** Permission-preset registry accessors. */
113
+ export interface PermissionPresetsRegistryAPI {
114
+ /** The live preset table, or `undefined` when the service is absent. */
115
+ table(): Record<string, PermissionPresetLike> | undefined;
116
+ /**
117
+ * Define a preset unless the key already exists (declaration in a
118
+ * `cordis.patch.yml` layer wins).
119
+ * @returns a disposer removing only a preset this call actually added.
120
+ */
121
+ define(key: string, preset: PermissionPresetLike): () => void;
122
+ /**
123
+ * Fold a session's effective permission-preset key from its event log.
124
+ * @returns the preset key, or `undefined` when the helper is unavailable.
125
+ */
126
+ effective(events: readonly unknown[]): string | undefined;
127
+ }
128
+ /** The `registry` facade exposed on the host API. */
129
+ export interface RegistryAPI {
130
+ tools: ToolsRegistryAPI;
131
+ sandbox: SandboxRegistryAPI;
132
+ permissionPresets: PermissionPresetsRegistryAPI;
133
+ }
134
+ /**
135
+ * Build the `ctx.dshLoader.registry` facade.
136
+ *
137
+ * @param opts.ctx - the cordis context (services are read lazily, never cached,
138
+ * so a service arriving later is still picked up).
139
+ * @param opts.modules - optional dsh modules from {@link preloadRegistryModules}.
140
+ */
141
+ export declare function createRegistryAPI(opts: {
142
+ ctx: CordisContext;
143
+ modules?: RegistryModules;
144
+ }): RegistryAPI;
@@ -0,0 +1,209 @@
1
+ /**
2
+ * The dshloader REGISTRY facade (`ctx.dshLoader.registry`).
3
+ *
4
+ * dsh exposes no public API for three things plugins legitimately need, so
5
+ * today they reach into internals directly:
6
+ *
7
+ * - replacing / augmenting an ALREADY REGISTERED tool definition
8
+ * (`ctx.tools.layers.global.tools` — TS-private `ToolRuntime.layers` /
9
+ * `ScopedLayers.global` / `ToolLayer.tools`),
10
+ * - advertising a new sandbox escalation mode
11
+ * (`push` onto the readonly `ESCALATION_TARGETS` export),
12
+ * - registering a permission preset
13
+ * (writing straight into the `permissionPresets` live table).
14
+ *
15
+ * Absorbing them here means the private shapes are named in ONE place: when dsh
16
+ * moves them, only this file and the adapter change. Every accessor degrades to
17
+ * a documented no-op / empty result instead of throwing, so a layout change
18
+ * costs the feature, never the boot.
19
+ *
20
+ * The optional dsh modules (`dsh-sandbox`, `dsh-permission-presets`) are loaded
21
+ * through {@link preloadRegistryModules} during the adapter's `apply()`, which
22
+ * keeps every facade method synchronous for callers.
23
+ *
24
+ * @module @dsh-plugin/dsh-loader/registry-facade
25
+ */
26
+ import { LOG_PREFIX } from '../version.js';
27
+ /**
28
+ * Load the optional dsh modules the facades proxy.
29
+ *
30
+ * The specifiers are held in variables so TypeScript does not try to resolve
31
+ * them at build time: dshloader declares no `@deepseek-ai/*` dependency, and
32
+ * these packages only exist in the dsh runtime that loads the profile.
33
+ *
34
+ * @returns whatever resolved; a missing module simply stays `undefined`.
35
+ */
36
+ export async function preloadRegistryModules() {
37
+ const load = async (specifier) => {
38
+ try {
39
+ return (await import(specifier));
40
+ }
41
+ catch {
42
+ return undefined;
43
+ }
44
+ };
45
+ const [sandbox, permissionPresets, settings, llm, tools, timeout, credentials, subagent, compaction] = await Promise.all([
46
+ load('@deepseek-ai/dsh-sandbox'),
47
+ load('@deepseek-ai/dsh-permission-presets'),
48
+ load('@deepseek-ai/dsh-settings'),
49
+ load('@deepseek-ai/dsh-llm'),
50
+ load('@deepseek-ai/dsh-tools'),
51
+ load('@deepseek-ai/dsh-timeout'),
52
+ load('@deepseek-ai/dsh-credentials'),
53
+ load('@deepseek-ai/dsh-subagent'),
54
+ load('@deepseek-ai/dsh-compaction-basic'),
55
+ ]);
56
+ return {
57
+ sandbox: sandbox,
58
+ permissionPresets: permissionPresets,
59
+ settings: settings,
60
+ llm: llm,
61
+ tools: tools,
62
+ timeout: timeout,
63
+ credentials: credentials,
64
+ subagent: subagent,
65
+ compaction: compaction,
66
+ };
67
+ }
68
+ /** Marker recording which patch ids already ran against one tool definition. */
69
+ const PATCHED_BY = Symbol.for('dshloader.registry.tools.patchedBy.v1');
70
+ /** The set of patch ids already applied to a definition (created on demand). */
71
+ function patchedBy(def) {
72
+ const holder = def;
73
+ let marks = holder[PATCHED_BY];
74
+ if (marks === undefined) {
75
+ marks = new Set();
76
+ try {
77
+ Object.defineProperty(def, PATCHED_BY, {
78
+ value: marks,
79
+ enumerable: false,
80
+ configurable: true,
81
+ writable: false,
82
+ });
83
+ }
84
+ catch {
85
+ // Frozen definition: fall back to "always patch", which the caller's own
86
+ // guard must then make idempotent. Better than refusing to patch at all.
87
+ return new Set();
88
+ }
89
+ }
90
+ return marks;
91
+ }
92
+ /**
93
+ * Build the `ctx.dshLoader.registry` facade.
94
+ *
95
+ * @param opts.ctx - the cordis context (services are read lazily, never cached,
96
+ * so a service arriving later is still picked up).
97
+ * @param opts.modules - optional dsh modules from {@link preloadRegistryModules}.
98
+ */
99
+ export function createRegistryAPI(opts) {
100
+ const { ctx, modules = {} } = opts;
101
+ /** The private tool table, or undefined when the layout moved. */
102
+ const toolTable = () => {
103
+ const tools = ctx.get('tools');
104
+ return tools?.layers?.global?.tools;
105
+ };
106
+ const tools = {
107
+ list() {
108
+ const table = toolTable();
109
+ return table === undefined ? [] : [...table.values()];
110
+ },
111
+ get(name) {
112
+ return toolTable()?.get(name);
113
+ },
114
+ patchAll(patcher, options) {
115
+ const id = options.id;
116
+ if (typeof id !== 'string' || id.length === 0) {
117
+ throw new TypeError('dshloader.registry.tools.patchAll: options.id is required');
118
+ }
119
+ let warned = false;
120
+ const run = () => {
121
+ const table = toolTable();
122
+ if (table === undefined) {
123
+ if (!warned) {
124
+ warned = true;
125
+ ctx.logger?.warn?.(`${LOG_PREFIX}:registry.tools.patchAll("${id}") — the tool registry layout is unreachable; skipping (feature lost, boot intact)`);
126
+ }
127
+ return;
128
+ }
129
+ for (const def of table.values()) {
130
+ if (def === null || typeof def !== 'object')
131
+ continue;
132
+ const marks = patchedBy(def);
133
+ if (marks.has(id))
134
+ continue;
135
+ try {
136
+ patcher(def);
137
+ marks.add(id);
138
+ }
139
+ catch (error) {
140
+ ctx.logger?.warn?.(`${LOG_PREFIX}:registry.tools.patchAll("${id}") failed on "${String(def.name)}": ${error instanceof Error ? error.message : String(error)}`);
141
+ }
142
+ }
143
+ };
144
+ run();
145
+ // Replay so tools registered after this plugin are patched too.
146
+ const off = ctx.on?.('tools/change', () => run(), { prepend: true });
147
+ return () => {
148
+ if (typeof off === 'function')
149
+ off();
150
+ };
151
+ },
152
+ };
153
+ const sandbox = {
154
+ escalationTargets() {
155
+ return modules.sandbox?.ESCALATION_TARGETS ?? [];
156
+ },
157
+ addEscalationTarget(mode) {
158
+ const targets = modules.sandbox?.ESCALATION_TARGETS;
159
+ if (targets === undefined) {
160
+ ctx.logger?.warn?.(`${LOG_PREFIX}:registry.sandbox.addEscalationTarget("${mode}") — @deepseek-ai/dsh-sandbox is unavailable; skipping`);
161
+ return () => { };
162
+ }
163
+ // ESCALATION_TARGETS ships readonly; appending at runtime is exactly what
164
+ // the escalation tools read when they build their parameter enum.
165
+ const list = targets;
166
+ if (list.includes(mode))
167
+ return () => { };
168
+ list.push(mode);
169
+ return () => {
170
+ const at = list.indexOf(mode);
171
+ if (at >= 0)
172
+ list.splice(at, 1);
173
+ };
174
+ },
175
+ };
176
+ const permissionPresets = {
177
+ table() {
178
+ const service = ctx.get('permissionPresets');
179
+ return service?.presets;
180
+ },
181
+ define(key, preset) {
182
+ const table = this.table();
183
+ if (table === undefined) {
184
+ ctx.logger?.warn?.(`${LOG_PREFIX}:registry.permissionPresets.define("${key}") — the permissionPresets service is absent; skipping`);
185
+ return () => { };
186
+ }
187
+ if (Object.hasOwn(table, key))
188
+ return () => { };
189
+ table[key] = preset;
190
+ return () => {
191
+ if (table[key] === preset)
192
+ delete table[key];
193
+ };
194
+ },
195
+ effective(events) {
196
+ const fold = modules.permissionPresets?.effectivePermissionPreset;
197
+ if (typeof fold !== 'function')
198
+ return undefined;
199
+ try {
200
+ return fold(events);
201
+ }
202
+ catch {
203
+ return undefined;
204
+ }
205
+ },
206
+ };
207
+ return { tools, sandbox, permissionPresets };
208
+ }
209
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/services/registry.ts"],"names":[],"mappings":"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"}
@@ -37,5 +37,11 @@ export declare function createSettingsAPI(opts: {
37
37
  ctx: CordisContext;
38
38
  exposeAllNamespaces: boolean;
39
39
  whitelist?: Set<string>;
40
+ /** The real `@deepseek-ai/dsh-settings` module, when it resolved at boot. */
41
+ module?: {
42
+ installSettingsSection?: (ctx: unknown, ns: unknown, schema: unknown, entry: unknown, hooks: unknown) => void;
43
+ settingsNamespace?: (id: string) => unknown;
44
+ SettingsConflictError?: new (...args: never[]) => Error;
45
+ };
40
46
  }): SettingsAPI;
41
47
  export {};
@@ -75,7 +75,7 @@ export function settingsErrorToResult(error, ns, method) {
75
75
  * Build the `ctx.dshLoader.settings` stable API.
76
76
  */
77
77
  export function createSettingsAPI(opts) {
78
- const { ctx, exposeAllNamespaces, whitelist } = opts;
78
+ const { ctx, exposeAllNamespaces, whitelist, module } = opts;
79
79
  const allowed = whitelist ?? DEFAULT_WEB_SETTINGS_NAMESPACES;
80
80
  function getSettings() {
81
81
  return ctx.get('settings');
@@ -155,6 +155,34 @@ export function createSettingsAPI(opts) {
155
155
  mutate(ns, ops, expectedRevision) {
156
156
  return api._write('mutate', ns, ops, expectedRevision);
157
157
  },
158
+ namespace(id) {
159
+ const make = module?.settingsNamespace;
160
+ if (typeof make !== 'function') {
161
+ // No dsh-settings: hand back the raw id. Callers only pass it straight
162
+ // back into this facade, so an opaque handle and a string behave alike.
163
+ return id;
164
+ }
165
+ return make(id);
166
+ },
167
+ installSection(consumerCtx, ns, schema, entry, hooks) {
168
+ const install = module?.installSettingsSection;
169
+ if (typeof install !== 'function') {
170
+ console.warn(`${LOG_PREFIX}:settings.installSection — @deepseek-ai/dsh-settings is unavailable; ` +
171
+ 'the consumer keeps its composition entry (no user-settings layer)');
172
+ return false;
173
+ }
174
+ install(consumerCtx, ns, schema, entry, hooks);
175
+ return true;
176
+ },
177
+ isConflictError(error) {
178
+ const Ctor = module?.SettingsConflictError;
179
+ if (typeof Ctor === 'function' && error instanceof Ctor)
180
+ return true;
181
+ // Structural fallback: dsh marks conflicts with expected/actual revisions.
182
+ return (error !== null &&
183
+ typeof error === 'object' &&
184
+ ('expected' in error || 'actual' in error));
185
+ },
158
186
  };
159
187
  return api;
160
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/services/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/services/settings.ts"],"names":[],"mappings":"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"}
@@ -28,18 +28,34 @@ export function createWebAPI(opts) {
28
28
  }
29
29
  return web;
30
30
  }
31
+ /** One `kind: 'route'` registration for a single HTTP method. */
32
+ function route(method, path, handler) {
33
+ const web = server();
34
+ return web.register({ kind: 'route', method, path, handler }) ?? (() => { });
35
+ }
31
36
  return {
32
37
  register(prefix, handler) {
33
38
  const web = server();
34
39
  return web.register({ kind: 'prefix', path: prefix, handler }) ?? (() => { });
35
40
  },
36
- get(path, handler) {
41
+ exact(path, handler) {
37
42
  const web = server();
38
- return web.register({ kind: 'route', method: 'GET', path, handler }) ?? (() => { });
43
+ return web.register({ kind: 'exact', path, handler }) ?? (() => { });
44
+ },
45
+ get(path, handler) {
46
+ return route('GET', path, handler);
39
47
  },
40
48
  post(path, handler) {
41
- const web = server();
42
- return web.register({ kind: 'route', method: 'POST', path, handler }) ?? (() => { });
49
+ return route('POST', path, handler);
50
+ },
51
+ put(path, handler) {
52
+ return route('PUT', path, handler);
53
+ },
54
+ patch(path, handler) {
55
+ return route('PATCH', path, handler);
56
+ },
57
+ del(path, handler) {
58
+ return route('DELETE', path, handler);
43
59
  },
44
60
  use(middleware) {
45
61
  const web = server();
@@ -1 +1 @@
1
- {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/services/web.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,EAAE;AACF,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,qEAAqE;AACrE,uBAAuB;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,0FAA0F;AAC1F,SAAS,gBAAgB,CAAC,GAAkB;IAC1C,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAA4B;IACvD,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAErB,SAAS,MAAM;QACb,MAAM,GAAG,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC5D,MAAM,IAAI,iBAAiB,CAAC,GAAG,UAAU,oCAAoC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO;QACL,QAAQ,CAAC,MAAM,EAAE,OAAO;YACtB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,GAAG,CAAC,IAAI,EAAE,OAAO;YACf,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,OAAO;YAChB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACtF,CAAC;QACD,GAAG,CAAC,UAAU;YACZ,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACjF,CAAC;QACD;;;;;WAKG;QACH,eAAe,CAAC,KAAK;YACnB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,IAAI,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;gBAC9C,MAAM,IAAI,iBAAiB,CACzB,GAAG,UAAU,0FAA0F,CACxG,CAAC;YACJ,CAAC;YACD,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAClD,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/services/web.ts"],"names":[],"mappings":"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"}