@dsh-plugin/dsh-loader 1.1.0-dev.32278873528 → 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.
Files changed (65) hide show
  1. package/LICENSE +160 -0
  2. package/README.md +1 -1
  3. package/README.zh_CN.md +1 -1
  4. package/dist/adapters/dsh-1-x.js +4 -0
  5. package/dist/adapters/dsh-1-x.js.map +1 -1
  6. package/dist/api.d.ts +2 -0
  7. package/dist/api.js +18 -2
  8. package/dist/api.js.map +1 -1
  9. package/dist/client.d.ts +0 -1
  10. package/dist/client.js +13 -3
  11. package/dist/client.js.map +1 -1
  12. package/dist/index.js +7 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/patch.d.ts +112 -0
  15. package/dist/patch.js +179 -0
  16. package/dist/patch.js.map +1 -0
  17. package/dist/services/dsh-symbols.d.ts +70 -0
  18. package/dist/services/dsh-symbols.js +82 -0
  19. package/dist/services/dsh-symbols.js.map +1 -0
  20. package/dist/services/llm.d.ts +30 -0
  21. package/dist/services/llm.js +35 -0
  22. package/dist/services/llm.js.map +1 -0
  23. package/dist/services/registry.d.ts +144 -0
  24. package/dist/services/registry.js +209 -0
  25. package/dist/services/registry.js.map +1 -0
  26. package/dist/services/settings.d.ts +6 -0
  27. package/dist/services/settings.js +29 -1
  28. package/dist/services/settings.js.map +1 -1
  29. package/dist/services/web.js +20 -4
  30. package/dist/services/web.js.map +1 -1
  31. package/dist/setup.js +17 -1
  32. package/dist/setup.js.map +1 -1
  33. package/dist/types.d.ts +55 -0
  34. package/dist/version.d.ts +1 -1
  35. package/dist/version.js +1 -1
  36. package/lib/client.js +2775 -4
  37. package/lib/client.js.map +1 -1
  38. package/lib/types/adapters/dsh-1-x.d.ts +23 -0
  39. package/lib/types/adapters/index.d.ts +22 -0
  40. package/lib/types/client-ui.d.ts +40 -0
  41. package/lib/types/client.d.ts +156 -0
  42. package/lib/types/patch.d.ts +112 -0
  43. package/lib/types/registry.d.ts +35 -0
  44. package/lib/types/services/dsh-symbols.d.ts +70 -0
  45. package/lib/types/services/llm.d.ts +30 -0
  46. package/lib/types/services/registry.d.ts +144 -0
  47. package/lib/types/services/settings.d.ts +47 -0
  48. package/lib/types/types.d.ts +166 -0
  49. package/lib/types/ui/anchors.d.ts +56 -0
  50. package/lib/types/ui/components.d.ts +159 -0
  51. package/lib/types/ui/icons.d.ts +142 -0
  52. package/lib/types/ui/index.d.ts +30 -0
  53. package/lib/types/ui/menu.d.ts +104 -0
  54. package/lib/types/ui/slots.d.ts +152 -0
  55. package/lib/types/ui/style.d.ts +97 -0
  56. package/lib/types/version.d.ts +2 -0
  57. package/package.json +45 -11
  58. package/src/stable/compaction-basic.d.ts +1 -0
  59. package/src/stable/compaction-basic.js +5 -0
  60. package/src/stable/credentials.d.ts +1 -0
  61. package/src/stable/credentials.js +5 -0
  62. package/src/stable/subagent.d.ts +1 -0
  63. package/src/stable/subagent.js +5 -0
  64. package/src/stable/timeout.d.ts +1 -0
  65. package/src/stable/timeout.js +5 -0
@@ -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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA+D3C;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB;IAC1C,MAAM,IAAI,GAAG,KAAK,EAAE,SAAiB,EAAgD,EAAE;QACrF,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,MAAM,CAAC,SAAS,CAAC,CAA4B,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,GAClG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,IAAI,CAAC,0BAA0B,CAAC;QAChC,IAAI,CAAC,qCAAqC,CAAC;QAC3C,IAAI,CAAC,2BAA2B,CAAC;QACjC,IAAI,CAAC,sBAAsB,CAAC;QAC5B,IAAI,CAAC,wBAAwB,CAAC;QAC9B,IAAI,CAAC,0BAA0B,CAAC;QAChC,IAAI,CAAC,8BAA8B,CAAC;QACpC,IAAI,CAAC,2BAA2B,CAAC;QACjC,IAAI,CAAC,mCAAmC,CAAC;KAC1C,CAAC,CAAC;IACL,OAAO;QACL,OAAO,EAAE,OAAqC;QAC9C,iBAAiB,EAAE,iBAAyD;QAC5E,QAAQ,EAAE,QAAuC;QACjD,GAAG,EAAE,GAA6B;QAClC,KAAK,EAAE,KAAiC;QACxC,OAAO,EAAE,OAAqC;QAC9C,WAAW,EAAE,WAA6C;QAC1D,QAAQ,EAAE,QAAuC;QACjD,UAAU,EAAE,UAA2C;KACxD,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;AAEvE,gFAAgF;AAChF,SAAS,SAAS,CAAC,GAAuB;IACxC,MAAM,MAAM,GAAG,GAA8C,CAAC;IAC9D,IAAI,KAAK,GAAG,MAAM,CAAC,UAAU,CAA4B,CAAC;IAC1D,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAC1B,IAAI,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE;gBACrC,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,KAAK;gBACjB,YAAY,EAAE,IAAI;gBAClB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,yEAAyE;YACzE,yEAAyE;YACzE,OAAO,IAAI,GAAG,EAAU,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAgED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAGjC;IACC,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC;IAEnC,kEAAkE;IAClE,MAAM,SAAS,GAAG,GAAgD,EAAE;QAClE,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,CAAiC,CAAC;QAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC;IACtC,CAAC,CAAC;IAEF,MAAM,KAAK,GAAqB;QAC9B,IAAI;YACF,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;YAC1B,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,GAAG,CAAC,IAAI;YACN,OAAO,SAAS,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,QAAQ,CAAC,OAAO,EAAE,OAAO;YACvB,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;YACtB,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;YACnF,CAAC;YACD,IAAI,MAAM,GAAG,KAAK,CAAC;YACnB,MAAM,GAAG,GAAG,GAAS,EAAE;gBACrB,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,GAAG,IAAI,CAAC;wBACd,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAChB,GAAG,UAAU,6BAA6B,EAAE,oFAAoF,CACjI,CAAC;oBACJ,CAAC;oBACD,OAAO;gBACT,CAAC;gBACD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBACjC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;wBAAE,SAAS;oBACtD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC7B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,SAAS;oBAC5B,IAAI,CAAC;wBACH,OAAO,CAAC,GAAG,CAAC,CAAC;wBACb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAChB,GAAG,UAAU,6BAA6B,EAAE,iBAAiB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAC3E,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE,CACH,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC,CAAC;YACF,GAAG,EAAE,CAAC;YACN,gEAAgE;YAChE,MAAM,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,OAAO,GAAG,EAAE;gBACV,IAAI,OAAO,GAAG,KAAK,UAAU;oBAAE,GAAG,EAAE,CAAC;YACvC,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,OAAO,GAAuB;QAClC,iBAAiB;YACf,OAAO,OAAO,CAAC,OAAO,EAAE,kBAAkB,IAAI,EAAE,CAAC;QACnD,CAAC;QACD,mBAAmB,CAAC,IAAI;YACtB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC;YACpD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAChB,GAAG,UAAU,0CAA0C,IAAI,wDAAwD,CACpH,CAAC;gBACF,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAClB,CAAC;YACD,0EAA0E;YAC1E,kEAAkE;YAClE,MAAM,IAAI,GAAG,OAA8B,CAAC;YAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,GAAG,EAAE;gBACV,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,IAAI,EAAE,IAAI,CAAC;oBAAE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC;QACJ,CAAC;KACF,CAAC;IAEF,MAAM,iBAAiB,GAAiC;QACtD,KAAK;YACH,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAE9B,CAAC;YACd,OAAO,OAAO,EAAE,OAAO,CAAC;QAC1B,CAAC;QACD,MAAM,CAAC,GAAG,EAAE,MAAM;YAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAChB,GAAG,UAAU,uCAAuC,GAAG,wDAAwD,CAChH,CAAC;gBACF,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAClB,CAAC;YACD,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;gBAAE,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;YAC/C,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACpB,OAAO,GAAG,EAAE;gBACV,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM;oBAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC,CAAC;QACJ,CAAC;QACD,SAAS,CAAC,MAAM;YACd,MAAM,IAAI,GAAG,OAAO,CAAC,iBAAiB,EAAE,yBAAyB,CAAC;YAClE,IAAI,OAAO,IAAI,KAAK,UAAU;gBAAE,OAAO,SAAS,CAAC;YACjD,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,SAAS,CAAC;YACnB,CAAC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAC/C,CAAC"}
@@ -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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"}
package/dist/setup.js CHANGED
@@ -63,7 +63,23 @@ export function injectPatch(patchPath) {
63
63
  return { added: false, text };
64
64
  }
65
65
  const insertion = `- insert:\n ${PATCH_ENTRY}\n`;
66
- const next = text.length === 0 ? insertion : text.endsWith('\n') ? text + insertion : text + '\n' + insertion;
66
+ let next;
67
+ if (text.trim().length === 0) {
68
+ next = insertion;
69
+ }
70
+ else if (/^[ \t]*\[\][ \t]*$/m.test(text.replace(/\r\n/g, '\n').trimEnd())) {
71
+ // The scaffold patch file is a single empty-list document. Appending a
72
+ // second YAML document after it without a separator is a parse error
73
+ // ("end of the stream or a document separator is expected"), so replace
74
+ // the empty list with the real entries instead of appending after it.
75
+ next = text.replace(/\[\][ \t]*(\r?\n)?$/, insertion);
76
+ }
77
+ else if (text.endsWith('\n') || text.endsWith('\r\n')) {
78
+ next = text + '---\n' + insertion;
79
+ }
80
+ else {
81
+ next = text + '\n---\n' + insertion;
82
+ }
67
83
  writeFileSync(patchPath, next);
68
84
  return { added: true, text: next };
69
85
  }
package/dist/setup.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -15,6 +15,14 @@ export interface CordisContext {
15
15
  provide(name: string, value: any): void;
16
16
  };
17
17
  effect(fn: () => void | (() => void) | Promise<void | (() => void)>, label?: string): void;
18
+ /** Event registration; optional so a reduced context (tests) still type-checks. */
19
+ on?(event: string, listener: (...args: any[]) => any, options?: Record<string, unknown>): (() => void) | void;
20
+ /** Cordis logger; optional for the same reason. */
21
+ logger?: {
22
+ info?(...args: unknown[]): void;
23
+ warn?(...args: unknown[]): void;
24
+ error?(...args: unknown[]): void;
25
+ };
18
26
  }
19
27
  /** dshloader host adapter factory. */
20
28
  export interface AdapterFactory {
@@ -32,6 +40,8 @@ export interface HostAdapter {
32
40
  settings?: any;
33
41
  web?: any;
34
42
  services?: any;
43
+ /** Optional override for the registry facade (it names private dsh shapes). */
44
+ registry?: any;
35
45
  }
36
46
  /** Config passed to an adapter's create(). */
37
47
  export interface HostAdapterConfig {
@@ -51,6 +61,14 @@ export interface HostAPI {
51
61
  settings: SettingsAPI;
52
62
  web: WebAPI;
53
63
  services: ServicesAPI;
64
+ /** Monkey-patch protocol: RAW original, identity-checked restore, re-apply safe. */
65
+ patch: import('./patch.js').PatchAPI;
66
+ /** Stable facade over dsh registry internals (tools / sandbox / permission presets). */
67
+ registry: import('./services/registry.js').RegistryAPI;
68
+ /** Module-level LLM helpers that `services.get('llm')` cannot reach. */
69
+ llm: import('./services/llm.js').LlmAPI;
70
+ /** Module-level dsh symbols (defineTool, deadline, BasicCompactionEngine, ...). */
71
+ dsh: import('./services/dsh-symbols.js').DshSymbolsAPI;
54
72
  registerPackageAlias(oldName: string, newName: string): void;
55
73
  }
56
74
  /** Settings stable API. */
@@ -63,6 +81,31 @@ export interface SettingsAPI {
63
81
  update(ns: string, section?: any, expectedRevision?: number): Promise<SettingsResult>;
64
82
  replace(ns: string, section?: any, expectedRevision?: number): Promise<SettingsResult>;
65
83
  mutate(ns: string, ops?: any, expectedRevision?: number): Promise<SettingsResult>;
84
+ /**
85
+ * Build a settings namespace handle (delegates to dsh's `settingsNamespace`).
86
+ * @param id - namespace id; dsh accepts only `[a-z0-9-]`.
87
+ * @returns the namespace handle, or the raw id when the module is unavailable.
88
+ */
89
+ namespace(id: string): any;
90
+ /**
91
+ * Install the canonical optional-settings consumer wiring (delegates to dsh's
92
+ * `installSettingsSection`): register `ns` with `entry` as the `base` layer,
93
+ * point the hooks' source thunk at the resolved scope while a settings service
94
+ * exists, and fall back to `entry` when it goes away.
95
+ *
96
+ * Delegated rather than reimplemented — the fallback and fiber semantics are
97
+ * real upstream behaviour, not something a shim should copy.
98
+ *
99
+ * @returns `true` when the wiring was installed, `false` when dsh-settings is
100
+ * unavailable (the caller then keeps using its composition entry).
101
+ */
102
+ installSection<T>(ctx: any, ns: any, schema: any, entry: T, hooks: {
103
+ setSource(current: () => T): void;
104
+ onChange(): void;
105
+ validate(value: T): void;
106
+ }): boolean;
107
+ /** Whether `error` is dsh's optimistic-concurrency `SettingsConflictError`. */
108
+ isConflictError(error: unknown): boolean;
66
109
  }
67
110
  /** Settings write result shape. */
68
111
  export interface SettingsResult {
@@ -88,9 +131,21 @@ export interface NamespaceView {
88
131
  }
89
132
  /** Web stable API. */
90
133
  export interface WebAPI {
134
+ /** Mount a handler on a path PREFIX (`kind: 'prefix'`), any method. */
91
135
  register(prefix: string, handler: any): () => void;
136
+ /**
137
+ * Mount a handler on an EXACT path, any method (`kind: 'exact'`).
138
+ *
139
+ * Use this when one handler dispatches several methods itself — the shape
140
+ * dsh-network-settings' `/_dsh/.../settings` and `/_dsh/.../probe` routes use.
141
+ */
142
+ exact(path: string, handler: any): () => void;
92
143
  get(path: string, handler: any): () => void;
93
144
  post(path: string, handler: any): () => void;
145
+ put(path: string, handler: any): () => void;
146
+ patch(path: string, handler: any): () => void;
147
+ /** `DELETE` route. Named `del` because `delete` is awkward on a facade. */
148
+ del(path: string, handler: any): () => void;
94
149
  use(middleware: any): () => void;
95
150
  registerUpgrade(route: {
96
151
  path: string;
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const LOADER_VERSION = "1.0.0";
1
+ export declare const LOADER_VERSION = "1.2.0";
2
2
  export declare const LOG_PREFIX = "[dshloader]";
package/dist/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  // dshloader version — keep in sync with package.json.
2
- export const LOADER_VERSION = '1.0.0';
2
+ export const LOADER_VERSION = '1.2.0';
3
3
  // Prefix used in every console log / error so users can grep dshloader output.
4
4
  export const LOG_PREFIX = '[dshloader]';
5
5
  //# sourceMappingURL=version.js.map