Skip to content

refactor: introduce ServerContext and createServer#130

Merged
wpak-ai merged 5 commits into
cppalliance:mainfrom
jonathanMLDev:feat/server-context-phase-1
Jun 4, 2026
Merged

refactor: introduce ServerContext and createServer#130
wpak-ai merged 5 commits into
cppalliance:mainfrom
jonathanMLDev:feat/server-context-phase-1

Conversation

@jonathanMLDev
Copy link
Copy Markdown
Collaborator

@jonathanMLDev jonathanMLDev commented Jun 3, 2026

Summary

First step of the singleton-to-instance refactor: introduce ServerContext and createServer(config) to hold client, config, URL registry, suggest-flow gate, and namespaces cache in one object.

Legacy module helpers (getPineconeClient, requireSuggested, etc.) still work — they delegate to a process-default context. No breaking changes.

Changes

  • Add ServerContext + createServer() / getDefaultServerContext() / teardownDefaultServerContext()
  • Refactor five singleton modules to delegate to the default context
  • Migrate three tools to optional instance path: query, count, list_namespaces
  • Wire setupCoreServer to create/pass context; preserve pre-set client via setPineconeClient()
  • Add instance-path tests (*.context.test.ts); legacy tests unchanged
  • Document phase 1 in docs/MIGRATION.md

Test plan

  • npm run ci
  • Legacy tool tests still pass (module facade mocks)
  • New server-context.test.ts + *.context.test.ts pass with injected context
  • Manual: CLI / Alliance server still starts

Related

Summary by CodeRabbit

  • New Features

    • Opt-in instance-based server setup via a new ServerContext API while preserving legacy behavior through a process-default context.
    • Core server tools (query, count, list_namespaces) can now be used with an explicit per-server context for isolated config, client, suggestion-flow, and caching.
  • Documentation

    • Migration guide and deprecation policy updated with Phase 1 migration steps and timelines.
    • Example updated to show both legacy and new initialization flows.

@jonathanMLDev jonathanMLDev self-assigned this Jun 3, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 3, 2026

Review Change Stack

Warning

Review limit reached

@jonathanMLDev, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 38 minutes and 27 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 94919d4a-c488-49df-b2b0-c25b1927f15c

📥 Commits

Reviewing files that changed from the base of the PR and between 6a990fd and 8975b9c.

📒 Files selected for processing (4)
  • docs/MIGRATION.md
  • src/core/server/server-context.test.ts
  • src/core/server/server-context.ts
  • src/core/server/tools/test-helpers.ts
📝 Walkthrough

Walkthrough

Introduces a ServerContext instance API (Phase 1) that encapsulates runtime state (client, config, URL registry, suggestion flow, namespaces cache), provides process-default helpers for backward compatibility, threads an optional context into core tools, adds tests, updates setup/export wiring, and documents migration steps.

Changes

ServerContext instance API and backward compatibility

Layer / File(s) Summary
ServerContext class and process-default lifecycle
src/core/server/server-context.ts
Defines ServerContext with lazy PineconeClient, config storage, per-namespace URL generator registry, TTL-based suggestion-flow gate, namespaces caching, teardown, and process-default helpers (getDefaultServerContext, setDefaultServerContext, setPendingServerConfig, teardownDefaultServerContext, createServer).
ServerContext test suite
src/core/server/server-context.test.ts
Vitest coverage for lazy client construction, externally injected clients, createServer as default, env-driven suggest-flow bypass, teardown() clearing client/registries/caches and cache invalidation, and teardownDefaultServerContext() behavior.
Legacy module helpers delegate to default context
src/core/server/client-context.ts, src/core/server/config-context.ts, src/core/server/suggestion-flow.ts, src/core/server/namespaces-cache.ts, src/core/server/url-registry.ts
Refactors module-level facades to delegate runtime state and operations to getDefaultServerContext() methods; re-exports NamespaceInfo from server-context.ts. Public signatures preserved.
Tool handlers accept optional ServerContext
src/core/server/tools/count-tool.ts, src/core/server/tools/query-tool.ts, src/core/server/tools/list-namespaces-tool.ts, src/core/server/tools/test-helpers.ts
Extracts executeCount, executeQuery, executeListNamespaces helpers accepting optional ServerContext; uses ctx.requireSuggested, ctx.getClient, ctx.getNamespacesWithCache when provided, otherwise falls back to legacy paths. Updates register*Tool signatures to accept ctx?: ServerContext. Adds test helpers resolveTestConfig and createTestServerContext.
Tool handler test suites
src/core/server/tools/count-tool.context.test.ts, src/core/server/tools/list-namespaces-tool.context.test.ts, src/core/server/tools/query-tool.context.test.ts
New Vitest suites validating success and FLOW_GATE error paths and namespace-cache behavior using injected ServerContext.
Package exports and setup lifecycle
src/core/index.ts, src/core/setup.ts
Re-exports ServerContext, createServer, getDefaultServerContext at package root. setupCoreServer(config?) creates/uses a ServerContext, preserves an existing client when reconfiguring, delegates teardown to teardownDefaultServerContext(), and passes ctx to context-aware tool registrations.
Migration guide and deprecation policy
docs/MIGRATION.md, docs/deprecation-policy.md, examples/alliance/library-embedding-demo.ts
Adds Phase 1 migration section describing opt-in createServer / ServerContext flow and wiring examples, updates ToolError/recommended_tool/query mapping tables, clarifies deprecation-policy Phase 1 language, and updates example comments to show both legacy and instance-based initialization.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

enhancement

Suggested reviewers

  • AuraMindNest
  • wpak-ai

Poem

🐰 A rabbit found a ServerContext bright,

Bundled state snug in the soft moonlight,
One default to keep legacy near,
New instances to test without fear,
Tools and docs now hop in delight.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'refactor: introduce ServerContext and createServer' directly and clearly summarizes the main change—introducing two new core abstractions (ServerContext class and createServer factory) that are the centerpiece of this refactor PR.
Linked Issues check ✅ Passed All coding objectives from issue #117 are met: ServerContext class encapsulates five singletons [117], factory createServer(config) provided [117], three tools (query, count, list_namespaces) migrated to accept context [117], backward compatibility preserved via delegation to default context [117], comprehensive test coverage added [117], and migration guide documented [117].
Out of Scope Changes check ✅ Passed All changes align with issue #117 objectives: ServerContext implementation, tool migrations, backward-compat layer, test coverage, and documentation updates. No unrelated refactoring, dependency upgrades, or scope-creep detected beyond the stated singleton-to-instance refactor goal.
Docstring Coverage ✅ Passed Docstring coverage is 91.18% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
src/core/server/tools/query-tool.ts (1)

57-72: ⚠️ Potential issue | 🔴 Critical | 🏗️ Heavy lift

Fix incorrect root-cause claim: ServerContext.requireSuggested() only returns { ok: true } when disableSuggestFlow is enabled (otherwise it returns { ok: false } when no flow state exists), so the “no suggest-flow state” case should hit FLOW_GATE before client.query().
src/core/server/server-context.ts shows requireSuggested() returns ok: true only under this.getConfig().disableSuggestFlow; otherwise it returns ok: false when this.suggestionFlow.get(key) is missing, so reaching queryOutcome.results at src/core/server/tools/query-tool.ts line ~72 implies either the injected context is configured with disableSuggestFlow or the test/mock for ctx.requireSuggested doesn’t actually return the expected { ok: false } path for that case.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/core/server/tools/query-tool.ts` around lines 57 - 72, The failing claim
is due to tests/mocks or injected ServerContext not exercising the `{ ok: false
}` path of ServerContext.requireSuggested, so update the test or mock for
requireSuggested (or the injected ctx) to return `{ ok: false, message: ... }`
when suggestion flow state is absent, or configure the injected context's
getConfig().disableSuggestFlow appropriately; this will ensure flowCheck (from
requireSuggested) evaluates to false and the code path returns
flowGateToolError/FLOW_GATE before calling client.query (symbols to check:
ServerContext.requireSuggested, flowCheck, flowGateToolError, client.query,
getPineconeClient).
🧹 Nitpick comments (2)
src/core/server/server-context.ts (1)

230-243: 💤 Low value

Cache returns the stored array by reference.

Both the cache-hit (Line 232) and cache-miss paths hand back the same data array stored in namespacesCache. A caller mutating the returned array mutates the cached entry for subsequent cache_hit reads. Consider returning a shallow copy if downstream consumers may mutate the result.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@src/core/server/server-context.ts` around lines 230 - 243, The cached array
is being returned by reference so callers can mutate the cache; update the
method to always return a shallow copy of the namespaces array while keeping the
original in this.namespacesCache. Specifically, when returning on a cache hit
(this.namespacesCache.data) and after fetching on a cache miss (data from
getClient().listNamespacesWithMetadata()), return a copy (e.g., data.slice() or
[...data]) instead of the stored array; keep storing the original data in
this.namespacesCache to preserve caching semantics (references:
this.namespacesCache, getClient().listNamespacesWithMetadata(),
getConfig().cacheTtlMs).
docs/deprecation-policy.md (1)

69-75: 💤 Low value

Consider adjusting verb tense for consistency.

Line 69 states Phase 1 "is available," but lines 71-75 use future tense ("That work will:"). Since Phase 1 has been implemented in this PR, consider either:

  1. Keeping future tense if this describes the full multi-phase plan (not just Phase 1), or
  2. Using present/past tense to describe what Phase 1 has already done

Current wording slightly obscures whether "that work" refers to Phase 1 (already done) or future phases (planned).

📝 Optional clarification

If describing what Phase 1 has already accomplished:

-That work will:
+Phase 1 has:

-- Add new instance APIs without removing legacy getters in the same release.
-- Document legacy getters under `### Deprecated` with a named removal target per this policy.
-- Link migration steps from [MIGRATION.md](./MIGRATION.md) to this document.
+- Added new instance APIs without removing legacy getters.
+- Maintained legacy getters for backward compatibility (deprecation planned for future releases).
+- Linked migration steps from [MIGRATION.md](./MIGRATION.md).

Or if describing the overall multi-phase plan:

-That work will:
+The full refactor will:
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/deprecation-policy.md` around lines 69 - 75, The wording mixes tenses:
line mentioning Phase 1 "is available" then "That work will:" uses future tense
and may confuse whether Phase 1 (ServerContext / createServer(config)) is
completed; update the phrasing for consistency by making the second sentence
reflect the completed Phase 1 (use present/past tense) or explicitly state this
is a multi-phase plan (keep future tense) — adjust the paragraph around
**ServerContext** / **createServer(config)** and the bullet list so the tense
matches (e.g., "That work adds new instance APIs..." or "This plan will: ...")
and ensure the link text to MIGRATION.md remains intact.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/MIGRATION.md`:
- Around line 28-36: The comment claiming setupAllianceServer(config) "passes
ctx into migrated tools" is misleading; either make setupAllianceServer accept
the explicit ctx (change the example to setupAllianceServer(config, ctx) and
update the function signature/implementation of setupAllianceServer to accept
and use the provided ServerContext) or, if setupAllianceServer relies on the
process-default installed by createServer, update the comment to say that
createServer installs the process-default context which setupAllianceServer will
read implicitly; update the example and docs text accordingly and ensure
references to createServer, ctx, and setupAllianceServer are consistent.

In `@src/core/server/server-context.ts`:
- Around line 185-195: The branch is checking
this.configValue?.disableSuggestFlow directly which skips operator-set values
when config is lazy; change the check to call getConfig() (which triggers
resolveConfig({})) and read disableSuggestFlow from the returned config instead.
Update the branch in the method that returns the suggest-flow object to use
const cfg = await this.getConfig(); if (cfg.disableSuggestFlow) { ... }
(referencing getConfig, resolveConfig, and disableSuggestFlow) so the
lazy/default config path honors the operator-set flag.

---

Outside diff comments:
In `@src/core/server/tools/query-tool.ts`:
- Around line 57-72: The failing claim is due to tests/mocks or injected
ServerContext not exercising the `{ ok: false }` path of
ServerContext.requireSuggested, so update the test or mock for requireSuggested
(or the injected ctx) to return `{ ok: false, message: ... }` when suggestion
flow state is absent, or configure the injected context's
getConfig().disableSuggestFlow appropriately; this will ensure flowCheck (from
requireSuggested) evaluates to false and the code path returns
flowGateToolError/FLOW_GATE before calling client.query (symbols to check:
ServerContext.requireSuggested, flowCheck, flowGateToolError, client.query,
getPineconeClient).

---

Nitpick comments:
In `@docs/deprecation-policy.md`:
- Around line 69-75: The wording mixes tenses: line mentioning Phase 1 "is
available" then "That work will:" uses future tense and may confuse whether
Phase 1 (ServerContext / createServer(config)) is completed; update the phrasing
for consistency by making the second sentence reflect the completed Phase 1 (use
present/past tense) or explicitly state this is a multi-phase plan (keep future
tense) — adjust the paragraph around **ServerContext** /
**createServer(config)** and the bullet list so the tense matches (e.g., "That
work adds new instance APIs..." or "This plan will: ...") and ensure the link
text to MIGRATION.md remains intact.

In `@src/core/server/server-context.ts`:
- Around line 230-243: The cached array is being returned by reference so
callers can mutate the cache; update the method to always return a shallow copy
of the namespaces array while keeping the original in this.namespacesCache.
Specifically, when returning on a cache hit (this.namespacesCache.data) and
after fetching on a cache miss (data from
getClient().listNamespacesWithMetadata()), return a copy (e.g., data.slice() or
[...data]) instead of the stored array; keep storing the original data in
this.namespacesCache to preserve caching semantics (references:
this.namespacesCache, getClient().listNamespacesWithMetadata(),
getConfig().cacheTtlMs).
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 7f5e53fb-8ffe-4576-bb06-cd7d5aae6161

📥 Commits

Reviewing files that changed from the base of the PR and between b594690 and 9b78353.

📒 Files selected for processing (19)
  • docs/MIGRATION.md
  • docs/deprecation-policy.md
  • examples/alliance/library-embedding-demo.ts
  • src/core/index.ts
  • src/core/server/client-context.ts
  • src/core/server/config-context.ts
  • src/core/server/namespaces-cache.ts
  • src/core/server/server-context.test.ts
  • src/core/server/server-context.ts
  • src/core/server/suggestion-flow.ts
  • src/core/server/tools/count-tool.context.test.ts
  • src/core/server/tools/count-tool.ts
  • src/core/server/tools/list-namespaces-tool.context.test.ts
  • src/core/server/tools/list-namespaces-tool.ts
  • src/core/server/tools/query-tool.context.test.ts
  • src/core/server/tools/query-tool.ts
  • src/core/server/tools/test-helpers.ts
  • src/core/server/url-registry.ts
  • src/core/setup.ts

Comment thread docs/MIGRATION.md
Comment thread src/core/server/server-context.ts Outdated
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 3, 2026

Codecov Report

❌ Patch coverage is 88.61386% with 23 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (main@eb467ba). Learn more about missing BASE report.

Files with missing lines Patch % Lines
src/core/server/server-context.ts 88.63% 15 Missing ⚠️
src/core/server/client-context.ts 33.33% 2 Missing ⚠️
src/core/server/namespaces-cache.ts 0.00% 2 Missing ⚠️
src/core/server/suggestion-flow.ts 33.33% 2 Missing ⚠️
src/core/server/config-context.ts 66.66% 1 Missing ⚠️
src/core/server/tools/test-helpers.ts 87.50% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #130   +/-   ##
=======================================
  Coverage        ?   84.12%           
=======================================
  Files           ?       39           
  Lines           ?     1405           
  Branches        ?      464           
=======================================
  Hits            ?     1182           
  Misses          ?      221           
  Partials        ?        2           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@jonathanMLDev
Copy link
Copy Markdown
Collaborator Author

@coderabbitai full review again

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Jun 3, 2026

@jonathanMLDev Sure! I'll kick off a full review of PR #130 right away.

✅ Action performed

Full review finished.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
examples/alliance/library-embedding-demo.ts (1)

6-6: 💤 Low value

Consider adding a reference to migration docs or demonstrating the new pattern.

The comment now documents both the legacy setPineconeClient pattern and the new createServer(config) + ctx.setClient(...) pattern, but the example code only demonstrates the legacy approach. Users interested in the new pattern would benefit from either:

  1. A pointer to MIGRATION.md for the new pattern example
  2. A commented-out code block showing the new pattern
  3. Adding createServer to the imports on line 15 (even if unused) to show where it comes from
📚 Optional enhancement: Add migration doc reference
 /**
  * Library embedding: build the MCP server from a Node script (not the CLI).
  *
  * Pattern (mirrors `src/index.ts`):
  *   1. `resolveAllianceConfig({ apiKey, indexName, ... })` — Alliance index/rerank defaults when unset.
- *   2. `new PineconeClient({ ... })` + `setPineconeClient(client)` (legacy), or `createServer(config)` + `ctx.setClient(...)`.
+ *   2. `new PineconeClient({ ... })` + `setPineconeClient(client)` (legacy), or `createServer(config)` + `ctx.setClient(...)` (see MIGRATION.md).
  *   3. `await setupAllianceServer(config)` then `server.connect(transport)`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@examples/alliance/library-embedding-demo.ts` at line 6, The example mentions
both the legacy setPineconeClient pattern and the new createServer +
ctx.setClient pattern but only shows the legacy usage; update the example by
either (a) adding a short commented-out snippet demonstrating createServer(...)
and ctx.setClient(...) using the same variable names, (b) adding createServer to
the imports to show its origin, or (c) adding a one-line pointer to MIGRATION.md
that shows the new pattern; reference the symbols setPineconeClient,
createServer, and ctx.setClient so readers can find and understand the new flow.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/MIGRATION.md`:
- Around line 35-49: The example is missing the PineconeClient import causing a
runtime error; update the snippet to import PineconeClient and use it with the
shown flow (where resolveAllianceConfig, createServer, ctx.setClient, and
setupAllianceServer are used). Add an import for PineconeClient at the top of
the example and ensure the new PineconeClient({...}) call matches the config
fields used by resolveAllianceConfig so the instance creation and
ctx.setClient(...) succeed.

In `@src/core/server/server-context.ts`:
- Around line 74-76: setConfig currently only swaps configValue which leaves
derived state (lazy-built client, namespacesCache, etc.) stale; change setConfig
to also reset/clear any cached/derived members created from the previous
config—e.g., invalidate the Pinecone client instance, clear namespacesCache, and
any other lazy flags so subsequent access rebuilds with the new config; ensure
setPendingServerConfig continues to call setConfig and that callers relying on
lazy builders (client creation, namespace population) will reconstruct using the
updated config.

In `@src/core/server/tools/test-helpers.ts`:
- Around line 117-123: The test helper resolveTestConfig currently lets
cacheTtlMs come from resolveConfig(), causing nondeterministic TTL in tests;
update resolveTestConfig to explicitly set a stable cacheTtlMs (e.g. a large
non-zero fixed millisecond value) in the returned object so tests using
ServerContext.requireSuggested() and ServerContext.getNamespacesWithCache() have
deterministic caching behavior; modify the call in resolveTestConfig that
invokes resolveConfig(...) to include cacheTtlMs: <fixed value> alongside
apiKey/indexName/disableSuggestFlow so the test config always pins TTL.

---

Nitpick comments:
In `@examples/alliance/library-embedding-demo.ts`:
- Line 6: The example mentions both the legacy setPineconeClient pattern and the
new createServer + ctx.setClient pattern but only shows the legacy usage; update
the example by either (a) adding a short commented-out snippet demonstrating
createServer(...) and ctx.setClient(...) using the same variable names, (b)
adding createServer to the imports to show its origin, or (c) adding a one-line
pointer to MIGRATION.md that shows the new pattern; reference the symbols
setPineconeClient, createServer, and ctx.setClient so readers can find and
understand the new flow.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: e574bab8-7301-4e4d-9386-e6827022b94d

📥 Commits

Reviewing files that changed from the base of the PR and between b594690 and 6a990fd.

📒 Files selected for processing (19)
  • docs/MIGRATION.md
  • docs/deprecation-policy.md
  • examples/alliance/library-embedding-demo.ts
  • src/core/index.ts
  • src/core/server/client-context.ts
  • src/core/server/config-context.ts
  • src/core/server/namespaces-cache.ts
  • src/core/server/server-context.test.ts
  • src/core/server/server-context.ts
  • src/core/server/suggestion-flow.ts
  • src/core/server/tools/count-tool.context.test.ts
  • src/core/server/tools/count-tool.ts
  • src/core/server/tools/list-namespaces-tool.context.test.ts
  • src/core/server/tools/list-namespaces-tool.ts
  • src/core/server/tools/query-tool.context.test.ts
  • src/core/server/tools/query-tool.ts
  • src/core/server/tools/test-helpers.ts
  • src/core/server/url-registry.ts
  • src/core/setup.ts

Comment thread docs/MIGRATION.md
Comment thread src/core/server/server-context.ts
Comment thread src/core/server/tools/test-helpers.ts
@AuraMindNest AuraMindNest requested a review from wpak-ai June 4, 2026 14:42
@wpak-ai wpak-ai merged commit ccff5c9 into cppalliance:main Jun 4, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Singleton-to-instance refactor: ServerContext class

3 participants