Skip to content

Add per-source descriptions and per-namespace declared schemas from p… - #204

Merged
wpak-ai merged 6 commits into
cppalliance:mainfrom
jonathanMLDev:feat/per-source-description
Jul 9, 2026
Merged

Add per-source descriptions and per-namespace declared schemas from p…#204
wpak-ai merged 6 commits into
cppalliance:mainfrom
jonathanMLDev:feat/per-source-description

Conversation

@jonathanMLDev

@jonathanMLDev jonathanMLDev commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Add optional description and namespaces fields to JSON multi-source config (PINECONE_CONFIG_FILE only; not inline PINECONE_SOURCES)
  • Surface source-level description via list_sources as { name, description? }[]
  • Support per-namespace metadata_schema declarations that skip live Pinecone sampling when present
  • Verify declared namespaces against live Pinecone data and surface stale declarations as non-fatal config_warnings in list_namespaces
  • Add optional schema_source (declared | sampled) per namespace row in list_namespaces

Breaking changes

  • list_sources: sources: string[]sources: { name, description? }[]
  • PineconeClient.listNamespacesWithMetadata(): bare array → { namespaces, warnings }

Security / back-compat

  • No corpus text committed to the repo; example config uses generic placeholders only
  • Existing configs without description/namespaces continue to work unchanged
  • Undeclared namespaces still use live sampling as before

Test plan

  • npm test (351 tests)
  • npm run build
  • npm run lint

Related issues

Summary by CodeRabbit

Summary by CodeRabbit

  • New Features

    • list_sources now includes optional per-source description.
    • list_namespaces now provides per-namespace schema_source and returns config_warnings for stale/mismatched private config declarations.
    • Private JSON config supports per-source description and per-namespace namespaces (including optional metadata_schema).
  • Bug Fixes

    • Improved accuracy and consistency of namespace metadata provenance and warnings handling.
  • Breaking Changes

    • list_sources: sources changes from string[] to { name, description? }[].
    • list_namespaces: response changes from an array to { namespaces, warnings }.
  • Documentation

    • Updated configuration, migration, tools, security guidance, and examples.

@jonathanMLDev jonathanMLDev self-assigned this Jul 8, 2026
@jonathanMLDev
jonathanMLDev requested a review from wpak-ai as a code owner July 8, 2026 17:22
@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ac6eec1a-052c-4d6f-827b-47d44a768c69

📥 Commits

Reviewing files that changed from the base of the PR and between 674e5ea and fe20cc7.

📒 Files selected for processing (3)
  • src/core/server/namespace-cache.ts
  • src/core/server/server-context.ts
  • src/core/server/source-registry.ts

📝 Walkthrough

Walkthrough

Adds private-config source descriptions and namespace schema declarations, then threads structured namespace results and warnings through PineconeClient, ServerContext, source-registry, and the list_namespaces/list_sources tools. Documentation, examples, and tests are updated to the new response shapes.

Changes

Private config descriptions and schema declarations

Layer / File(s) Summary
Config schema and parsing
src/core/server/source-config.ts, src/core/server/source-config.test.ts, examples/multi-source/pinecone-sources.json.example
Adds config-file-only source descriptions and namespace declarations, validates metadata_schema, and extracts declared schemas.
Namespace listing contract
src/core/pinecone/indexes.ts, src/core/pinecone-client.ts, src/core/pinecone/indexes.test.ts, benchmarks/latency.ts, examples/alliance/demo-mock-pinecone-client.ts
listNamespacesWithMetadata now accepts declared schemas/names and returns { namespaces, warnings } with per-row schema_source.
ServerContext and source-registry caching
src/core/server/server-context.ts, src/core/server/source-registry.ts, src/core/server/namespaces-cache.ts, related tests
Caches warnings, maps declared vs sampled namespaces, adds source details, and aggregates warnings across sources.
Tool responses and handlers
src/core/server/response-schemas.ts, src/core/server/tools/list-namespaces-tool.ts, src/core/server/tools/list-sources-tool.ts, related tests and shared helpers
list_namespaces emits config_warnings and schema_source; list_sources returns { name, description? }[].
Docs, changelog, and examples
CHANGELOG.md, docs/MIGRATION.md, docs/CONFIGURATION.md, docs/SECURITY.md, docs/TOOLS.md, src/constants.test.ts
Documents the new config fields, security guidance, and breaking response-shape changes.
Mock migrations and supporting scripts
src/core/server/tools/test-helpers.ts, src/alliance/tools/*, src/core/setup-multi-instance.test.ts, scripts/test-search.ts
Adds shared namespace-result helpers and updates downstream consumers to the structured namespace payload.

Estimated code review effort: 4 (Complex) | ~60 minutes

Sequence Diagram(s)

sequenceDiagram
  participant ServerContext
  participant PineconeClient
  participant PineconeIndexSession
  participant listNamespacesTool

  ServerContext->>PineconeClient: listNamespacesWithMetadata(declaredSchemas, declaredNamespaceNames)
  PineconeClient->>PineconeIndexSession: listNamespacesWithMetadata(declaredSchemas, declaredNamespaceNames)
  PineconeIndexSession-->>PineconeClient: { namespaces, warnings }
  PineconeClient-->>ServerContext: { namespaces, warnings }
  ServerContext-->>listNamespacesTool: cacheResult with warnings and schema_source
  listNamespacesTool-->>ServerContext: validatedJsonResponse(listNamespacesResponseSchema)
Loading

Possibly related PRs

Suggested labels: enhancement

Suggested reviewers: leostar0412, wpak-ai, AuraMindNest

🚥 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 Concise and specific; it matches the main change around per-source descriptions and per-namespace declared schemas.
Linked Issues check ✅ Passed The PR covers #195 with config-file-only source descriptions, list_sources shape changes, placeholder examples, docs, and runtime wiring.
Out of Scope Changes check ✅ Passed The additional namespace-schema and warning changes are part of the stated PR objective, so no unrelated scope appears introduced.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ 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.

@codecov

codecov Bot commented Jul 8, 2026

Copy link
Copy Markdown

Codecov Report

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

Files with missing lines Patch % Lines
src/core/server/server-context.ts 77.77% 3 Missing and 1 partial ⚠️
src/core/server/source-config.ts 93.47% 3 Missing ⚠️
src/core/pinecone-client.ts 0.00% 2 Missing ⚠️
src/core/pinecone/indexes.ts 91.66% 1 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main     #204   +/-   ##
=======================================
  Coverage        ?   84.99%           
=======================================
  Files           ?       46           
  Lines           ?     2399           
  Branches        ?      814           
=======================================
  Hits            ?     2039           
  Misses          ?      359           
  Partials        ?        1           

☔ View full report in Codecov by Harness.
📢 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.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

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

⚠️ Outside diff range comments (1)
scripts/test-search.ts (1)

47-54: 🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

Incomplete migration: namespacesInfo still treated as a bare array in four locations.

Lines 38–43 were updated to the new { namespaces, warnings } return shape, but the rest of the script still indexes namespacesInfo directly as an array. This will cause runtime errors:

  • Line 47: namespacesInfo.lengthundefined (object has no .length)
  • Line 54: namespacesInfo[0].namespaceTypeError: Cannot read properties of undefined
  • Line 98: namespacesInfo.find(...)TypeError: namespacesInfo.find is not a function
  • Line 152: namespacesInfo.map(...)TypeError: namespacesInfo.map is not a function
🐛 Proposed fix for all four references
     // Line 47
-    if (namespacesInfo.length === 0) {
+    if (namespacesInfo.namespaces.length === 0) {

     // Line 54
-    const testNamespace = namespacesInfo[0].namespace;
+    const testNamespace = namespacesInfo.namespaces[0].namespace;

     // Line 98
-    const wg21Namespace = namespacesInfo.find((ns) => ns.namespace === 'wg21-papers');
+    const wg21Namespace = namespacesInfo.namespaces.find((ns) => ns.namespace === 'wg21-papers');

     // Line 152
-        `   Available namespaces: ${namespacesInfo.map((ns) => ns.namespace).join(', ')}`
+        `   Available namespaces: ${namespacesInfo.namespaces.map((ns) => ns.namespace).join(', ')}`

Also applies to: 98-98, 152-152

🤖 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 `@scripts/test-search.ts` around lines 47 - 54, `namespacesInfo` in
`scripts/test-search.ts` is now the new `{ namespaces, warnings }` object, but
the script still treats it like an array in the later checks. Update the usages
in the main test flow and the helper logic to read from
`namespacesInfo.namespaces` instead of calling array methods directly, including
the empty-state check, `testNamespace` selection, the `find` lookup, and the
`map` iteration. Use the existing `namespacesInfo` variable and adjust any
`namespace` property access accordingly so all four references work with the
migrated return shape.
🧹 Nitpick comments (3)
src/core/server/source-config.test.ts (1)

107-179: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider adding a test for namespace-level non-string description validation.

validateNamespaces throws when a namespace's description is non-string (lines 78–83 in source-config.ts), but no test covers this path. The malformed metadata_schema test (lines 156–173) covers the schema validation error, but the description type check remains untested.

🧪 Suggested test addition
  it('parseSourcesConfigFile throws on non-string namespace description', () => {
    const dir = mkdtempSync(join(tmpdir(), 'pinecone-sources-'));
    const filePath = join(dir, 'bad-ns-desc.json');
    writeFileSync(
      filePath,
      JSON.stringify({
        defaultSource: 'api_key_1',
        sources: {
          api_key_1: {
            apiKey: 'k',
            indexName: 'idx',
            namespaces: { ns1: { description: 123 } },
          },
        },
      })
    );
    expect(() => parseSourcesConfigFile(filePath, {})).toThrow(/description must be a string/);
  });
🤖 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/source-config.test.ts` around lines 107 - 179, Add a test in
source-config.test.ts for the validateNamespaces path where a namespace
description is not a string, since parseSourcesConfigFile currently only
verifies malformed metadata_schema and back-compat cases. Extend the existing
parseSourcesConfigFile coverage by creating a bad namespace fixture with a
numeric description and asserting the parser throws the expected description
type error, using parseSourcesConfigFile, validateNamespaces, and the namespaces
object shape to locate the code.
src/core/pinecone/indexes.ts (1)

118-128: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Duplicate inline return-type literal across files.

The { namespaces: Array<{...}>; warnings: string[] } return type is repeated verbatim in indexes.ts, pinecone-client.ts, and demo-mock-pinecone-client.ts. Extracting a shared exported type (e.g. NamespacesWithMetadataResult) would reduce the risk of the three copies drifting apart on a future field addition.

🤖 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/pinecone/indexes.ts` around lines 118 - 128, The inline return type
for listNamespacesWithMetadata is duplicated across indexes.ts,
pinecone-client.ts, and demo-mock-pinecone-client.ts; extract it into a shared
exported type such as NamespacesWithMetadataResult. Update
listNamespacesWithMetadata and the corresponding methods in PineconeClient and
DemoMockPineconeClient to use the shared type so all three stay aligned if
fields change.
src/core/server/server-context.ts (1)

266-279: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

listSourceDetails() fallback logic is sound.

The method correctly delegates to sourceRegistry when present and falls back to cfg.sources otherwise. The conditional spread of description ensures backward-compatible output shape (no description key when undefined).

One minor note: this.sourceRegistry! inside the .map() callback requires a non-null assertion because TypeScript can't narrow class fields across closures. Assigning to a local variable before the callback would eliminate this, but it's safe as-is in single-threaded JS.

♻️ Optional: use local variable to avoid non-null assertion
   listSourceDetails(): { name: string; description?: string }[] {
-    if (this.sourceRegistry) {
-      return this.sourceRegistry.listSources().map((name) => {
-        const def = this.sourceRegistry!.getDefinition(name);
+    const registry = this.sourceRegistry;
+    if (registry) {
+      return registry.listSources().map((name) => {
+        const def = registry.getDefinition(name);
         return { name, ...(def.description !== undefined ? { description: def.description } : {}) };
       });
     }
🤖 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 266 - 279, The fallback logic
in listSourceDetails() is fine, but the sourceRegistry branch uses a non-null
assertion inside the .map() callback. Update the server-context.ts
implementation by assigning this.sourceRegistry to a local variable before
calling listSources().map(), then use that local inside the callback so the code
no longer relies on this.sourceRegistry! while keeping the same behavior.
🤖 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/SECURITY.md`:
- Around line 26-29: Broaden the private config warning in SECURITY.md to
explicitly include namespace names as sensitive too, since they can reveal
private corpus structure. Update the existing “Private config content” guidance
so it matches the wording and risk level in CONFIGURATION.md, and keep the
examples/tests guidance pointing to generic placeholders only.

In `@src/constants.test.ts`:
- Around line 61-81: The example test in constants.test.ts only checks raw
strings, so it can pass even if pinecone-sources.json.example is invalid JSON.
Update the test around examplePath/readFileSync to first parse the file contents
as JSON (using the existing example file read flow) before asserting the
placeholder markers and schema fields, so the example is validated structurally
as well as by string match. Keep the existing CORE_SERVER_INSTRUCTIONS and
ALLIANCE_SERVER_INSTRUCTIONS checks in the same test.

In `@src/core/pinecone-client.ts`:
- Around line 80-93: The return shape from listNamespacesWithMetadata is wrapped
in a namespaces object, but scripts/test-search.ts is still treating it like a
raw array. Update the call sites that read namespacesInfo so they use
namespacesInfo.namespaces.length and namespacesInfo.namespaces[0] (and keep the
empty-index guard in the same flow) to align with
PineconeClient.listNamespacesWithMetadata and avoid falling through on empty
results.

In `@src/core/server/source-config.ts`:
- Around line 258-261: The source-level description handling in source-config
should match the namespace validation behavior instead of silently dropping
invalid values. Update the logic around the description assignment in the source
config parsing path to explicitly validate cfg.description as a string, and
raise the same kind of error used by validateNamespaces when a non-string value
is provided. Keep trimOptional for valid strings, but ensure malformed
descriptions are surfaced rather than converted to undefined.

---

Outside diff comments:
In `@scripts/test-search.ts`:
- Around line 47-54: `namespacesInfo` in `scripts/test-search.ts` is now the new
`{ namespaces, warnings }` object, but the script still treats it like an array
in the later checks. Update the usages in the main test flow and the helper
logic to read from `namespacesInfo.namespaces` instead of calling array methods
directly, including the empty-state check, `testNamespace` selection, the `find`
lookup, and the `map` iteration. Use the existing `namespacesInfo` variable and
adjust any `namespace` property access accordingly so all four references work
with the migrated return shape.

---

Nitpick comments:
In `@src/core/pinecone/indexes.ts`:
- Around line 118-128: The inline return type for listNamespacesWithMetadata is
duplicated across indexes.ts, pinecone-client.ts, and
demo-mock-pinecone-client.ts; extract it into a shared exported type such as
NamespacesWithMetadataResult. Update listNamespacesWithMetadata and the
corresponding methods in PineconeClient and DemoMockPineconeClient to use the
shared type so all three stay aligned if fields change.

In `@src/core/server/server-context.ts`:
- Around line 266-279: The fallback logic in listSourceDetails() is fine, but
the sourceRegistry branch uses a non-null assertion inside the .map() callback.
Update the server-context.ts implementation by assigning this.sourceRegistry to
a local variable before calling listSources().map(), then use that local inside
the callback so the code no longer relies on this.sourceRegistry! while keeping
the same behavior.

In `@src/core/server/source-config.test.ts`:
- Around line 107-179: Add a test in source-config.test.ts for the
validateNamespaces path where a namespace description is not a string, since
parseSourcesConfigFile currently only verifies malformed metadata_schema and
back-compat cases. Extend the existing parseSourcesConfigFile coverage by
creating a bad namespace fixture with a numeric description and asserting the
parser throws the expected description type error, using parseSourcesConfigFile,
validateNamespaces, and the namespaces object shape to locate the code.
🪄 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: 06eaded7-b92f-4635-b11d-b6f06ab24272

📥 Commits

Reviewing files that changed from the base of the PR and between d087a5e and 976aebe.

📒 Files selected for processing (32)
  • CHANGELOG.md
  • benchmarks/latency.ts
  • docs/CONFIGURATION.md
  • docs/MIGRATION.md
  • docs/SECURITY.md
  • docs/TOOLS.md
  • examples/alliance/demo-mock-pinecone-client.ts
  • examples/multi-source/pinecone-sources.json.example
  • scripts/test-search.ts
  • src/alliance/tools/isolated-context.context.test.ts
  • src/alliance/tools/suggest-query-params-tool.context.test.ts
  • src/constants.test.ts
  • src/core/pinecone-client.ts
  • src/core/pinecone/indexes.test.ts
  • src/core/pinecone/indexes.ts
  • src/core/server/response-schemas.test.ts
  • src/core/server/response-schemas.ts
  • src/core/server/server-context.composition.test.ts
  • src/core/server/server-context.test.ts
  • src/core/server/server-context.ts
  • src/core/server/source-config.test.ts
  • src/core/server/source-config.ts
  • src/core/server/source-registry.test.ts
  • src/core/server/source-registry.ts
  • src/core/server/tools/guided-query-tool.context.test.ts
  • src/core/server/tools/list-namespaces-tool.context.test.ts
  • src/core/server/tools/list-namespaces-tool.ts
  • src/core/server/tools/list-sources-tool.test.ts
  • src/core/server/tools/list-sources-tool.ts
  • src/core/server/tools/namespace-router-tool.context.test.ts
  • src/core/server/tools/test-helpers.ts
  • src/core/setup-multi-instance.test.ts

Comment thread docs/SECURITY.md
Comment thread src/constants.test.ts
Comment thread src/core/pinecone-client.ts
Comment thread src/core/server/source-config.ts Outdated
zho and others added 2 commits July 9, 2026 01:55

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🧹 Nitpick comments (1)
src/constants.test.ts (1)

88-89: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Consider not.toContain instead of new RegExp to silence lint warnings.

corpusPlaceholder is a static trusted constant, so the ReDoS flags from static analysis are false positives. However, replacing .not.toMatch(new RegExp(...)) with .not.toContain(...) is simpler, avoids the lint noise, and achieves the same substring check.

♻️ Optional simplification
-    expect(CORE_SERVER_INSTRUCTIONS).not.toMatch(new RegExp(corpusPlaceholder));
-    expect(ALLIANCE_SERVER_INSTRUCTIONS).not.toMatch(new RegExp(corpusPlaceholder));
+    expect(CORE_SERVER_INSTRUCTIONS).not.toContain(corpusPlaceholder);
+    expect(ALLIANCE_SERVER_INSTRUCTIONS).not.toContain(corpusPlaceholder);
🤖 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/constants.test.ts` around lines 88 - 89, The assertions in the constants
test are doing a regex-based substring check that triggers lint noise; update
the test in constants.test.ts to use the existing substring matcher instead of
constructing a RegExp from corpusPlaceholder. Keep the checks against
CORE_SERVER_INSTRUCTIONS and ALLIANCE_SERVER_INSTRUCTIONS, but change the
assertions to the simpler containment form so the intent stays the same without
the static-analysis warning.

Source: Linters/SAST tools

🤖 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.

Nitpick comments:
In `@src/constants.test.ts`:
- Around line 88-89: The assertions in the constants test are doing a
regex-based substring check that triggers lint noise; update the test in
constants.test.ts to use the existing substring matcher instead of constructing
a RegExp from corpusPlaceholder. Keep the checks against
CORE_SERVER_INSTRUCTIONS and ALLIANCE_SERVER_INSTRUCTIONS, but change the
assertions to the simpler containment form so the intent stays the same without
the static-analysis warning.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 4113c1e6-9191-4bea-950c-245fc2ad9ebb

📥 Commits

Reviewing files that changed from the base of the PR and between 976aebe and 425319a.

📒 Files selected for processing (25)
  • CHANGELOG.md
  • docs/CONFIGURATION.md
  • docs/SECURITY.md
  • docs/TOOLS.md
  • examples/alliance/demo-mock-pinecone-client.ts
  • scripts/test-search.ts
  • src/alliance/tools/isolated-context.context.test.ts
  • src/alliance/tools/suggest-query-params-tool.context.test.ts
  • src/constants.test.ts
  • src/core/index.ts
  • src/core/pinecone-client.ts
  • src/core/pinecone/indexes.test.ts
  • src/core/pinecone/indexes.ts
  • src/core/server/namespaces-cache.ts
  • src/core/server/response-schemas.ts
  • src/core/server/server-context.ts
  • src/core/server/source-config.test.ts
  • src/core/server/source-config.ts
  • src/core/server/source-registry.test.ts
  • src/core/server/source-registry.ts
  • src/core/server/tools/guided-query-tool.context.test.ts
  • src/core/server/tools/list-namespaces-tool.context.test.ts
  • src/core/server/tools/list-namespaces-tool.test.ts
  • src/core/server/tools/list-namespaces-tool.ts
  • src/core/server/tools/namespace-router-tool.context.test.ts
✅ Files skipped from review due to trivial changes (4)
  • docs/CONFIGURATION.md
  • docs/SECURITY.md
  • docs/TOOLS.md
  • CHANGELOG.md
🚧 Files skipped from review as they are similar to previous changes (12)
  • src/alliance/tools/isolated-context.context.test.ts
  • src/core/server/tools/list-namespaces-tool.ts
  • examples/alliance/demo-mock-pinecone-client.ts
  • src/core/server/tools/guided-query-tool.context.test.ts
  • src/core/server/tools/namespace-router-tool.context.test.ts
  • src/core/server/source-config.test.ts
  • src/core/server/response-schemas.ts
  • src/alliance/tools/suggest-query-params-tool.context.test.ts
  • src/core/server/server-context.ts
  • src/core/server/source-registry.ts
  • src/core/server/source-config.ts
  • src/core/server/tools/list-namespaces-tool.context.test.ts

Comment thread src/constants.test.ts Outdated
…: "this exact text must not be in the instructions."

@wpak-ai wpak-ai left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

server-context.ts:632-650 + source-registry.ts:115-134: the per-source row-mapping/warnings logic and the CacheEntry type are duplicated across both files, and the server-context copy is an unreachable branch (any config with sources routes through the registry). Delete the dead block and hoist a shared helper. Non-blocking, but it's a silent-drift trap.

@jonathanMLDev
jonathanMLDev requested a review from wpak-ai July 9, 2026 21:11
@wpak-ai
wpak-ai merged commit 91ff308 into cppalliance:main Jul 9, 2026
12 checks passed
@jonathanMLDev
jonathanMLDev deleted the feat/per-source-description branch July 15, 2026 07:56
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.

Per-source content description from private config

3 participants