@namzu/sdk 48.3.1 → 49.0.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 (149) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/config/registry.d.ts +2 -0
  3. package/dist/config/registry.d.ts.map +1 -1
  4. package/dist/config/registry.js +23 -3
  5. package/dist/config/registry.js.map +1 -1
  6. package/dist/connector/mcp/discovery.d.ts +9 -5
  7. package/dist/connector/mcp/discovery.d.ts.map +1 -1
  8. package/dist/connector/mcp/discovery.js +16 -8
  9. package/dist/connector/mcp/discovery.js.map +1 -1
  10. package/dist/connector/mcp/mcp-toolset.d.ts +3 -0
  11. package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -1
  12. package/dist/connector/mcp/mcp-toolset.js +20 -2
  13. package/dist/connector/mcp/mcp-toolset.js.map +1 -1
  14. package/dist/connector/mcp/reconnect.d.ts +2 -0
  15. package/dist/connector/mcp/reconnect.d.ts.map +1 -1
  16. package/dist/connector/mcp/reconnect.js +36 -5
  17. package/dist/connector/mcp/reconnect.js.map +1 -1
  18. package/dist/plugin/lifecycle.d.ts +14 -10
  19. package/dist/plugin/lifecycle.d.ts.map +1 -1
  20. package/dist/plugin/lifecycle.js +178 -41
  21. package/dist/plugin/lifecycle.js.map +1 -1
  22. package/dist/prompt/resident-learning.js +2 -2
  23. package/dist/prompt/resident-learning.js.map +1 -1
  24. package/dist/prompt/resident-step.d.ts +2 -2
  25. package/dist/prompt/resident-step.js +4 -4
  26. package/dist/prompt/resident-step.js.map +1 -1
  27. package/dist/public-runtime.d.ts +2 -2
  28. package/dist/public-runtime.d.ts.map +1 -1
  29. package/dist/public-runtime.js +2 -2
  30. package/dist/public-runtime.js.map +1 -1
  31. package/dist/registry/tool/screen.d.ts.map +1 -1
  32. package/dist/registry/tool/screen.js +33 -2
  33. package/dist/registry/tool/screen.js.map +1 -1
  34. package/dist/runtime/jobs/registry.d.ts.map +1 -1
  35. package/dist/runtime/jobs/registry.js +26 -5
  36. package/dist/runtime/jobs/registry.js.map +1 -1
  37. package/dist/runtime/query/index.d.ts +6 -0
  38. package/dist/runtime/query/index.d.ts.map +1 -1
  39. package/dist/runtime/query/index.js +20 -1
  40. package/dist/runtime/query/index.js.map +1 -1
  41. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  42. package/dist/runtime/query/iteration/index.js +32 -8
  43. package/dist/runtime/query/iteration/index.js.map +1 -1
  44. package/dist/runtime/query/iteration/outstanding-work.d.ts.map +1 -1
  45. package/dist/runtime/query/iteration/outstanding-work.js +2 -0
  46. package/dist/runtime/query/iteration/outstanding-work.js.map +1 -1
  47. package/dist/runtime/query/iteration/phases/context.d.ts +4 -0
  48. package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
  49. package/dist/runtime/query/iteration/phases/context.js.map +1 -1
  50. package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
  51. package/dist/runtime/query/iteration/phases/tool-review.js +7 -1
  52. package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
  53. package/dist/runtime/query/iteration/step-shaping.d.ts +2 -0
  54. package/dist/runtime/query/iteration/step-shaping.d.ts.map +1 -1
  55. package/dist/runtime/query/iteration/step-shaping.js +5 -1
  56. package/dist/runtime/query/iteration/step-shaping.js.map +1 -1
  57. package/dist/store/index.d.ts +1 -0
  58. package/dist/store/index.d.ts.map +1 -1
  59. package/dist/store/index.js +1 -0
  60. package/dist/store/index.js.map +1 -1
  61. package/dist/store/memory/disk.d.ts +7 -2
  62. package/dist/store/memory/disk.d.ts.map +1 -1
  63. package/dist/store/memory/disk.js +58 -5
  64. package/dist/store/memory/disk.js.map +1 -1
  65. package/dist/store/memory/index.d.ts +9 -0
  66. package/dist/store/memory/index.d.ts.map +1 -1
  67. package/dist/store/memory/index.js +43 -5
  68. package/dist/store/memory/index.js.map +1 -1
  69. package/dist/store/memory/markdown.d.ts +7 -2
  70. package/dist/store/memory/markdown.d.ts.map +1 -1
  71. package/dist/store/memory/markdown.js +33 -0
  72. package/dist/store/memory/markdown.js.map +1 -1
  73. package/dist/store/memory/memory.d.ts +7 -2
  74. package/dist/store/memory/memory.d.ts.map +1 -1
  75. package/dist/store/memory/memory.js +34 -0
  76. package/dist/store/memory/memory.js.map +1 -1
  77. package/dist/store/memory/revision.d.ts +16 -0
  78. package/dist/store/memory/revision.d.ts.map +1 -0
  79. package/dist/store/memory/revision.js +144 -0
  80. package/dist/store/memory/revision.js.map +1 -0
  81. package/dist/tools/builtins/wait-for-job-bounds.d.ts +6 -4
  82. package/dist/tools/builtins/wait-for-job-bounds.d.ts.map +1 -1
  83. package/dist/tools/builtins/wait-for-job-bounds.js +42 -8
  84. package/dist/tools/builtins/wait-for-job-bounds.js.map +1 -1
  85. package/dist/tools/builtins/wait-for-job.d.ts +1 -0
  86. package/dist/tools/builtins/wait-for-job.d.ts.map +1 -1
  87. package/dist/tools/builtins/wait-for-job.js +24 -10
  88. package/dist/tools/builtins/wait-for-job.js.map +1 -1
  89. package/dist/tools/memory/delete.d.ts.map +1 -1
  90. package/dist/tools/memory/delete.js +38 -3
  91. package/dist/tools/memory/delete.js.map +1 -1
  92. package/dist/tools/memory/read.d.ts.map +1 -1
  93. package/dist/tools/memory/read.js +38 -2
  94. package/dist/tools/memory/read.js.map +1 -1
  95. package/dist/tools/memory/search.d.ts.map +1 -1
  96. package/dist/tools/memory/search.js +38 -7
  97. package/dist/tools/memory/search.js.map +1 -1
  98. package/dist/tools/memory/update.d.ts.map +1 -1
  99. package/dist/tools/memory/update.js +30 -3
  100. package/dist/tools/memory/update.js.map +1 -1
  101. package/dist/toolsets/manager.d.ts +13 -0
  102. package/dist/toolsets/manager.d.ts.map +1 -1
  103. package/dist/toolsets/manager.js +60 -1
  104. package/dist/toolsets/manager.js.map +1 -1
  105. package/dist/turn/memory-recall.d.ts +2 -0
  106. package/dist/turn/memory-recall.d.ts.map +1 -1
  107. package/dist/turn/memory-recall.js +3 -1
  108. package/dist/turn/memory-recall.js.map +1 -1
  109. package/dist/types/memory/index.d.ts +29 -0
  110. package/dist/types/memory/index.d.ts.map +1 -1
  111. package/dist/types/memory/index.js +6 -0
  112. package/dist/types/memory/index.js.map +1 -1
  113. package/dist/types/plugin/index.d.ts +12 -2
  114. package/dist/types/plugin/index.d.ts.map +1 -1
  115. package/dist/types/plugin/index.js +5 -2
  116. package/dist/types/plugin/index.js.map +1 -1
  117. package/package.json +1 -1
  118. package/src/config/registry.ts +24 -3
  119. package/src/connector/mcp/discovery.ts +29 -8
  120. package/src/connector/mcp/mcp-toolset.ts +25 -4
  121. package/src/connector/mcp/reconnect.ts +34 -4
  122. package/src/plugin/lifecycle.ts +217 -46
  123. package/src/prompt/resident-learning.ts +2 -2
  124. package/src/prompt/resident-step.ts +4 -4
  125. package/src/public-runtime.ts +2 -0
  126. package/src/registry/tool/screen.ts +34 -2
  127. package/src/runtime/jobs/registry.ts +25 -8
  128. package/src/runtime/query/index.ts +24 -1
  129. package/src/runtime/query/iteration/index.ts +35 -10
  130. package/src/runtime/query/iteration/outstanding-work.ts +2 -0
  131. package/src/runtime/query/iteration/phases/context.ts +4 -0
  132. package/src/runtime/query/iteration/phases/tool-review.ts +6 -1
  133. package/src/runtime/query/iteration/step-shaping.ts +9 -1
  134. package/src/store/index.ts +1 -0
  135. package/src/store/memory/disk.ts +82 -7
  136. package/src/store/memory/index.ts +66 -7
  137. package/src/store/memory/markdown.ts +54 -2
  138. package/src/store/memory/memory.ts +52 -2
  139. package/src/store/memory/revision.ts +158 -0
  140. package/src/tools/builtins/wait-for-job-bounds.ts +42 -7
  141. package/src/tools/builtins/wait-for-job.ts +25 -11
  142. package/src/tools/memory/delete.ts +33 -3
  143. package/src/tools/memory/read.ts +35 -2
  144. package/src/tools/memory/search.ts +38 -7
  145. package/src/tools/memory/update.ts +28 -3
  146. package/src/toolsets/manager.ts +74 -1
  147. package/src/turn/memory-recall.ts +5 -1
  148. package/src/types/memory/index.ts +43 -0
  149. package/src/types/plugin/index.ts +11 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,40 @@
1
1
  # Changelog
2
2
 
3
+ ## 49.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - b7d83ec: `ToolManager.toPromptSection()` no longer includes server-authored description hints for deferred MCP tools. It still lists their names. If a host calls this method directly and relied on those hints in its system prompt, call `toUntrustedDeferredContext()` separately and put its labelled output in a request-only context message after history. The SDK query path does this automatically, bounds the hint list to 4,000 characters plus its provenance frame, prices the largest permitted rendering before step preparation and filters it to permitted tools. Hosts preparing their own steps can call `snapshotUntrustedDeferredContext()` for the same bounded snapshot. MCP tools remain searchable by their full descriptions through `search_tools`.
8
+ - b7d83ec: Plugin `user_prompt_submit` annotations now reach the model as user-role request context instead of system instructions. The CLI gives operator shell output and idle background-job exits the same request-context role. Hosts that used these observation channels to issue policy must move that policy to an explicit trusted instruction; the observations remain visible to the model on the current request.
9
+
10
+ The `namzu mcp test` HTTP 401 hint now uses a literal `<name>` placeholder instead of embedding the configured server name in a runnable shell command.
11
+
12
+ - b7d83ec: Memory and saved resident state now reach the model as request-only user-role context rather than system guidance. In the SDK, `createMemoryRecallStep` returns `PrepareStepResult.context` instead of `system`; hosts that read or compose the hook result must use `context` and pass it through the normal preparation chain. Resident continuation, wake evidence, skill catalogues and learned text also move from system `dynamic` or `turn` contributions to `context`; hosts that inspect placements must migrate. `context` contributions now render once before `prepareStep` so their estimated cost reduces preparation headroom; hosts relying on a contribution to observe preparation side effects in the same model step must move that logic to a later stage. The CLI moves file-backed `USER.md` and `MEMORY.md`, its stored-memory index, and automatic recall out of system prompts on new sends, resident turns and resumes. Interactive resident turns now place admitted data in the new `SendOptions.extraContext` request-only field; their fixed doctrine remains in `extraSystem`. Hosts that relied on memory files or resident data as system instructions must pass trusted guidance explicitly. This changes default provider-visible roles and may change model behavior and prompt-cache accounting; request-only context still uses input tokens on each request and the CLI bounds memory against estimated remaining request room.
13
+ - b7d83ec: Plugin MCP server declarations now reject fields they do not implement, including `url`, `headers`, `inheritEnv` and `requireApproval`. Those fields were previously accepted and silently removed while the declared stdio command still started. Remove unsupported fields from `plugin.json` or an in-code plugin; configure a remote server through the host's MCP settings and express approval in host source permissions. Plugin MCP startup now has a ten-second deadline across connection and discovery, configurable with `connectTimeoutMs` up to one hour, and cleans up a failed connection before rolling back the plugin.
14
+
15
+ Hosts supplying `ConfigRegistry` must move plugin reconnect-policy overrides from `mcp.<server-name>` to `mcp.plugin.<plugin-name>.<server-name>`; the old key was shared by unrelated plugins and is no longer read. A `ConfigScope` now has `dispose()` to release its live namespace and watchers while retaining saved overrides. Plugin disable and failed enable release their scopes, and overlapping enable, disable and uninstall calls for one plugin id now settle in call order.
16
+
17
+ Plugin MCP drift is now tracked by full plugin source id rather than bare server name: hosts that relied on a drift event between two unrelated plugins using the same local server label should compare those sources explicitly. The baseline now follows the one admitted listing actually mounted as tools, including reconnect and list-change refreshes; a second startup listing is gone.
18
+
19
+ - b7d83ec: `wait_for_job` now returns `success: true` when its idle or total wait bound is reached. Previously that outcome returned `success: false` and was treated as a failed tool call. Callers that used `success === false` to detect a wait timeout must check `data.timedOut` (`idle` or `wall`) instead. The job keeps running in either case.
20
+
21
+ The tool now includes a bounded partial output preview and absolute `nextOffset` on timeout, and accepts `from_offset` on the next call so callers can continue without receiving the same bytes again. It reports output omitted by the wait's 32 KiB cap separately from bytes lost by the job registry's retention cap.
22
+
23
+ ### Minor Changes
24
+
25
+ - 2b1cbb5: Hosts can use `QueryParams.onJobNoticeDelivered(jobIds)` to distinguish background job exits recorded for the model from exits that still need delivery on a later turn. The CLI now keeps a late exit pending for the next turn, retains it after a failed or aborted send, and shows its transcript row once.
26
+ - b7d83ec: Built-in memory stores now offer opt-in revision-checked updates and deletion. Read an opaque token with `getVersionedRecord` or `read_memory`, then pass it to `updateIfRevision`, `deleteIfRevision`, `update_memory`, or `delete_memory`. A stale token reports a conflict without applying the change. Existing calls without a revision keep their last-writer-wins behavior; custom stores need to implement the full conditional interface to accept revisions.
27
+
28
+ In-memory revisions cover cloneable BigInt, Map, Set, Date, cyclic metadata and the full backing buffers visible through typed-array views. Direct resizable `ArrayBuffer` values include their resize attributes. When metadata cannot be fingerprinted synchronously, including views backed by `SharedArrayBuffer` or resizable `ArrayBuffer`, `read_memory` still reads it but offers no revision; conditional writes fail closed.
29
+
30
+ When a tool-result guardrail rewrites text, it also replaces separate model-visible content blocks and the original failure error, so neither channel can bypass redaction.
31
+
32
+ - b7d83ec: Memory searches can now bound candidate scans with `maxScanned` and continue using `scanOffset`. Results report `truncated`, `scannedCount` and `nextScanOffset`, with `totalCount` counting only matches in an incomplete page. `search_memory` uses a 256-candidate page and accepts `scan_offset`; repeat with the returned offset when an older memory may match. Automatic recall also searches at most 256 recent candidates by default, configurable through `MemoryRecallOptions.maxScanned`. Disk stores select the page before reading its bodies. A direct `list` call without `maxScanned` retains its full-search behavior.
33
+
34
+ ### Patch Changes
35
+
36
+ - b7d83ec: The SDK unit test runner now uses at most four workers on machines with many CPU cores. This prevents valid asynchronous tests from hitting their wall-clock timeout under test-worker contention; package runtime behavior and APIs are unchanged.
37
+
3
38
  ## 48.3.1
4
39
 
5
40
  ### Patch Changes
@@ -45,6 +45,8 @@ export interface ConfigScope<T> {
45
45
  update(patch: Partial<T> | Record<string, unknown>): T;
46
46
  /** Called after a successful update. Returns an unsubscribe. */
47
47
  watch(listener: (next: T, previous: T) => void): () => void;
48
+ /** Release this registration, including its watchers, while retaining saved overrides. */
49
+ dispose(): void;
48
50
  }
49
51
  export declare class ConfigNamespaceCollisionError extends RegistryCollisionError {
50
52
  readonly namespace: string;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAA;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC7B;;;;;;OAMG;IACH,GAAG,IAAI,CAAC,CAAA;IACR;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACtD,gEAAgE;IAChE,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAC3D;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAQtC;AAED,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAUtD,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAEhC,OAAO,GAAE,qBAA0B;IAO/C;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAQtC,QAAQ,CAAC,CAAC,EACT,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAO,GACvD,WAAW,CAAC,CAAC,CAAC;IA4BjB,2CAA2C;IAC3C,UAAU,IAAI,SAAS,MAAM,EAAE;IAI/B,OAAO,CAAC,WAAW;IAkCnB,OAAO,CAAC,QAAQ;CAGhB"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAE9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,KAAK,mBAAmB,EAA+B,MAAM,0BAA0B,CAAA;AAChG,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,oBAAoB,CAAA;AAE/D;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,WAAW,WAAW,CAAC,CAAC;IAC7B;;;;;;OAMG;IACH,GAAG,IAAI,CAAC,CAAA;IACR;;;;;;;;OAQG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAA;IACtD,gEAAgE;IAChE,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3D,0FAA0F;IAC1F,OAAO,IAAI,IAAI,CAAA;CACf;AAED,qBAAa,6BAA8B,SAAQ,sBAAsB;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM;gBAAjB,SAAS,EAAE,MAAM;CAQtC;AAED,MAAM,WAAW,qBAAqB;IACrC;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,mBAAmB,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,KAAK,YAAY,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;AAUtD,qBAAa,cAAc;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAC5D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoB;gBAEhC,OAAO,GAAE,qBAA0B;IAO/C;;;;;;;OAOG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAQtC,QAAQ,CAAC,CAAC,EACT,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,EACvB,OAAO,GAAE;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAO,GACvD,WAAW,CAAC,CAAC,CAAC;IA6CjB,2CAA2C;IAC3C,UAAU,IAAI,SAAS,MAAM,EAAE;IAI/B,OAAO,CAAC,WAAW;IAoCnB,OAAO,CAAC,QAAQ;CAGhB"}
@@ -53,13 +53,31 @@ export class ConfigRegistry {
53
53
  watchers: new Set(),
54
54
  };
55
55
  this.entries.set(namespace, entry);
56
+ const assertOwned = () => {
57
+ if (this.entries.get(namespace) !== entry) {
58
+ throw new Error(`Configuration namespace "${namespace}" is no longer registered.`);
59
+ }
60
+ };
56
61
  return {
57
- get: () => entry.resolved,
58
- update: (patch) => this.applyUpdate(namespace, entry, patch),
62
+ get: () => {
63
+ assertOwned();
64
+ return entry.resolved;
65
+ },
66
+ update: (patch) => {
67
+ assertOwned();
68
+ return this.applyUpdate(namespace, entry, patch);
69
+ },
59
70
  watch: (listener) => {
71
+ assertOwned();
60
72
  entry.watchers.add(listener);
61
73
  return () => entry.watchers.delete(listener);
62
74
  },
75
+ dispose: () => {
76
+ if (this.entries.get(namespace) !== entry)
77
+ return;
78
+ this.entries.delete(namespace);
79
+ entry.watchers.clear();
80
+ },
63
81
  };
64
82
  }
65
83
  /** Namespaces registered on THIS scope. */
@@ -74,9 +92,11 @@ export class ConfigRegistry {
74
92
  // every watcher about it.
75
93
  const next = entry.schema.parse({ ...entry.base, ...candidateOverride });
76
94
  const previous = entry.resolved;
95
+ const storeKey = this.storeKey(namespace);
96
+ this.store.save(storeKey, candidateOverride);
97
+ this.persisted[storeKey] = candidateOverride;
77
98
  entry.override = candidateOverride;
78
99
  entry.resolved = next;
79
- this.store.save(this.storeKey(namespace), candidateOverride);
80
100
  for (const watcher of entry.watchers) {
81
101
  try {
82
102
  watcher(next, previous);
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/config/registry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { MCPDiscoveredTool, MCPPromptDefinition, MCPRequestOptions, MCPResource } from '../../types/connector/index.js';
1
+ import type { MCPDiscoveredTool, MCPPromptDefinition, MCPRequestOptions, MCPResource, MCPToolDefinition } from '../../types/connector/index.js';
2
2
  import type { ToolDefinition } from '../../types/tool/index.js';
3
3
  import { type Logger } from '../../utils/logger.js';
4
4
  import type { MCPClient } from './client.js';
@@ -43,10 +43,10 @@ export declare class MCPToolDiscovery {
43
43
  private log;
44
44
  private options;
45
45
  /**
46
- * Last admitted tool set per SERVER, for drift detection.
46
+ * Last admitted tool set per owner identity, for drift detection.
47
47
  *
48
- * Keyed by server name rather than client id, and the difference is the
49
- * whole point. A client id is minted per connection, so on the path a
48
+ * Plain discovery uses the server name; plugin discovery supplies its
49
+ * qualified source id. A client id is minted per connection, so on the path a
50
50
  * real MCP server actually takes — a plugin enabling, connecting, and
51
51
  * being disabled again — every discovery was the first one that id had
52
52
  * ever seen, and drift could not fire however many times the server
@@ -59,7 +59,11 @@ export declare class MCPToolDiscovery {
59
59
  addClient(client: MCPClient): void;
60
60
  removeClient(clientId: string): void;
61
61
  discoverAll(): Promise<MCPDiscoveredTool[]>;
62
- discoverFrom(client: MCPClient): Promise<MCPDiscoveredTool[]>;
62
+ discoverFrom(client: MCPClient, options?: {
63
+ readonly isCurrent?: () => boolean;
64
+ }): Promise<MCPDiscoveredTool[]>;
65
+ /** Record the exact already-admitted snapshot another owner mounted. */
66
+ recordAdmittedTools(identity: string, clientId: string, serverName: string, admitted: readonly MCPToolDefinition[]): void;
63
67
  /**
64
68
  * The prompts a server publishes, through the same admission gate its
65
69
  * tools go through.
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EAEX,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAKlB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAC3D;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAA;IACjG,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;QACvC,OAAO,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAA;SAAE,EAAE,CAAA;KACtE,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,OAAO,CAAyB;IACxC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,uBAA4B;IAWvE,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIlC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS9B,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2B3C,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAkCnE;;;;;;;;;;;;OAYG;IACG,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmC5E;;;;;;;;;;;OAWG;IACG,qBAAqB,CAC1B,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,EAAE,CAAC;IAwBnB,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAWpD,OAAO,CAAC,WAAW;CAiBnB"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,MAAM,gCAAgC,CAAA;AACvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG/D,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,aAAa,EAKlB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,uBAAuB;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAC3D;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAA;IACjG,+FAA+F;IAC/F,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;QACvC,OAAO,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAA;SAAE,EAAE,CAAA;KACtE,KAAK,IAAI,CAAA;IACV,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,gBAAgB;IAC5B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,OAAO,CAAyB;IACxC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,QAAQ,CAAyC;gBAE7C,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,uBAA4B;IAWvE,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAIlC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAS9B,WAAW,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;IA2B3C,YAAY,CACjB,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAA;KAAE,GAC9C,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAqC/B,wEAAwE;IACxE,mBAAmB,CAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,iBAAiB,EAAE,GACpC,IAAI;IAIP;;;;;;;;;;;;OAYG;IACG,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAmC5E;;;;;;;;;;;OAWG;IACG,qBAAqB,CAC1B,MAAM,EAAE,SAAS,EACjB,OAAO,CAAC,EAAE,iBAAiB,GACzB,OAAO,CAAC,WAAW,EAAE,CAAC;IAwBnB,iBAAiB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAWpD,OAAO,CAAC,WAAW;CAsBnB"}
@@ -9,10 +9,10 @@ export class MCPToolDiscovery {
9
9
  log;
10
10
  options;
11
11
  /**
12
- * Last admitted tool set per SERVER, for drift detection.
12
+ * Last admitted tool set per owner identity, for drift detection.
13
13
  *
14
- * Keyed by server name rather than client id, and the difference is the
15
- * whole point. A client id is minted per connection, so on the path a
14
+ * Plain discovery uses the server name; plugin discovery supplies its
15
+ * qualified source id. A client id is minted per connection, so on the path a
16
16
  * real MCP server actually takes — a plugin enabling, connecting, and
17
17
  * being disabled again — every discovery was the first one that id had
18
18
  * ever seen, and drift could not fire however many times the server
@@ -66,9 +66,13 @@ export class MCPToolDiscovery {
66
66
  });
67
67
  return results;
68
68
  }
69
- async discoverFrom(client) {
69
+ async discoverFrom(client, options) {
70
70
  const state = client.getState();
71
71
  const advertised = await client.listTools();
72
+ // A newer listing can finish before this one. Do not let the older
73
+ // generation replace the baseline or emit a drift event after that.
74
+ if (options?.isCurrent?.() === false)
75
+ return [];
72
76
  // The boundary. Without it the REMOTE side decides what enters the
73
77
  // agent's registry, which inverts least privilege: a server could
74
78
  // add a tool between two turns and it became callable with nobody
@@ -88,13 +92,17 @@ export class MCPToolDiscovery {
88
92
  'namzu.connector.refused': refused.map((r) => `${r.name} (${r.reason})`),
89
93
  });
90
94
  }
91
- this.detectDrift(client.id, state.serverName, admitted);
95
+ this.detectDrift(state.serverName, client.id, state.serverName, admitted);
92
96
  return admitted.map((tool) => ({
93
97
  tool,
94
98
  clientId: client.id,
95
99
  serverName: state.serverName,
96
100
  }));
97
101
  }
102
+ /** Record the exact already-admitted snapshot another owner mounted. */
103
+ recordAdmittedTools(identity, clientId, serverName, admitted) {
104
+ this.detectDrift(identity, clientId, serverName, [...admitted]);
105
+ }
98
106
  /**
99
107
  * The prompts a server publishes, through the same admission gate its
100
108
  * tools go through.
@@ -181,9 +189,9 @@ export class MCPToolDiscovery {
181
189
  return mcpToolToToolDefinition(d.tool, client, d.serverName);
182
190
  });
183
191
  }
184
- detectDrift(clientId, serverName, admitted) {
185
- const previous = this.lastSeen.get(serverName);
186
- this.lastSeen.set(serverName, admitted);
192
+ detectDrift(identity, clientId, serverName, admitted) {
193
+ const previous = this.lastSeen.get(identity);
194
+ this.lastSeen.set(identity, admitted);
187
195
  if (!previous)
188
196
  return;
189
197
  const drift = diffTools(previous, admitted);
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../../src/connector/mcp/discovery.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { Toolset, ToolsetAvailability } from '../../toolsets/types.js';
2
+ import type { MCPToolDefinition } from '../../types/connector/index.js';
2
3
  import { type Logger } from '../../utils/logger.js';
3
4
  import type { MCPClient } from './client.js';
4
5
  import type { MCPToolDrift } from './policy.js';
@@ -66,6 +67,8 @@ export interface MCPToolsetOptions {
66
67
  clientId: string;
67
68
  drift: MCPToolDrift;
68
69
  }) => void;
70
+ /** The exact admitted server listing processed at construction and each committed refresh. */
71
+ readonly onToolsAdmitted?: (tools: readonly MCPToolDefinition[]) => void;
69
72
  /** Current tool, prompt and resource names refused by this server's policy. */
70
73
  readonly onRefused?: (event: {
71
74
  serverName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-toolset.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/mcp-toolset.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAO3E,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAE7B,MAAM,gBAAgB,CAAA;AAiBvB;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMzF;AAED,MAAM,WAAW,iBAAiB;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAC3C;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAA;IACjG,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;QACvC,OAAO,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAA;SAAE,EAAE,CAAA;KACtE,KAAK,IAAI,CAAA;IACV;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,wBAAwB,CAAA;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,sGAAsG;AACtG,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AAiHtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,WAAW,CAAC,CAyOtB"}
1
+ {"version":3,"file":"mcp-toolset.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/mcp-toolset.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE3E,OAAO,KAAK,EAGX,iBAAiB,EACjB,MAAM,gCAAgC,CAAA;AAKvC,OAAO,EAAE,KAAK,MAAM,EAAiB,MAAM,uBAAuB,CAAA;AAElE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAE7B,MAAM,gBAAgB,CAAA;AAiBvB;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAMzF;AAED,MAAM,WAAW,iBAAiB;IACjC;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAA;IACpB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClC,0DAA0D;IAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B;;;;OAIG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;IACtC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,mBAAmB,CAAA;IAC3C;;;;;;OAMG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,YAAY,CAAA;KAAE,KAAK,IAAI,CAAA;IACjG,8FAA8F;IAC9F,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,iBAAiB,EAAE,KAAK,IAAI,CAAA;IACxE,+EAA+E;IAC/E,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,EAAE,MAAM,CAAA;QAChB,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,WAAW,CAAA;QACvC,OAAO,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,aAAa,GAAG,QAAQ,CAAA;SAAE,EAAE,CAAA;KACtE,KAAK,IAAI,CAAA;IACV;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,mBAAmB,GAAG,wBAAwB,CAAA;IACnE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,sGAAsG;AACtG,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AAiHtE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,UAAU,CAC/B,MAAM,EAAE,SAAS,EACjB,OAAO,GAAE,iBAAsB,GAC7B,OAAO,CAAC,WAAW,CAAC,CAwPtB"}
@@ -215,12 +215,19 @@ export async function mcpToolset(client, options = {}) {
215
215
  let promptDefs = [];
216
216
  let mainTools = [];
217
217
  let closed = false;
218
+ let toolRefreshGeneration = 0;
219
+ let admittedToolSnapshot = [];
218
220
  const listeners = new Set();
219
221
  function rebuildMain() {
220
222
  mainTools = [...toolDefs, ...promptDefs];
221
223
  }
222
224
  async function refreshTools() {
223
- const discovered = await discovery.discoverFrom(client);
225
+ const generation = ++toolRefreshGeneration;
226
+ const discovered = await discovery.discoverFrom(client, {
227
+ isCurrent: () => !closed && generation === toolRefreshGeneration,
228
+ });
229
+ if (closed || generation !== toolRefreshGeneration)
230
+ return false;
224
231
  const previous = new Map(toolDefs.map((definition) => [definition.name, definition]));
225
232
  toolDefs = discovered.map((d) => {
226
233
  const name = mcpToolsetName(serverName, d.tool.name);
@@ -235,6 +242,8 @@ export async function mcpToolset(client, options = {}) {
235
242
  heldToolNames.delete(name);
236
243
  }
237
244
  rebuildMain();
245
+ admittedToolSnapshot = discovered.map((entry) => entry.tool);
246
+ return true;
238
247
  }
239
248
  async function refreshPrompts() {
240
249
  if (!client.getState().serverCapabilities?.prompts) {
@@ -298,8 +307,12 @@ export async function mcpToolset(client, options = {}) {
298
307
  }
299
308
  };
300
309
  assertUnique();
310
+ options.onToolsAdmitted?.(admittedToolSnapshot);
301
311
  const notify = () => {
312
+ if (closed)
313
+ return;
302
314
  assertUnique();
315
+ options.onToolsAdmitted?.(admittedToolSnapshot);
303
316
  for (const listener of listeners)
304
317
  listener();
305
318
  };
@@ -331,7 +344,12 @@ export async function mcpToolset(client, options = {}) {
331
344
  if (method === 'notifications/tools/list_changed') {
332
345
  if (!currentCapabilities()?.tools?.listChanged)
333
346
  return;
334
- void refreshTools().then(notify).catch(onRefreshFailure('tools'));
347
+ void refreshTools()
348
+ .then((updated) => {
349
+ if (updated)
350
+ notify();
351
+ })
352
+ .catch(onRefreshFailure('tools'));
335
353
  }
336
354
  else if (method === 'notifications/prompts/list_changed') {
337
355
  if (!currentCapabilities()?.prompts?.listChanged)
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-toolset.js","sourceRoot":"","sources":["../../../src/connector/mcp/mcp-toolset.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-toolset.js","sourceRoot":"","sources":["../../../src/connector/mcp/mcp-toolset.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,7 @@ export declare class MCPReconnectSupervisor {
72
72
  private stopped;
73
73
  private inFlight;
74
74
  private timer?;
75
+ private finishWait?;
75
76
  constructor(client: MCPClient, options?: MCPReconnectOptions | MCPReconnectPolicySource);
76
77
  /**
77
78
  * The policy as of right now.
@@ -93,6 +94,7 @@ export declare class MCPReconnectSupervisor {
93
94
  */
94
95
  stop(): void;
95
96
  private recover;
97
+ private closeLateConnection;
96
98
  private wait;
97
99
  }
98
100
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C;;;;;;;;;;;;;;;GAeG;AAEH,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C;AASD;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,mBAAmB,CAAA;AAEhE,qBAAa,sBAAsB;IAQjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAC,CAA+B;gBAG3B,MAAM,EAAE,SAAS,EAClC,OAAO,GAAE,mBAAmB,GAAG,wBAA6B;IAK7D;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM;IAKd,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAQb;;;;;;OAMG;IACH,IAAI,IAAI,IAAI;YAQE,OAAO;IA0CrB,OAAO,CAAC,IAAI;CAKZ;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAKpC,CAAA"}
1
+ {"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../../src/connector/mcp/reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C;;;;;;;;;;;;;;;GAeG;AAEH,+DAA+D;AAC/D,MAAM,WAAW,mBAAmB;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,0CAA0C;IAC1C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAA;IAChC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACnD,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;CAC9C;AASD;;;;;;;;;;;;;;;GAeG;AACH;;;;;;;;GAQG;AACH,MAAM,MAAM,wBAAwB,GAAG,MAAM,mBAAmB,CAAA;AAEhE,qBAAa,sBAAsB;IASjC,OAAO,CAAC,QAAQ,CAAC,MAAM;IARxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,KAAK,CAAC,CAA+B;IAC7C,OAAO,CAAC,UAAU,CAAC,CAAY;gBAGb,MAAM,EAAE,SAAS,EAClC,OAAO,GAAE,mBAAmB,GAAG,wBAA6B;IAK7D;;;;;;;OAOG;IACH,OAAO,CAAC,MAAM;IAKd,kCAAkC;IAClC,KAAK,IAAI,IAAI;IAQb;;;;;;OAMG;IACH,IAAI,IAAI,IAAI;YASE,OAAO;IAwDrB,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,IAAI;CAYZ;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;EAKpC,CAAA"}
@@ -12,6 +12,7 @@ export class MCPReconnectSupervisor {
12
12
  stopped = false;
13
13
  inFlight = false;
14
14
  timer;
15
+ finishWait;
15
16
  constructor(client, options = {}) {
16
17
  this.client = client;
17
18
  this.readPolicy = typeof options === 'function' ? options : () => options;
@@ -29,7 +30,7 @@ export class MCPReconnectSupervisor {
29
30
  }
30
31
  /** Begin watching. Idempotent. */
31
32
  start() {
32
- if (!this.policy().enabled || this.unsubscribe || this.stopped)
33
+ if (this.stopped || this.unsubscribe || !this.policy().enabled)
33
34
  return;
34
35
  this.unsubscribe = this.client.onLifecycle((event) => {
35
36
  if (event.type !== 'mcp_client_disconnected' && event.type !== 'mcp_client_error')
@@ -48,9 +49,9 @@ export class MCPReconnectSupervisor {
48
49
  this.stopped = true;
49
50
  this.unsubscribe?.();
50
51
  this.unsubscribe = undefined;
51
- if (this.timer)
52
- clearTimeout(this.timer);
53
- this.timer = undefined;
52
+ // Clearing the timer alone strands recover() inside an unresolved
53
+ // promise. Settle it so the stopped check can retire the loop.
54
+ this.finishWait?.();
54
55
  }
55
56
  async recover() {
56
57
  // One recovery at a time. A transport can emit `error` and then
@@ -80,10 +81,23 @@ export class MCPReconnectSupervisor {
80
81
  return;
81
82
  try {
82
83
  await this.client.connect();
84
+ // A host may stop the supervisor and dispose its live policy
85
+ // while connect() is still settling. Do not read that policy or
86
+ // publish a reconnect callback after teardown. A successful
87
+ // late connect also needs a second close: the host may have
88
+ // finished its own disconnect before this connect settled.
89
+ if (this.stopped) {
90
+ this.closeLateConnection();
91
+ return;
92
+ }
83
93
  await this.policy().onReconnected?.();
84
94
  return;
85
95
  }
86
96
  catch {
97
+ if (this.stopped) {
98
+ this.closeLateConnection();
99
+ return;
100
+ }
87
101
  // Deliberately swallowed: a failed attempt is the normal
88
102
  // case here and the client has already logged and emitted
89
103
  // its own error. Re-raising would surface a routine retry
@@ -91,15 +105,32 @@ export class MCPReconnectSupervisor {
91
105
  delay = Math.min(delay * 2, this.policy().maxDelayMs);
92
106
  }
93
107
  }
108
+ if (this.stopped)
109
+ return;
94
110
  this.policy().onGaveUp?.(this.policy().maxAttempts);
95
111
  }
96
112
  finally {
97
113
  this.inFlight = false;
98
114
  }
99
115
  }
116
+ closeLateConnection() {
117
+ // A failed handshake can leave an opened transport, too. Stop is
118
+ // synchronous and the host's disable path has its own bounded close;
119
+ // keep this late cleanup best-effort without delaying recovery exit.
120
+ void this.client.disconnect().catch(() => { });
121
+ }
100
122
  wait(ms) {
101
123
  return new Promise((resolve) => {
102
- this.timer = setTimeout(resolve, ms);
124
+ const finish = () => {
125
+ if (this.timer)
126
+ clearTimeout(this.timer);
127
+ this.timer = undefined;
128
+ if (this.finishWait === finish)
129
+ this.finishWait = undefined;
130
+ resolve();
131
+ };
132
+ this.finishWait = finish;
133
+ this.timer = setTimeout(finish, ms);
103
134
  });
104
135
  }
105
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../../src/connector/mcp/reconnect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../../src/connector/mcp/reconnect.ts"],"names":[],"mappings":"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"}
@@ -81,6 +81,8 @@ export declare class PluginLifecycleManager {
81
81
  private listeners;
82
82
  private hookHandlers;
83
83
  private pluginContributions;
84
+ /** Reserve each id before async admission so lifecycle calls cannot overlap. */
85
+ private readonly lifecycleTails;
84
86
  /** Immutable executable admissions owned by this manager, never by the mutable registry. */
85
87
  private pluginAdmissions;
86
88
  private hookTimeoutMs;
@@ -88,18 +90,16 @@ export declare class PluginLifecycleManager {
88
90
  private readonly scopeRoots;
89
91
  private log;
90
92
  /**
91
- * The admission boundary for everything a plugin's MCP servers advertise.
93
+ * The cross-enable drift history for each plugin-owned MCP source.
92
94
  *
93
- * One instance for the whole manager rather than one per plugin, and that
94
- * is the part that matters: the instance is what remembers each server's
95
- * previously admitted tool set, so a server that changes between one
96
- * plugin being disabled and the next being enabled is still noticed. A
97
- * per-plugin instance would forget on every teardown, which is precisely
98
- * the window a rug pull uses.
95
+ * The toolset applies policy and performs the only listing. It passes the
96
+ * admitted snapshot here after it commits, keyed by its full plugin source.
97
+ * Keeping this recorder for the manager lifetime detects a server that
98
+ * changes between disable and the next enable without conflating unrelated
99
+ * plugins that use the same local server label.
99
100
  *
100
- * Its client list is deliberately left empty — `discoverFrom` takes the
101
- * client directly, so registering it here would be bookkeeping nothing
102
- * reads.
101
+ * Its client list stays empty because this instance records snapshots;
102
+ * it never makes a second request to the server.
103
103
  */
104
104
  private mcpDiscovery;
105
105
  private readonly mcpToolPolicies?;
@@ -138,13 +138,17 @@ export declare class PluginLifecycleManager {
138
138
  /** Register a host-authored plugin without reading a manifest or importing modules. */
139
139
  installDefined(plugin: DefinedPlugin, scope?: PluginScope): PluginDefinition;
140
140
  private definitionFrom;
141
+ private serializeLifecycle;
141
142
  private readLegacyAdmission;
142
143
  enable(pluginId: PluginId): Promise<void>;
144
+ private enableOwned;
143
145
  private attachMCPServer;
144
146
  private rollbackContributions;
145
147
  private stopMcpContributions;
146
148
  disable(pluginId: PluginId): Promise<void>;
149
+ private disableOwned;
147
150
  uninstall(pluginId: PluginId): Promise<void>;
151
+ private uninstallOwned;
148
152
  executeHooks(event: PluginHookEvent, context: Omit<PluginHookContext, 'pluginId' | 'event'>, emitSessionEvent?: (event: SessionEvent) => Promise<void>): Promise<PluginHookResult[]>;
149
153
  private emit;
150
154
  }