@moxxy/core 0.5.0 → 0.5.2

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 (156) hide show
  1. package/dist/events/log.d.ts.map +1 -1
  2. package/dist/events/log.js +38 -1
  3. package/dist/events/log.js.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/permissions/engine.d.ts.map +1 -1
  9. package/dist/permissions/engine.js +80 -17
  10. package/dist/permissions/engine.js.map +1 -1
  11. package/dist/plugins/discovery.d.ts.map +1 -1
  12. package/dist/plugins/discovery.js +48 -7
  13. package/dist/plugins/discovery.js.map +1 -1
  14. package/dist/plugins/host.d.ts.map +1 -1
  15. package/dist/plugins/host.js +54 -11
  16. package/dist/plugins/host.js.map +1 -1
  17. package/dist/plugins/lifecycle.d.ts.map +1 -1
  18. package/dist/plugins/lifecycle.js +7 -0
  19. package/dist/plugins/lifecycle.js.map +1 -1
  20. package/dist/plugins/loader.d.ts +9 -0
  21. package/dist/plugins/loader.d.ts.map +1 -1
  22. package/dist/plugins/loader.js +34 -8
  23. package/dist/plugins/loader.js.map +1 -1
  24. package/dist/plugins/registry-kinds.d.ts +21 -2
  25. package/dist/plugins/registry-kinds.d.ts.map +1 -1
  26. package/dist/plugins/registry-kinds.js +3 -1
  27. package/dist/plugins/registry-kinds.js.map +1 -1
  28. package/dist/plugins/toposort.d.ts.map +1 -1
  29. package/dist/plugins/toposort.js +43 -18
  30. package/dist/plugins/toposort.js.map +1 -1
  31. package/dist/preferences.d.ts.map +1 -1
  32. package/dist/preferences.js +5 -4
  33. package/dist/preferences.js.map +1 -1
  34. package/dist/registries/active-backend-registry.d.ts.map +1 -1
  35. package/dist/registries/active-backend-registry.js +10 -1
  36. package/dist/registries/active-backend-registry.js.map +1 -1
  37. package/dist/registries/channels.d.ts +2 -1
  38. package/dist/registries/channels.d.ts.map +1 -1
  39. package/dist/registries/channels.js +30 -20
  40. package/dist/registries/channels.js.map +1 -1
  41. package/dist/registries/commands.d.ts.map +1 -1
  42. package/dist/registries/commands.js +27 -8
  43. package/dist/registries/commands.js.map +1 -1
  44. package/dist/registries/isolators.d.ts +27 -1
  45. package/dist/registries/isolators.d.ts.map +1 -1
  46. package/dist/registries/isolators.js +35 -1
  47. package/dist/registries/isolators.js.map +1 -1
  48. package/dist/registries/modes.d.ts +4 -0
  49. package/dist/registries/modes.d.ts.map +1 -1
  50. package/dist/registries/modes.js +15 -4
  51. package/dist/registries/modes.js.map +1 -1
  52. package/dist/registries/providers.d.ts +8 -0
  53. package/dist/registries/providers.d.ts.map +1 -1
  54. package/dist/registries/providers.js +8 -0
  55. package/dist/registries/providers.js.map +1 -1
  56. package/dist/registries/skills.d.ts +9 -0
  57. package/dist/registries/skills.d.ts.map +1 -1
  58. package/dist/registries/skills.js +22 -0
  59. package/dist/registries/skills.js.map +1 -1
  60. package/dist/requirements.d.ts.map +1 -1
  61. package/dist/requirements.js +7 -1
  62. package/dist/requirements.js.map +1 -1
  63. package/dist/run-turn.d.ts.map +1 -1
  64. package/dist/run-turn.js +65 -17
  65. package/dist/run-turn.js.map +1 -1
  66. package/dist/session.d.ts +9 -0
  67. package/dist/session.d.ts.map +1 -1
  68. package/dist/session.js +25 -3
  69. package/dist/session.js.map +1 -1
  70. package/dist/sessions/persistence.d.ts +15 -19
  71. package/dist/sessions/persistence.d.ts.map +1 -1
  72. package/dist/sessions/persistence.js +116 -49
  73. package/dist/sessions/persistence.js.map +1 -1
  74. package/dist/skills/loader.d.ts.map +1 -1
  75. package/dist/skills/loader.js +11 -2
  76. package/dist/skills/loader.js.map +1 -1
  77. package/dist/skills/synthesize.d.ts.map +1 -1
  78. package/dist/skills/synthesize.js +87 -36
  79. package/dist/skills/synthesize.js.map +1 -1
  80. package/dist/subagents/events.js +33 -2
  81. package/dist/subagents/events.js.map +1 -1
  82. package/dist/subagents/registry.d.ts +22 -1
  83. package/dist/subagents/registry.d.ts.map +1 -1
  84. package/dist/subagents/registry.js +72 -2
  85. package/dist/subagents/registry.js.map +1 -1
  86. package/dist/subagents/run-child.d.ts.map +1 -1
  87. package/dist/subagents/run-child.js +137 -46
  88. package/dist/subagents/run-child.js.map +1 -1
  89. package/dist/surfaces/host.d.ts +10 -0
  90. package/dist/surfaces/host.d.ts.map +1 -1
  91. package/dist/surfaces/host.js +41 -3
  92. package/dist/surfaces/host.js.map +1 -1
  93. package/dist/usage-stats.d.ts +7 -1
  94. package/dist/usage-stats.d.ts.map +1 -1
  95. package/dist/usage-stats.js +41 -15
  96. package/dist/usage-stats.js.map +1 -1
  97. package/dist/view/parse.d.ts.map +1 -1
  98. package/dist/view/parse.js +119 -19
  99. package/dist/view/parse.js.map +1 -1
  100. package/package.json +2 -2
  101. package/src/events/log.test.ts +45 -0
  102. package/src/events/log.ts +39 -1
  103. package/src/index.ts +0 -1
  104. package/src/permissions/engine.test.ts +60 -0
  105. package/src/permissions/engine.ts +81 -16
  106. package/src/plugins/discovery.test.ts +59 -1
  107. package/src/plugins/discovery.ts +57 -9
  108. package/src/plugins/host.test.ts +40 -0
  109. package/src/plugins/host.ts +48 -10
  110. package/src/plugins/lifecycle.test.ts +29 -0
  111. package/src/plugins/lifecycle.ts +7 -0
  112. package/src/plugins/loader.ts +45 -7
  113. package/src/plugins/registry-kinds.test.ts +53 -0
  114. package/src/plugins/registry-kinds.ts +25 -3
  115. package/src/plugins/toposort.ts +45 -17
  116. package/src/preferences.test.ts +52 -1
  117. package/src/preferences.ts +5 -4
  118. package/src/registries/active-backend-registry.ts +10 -1
  119. package/src/registries/channels.test.ts +79 -0
  120. package/src/registries/channels.ts +33 -18
  121. package/src/registries/commands.test.ts +65 -0
  122. package/src/registries/commands.ts +25 -8
  123. package/src/registries/isolators.test.ts +37 -0
  124. package/src/registries/isolators.ts +48 -1
  125. package/src/registries/modes.test.ts +21 -1
  126. package/src/registries/modes.ts +15 -2
  127. package/src/registries/providers.ts +8 -0
  128. package/src/registries/semantics.test.ts +33 -1
  129. package/src/registries/skills.ts +28 -0
  130. package/src/registries/transcribers.test.ts +13 -0
  131. package/src/requirements.test.ts +35 -0
  132. package/src/requirements.ts +7 -1
  133. package/src/run-turn.test.ts +219 -0
  134. package/src/run-turn.ts +68 -18
  135. package/src/session.test.ts +24 -0
  136. package/src/session.ts +24 -3
  137. package/src/sessions/page.test.ts +18 -39
  138. package/src/sessions/persistence.test.ts +93 -1
  139. package/src/sessions/persistence.ts +138 -68
  140. package/src/skills/loader.test.ts +18 -0
  141. package/src/skills/loader.ts +12 -1
  142. package/src/skills/synthesize.test.ts +59 -0
  143. package/src/skills/synthesize.ts +89 -36
  144. package/src/subagents/events.test.ts +56 -0
  145. package/src/subagents/events.ts +32 -2
  146. package/src/subagents/registry.test.ts +106 -0
  147. package/src/subagents/registry.ts +77 -3
  148. package/src/subagents/run-child.test.ts +163 -2
  149. package/src/subagents/run-child.ts +151 -47
  150. package/src/surfaces/host.test.ts +71 -1
  151. package/src/surfaces/host.ts +39 -2
  152. package/src/usage-stats.test.ts +99 -1
  153. package/src/usage-stats.ts +42 -17
  154. package/src/view/parse-extended.test.ts +80 -0
  155. package/src/view/parse.test.ts +14 -0
  156. package/src/view/parse.ts +113 -18
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/plugins/lifecycle.ts"],"names":[],"mappings":"AA0BA,MAAM,OAAO,kBAAkB;IACrB,OAAO,GAAkB,EAAE,CAAC;IACnB,SAAS,CAAS;IAClB,MAAM,CAAS;IACf,YAAY,CAAqC;IAElE,YAAY,IAAuB;QACjC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;IACxC,CAAC;IAED,UAAU,CAAC,OAA8B;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAClF,CAAC;IAED;;;;OAIG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAe;QAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,GAAgB;QACtC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,GAAoB,EAAE,GAAgB;QACrE,IAAI,OAAO,GAAG,GAAG,CAAC;QAClB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,sBAAsB,EAAE,GAAG,EAAE,CAC3D,CAAC,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAC7C,CAAC;YACF,IAAI,IAAI;gBAAE,OAAO,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAoB;QACzC,IAAI,OAAO,GAAoB,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,IAAI,CAAC;YACxC,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,GAAG,IAAI,CAAC;QAChD,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,GAAsB;QAC7C,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,cAAc,EAAE,GAAG,EAAE,CACnD,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,EAAE,GAAG,GAAG,EAAE,MAAM,EAAE,CAAC,CAC3C,CAAC;YACF,IAAI,IAAI;gBAAE,MAAM,GAAG,IAAI,CAAC;QAC1B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAiB,EAAE,GAAe;QACpD,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,GAAgB;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,GAAe;QACpC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClG,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,KAAkB,EAClB,IAA0B,EAC1B,EAA+C;QAE/C,IAAI,KAAgD,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EAAmC,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBAC/C,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,YAAY,CAAC,CAAC,EACzE,IAAI,CAAC,SAAS,CACf,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,oEAAoE;YACpE,8DAA8D;YAC9D,4DAA4D;YAC5D,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;YAChD,OAAO,MAAuB,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpD,OAAO,SAAS,CAAC;QACnB,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK,KAAK,SAAS;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/plugins/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,15 @@
1
1
  import type { PluginLoader } from './host.js';
2
2
  export interface JitiLoaderOptions {
3
3
  readonly cwd: string;
4
+ /**
5
+ * When provided, its return value is appended as a `?v=` query to the ESM
6
+ * import URL so `import()` re-evaluates the module. Supplying this LEAKS a
7
+ * module instance per call — ESM modules can't be unloaded, so every distinct
8
+ * URL is retained for the process lifetime. Provide it ONLY for an explicit
9
+ * hot-reload of a changed `.js`/`.mjs` plugin; omit it for normal loads so a
10
+ * long-lived runner that reloads repeatedly doesn't grow memory without
11
+ * bound. (`.ts` plugins go through jiti, which has its own cache control.)
12
+ */
4
13
  readonly cacheBust?: () => string;
5
14
  }
6
15
  export declare function createPluginLoader(opts: JitiLoaderOptions): PluginLoader;
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;CACnC;AAiBD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAqCxE"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;CACnC;AA8BD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,YAAY,CAqDxE"}
@@ -1,18 +1,30 @@
1
1
  import * as path from 'node:path';
2
2
  import { pathToFileURL } from 'node:url';
3
- let jitiInstance = null;
3
+ // Key the jiti cache by cwd: createPluginLoader is called per-session with the
4
+ // session's cwd, so a single process-global instance rooted at the FIRST cwd
5
+ // would resolve every later session's .ts plugins (and jiti's transform cache)
6
+ // against the wrong base directory — non-deterministically by session order.
7
+ // One jiti per distinct plugin root is bounded and correct.
8
+ const jitiByCwd = new Map();
4
9
  async function getJiti(cwd) {
5
- if (jitiInstance)
6
- return jitiInstance;
10
+ const cached = jitiByCwd.get(cwd);
11
+ if (cached !== undefined)
12
+ return cached;
7
13
  try {
8
14
  const mod = await import('jiti');
9
15
  const factory = mod.createJiti ?? mod.default;
10
- if (!factory)
16
+ if (!factory) {
17
+ jitiByCwd.set(cwd, null);
11
18
  return null;
12
- jitiInstance = factory(cwd, { interopDefault: true });
13
- return jitiInstance;
19
+ }
20
+ const instance = factory(cwd, { interopDefault: true });
21
+ jitiByCwd.set(cwd, instance);
22
+ return instance;
14
23
  }
15
24
  catch {
25
+ // Don't cache a transient import failure as a permanent null — a missing
26
+ // optional `jiti` dep is the only realistic cause and is stable, but not
27
+ // caching here keeps a one-off failure from poisoning all later loads.
16
28
  return null;
17
29
  }
18
30
  }
@@ -20,6 +32,15 @@ export function createPluginLoader(opts) {
20
32
  return {
21
33
  async load(manifest) {
22
34
  const entry = path.resolve(manifest.packagePath, manifest.entry);
35
+ // `manifest.entry` comes from the plugin's own package.json (validated only
36
+ // as a non-empty string). Reject an entry that escapes the package dir
37
+ // (e.g. `../../sibling/internals.js` or an absolute path) so a package can
38
+ // only execute code from inside its own tree — cheap defense-in-depth for
39
+ // provenance/auditing and any future sandbox-by-path assumptions.
40
+ const rel = path.relative(manifest.packagePath, entry);
41
+ if (rel === '' || rel.startsWith('..') || path.isAbsolute(rel)) {
42
+ throw new Error(`Plugin entry escapes its package directory: ${manifest.entry} (package: ${manifest.packagePath})`);
43
+ }
23
44
  const isTs = entry.endsWith('.ts') || entry.endsWith('.tsx');
24
45
  let mod;
25
46
  if (isTs) {
@@ -30,8 +51,13 @@ export function createPluginLoader(opts) {
30
51
  mod = jiti(entry);
31
52
  }
32
53
  else {
33
- const bust = opts.cacheBust?.() ?? `${Date.now()}-${Math.random()}`;
34
- const url = `${pathToFileURL(entry).href}?v=${bust}`;
54
+ // Only cache-bust on an explicit request (caller supplied cacheBust).
55
+ // Busting unconditionally appended a unique `?v=` on EVERY load, and
56
+ // since ESM never unloads a module, each load permanently retained a
57
+ // fresh copy of the plugin + its transitive graph — an unbounded leak
58
+ // across repeated reloads. The plain URL lets ESM reuse its cache.
59
+ const bust = opts.cacheBust?.();
60
+ const url = bust ? `${pathToFileURL(entry).href}?v=${bust}` : pathToFileURL(entry).href;
35
61
  mod = await import(url);
36
62
  }
37
63
  const plugin = extractPlugin(mod);
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
@@ -44,10 +44,29 @@ export interface RegistryKind<TDef> {
44
44
  readonly defs: (plugin: Plugin) => ReadonlyArray<TDef>;
45
45
  /** Extract the registry key from a def (mostly `.name`; surfaces use `.kind`). */
46
46
  readonly nameOf: (def: TDef) => string;
47
- /** Register a single def into its registry (uses `register` or `replace`). */
48
- readonly register: (opts: PluginHostOptions, def: TDef) => void;
47
+ /**
48
+ * Register a single def into its registry (uses `register` or `replace`).
49
+ * `trusted` is true for statically-registered builtins and false for
50
+ * discovered (untrusted) plugins; most kinds ignore it, but the isolator
51
+ * registry uses it to refuse letting a discovered plugin shadow a builtin.
52
+ *
53
+ * Returns `false` when the registration was REFUSED without taking effect
54
+ * (currently only the isolator registry, when an untrusted plugin tries to
55
+ * shadow a trusted name). PluginHost must NOT track a refused registration
56
+ * for rollback — unregistering it on a later mid-`applyPlugin` failure would
57
+ * delete a name this plugin never actually owned. `void`/`true` means applied.
58
+ */
59
+ readonly register: (opts: PluginHostOptions, def: TDef, trusted: boolean) => void | boolean;
49
60
  /** Remove a previously-registered name from its registry. */
50
61
  readonly unregister: (opts: PluginHostOptions, name: string) => void;
62
+ /**
63
+ * True when `register` is an override (`replace`) rather than a throw-on-
64
+ * duplicate insert. Such kinds are last-wins and may clobber a name seeded by
65
+ * core or another plugin, so PluginHost must NOT roll them back when a later
66
+ * kind throws mid-`applyPlugin` (unregistering would delete a def this plugin
67
+ * didn't actually own).
68
+ */
69
+ readonly overrideOnRegister?: boolean;
51
70
  }
52
71
  /**
53
72
  * The authoritative ordered list of contribution kinds. The ORDER here is the
@@ -1 +1 @@
1
- {"version":3,"file":"registry-kinds.d.ts","sourceRoot":"","sources":["../../src/plugins/registry-kinds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,MAAM,EAWP,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvD;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY,CAAC,IAAI;IAChC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,kBAAkB,CAAC;IAC/C,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC;IACvD,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACvC,8EAA8E;IAC9E,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,IAAI,KAAK,IAAI,CAAC;IAChE,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtE;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAoIvB,CAAC"}
1
+ {"version":3,"file":"registry-kinds.d.ts","sourceRoot":"","sources":["../../src/plugins/registry-kinds.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAOV,MAAM,EAWP,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACnD,QAAQ,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClD,QAAQ,CAAC,mBAAmB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC7C,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,gBAAgB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACvD;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,YAAY,CAAC,IAAI;IAChC,kEAAkE;IAClE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE,MAAM,kBAAkB,CAAC;IAC/C,sDAAsD;IACtD,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC;IACvD,kFAAkF;IAClF,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,KAAK,MAAM,CAAC;IACvC;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAC5F,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;CACvC;AAED;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAuIvB,CAAC"}
@@ -52,6 +52,7 @@ export const REGISTRY_KINDS = [
52
52
  // viewRenderers use `replace` (override-allowed) on the register side.
53
53
  register: (o, v) => o.viewRenderers.replace(v),
54
54
  unregister: (o, n) => o.viewRenderers.unregister(n),
55
+ overrideOnRegister: true,
55
56
  },
56
57
  {
57
58
  kind: 'tunnelProvider',
@@ -61,6 +62,7 @@ export const REGISTRY_KINDS = [
61
62
  // tunnelProviders use `replace` (override-allowed) on the register side.
62
63
  register: (o, t) => o.tunnelProviders.replace(t),
63
64
  unregister: (o, n) => o.tunnelProviders.unregister(n),
65
+ overrideOnRegister: true,
64
66
  },
65
67
  {
66
68
  kind: 'channel',
@@ -124,7 +126,7 @@ export const REGISTRY_KINDS = [
124
126
  recordField: 'isolatorNames',
125
127
  defs: (p) => p.isolators ?? [],
126
128
  nameOf: (i) => i.name,
127
- register: (o, i) => o.isolators.register(i),
129
+ register: (o, i, trusted) => o.isolators.register(i, { trusted, logger: o.logger }),
128
130
  unregister: (o, n) => o.isolators.unregister(n),
129
131
  },
130
132
  {
@@ -1 +1 @@
1
- {"version":3,"file":"registry-kinds.js","sourceRoot":"","sources":["../../src/plugins/registry-kinds.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-kinds.js","sourceRoot":"","sources":["../../src/plugins/registry-kinds.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toposort.d.ts","sourceRoot":"","sources":["../../src/plugins/toposort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;gBAA5B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;CAIlD;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAC/C,aAAa,CAAC,sBAAsB,CAAC,CA6BvC"}
1
+ {"version":3,"file":"toposort.d.ts","sourceRoot":"","sources":["../../src/plugins/toposort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IAC7B,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;gBAA5B,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC;CAIlD;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAC/C,aAAa,CAAC,sBAAsB,CAAC,CAyDvC"}
@@ -30,28 +30,53 @@ export function toposortPluginManifests(manifests) {
30
30
  const order = [];
31
31
  const visited = new Set();
32
32
  const onStack = new Set();
33
- const stack = [];
34
- const visit = (name) => {
35
- if (visited.has(name))
33
+ // Path of names from the current root, mirroring the old recursion stack so a
34
+ // detected cycle reports the same participating names.
35
+ const path = [];
36
+ const visitRoot = (root) => {
37
+ if (visited.has(root))
36
38
  return;
37
- if (onStack.has(name)) {
38
- const startIdx = stack.indexOf(name);
39
- throw new PluginCycleError(stack.slice(startIdx).concat(name));
40
- }
41
- const manifest = byPackage.get(name);
42
- if (!manifest)
39
+ const rootManifest = byPackage.get(root);
40
+ if (!rootManifest)
43
41
  return; // unknown dep — leave for readiness gate
44
- onStack.add(name);
45
- stack.push(name);
46
- for (const dep of pluginDeps(manifest.requirements))
47
- visit(dep);
48
- onStack.delete(name);
49
- stack.pop();
50
- visited.add(name);
51
- order.push(manifest);
42
+ const stack = [{ name: root, deps: pluginDeps(rootManifest.requirements), next: 0 }];
43
+ onStack.add(root);
44
+ path.push(root);
45
+ while (stack.length > 0) {
46
+ const frame = stack[stack.length - 1];
47
+ if (!frame)
48
+ break;
49
+ if (frame.next < frame.deps.length) {
50
+ const dep = frame.deps[frame.next++];
51
+ if (dep === undefined)
52
+ continue;
53
+ if (visited.has(dep))
54
+ continue;
55
+ if (onStack.has(dep)) {
56
+ const startIdx = path.indexOf(dep);
57
+ throw new PluginCycleError(path.slice(startIdx).concat(dep));
58
+ }
59
+ const depManifest = byPackage.get(dep);
60
+ if (!depManifest)
61
+ continue; // unknown dep — leave for readiness gate
62
+ onStack.add(dep);
63
+ path.push(dep);
64
+ stack.push({ name: dep, deps: pluginDeps(depManifest.requirements), next: 0 });
65
+ continue;
66
+ }
67
+ // All deps emitted → post-order emit this frame, same as the recursive
68
+ // version pushed after its dependency loop.
69
+ const done = stack.pop();
70
+ onStack.delete(done.name);
71
+ path.pop();
72
+ visited.add(done.name);
73
+ const manifest = byPackage.get(done.name);
74
+ if (manifest)
75
+ order.push(manifest);
76
+ }
52
77
  };
53
78
  for (const m of manifests)
54
- visit(m.packageName);
79
+ visitRoot(m.packageName);
55
80
  return order;
56
81
  }
57
82
  function pluginDeps(requirements) {
@@ -1 +1 @@
1
- {"version":3,"file":"toposort.js","sourceRoot":"","sources":["../../src/plugins/toposort.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACpB;IAArB,YAAqB,KAA4B;QAC/C,KAAK,CAAC,sCAAsC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAD/C,UAAK,GAAL,KAAK,CAAuB;QAE/C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CACrC,SAAgD;IAEhD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkC,CAAC;IAC5D,KAAK,MAAM,CAAC,IAAI,SAAS;QAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE3D,MAAM,KAAK,GAA6B,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACnC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrC,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,QAAQ;YAAE,OAAO,CAAC,yCAAyC;QAEhE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrB,KAAK,CAAC,GAAG,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,KAAK,MAAM,CAAC,IAAI,SAAS;QAAE,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CACjB,YAAyD;IAEzD,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAC7B,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"toposort.js","sourceRoot":"","sources":["../../src/plugins/toposort.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACpD;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAYjE;AAUD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrF"}
1
+ {"version":3,"file":"preferences.d.ts","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,yDAAyD;IACzD,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACpD;AAED,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED;;;;GAIG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAYjE;AAUD;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAcrF"}
@@ -1,10 +1,11 @@
1
1
  import { promises as fs } from 'node:fs';
2
- import * as os from 'node:os';
3
- import * as path from 'node:path';
4
2
  import { createMutex, migrateModeName } from '@moxxy/sdk';
5
- import { writeFileAtomic } from '@moxxy/sdk/server';
3
+ import { moxxyPath, writeFileAtomic } from '@moxxy/sdk/server';
6
4
  export function preferencesPath() {
7
- return path.join(os.homedir(), '.moxxy', 'preferences.json');
5
+ // Route through `moxxyPath` so a `$MOXXY_HOME` override relocates preferences
6
+ // alongside the rest of the data dir (config.yaml, vault, providers.json, …).
7
+ // Identical to `~/.moxxy/preferences.json` when MOXXY_HOME is unset.
8
+ return moxxyPath('preferences.json');
8
9
  }
9
10
  /**
10
11
  * Read preferences from disk. Returns an empty object when the file
@@ -1 +1 @@
1
- {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAyBpD,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC/D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAA0B,CAAC;YACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,uEAAuE;AACvE,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,+DAA+D;AAC/D,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAgC;IACpE,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAC;QACxC,MAAM,IAAI,GAAqB,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2CAA2C,MAAM,IAAI;gBACnD,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"preferences.js","sourceRoot":"","sources":["../src/preferences.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAyB/D,MAAM,UAAU,eAAe;IAC7B,8EAA8E;IAC9E,8EAA8E;IAC9E,qEAAqE;IACrE,OAAO,SAAS,CAAC,kBAAkB,CAAC,CAAC;AACvC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,MAAM,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAA0B,CAAC;YACzC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAC9E,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,uEAAuE;AACvE,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,+DAA+D;AAC/D,MAAM,UAAU,GAAG,WAAW,EAAE,CAAC;AAEjC;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAgC;IACpE,OAAO,UAAU,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAC;QACxC,MAAM,IAAI,GAAqB,EAAE,GAAG,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,eAAe,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2CAA2C,MAAM,IAAI;gBACnD,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAC1D,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"active-backend-registry.d.ts","sourceRoot":"","sources":["../../src/registries/active-backend-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,sBAAsB,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS;IAC9E,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;IAC1E,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;gEAE4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,qBAAqB,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS;IAK7D,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,MAAM,CAAuB;gBAER,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC;IAE1E,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI;IAS/C;4BACwB;IACxB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI;IAM9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM9B,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC;IAI3B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAmBpE,2EAA2E;IAC3E,WAAW,IAAI,IAAI;IAInB,SAAS,IAAI,SAAS;IAUtB;kFAC8E;IAC9E,YAAY,IAAI,SAAS,GAAG,IAAI;IAYhC,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B,yEAAyE;IACzE,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;CAKtB"}
1
+ {"version":3,"file":"active-backend-registry.d.ts","sourceRoot":"","sources":["../../src/registries/active-backend-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,sBAAsB,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS;IAC9E,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;IAC1E,2EAA2E;IAC3E,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;gEAE4D;IAC5D,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,qBAAa,qBAAqB,CAAC,IAAI,SAAS;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,SAAS;IAK7D,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;IAChD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,MAAM,CAAuB;gBAER,IAAI,EAAE,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC;IAE1E,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI;IAS/C;4BACwB;IACxB,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,GAAG,IAAI;IAe9C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM9B,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC;IAI3B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAmBpE,2EAA2E;IAC3E,WAAW,IAAI,IAAI;IAInB,SAAS,IAAI,SAAS;IAUtB;kFAC8E;IAC9E,YAAY,IAAI,SAAS,GAAG,IAAI;IAYhC,aAAa,IAAI,MAAM,GAAG,IAAI;IAI9B,yEAAyE;IACzE,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,aAAa;CAKtB"}
@@ -21,8 +21,17 @@ export class ActiveBackendRegistry {
21
21
  replace(def, instance) {
22
22
  this.defs.set(def.name, def);
23
23
  this.instances.delete(def.name);
24
- if (instance)
24
+ if (instance) {
25
25
  this.instances.set(def.name, instance);
26
+ }
27
+ else if (this.active === def.name && !this.opts.buildOnRead) {
28
+ // For a non-buildOnRead registry, getActive() reads the cached instance
29
+ // directly and throws when it's missing. Dropping the active def's cache
30
+ // (e.g. a hot-reloaded plugin re-registering via replace) would otherwise
31
+ // strand getActive() until the next setActive. buildOnRead registries
32
+ // self-heal on read, so they don't need this.
33
+ this.instances.set(def.name, this.buildInstance(def.name));
34
+ }
26
35
  }
27
36
  unregister(name) {
28
37
  this.defs.delete(name);
@@ -1 +1 @@
1
- {"version":3,"file":"active-backend-registry.js","sourceRoot":"","sources":["../../src/registries/active-backend-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"active-backend-registry.js","sourceRoot":"","sources":["../../src/registries/active-backend-registry.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { DefMapRegistry } from './def-map-registry.js';
4
4
  * Flat name→def registry of channels ({@link DefMapRegistry}) plus
5
5
  * `listWithAvailability`, which pairs each channel with its current
6
6
  * availability (treating channels without an `isAvailable` hook as
7
- * `{ ok: true }` and mapping a thrown probe to `{ ok: false }`).
7
+ * `{ ok: true }` and mapping a thrown OR timed-out probe to `{ ok: false }`).
8
8
  */
9
9
  export declare class ChannelRegistryImpl extends DefMapRegistry<ChannelDef> implements ChannelRegistry {
10
10
  constructor();
@@ -12,5 +12,6 @@ export declare class ChannelRegistryImpl extends DefMapRegistry<ChannelDef> impl
12
12
  def: ChannelDef;
13
13
  availability: ChannelAvailability;
14
14
  }>>;
15
+ private probe;
15
16
  }
16
17
  //# sourceMappingURL=channels.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/registries/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,UAAU,CAAE,YAAW,eAAe;;IAKtF,oBAAoB,CACxB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,aAAa,CAAC;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;CAoBlF"}
1
+ {"version":3,"file":"channels.d.ts","sourceRoot":"","sources":["../../src/registries/channels.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAClB,eAAe,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAQvD;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,cAAc,CAAC,UAAU,CAAE,YAAW,eAAe;;IAKtF,oBAAoB,CACxB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,aAAa,CAAC;QAAE,GAAG,EAAE,UAAU,CAAC;QAAC,YAAY,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;YAYnE,KAAK;CAiBpB"}
@@ -1,35 +1,45 @@
1
1
  import { DefMapRegistry } from './def-map-registry.js';
2
+ /** Upper bound on a single channel availability probe. `isAvailable` hooks can
3
+ * do network/process probes (tunnel reachability, binary presence); a hung one
4
+ * (dead socket, no DNS) must not block the whole listing — which typically
5
+ * backs a UI picker — indefinitely. */
6
+ const AVAILABILITY_PROBE_TIMEOUT_MS = 4_000;
2
7
  /**
3
8
  * Flat name→def registry of channels ({@link DefMapRegistry}) plus
4
9
  * `listWithAvailability`, which pairs each channel with its current
5
10
  * availability (treating channels without an `isAvailable` hook as
6
- * `{ ok: true }` and mapping a thrown probe to `{ ok: false }`).
11
+ * `{ ok: true }` and mapping a thrown OR timed-out probe to `{ ok: false }`).
7
12
  */
8
13
  export class ChannelRegistryImpl extends DefMapRegistry {
9
14
  constructor() {
10
15
  super({ noun: 'Channel', keyOf: (def) => def.name });
11
16
  }
12
17
  async listWithAvailability(deps) {
13
- const out = [];
14
- for (const def of this.defs.values()) {
15
- let availability;
16
- if (def.isAvailable) {
17
- try {
18
- availability = await def.isAvailable(deps);
19
- }
20
- catch (err) {
21
- availability = {
22
- ok: false,
23
- reason: err instanceof Error ? err.message : String(err),
24
- };
25
- }
26
- }
27
- else {
28
- availability = { ok: true };
29
- }
30
- out.push({ def, availability });
18
+ // Probe in parallel — a serial loop meant one slow probe also starved every
19
+ // fast probe queued behind it — and bound each probe with a timeout so a
20
+ // single hung channel can't wedge the whole listing.
21
+ return Promise.all([...this.defs.values()].map(async (def) => ({
22
+ def,
23
+ availability: await this.probe(def, deps),
24
+ })));
25
+ }
26
+ async probe(def, deps) {
27
+ if (!def.isAvailable)
28
+ return { ok: true };
29
+ let timer;
30
+ try {
31
+ const timeout = new Promise((resolve) => {
32
+ timer = setTimeout(() => resolve({ ok: false, reason: 'availability check timed out' }), AVAILABILITY_PROBE_TIMEOUT_MS);
33
+ });
34
+ return await Promise.race([Promise.resolve(def.isAvailable(deps)), timeout]);
35
+ }
36
+ catch (err) {
37
+ return { ok: false, reason: err instanceof Error ? err.message : String(err) };
38
+ }
39
+ finally {
40
+ if (timer !== undefined)
41
+ clearTimeout(timer);
31
42
  }
32
- return out;
33
43
  }
34
44
  }
35
45
  //# sourceMappingURL=channels.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/registries/channels.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAA0B;IACjE;QACE,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,IAAwB;QAExB,MAAM,GAAG,GAAkE,EAAE,CAAC;QAC9E,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YACrC,IAAI,YAAiC,CAAC;YACtC,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACpB,IAAI,CAAC;oBACH,YAAY,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAC7C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,YAAY,GAAG;wBACb,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;qBACzD,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,YAAY,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;YAC9B,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;CACF"}
1
+ {"version":3,"file":"channels.js","sourceRoot":"","sources":["../../src/registries/channels.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD;;;wCAGwC;AACxC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAE5C;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,cAA0B;IACjE;QACE,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,oBAAoB,CACxB,IAAwB;QAExB,4EAA4E;QAC5E,yEAAyE;QACzE,qDAAqD;QACrD,OAAO,OAAO,CAAC,GAAG,CAChB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1C,GAAG;YACH,YAAY,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC;SAC1C,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,GAAe,EAAE,IAAwB;QAC3D,IAAI,CAAC,GAAG,CAAC,WAAW;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;QAC1C,IAAI,KAAgD,CAAC;QACrD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;gBAC3D,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC,EACpE,6BAA6B,CAC9B,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACjF,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK,KAAK,SAAS;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/registries/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAC1D,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAgB/B,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAY9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAOzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,aAAa,CAAC,UAAU,CAAC;IAIjC;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;CAK3D"}
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/registries/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiC;IAC1D,kDAAkD;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IAErD,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IAmB/B,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI;IA0B9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAO9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAOzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,IAAI,IAAI,aAAa,CAAC,UAAU,CAAC;IAIjC;;;;OAIG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;CAK3D"}
@@ -19,25 +19,44 @@ export class CommandRegistry {
19
19
  if (this.aliases.has(cmd.name)) {
20
20
  throw new Error(`Command name already in use as an alias: /${cmd.name}`);
21
21
  }
22
- this.commands.set(cmd.name, cmd);
22
+ // Validate EVERY alias up front, before mutating any state, so a collision
23
+ // on the second alias can't leave the command half-registered (def set +
24
+ // some aliases) — the registry stays atomic on a throw.
23
25
  for (const alias of cmd.aliases ?? []) {
24
26
  if (this.aliases.has(alias) || this.commands.has(alias)) {
25
27
  throw new Error(`Command alias already in use: /${alias}`);
26
28
  }
27
- this.aliases.set(alias, cmd.name);
28
29
  }
30
+ this.commands.set(cmd.name, cmd);
31
+ for (const alias of cmd.aliases ?? [])
32
+ this.aliases.set(alias, cmd.name);
29
33
  }
30
34
  replace(cmd) {
31
- // Clean up any aliases of the prior definition before re-adding.
32
35
  const prior = this.commands.get(cmd.name);
33
- if (prior) {
34
- for (const alias of prior.aliases ?? [])
35
- this.aliases.delete(alias);
36
+ const priorAliases = new Set(prior?.aliases ?? []);
37
+ // Validate the new aliases BEFORE mutating anything, mirroring register()'s
38
+ // guards so replace() can't silently hijack an alias owned by a different
39
+ // command or shadow another command's primary name. Validating first (rather
40
+ // than deleting the prior aliases then re-adding) keeps replace() atomic: a
41
+ // collision on a later alias must not have already destroyed the prior
42
+ // definition's aliases. An alias the prior def itself owned is exempt (it's
43
+ // about to be re-added under the same name).
44
+ for (const alias of cmd.aliases ?? []) {
45
+ const owner = this.aliases.get(alias);
46
+ if (owner && owner !== cmd.name && !priorAliases.has(alias)) {
47
+ throw new Error(`Command alias already in use: /${alias}`);
48
+ }
49
+ if (this.commands.has(alias) && alias !== cmd.name) {
50
+ throw new Error(`Command alias already in use as a command name: /${alias}`);
51
+ }
36
52
  }
53
+ // All validated — now mutate. Clean up the prior definition's aliases, then
54
+ // install the new def + its aliases.
55
+ for (const alias of priorAliases)
56
+ this.aliases.delete(alias);
37
57
  this.commands.set(cmd.name, cmd);
38
- for (const alias of cmd.aliases ?? []) {
58
+ for (const alias of cmd.aliases ?? [])
39
59
  this.aliases.set(alias, cmd.name);
40
- }
41
60
  }
42
61
  unregister(name) {
43
62
  const cmd = this.commands.get(name);
@@ -1 +1 @@
1
- {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/registries/commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/registries/commands.ts"],"names":[],"mappings":"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"}