@xrkseek/harness 0.2.6 → 0.3.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/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
  2. package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
  3. package/node_modules/@xrkseek/server-face/dist/context.d.ts +6 -0
  4. package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
  5. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.d.ts +2 -0
  6. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.d.ts.map +1 -1
  7. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.js +2 -1
  8. package/node_modules/@xrkseek/server-face/dist/cordis-bridge.js.map +1 -1
  9. package/node_modules/@xrkseek/server-face/dist/handlers/remotes.d.ts.map +1 -1
  10. package/node_modules/@xrkseek/server-face/dist/handlers/remotes.js +12 -27
  11. package/node_modules/@xrkseek/server-face/dist/handlers/remotes.js.map +1 -1
  12. package/node_modules/@xrkseek/server-face/dist/index.d.ts +4 -1
  13. package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
  14. package/node_modules/@xrkseek/server-face/dist/index.js +4 -1
  15. package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
  16. package/node_modules/@xrkseek/server-face/dist/plugin-boot.d.ts +22 -0
  17. package/node_modules/@xrkseek/server-face/dist/plugin-boot.d.ts.map +1 -0
  18. package/node_modules/@xrkseek/server-face/dist/plugin-boot.js +92 -0
  19. package/node_modules/@xrkseek/server-face/dist/plugin-boot.js.map +1 -0
  20. package/node_modules/@xrkseek/server-face/dist/plugin-disabled.d.ts +6 -0
  21. package/node_modules/@xrkseek/server-face/dist/plugin-disabled.d.ts.map +1 -0
  22. package/node_modules/@xrkseek/server-face/dist/plugin-disabled.js +6 -0
  23. package/node_modules/@xrkseek/server-face/dist/plugin-disabled.js.map +1 -0
  24. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.d.ts +41 -10
  25. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.d.ts.map +1 -1
  26. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.js +126 -98
  27. package/node_modules/@xrkseek/server-face/dist/plugin-inventory.js.map +1 -1
  28. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts +5 -0
  29. package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
  30. package/node_modules/@xrkseek/server-face/dist/runtime.js +3 -0
  31. package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
  32. package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
  33. package/node_modules/@xrkseek/server-host/dist/index.js +39 -26
  34. package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
  35. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market.d.ts.map +1 -1
  36. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market.js +3 -2
  37. package/node_modules/@xrkseek/server-http/dist/dsh-compat/market.js.map +1 -1
  38. package/node_modules/@xrkseek/server-http/dist/index.d.ts +2 -2
  39. package/node_modules/@xrkseek/server-http/dist/index.d.ts.map +1 -1
  40. package/node_modules/@xrkseek/server-http/dist/index.js +2 -2
  41. package/node_modules/@xrkseek/server-http/dist/index.js.map +1 -1
  42. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.d.ts +33 -0
  43. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.d.ts.map +1 -1
  44. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.js +150 -38
  45. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-mutate.js.map +1 -1
  46. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.d.ts +2 -0
  47. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.d.ts.map +1 -1
  48. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.js +17 -33
  49. package/node_modules/@xrkseek/server-http/dist/xrk/plugin-services.js.map +1 -1
  50. package/node_modules/@xrkseek/server-loader/dist/atomic-write.d.ts +2 -0
  51. package/node_modules/@xrkseek/server-loader/dist/atomic-write.d.ts.map +1 -0
  52. package/node_modules/@xrkseek/server-loader/dist/atomic-write.js +14 -0
  53. package/node_modules/@xrkseek/server-loader/dist/atomic-write.js.map +1 -0
  54. package/node_modules/@xrkseek/server-loader/dist/index.d.ts +2 -0
  55. package/node_modules/@xrkseek/server-loader/dist/index.d.ts.map +1 -1
  56. package/node_modules/@xrkseek/server-loader/dist/index.js +2 -0
  57. package/node_modules/@xrkseek/server-loader/dist/index.js.map +1 -1
  58. package/node_modules/@xrkseek/server-loader/dist/managed-state.d.ts +86 -0
  59. package/node_modules/@xrkseek/server-loader/dist/managed-state.d.ts.map +1 -0
  60. package/node_modules/@xrkseek/server-loader/dist/managed-state.js +341 -0
  61. package/node_modules/@xrkseek/server-loader/dist/managed-state.js.map +1 -0
  62. package/package.json +1 -1
@@ -0,0 +1,341 @@
1
+ /**
2
+ * Managed plugin disk state under `{pluginsDir}` (CLI inventory + soft-disable).
3
+ *
4
+ * Leaf module shared by loader consumers (Face · HTTP · Host · CLI).
5
+ * Codex posture: one durable id, alias canonicalize, atomic / content-stable writes.
6
+ */
7
+ import { existsSync, mkdirSync, readFileSync, rmSync } from "node:fs";
8
+ import path from "node:path";
9
+ import { atomicWriteText } from "./atomic-write.js";
10
+ export const DISABLED_PLUGINS_FILE = ".xrk-plugins-disabled.json";
11
+ export const MANAGED_PLUGINS_INVENTORY_FILE = ".xrk-plugins.json";
12
+ export function disabledPluginsPath(pluginsDir) {
13
+ return path.join(path.resolve(pluginsDir), DISABLED_PLUGINS_FILE);
14
+ }
15
+ export function managedPluginsInventoryPath(pluginsDir) {
16
+ return path.join(path.resolve(pluginsDir), MANAGED_PLUGINS_INVENTORY_FILE);
17
+ }
18
+ /**
19
+ * Read CLI inventory packages keyed by durable package name
20
+ * (`entry.name` when set, else object key).
21
+ */
22
+ export function readManagedPluginPackagesAt(pluginsDir) {
23
+ const out = new Map();
24
+ const invPath = managedPluginsInventoryPath(pluginsDir);
25
+ if (!existsSync(invPath))
26
+ return out;
27
+ try {
28
+ const raw = JSON.parse(readFileSync(invPath, "utf8"));
29
+ for (const [key, entry] of Object.entries(raw.packages ?? {})) {
30
+ const keyTrim = key.trim();
31
+ const name = typeof entry?.name === "string" && entry.name.trim()
32
+ ? entry.name.trim()
33
+ : keyTrim;
34
+ if (!name)
35
+ continue;
36
+ const version = typeof entry.version === "string" && entry.version.trim()
37
+ ? entry.version.trim()
38
+ : undefined;
39
+ const kind = typeof entry.kind === "string" && entry.kind.trim()
40
+ ? entry.kind.trim()
41
+ : undefined;
42
+ const source = typeof entry.source === "string" && entry.source.trim()
43
+ ? entry.source.trim()
44
+ : undefined;
45
+ const installedAt = typeof entry.installedAt === "string" && entry.installedAt.trim()
46
+ ? entry.installedAt.trim()
47
+ : undefined;
48
+ const clientInject = Array.isArray(entry.clientInject)
49
+ ? entry.clientInject.filter((x) => typeof x === "string" && Boolean(x.trim()))
50
+ : undefined;
51
+ const clientImmediately = entry.clientImmediately === true;
52
+ out.set(name, {
53
+ name,
54
+ ...(version ? { version } : {}),
55
+ ...(kind ? { kind } : {}),
56
+ ...(source ? { source } : {}),
57
+ ...(installedAt ? { installedAt } : {}),
58
+ ...(clientInject && clientInject.length > 0
59
+ ? { clientInject }
60
+ : {}),
61
+ ...(clientImmediately ? { clientImmediately: true } : {}),
62
+ });
63
+ }
64
+ }
65
+ catch {
66
+ /* empty */
67
+ }
68
+ return out;
69
+ }
70
+ /**
71
+ * Resolve update/reinstall source for a managed package (entryId or aliases).
72
+ */
73
+ export function lookupManagedPluginSourceAt(pluginsDir, ...ids) {
74
+ const packages = readManagedPluginPackagesAt(pluginsDir);
75
+ const index = readManagedPackageIndexAt(pluginsDir);
76
+ const wanted = new Set();
77
+ for (const raw of ids) {
78
+ const id = raw.trim();
79
+ if (!id)
80
+ continue;
81
+ wanted.add(id);
82
+ const canonical = index.resolve(id);
83
+ if (canonical)
84
+ wanted.add(canonical);
85
+ }
86
+ for (const id of wanted) {
87
+ const source = packages.get(id)?.source?.trim();
88
+ if (source)
89
+ return source;
90
+ }
91
+ // Key may differ from durable name — scan raw file aliases via index.
92
+ for (const [name, meta] of packages) {
93
+ if (!wanted.has(name))
94
+ continue;
95
+ const source = meta.source?.trim();
96
+ if (source)
97
+ return source;
98
+ }
99
+ return undefined;
100
+ }
101
+ /**
102
+ * Index `.xrk-plugins.json` so soft-disable keys can canonicalize across
103
+ * inventory key vs `entry.name` drift.
104
+ */
105
+ export function readManagedPackageIndexAt(pluginsDir) {
106
+ const names = new Set();
107
+ const known = new Set();
108
+ const aliasToName = new Map();
109
+ const invPath = managedPluginsInventoryPath(pluginsDir);
110
+ if (!existsSync(invPath)) {
111
+ return {
112
+ names,
113
+ known,
114
+ resolve: () => undefined,
115
+ };
116
+ }
117
+ try {
118
+ const raw = JSON.parse(readFileSync(invPath, "utf8"));
119
+ for (const [key, entry] of Object.entries(raw.packages ?? {})) {
120
+ const keyTrim = key.trim();
121
+ const nameTrim = typeof entry?.name === "string" && entry.name.trim()
122
+ ? entry.name.trim()
123
+ : keyTrim;
124
+ if (!nameTrim)
125
+ continue;
126
+ names.add(nameTrim);
127
+ known.add(nameTrim);
128
+ aliasToName.set(nameTrim, nameTrim);
129
+ if (keyTrim) {
130
+ known.add(keyTrim);
131
+ aliasToName.set(keyTrim, nameTrim);
132
+ }
133
+ }
134
+ }
135
+ catch {
136
+ /* empty index */
137
+ }
138
+ return {
139
+ names,
140
+ known,
141
+ resolve(id) {
142
+ const trimmed = id.trim();
143
+ if (!trimmed)
144
+ return undefined;
145
+ return aliasToName.get(trimmed);
146
+ },
147
+ };
148
+ }
149
+ /** Soft-disabled managed plugin ids under a plugins directory. */
150
+ export function readDisabledPluginIdsAt(pluginsDir) {
151
+ const file = disabledPluginsPath(pluginsDir);
152
+ const out = new Set();
153
+ if (!existsSync(file))
154
+ return out;
155
+ try {
156
+ const raw = JSON.parse(readFileSync(file, "utf8"));
157
+ if (!Array.isArray(raw.ids))
158
+ return out;
159
+ for (const id of raw.ids) {
160
+ if (typeof id === "string" && id.trim())
161
+ out.add(id.trim());
162
+ }
163
+ }
164
+ catch {
165
+ /* empty */
166
+ }
167
+ return out;
168
+ }
169
+ /** Persist soft-disable list (empty set removes the marker file). */
170
+ export function writeDisabledPluginIdsAt(pluginsDir, ids) {
171
+ const dir = path.resolve(pluginsDir);
172
+ mkdirSync(dir, { recursive: true });
173
+ const file = disabledPluginsPath(dir);
174
+ const sorted = [...ids].map((id) => id.trim()).filter(Boolean).sort();
175
+ if (sorted.length === 0) {
176
+ if (existsSync(file))
177
+ rmSync(file, { force: true });
178
+ return;
179
+ }
180
+ const body = `${JSON.stringify({ ids: sorted }, null, 2)}\n`;
181
+ if (existsSync(file)) {
182
+ try {
183
+ if (readFileSync(file, "utf8") === body)
184
+ return;
185
+ }
186
+ catch {
187
+ /* rewrite */
188
+ }
189
+ }
190
+ atomicWriteText(file, body);
191
+ }
192
+ /**
193
+ * Whether `id` is soft-disabled, resolving inventory aliases to the durable
194
+ * package name (and matching stale alias rows still on disk).
195
+ */
196
+ export function isPluginSoftDisabledAt(id, disabled, index) {
197
+ const trimmed = id.trim();
198
+ if (!trimmed)
199
+ return false;
200
+ if (disabled.has(trimmed))
201
+ return true;
202
+ const canonical = index?.resolve(trimmed);
203
+ if (canonical && disabled.has(canonical))
204
+ return true;
205
+ if (!index)
206
+ return false;
207
+ for (const d of disabled) {
208
+ if (index.resolve(d) === (canonical ?? trimmed))
209
+ return true;
210
+ }
211
+ return false;
212
+ }
213
+ /**
214
+ * Collapse aliases → inventory package names and drop ids not in inventory.
215
+ * Returns whether the set changed.
216
+ */
217
+ export function canonicalizeDisabledPluginIdsAt(pluginsDir, disabled, index = readManagedPackageIndexAt(pluginsDir)) {
218
+ const next = new Set();
219
+ for (const id of disabled) {
220
+ const canonical = index.resolve(id);
221
+ if (!canonical)
222
+ continue;
223
+ next.add(canonical);
224
+ }
225
+ if (next.size === disabled.size) {
226
+ let same = true;
227
+ for (const id of next) {
228
+ if (!disabled.has(id)) {
229
+ same = false;
230
+ break;
231
+ }
232
+ }
233
+ if (same)
234
+ return false;
235
+ }
236
+ disabled.clear();
237
+ for (const id of next)
238
+ disabled.add(id);
239
+ return true;
240
+ }
241
+ /**
242
+ * Clear soft-disable for one or more ids (and any aliases that resolve to the
243
+ * same inventory package). Returns true when the on-disk set changed.
244
+ */
245
+ export function clearSoftDisabledIdsAt(pluginsDir, ...rawIds) {
246
+ const root = path.resolve(pluginsDir);
247
+ const disabled = readDisabledPluginIdsAt(root);
248
+ if (disabled.size === 0)
249
+ return false;
250
+ const index = readManagedPackageIndexAt(root);
251
+ const targets = new Set();
252
+ for (const raw of rawIds) {
253
+ const id = raw.trim();
254
+ if (!id)
255
+ continue;
256
+ targets.add(id);
257
+ const canonical = index.resolve(id);
258
+ if (canonical)
259
+ targets.add(canonical);
260
+ }
261
+ if (targets.size === 0)
262
+ return false;
263
+ let dirty = false;
264
+ for (const d of [...disabled]) {
265
+ const dCanon = index.resolve(d) ?? d;
266
+ if (targets.has(d) || targets.has(dCanon)) {
267
+ disabled.delete(d);
268
+ dirty = true;
269
+ }
270
+ }
271
+ if (dirty)
272
+ writeDisabledPluginIdsAt(root, disabled);
273
+ return dirty;
274
+ }
275
+ /**
276
+ * Soft-disable or re-enable a managed package using the durable inventory name.
277
+ * Always strips aliases so the disabled file stays canonical.
278
+ */
279
+ export function setSoftDisabledAt(pluginsDir, options) {
280
+ const root = path.resolve(pluginsDir);
281
+ const index = readManagedPackageIndexAt(root);
282
+ const aliases = new Set();
283
+ for (const id of [options.entryId, ...(options.aliases ?? [])]) {
284
+ const trimmed = id?.trim();
285
+ if (trimmed)
286
+ aliases.add(trimmed);
287
+ }
288
+ const canonical = [...aliases].map((a) => index.resolve(a)).find(Boolean) ??
289
+ options.entryId.trim();
290
+ if (!canonical)
291
+ return;
292
+ const disabled = readDisabledPluginIdsAt(root);
293
+ for (const d of [...disabled]) {
294
+ const dCanon = index.resolve(d) ?? d;
295
+ if (aliases.has(d) || aliases.has(dCanon) || dCanon === canonical) {
296
+ disabled.delete(d);
297
+ }
298
+ }
299
+ if (!options.enabled)
300
+ disabled.add(canonical);
301
+ writeDisabledPluginIdsAt(root, disabled);
302
+ }
303
+ /**
304
+ * Live reconcile process plugins with managed inventory + soft-disable:
305
+ * - unregister soft-disabled ids (never `mcp:*`)
306
+ * - unregister ids no longer discoverable under `pluginsDir` (CLI remove)
307
+ * - load discoverable ids that are enabled but missing from the loader
308
+ *
309
+ * Disk intent applies in-process for the process half; client half still
310
+ * needs a browser reload (`needsRestart`).
311
+ */
312
+ export async function reconcileManagedProcessPlugins(loader, pluginsDir) {
313
+ const root = path.resolve(pluginsDir);
314
+ const disabled = readDisabledPluginIdsAt(root);
315
+ const index = readManagedPackageIndexAt(root);
316
+ const hits = await loader.discover(root);
317
+ const discoveredIds = new Set(hits.map((h) => h.manifest.id));
318
+ for (const plugin of [...loader.list()]) {
319
+ if (plugin.id.startsWith("mcp:"))
320
+ continue;
321
+ const softDisabled = isPluginSoftDisabledAt(plugin.id, disabled, index);
322
+ const missingOnDisk = !discoveredIds.has(plugin.id);
323
+ if (!softDisabled && !missingOnDisk)
324
+ continue;
325
+ await loader.unregister(plugin.id);
326
+ }
327
+ const live = new Set(loader.list().map((p) => p.id));
328
+ for (const hit of hits) {
329
+ const id = hit.manifest.id;
330
+ if (live.has(id))
331
+ continue;
332
+ if (id.startsWith("mcp:"))
333
+ continue;
334
+ if (isPluginSoftDisabledAt(id, disabled, index))
335
+ continue;
336
+ await loader.load(hit);
337
+ live.add(id);
338
+ }
339
+ return loader.list().map((p) => p.id);
340
+ }
341
+ //# sourceMappingURL=managed-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-state.js","sourceRoot":"","sources":["../src/managed-state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xrkseek/harness",
3
- "version": "0.2.6",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {