Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules
dist
.git
.github
.cursor
npm-debug.log
*.log
.env
.env.*
coverage
*.tsbuildinfo
8 changes: 7 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches: [main]
push:
branches: [main]
workflow_call: # Allow this workflow to be called by other workflows
workflow_call: # Allow this workflow to be called by other workflows

jobs:
build-and-test:
Expand Down Expand Up @@ -38,6 +38,9 @@ jobs:
- name: Build
run: npm run build

- name: Smoke test CLI
run: node dist/index.js --help

- name: Run tests
run: npm test

Expand All @@ -58,3 +61,6 @@ jobs:
- name: Security audit
run: npm audit --audit-level=moderate
continue-on-error: true

- name: Package dry run
run: npm pack --dry-run
31 changes: 23 additions & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,26 +8,39 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]

### Added
- N/A

### Changed
- N/A
- `list_namespaces` tool: discovers all namespaces with record counts and sampled metadata fields
- `namespace_router` tool: ranks namespaces by relevance to a natural-language query
- `suggest_query_params` tool: mandatory flow gate that recommends fields and tool variant before queries
- `count` tool: counts unique documents matching a query, with `truncated` flag when results exceed `COUNT_TOP_K`
- `query_fast` tool: lightweight chunk-level search with minimal field set
- `query_detailed` tool: chunk-level search with optional semantic reranking
- `query` tool: unified query entry-point supporting `query_fast` and `query_detailed` modes
- `guided_query` tool: single-call orchestrator that runs routing → suggestion → execution, returning a `decision_trace`
- `generate_urls` tool: synthesizes URLs for records whose metadata lacks a `url` field
- `query_documents` tool: reassembles full documents from chunks grouped by document identifier
- Centralized structured logger (`src/logger.ts`) with level-gated stderr output and stack-trace capture
- Dockerfile for containerised deployment
- `About.md` project documentation covering architecture, tools, and operating principles

### Deprecated
- N/A
### Changed

### Removed
- N/A
- Modularised server into focused files under `src/server/` (tools, caches, formatters, suggestion flow)
- CI workflow updated: multi-node matrix (`18.x`, `20.x`, `22.x`), separate quality job with `continue-on-error`
- Replaced all `console.error` calls in `pinecone-client.ts` with typed `logInfo` / `logDebug` / `logError`

### Fixed
- N/A

- Timestamp-based metadata filter now correctly handles numeric epoch values

### Security

- N/A
Comment thread
coderabbitai[bot] marked this conversation as resolved.

## [0.1.1] - 2026-01-27

### Changed

- Enhanced TypeScript strict mode with additional compiler checks:
- Added `noUncheckedIndexedAccess` for safer array/object access
- Added `noImplicitOverride` to require explicit override keywords
Expand All @@ -36,12 +49,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Simplified build script to use standard `tsc` command

### Fixed

- Fixed build script that was suppressing TypeScript compilation errors with `|| exit 0`
- Fixed all type safety issues to comply with stricter TypeScript checks

## [0.1.0] - 2026-01-26

### Added

- Initial release of TypeScript version
- Feature parity with Python version
- Production-ready implementation with:
Expand Down
27 changes: 27 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
FROM node:20-bookworm-slim AS build

WORKDIR /app

COPY package*.json ./
RUN npm ci

COPY . .
RUN npm run build

FROM node:20-bookworm-slim AS runtime

WORKDIR /app
ENV NODE_ENV=production

# Create non-root runtime user
RUN useradd --create-home --uid 10001 mcpuser

COPY package*.json ./
RUN npm ci --omit=dev && npm cache clean --force

COPY --from=build /app/dist ./dist
COPY README.md LICENSE CHANGELOG.md ./

USER mcpuser

ENTRYPOINT ["node", "dist/index.js"]
Loading
Loading