{"_id":"@actian/vectorai-client","_rev":"5-e84cec9ef2b5ce5354e697aa81cbdfed","name":"@actian/vectorai-client","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@actian/vectorai-client","version":"1.0.0","keywords":["vector","database","grpc","embeddings","ai","vectorai","actian","vector-database","similarity-search"],"author":{"name":"Actian Corporation"},"license":"Apache-2.0","_id":"@actian/vectorai-client@1.0.0","maintainers":[{"name":"mcounts-actian","email":"michael.counts@hcl-software.com"}],"homepage":"https://www.actian.com/databases/vectorai/","bugs":{"url":"https://www.actian.com/support/"},"dist":{"shasum":"be61e1e3fb2349574d015ac8a332988053ca4bb5","tarball":"https://registry.npmjs.org/@actian/vectorai-client/-/vectorai-client-1.0.0.tgz","fileCount":5,"integrity":"sha512-Asgj0OS2HUaZ7hb0C8eT1QukfDJoItdzUgiKotsti3Pt+gg/QWCRNQ7TXpJ5r9Y5vnApYDdel1ojwCqP3TET+Q==","signatures":[{"sig":"MEQCIBG8UAyUjVn4KGrBULRCeAfgJSyUO/CxBaIjtsOWCnCBAiA6NsCXh5dW7olFBeLZSQiMCpHl53tyLn7JH0abGLM4cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1500455},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c9aeab1a4b0072079a841340cfee5e0a28e641d1","scripts":{"lint":"tsc --noEmit","test":"jest --selectProjects unit","build":"tsup","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","generate":"cd ../.. && npx --prefix clients/node buf generate --template buf.gen.node.yaml","test:all":"jest --runInBand","test:unit":"jest --selectProjects unit","typecheck":"tsc --noEmit","run-examples":"tsx run_examples.ts","test:coverage":"jest --selectProjects unit --coverage","typecheck:all":"npm run typecheck && npm run typecheck:tests","prepublishOnly":"npm run clean && npm run build && npm run test:unit -- --passWithNoTests","typecheck:tests":"tsc --noEmit -p tsconfig.test.json","test:integration":"jest --selectProjects integration --runInBand"},"_npmUser":{"name":"mcounts-actian","email":"michael.counts@hcl-software.com"},"deprecated":"Incorrect license metadata. Use 1.0.1 or later.","repository":{"url":"git+https://github.com/ActianCorp/vectorai-nodejs-client.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js/TypeScript client for Actian VectorAI Database","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@grpc/grpc-js":"^1.14.3","@bufbuild/protobuf":"^2.10.2","@grpc/proto-loader":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.1.2","ts-proto":"^2.10.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.10.0","@bufbuild/buf":"^1.66.0","google-protobuf":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/vectorai-client_1.0.0_1777384476642_0.024724983973162695","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@actian/vectorai-client","version":"1.0.1","keywords":["vector","database","grpc","embeddings","ai","vectorai","actian","vector-database","similarity-search"],"author":{"name":"Actian Corporation"},"license":"MIT","_id":"@actian/vectorai-client@1.0.1","maintainers":[{"name":"mcounts-actian","email":"michael.counts@hcl-software.com"}],"homepage":"https://www.actian.com/databases/vectorai/","bugs":{"url":"https://www.actian.com/support/"},"dist":{"shasum":"3769221644d533557bf971496d7e4afa7c855e68","tarball":"https://registry.npmjs.org/@actian/vectorai-client/-/vectorai-client-1.0.1.tgz","fileCount":5,"integrity":"sha512-RQr+fnqdxo5W63N9wi3WrLZ0P5lkjQlwl7zIzWFlhYhBUqvXVJJLNwYASc4qv/34+cJ3DXy8ajUENT7TGZoGQQ==","signatures":[{"sig":"MEQCIBYJDk1bCPPLWnbHQD9Ggr10MEGAAKqEaWCGwPlqCDMhAiBAciLlO8VacWsAckaF6RNSBLVU/Lni5YmMl4KXkaKvGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1500421},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"c9aeab1a4b0072079a841340cfee5e0a28e641d1","scripts":{"lint":"tsc --noEmit","test":"jest --selectProjects unit","build":"tsup","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","generate":"cd ../.. && npx --prefix clients/node buf generate --template buf.gen.node.yaml","test:all":"jest --runInBand","test:unit":"jest --selectProjects unit","typecheck":"tsc --noEmit","run-examples":"tsx run_examples.ts","test:coverage":"jest --selectProjects unit --coverage","typecheck:all":"npm run typecheck && npm run typecheck:tests","prepublishOnly":"npm run clean && npm run build && npm run test:unit -- --passWithNoTests","typecheck:tests":"tsc --noEmit -p tsconfig.test.json","test:integration":"jest --selectProjects integration --runInBand"},"_npmUser":{"name":"mcounts-actian","email":"michael.counts@hcl-software.com"},"repository":{"url":"git+https://github.com/ActianCorp/vectorai-nodejs-client.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js/TypeScript client for Actian VectorAI Database","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@grpc/grpc-js":"^1.14.3","@bufbuild/protobuf":"^2.10.2","@grpc/proto-loader":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.1.2","ts-proto":"^2.10.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.10.0","@bufbuild/buf":"^1.66.0","google-protobuf":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/vectorai-client_1.0.1_1777384750771_0.0018768161173168263","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Incorrect license metadata. Use 1.0.2 or later."},"1.0.2":{"name":"@actian/vectorai-client","version":"1.0.2","keywords":["vector","database","grpc","embeddings","ai","vectorai","actian","vector-database","similarity-search"],"author":{"name":"Actian Corporation"},"license":"SEE LICENSE IN LICENSE","_id":"@actian/vectorai-client@1.0.2","maintainers":[{"name":"mcounts-actian","email":"michael.counts@hcl-software.com"}],"homepage":"https://docs.vectoraidb.actian.com/","bugs":{"url":"https://docs.vectoraidb.actian.com/home/support/support"},"dist":{"shasum":"a07683718b86cce35966c647cf0cdf039a581294","tarball":"https://registry.npmjs.org/@actian/vectorai-client/-/vectorai-client-1.0.2.tgz","fileCount":5,"integrity":"sha512-yFV7wwsBx5Uue0uE/oGOW18VfHVcNWyy93KFObe4pYGwakrMFGLROz2ocz63tZmsFTA9Y9h+Tc5VieG3rqjbAQ==","signatures":[{"sig":"MEUCIQCorZ6dmONtp4DrpaKbnNKxgioDhFO2Jk95fIaNzLIx1wIgAct35DuCKs+2Q6Fa+HGcWHm0h4hLkjO987j4Hsg5MLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1500675},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=18"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"f33b62e91c183ad76080365d57c649d28948876d","scripts":{"lint":"tsc --noEmit","test":"jest --selectProjects unit","build":"tsup","clean":"node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"","generate":"cd ../.. && npx --prefix clients/node buf generate --template buf.gen.node.yaml","test:all":"jest --runInBand","test:unit":"jest --selectProjects unit","typecheck":"tsc --noEmit","run-examples":"tsx run_examples.ts","test:coverage":"jest --selectProjects unit --coverage","typecheck:all":"npm run typecheck && npm run typecheck:tests","prepublishOnly":"npm run clean && npm run build && npm run test:unit -- --passWithNoTests","typecheck:tests":"tsc --noEmit -p tsconfig.test.json","test:integration":"jest --selectProjects integration --runInBand"},"_npmUser":{"name":"mcounts-actian","email":"michael.counts@hcl-software.com"},"repository":{"url":"git+https://github.com/ActianCorp/vectorai-nodejs-client.git","type":"git"},"_npmVersion":"10.9.2","description":"Node.js/TypeScript client for Actian VectorAI Database","directories":{},"_nodeVersion":"22.15.0","dependencies":{"@grpc/grpc-js":"^1.14.3","@bufbuild/protobuf":"^2.10.2","@grpc/proto-loader":"^0.7.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","jest":"^29.7.0","tsup":"^8.5.1","ts-jest":"^29.1.2","ts-proto":"^2.10.1","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.10.0","@bufbuild/buf":"^1.66.0","google-protobuf":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/vectorai-client_1.0.2_1777393863327_0.877375653151337","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-04-28T13:54:36.542Z","modified":"2026-04-28T16:31:26.754Z","1.0.0":"2026-04-28T13:54:36.865Z","1.0.1":"2026-04-28T13:59:10.969Z","1.0.2":"2026-04-28T16:31:03.471Z"},"bugs":{"url":"https://docs.vectoraidb.actian.com/home/support/support"},"author":{"name":"Actian Corporation"},"license":"SEE LICENSE IN LICENSE","homepage":"https://docs.vectoraidb.actian.com/","keywords":["vector","database","grpc","embeddings","ai","vectorai","actian","vector-database","similarity-search"],"repository":{"url":"git+https://github.com/ActianCorp/vectorai-nodejs-client.git","type":"git"},"description":"Node.js/TypeScript client for Actian VectorAI Database","maintainers":[{"name":"mcounts-actian","email":"michael.counts@hcl-software.com"}],"readme":"<p align=\"center\">\r\n  <img height=\"100\" alt=\"Actian\" src=\"https://www.actian.com/wp-content/uploads/2024/01/actian-logo.svg\">\r\n  &nbsp;\r\n  <img height=\"100\" src=\"https://upload.wikimedia.org/wikipedia/commons/d/d9/Node.js_logo.svg\" alt=\"Node.js\">\r\n</p>\r\n\r\n<p align=\"center\">\r\n    <b>Node.js/TypeScript client library for <a href=\"https://docs.vectoraidb.actian.com/\">Actian VectorAI</a> Database.</b>\n</p>\r\n\r\n<p align=\"center\">\r\n    <a href=\"https://www.npmjs.com/package/@actian/vectorai-client\"><img src=\"https://img.shields.io/npm/v/@actian/vectorai-client\" alt=\"npm version\"></a>\r\n    <a href=\"https://www.npmjs.com/package/@actian/vectorai-client\"><img src=\"https://img.shields.io/badge/node-18+-brightgreen.svg\" alt=\"Node.js 18+\"></a>\r\n</p>\r\n\r\n# Actian VectorAI Node.js Client\r\n\r\nOfficial Node.js/TypeScript client library for [Actian VectorAI](https://docs.vectoraidb.actian.com/) — a high-performance vector database. Provides a namespace-based API with full TypeScript types, TLS/mTLS support, a type-safe Filter DSL, and hybrid fusion utilities.\n\r\n## Features\r\n\r\n- **Namespace API** — `client.collections`, `client.points`, `client.vde`\r\n- **Full TypeScript** — Complete type definitions for all operations\r\n- **gRPC transport** — High-performance binary protocol with configurable retry, timeouts, and interceptors\r\n- **TLS / mTLS** — Secure connections with custom CA, client certificates\r\n- **Auth** — API key and dynamic token provider support\r\n- **Filter DSL** — Type-safe query building with `Field.of('x').eq(y)`, `FilterBuilder`, datetime ranges\r\n- **Hybrid Fusion** — Reciprocal Rank Fusion (RRF) and Distribution-Based Score Fusion (DBSF)\r\n- **Smart Batcher** — Configurable auto-flushing with byte limits and concurrent flushes\r\n- **Resilience** — Circuit breaker, backpressure controller, and retry configuration\r\n- **Rich Exceptions** — Typed error hierarchy with `PointNotFoundError`, `DimensionMismatchError`, `CircuitBreakerOpenError`, etc.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @actian/vectorai-client\r\n```\r\n\r\n> **Requires:** Node.js 18 or higher\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport { VectorAIClient, Field, Filter } from '@actian/vectorai-client';\r\n\r\nconst client = new VectorAIClient('localhost:6574');\r\n\r\n// Create a collection\r\nawait client.collections.create('products', {\r\n    dimension: 128,\r\n    distanceMetric: 'COSINE',\r\n});\r\n\r\n// Insert points\r\nawait client.points.upsert('products', [\r\n    { id: 1, vector: new Array(128).fill(0.1), payload: { category: 'electronics' } },\r\n    { id: 2, vector: new Array(128).fill(0.2), payload: { category: 'books' } },\r\n]);\r\n\r\n// Search with a filter\r\nconst filter = Filter.and(\r\n    Field.of('category').eq('electronics'),\r\n);\r\nconst results = await client.points.search('products', new Array(128).fill(0.15), {\r\n    limit: 5,\r\n    filter,\r\n});\r\n\r\nconsole.log(results);\r\n\r\n// Cleanup\r\nawait client.collections.delete('products');\r\nclient.close();\r\n```\r\n\r\n## Constructor Options\r\n\r\n```typescript\r\nconst client = new VectorAIClient('localhost:6574', {\r\n    tls: true,\r\n    tlsCaCert: '/path/to/ca.pem',\r\n    accessToken: 'vdai_my-secret-key',\r\n    timeout: 30,\r\n    maxRetries: 3,\r\n});\r\n```\r\n\r\n| Option | Type | Default | Description |\r\n|---|---|---|---|\r\n| `tls` | `boolean` | `false` | Enable TLS transport |\r\n| `tlsCaCert` | `string` | — | Path to CA certificate PEM file |\r\n| `tlsClientCert` | `string` | — | Path to client certificate (mTLS) |\r\n| `tlsClientKey` | `string` | — | Path to client private key (mTLS) |\r\n| `accessToken` | `string` | — | Access token for Bearer auth (or set `ACTIAN_VECTORAI_ACCESS_TOKEN`) |\r\n| `tokenProvider` | `() => string \\| Promise<string>` | — | Dynamic token provider |\r\n| `restUrl` | `string` | derived | REST API base URL for auth admin operations |\r\n| `timeout` | `number` | `30` | Per-RPC timeout in seconds (0 = no deadline) |\r\n| `maxRetries` | `number` | `3` | Max retry attempts on transient errors |\r\n| `maxMessageSize` | `number` | `256 MiB` | Max gRPC message size in bytes |\r\n| `enableTracing` | `boolean` | `true` | Add `x-request-id` / `x-request-timestamp` headers |\r\n| `enableLogging` | `boolean` | `false` | Log RPC method + elapsed time |\r\n| `logger` | `(msg: string) => void` | `console.log` | Custom logger for the logging interceptor |\r\n| `metadata` | `Record<string, string>` | — | Static metadata injected into every call |\r\n| `grpcOptions` | `Record<string, unknown>` | — | Additional gRPC channel options |\r\n| `poolSize` | `number` | `1` | Number of gRPC channels to pool |\r\n| `circuitBreaker` | `CircuitBreaker` | — | Circuit breaker instance for failure protection |\r\n| `backpressure` | `BackpressureConfig` | — | Backpressure configuration for flow control |\r\n| `retryConfig` | `RetryConfig` | — | Full retry config (overrides `maxRetries`) |\r\n\r\n## Authentication\r\n\r\nThe client supports static tokens, dynamic token providers, and environment-variable configuration via the `Settings` class.\r\n\r\n### Static token\r\n\r\n```typescript\r\nconst client = new VectorAIClient('localhost:6574', {\r\n    accessToken: 'vdai_abc123...',\r\n});\r\n```\r\n\r\n### Environment variables\r\n\r\n```bash\r\nexport ACTIAN_VECTORAI_URL=localhost:6574\r\nexport ACTIAN_VECTORAI_ACCESS_TOKEN=vdai_abc123...\r\n```\r\n\r\n```typescript\r\n// No args needed — reads from env\r\nconst client = new VectorAIClient();\r\nawait client.healthCheck();\r\n```\r\n\r\n### AuthManager (admin operations)\r\n\r\n```typescript\r\nimport { AuthManager } from '@actian/vectorai-client';\r\n\r\nconst auth = new AuthManager('http://localhost:6573');\r\nawait auth.login('admin-password');           // obtain JWT\r\nconst key = await auth.createApiKey({         // create API key\r\n    name: 'my-service',\r\n    permission: 'read,write',\r\n});\r\nconsole.log(key.apiKey);                      // vdai_...\r\n```\r\n\r\nOr via the client shortcut:\r\n\r\n```typescript\r\nconst client = new VectorAIClient('localhost:6574');\r\nawait client.auth.login('admin-password');\r\nconst keys = await client.auth.listApiKeys();\r\n```\r\n\r\n## Namespace Overview\r\n\r\n### `client.collections` — 8 methods\r\n\r\n`create`, `getInfo`, `list`, `delete`, `exists`, `update`, `recreate`, `getOrCreate`\r\n\r\n### `client.points` — 17 methods\r\n\r\n`upsert`, `upsertSingle`, `delete`, `deleteByIds`, `get`, `setPayload`, `overwritePayload`, `deletePayload`, `clearPayload`, `updateVectors`, `search`, `searchBatch`, `count`, `query`, `queryBatch`, `scroll`, `scrollAll`\r\n\r\n### `client.vde` — 15 methods\r\n\r\n`openCollection`, `closeCollection`, `getState`, `getVectorCount`, `getStats`, `getOptimizations`, `rebuildIndex`, `optimize`, `flush`, `importDataset`, `compactCollection`, `triggerRebuild`, `getRebuildTask`, `listRebuildTasks`, `cancelRebuildTask`\r\n\r\n### Top-level helpers\r\n\r\n`healthCheck`, `connect`, `close`, `shutdown`, `uploadPoints`, `getAddress`, `isConnected` (property)\r\n\r\n## Filter DSL\r\n\r\n```typescript\r\nimport { Field, Filter, FilterBuilder, hasId, hasVector, nested, isEmpty, isNull } from '@actian/vectorai-client';\r\n\r\n// Field conditions\r\nconst f1 = Field.of('price').lt(100);\r\nconst f2 = Field.of('category').in(['electronics', 'books']);\r\nconst f3 = Field.of('tags').contains('sale');\r\n\r\n// Aliases\r\nconst f2b = Field.of('category').anyOf(['electronics', 'books']); // same as .in()\r\n\r\n// Datetime filters\r\nconst f9 = Field.of('created_at').datetimeGt(new Date('2024-01-01'));\r\nconst f10 = Field.of('expires').datetimeBetween(new Date('2024-01-01'), new Date('2024-12-31'));\r\n\r\n// Geo conditions\r\nconst f4 = Field.of('location').geoRadius({ lat: 40.7, lon: -74.0 }, 5000);\r\n\r\n// Utility conditions\r\nconst f5 = hasId([1, 2, 3]);\r\nconst f6 = hasVector('image_embedding');\r\nconst f7 = isEmpty('description'); // standalone factory\r\nconst f8 = nested('address', Filter.and(Field.of('city').eq('NYC')));\r\n\r\n// Combine\r\nconst filter = Filter.and(f1, f2, Filter.not(f3));\r\n\r\n// FilterBuilder (fluent must/should/mustNot composition)\r\nconst fb = new FilterBuilder();\r\nfb.must(f1);\r\nfb.should(f2).should(f3);\r\nfb.withMinShould(1);\r\nconst builtFilter = fb.build(); // returns a Filter (recommended)\r\n\r\n// Use with search\r\nawait client.points.search('products', queryVector, { filter, limit: 10 });\r\n```\r\n\r\n## Resilience\r\n\r\n```typescript\r\nimport { CircuitBreaker, BackpressureController, RetryConfig, createCircuitBreakerInterceptor } from '@actian/vectorai-client';\r\n\r\n// Circuit breaker (standalone — not auto-wired to client)\r\nconst cb = new CircuitBreaker(/* failureThreshold */ 5, /* recoveryTimeout */ 30_000);\r\ncb.ensureClosed();  // throws CircuitBreakerOpenError if open\r\ncb.recordSuccess(); // after successful call\r\ncb.recordFailure(); // after failed call\r\n\r\n// Use as gRPC interceptor\r\nconst interceptor = createCircuitBreakerInterceptor(cb);\r\n\r\n// Backpressure controller (adaptive concurrency)\r\nconst bp = new BackpressureController({ initialConcurrency: 16 });\r\nawait bp.acquire();\r\ntry { /* ... call ... */ } finally { bp.release(); }\r\n\r\n// Retry config (standalone utility)\r\nconst rc = new RetryConfig({ maxRetries: 5, initialBackoffMs: 200 });\r\nconst delay = rc.computeDelay(/* attempt */ 2); // jittered exponential backoff\r\n```\r\n\r\n## Exception Hierarchy\r\n\r\n```\r\nVectorAIError\r\n├── ConnectionError\r\n│   ├── ConnectionRefusedError\r\n│   ├── ConnectionTimeoutError\r\n│   ├── NotConnectedError\r\n│   ├── ChannelClosedError\r\n│   └── ClientClosedError\r\n├── AuthenticationError\r\n│   ├── InvalidCredentialsError\r\n│   └── PermissionDeniedError\r\n├── CollectionError\r\n│   ├── CollectionNotFoundError\r\n│   ├── CollectionExistsError\r\n│   ├── CollectionNotOpenError\r\n│   └── CollectionNotReadyError\r\n├── PointError\r\n│   ├── PointNotFoundError        (ids, collectionName)\r\n│   └── DimensionMismatchError    (expected, actual)\r\n├── IndexError\r\n├── PayloadKeyNotFoundError       (key, collectionName)\r\n├── ValidationError\r\n├── ServerError\r\n├── UnimplementedError\r\n├── TimeoutError\r\n├── RateLimitError                (retryAfter?)\r\n├── VectorLimitExceededError      (currentCount?, maxAllowed?)\r\n├── BatchError                    (total, failed, succeeded)\r\n├── MaxRetriesExceededError       (attempts, lastError)\r\n└── CircuitBreakerOpenError       (recoveryTime, failureCount)\r\n```\r\n\r\n## Documentation\r\n\r\n- [API Reference](https://docs.vectoraidb.actian.com/sdks/javascript/reference) — Full method reference\n- [Examples](examples/) — Runnable code samples\n- [License](https://docs.vectoraidb.actian.com/home/support/eula) — Actian VectorAI DB License and Support Services Agreement\n\r\n## Development\r\n\r\n### Running Tests\r\n\r\n```bash\r\n# Unit tests (no server required)\r\nnpm test\r\n\r\n# Integration tests (requires VectorAI server on localhost:6574)\r\nnpm run test:integration\r\n\r\n# All tests\r\nnpm run test:all\r\n\r\n# Unit tests with coverage\r\nnpm run test:coverage\r\n```\r\n\r\n### Building\r\n\r\n```bash\r\nnpm run build\r\n```\r\n\r\n### Running Examples\r\n\r\n```bash\r\nnpx tsx examples/01_hello_world.ts [server_address]\r\n```\r\n\r\n## Support\r\n\r\nFor support, feature requests, and bug reports, visit [Actian Support](https://docs.vectoraidb.actian.com/home/support/support).\n\r\n---\r\n\r\n<p align=\"center\">\r\n  <b>Copyright © 2025 Actian Corporation. All Rights Reserved.</b>\r\n</p>\r\n","readmeFilename":"README.md"}