@vectros-ai/mcp-server 0.6.0 → 0.7.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.
- package/CHANGELOG.md +21 -0
- package/dist/cli-http.js +10 -13
- package/dist/cli-http.js.map +1 -1
- package/dist/cli-http.mjs +10 -13
- package/dist/cli-http.mjs.map +1 -1
- package/dist/cli.js +10 -13
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +10 -13
- package/dist/cli.mjs.map +1 -1
- package/dist/index.js +10 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +10 -13
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -4937,7 +4937,7 @@ var DocumentsClient = class {
|
|
|
4937
4937
|
return handleNonStatusCodeError(_response.error, _response.rawResponse, "DELETE", "/v1/documents/{id}");
|
|
4938
4938
|
}
|
|
4939
4939
|
/**
|
|
4940
|
-
* Partially updates a document using an RFC 7386 JSON Merge Patch. The `payload` object is deep-merged: keys you send overwrite existing values (recursing into nested objects), a key set to `null` is deleted, and keys you omit are preserved — unlike PUT, which replaces the whole payload. Top-level fields (`title`, `
|
|
4940
|
+
* Partially updates a document using an RFC 7386 JSON Merge Patch. The `payload` object is deep-merged: keys you send overwrite existing values (recursing into nested objects), a key set to `null` is deleted, and keys you omit are preserved — unlike PUT, which replaces the whole payload. Top-level fields (`title`, `folderId`, `schemaId`, ownership) are set when present and left unchanged when omitted; sending a top-level field as `null` is rejected. Supplying `text` re-ingests the document body (same as PUT). `indexMode`, `externalId`, and `storeText` (text retention is fixed at ingest) are immutable and rejected if present. The merged result is validated against the bound schema. Pass `expectedVersion` for optimistic concurrency (409 on conflict). Requires the `documents:u` scope.
|
|
4941
4941
|
*
|
|
4942
4942
|
* @param {Vectros.PatchDocumentRequest} request
|
|
4943
4943
|
* @param {DocumentsClient.RequestOptions} requestOptions - Request-specific configuration.
|
|
@@ -5189,7 +5189,7 @@ var DocumentsClient = class {
|
|
|
5189
5189
|
return handleNonStatusCodeError(_response.error, _response.rawResponse, "GET", "/v1/documents/{id}/download");
|
|
5190
5190
|
}
|
|
5191
5191
|
/**
|
|
5192
|
-
* Returns the full
|
|
5192
|
+
* Returns the document's full text body when it is retained: always available for text-ingested documents, and for file-uploaded documents unless they were uploaded with `storeText=false` (which discards the extracted text once indexing completes — the original file remains available via `GET /{id}/download`). Returns 404 when the document does not exist, its text was not retained, or extraction has not yet completed. Requires the `documents:r` scope.
|
|
5193
5193
|
*
|
|
5194
5194
|
* @param {Vectros.GetDocumentTextRequest} request
|
|
5195
5195
|
* @param {DocumentsClient.RequestOptions} requestOptions - Request-specific configuration.
|
|
@@ -8798,8 +8798,8 @@ function warnOnSuboptimalKey(key, log) {
|
|
|
8798
8798
|
|
|
8799
8799
|
// src/build-info.ts
|
|
8800
8800
|
var BUILD_INFO = {
|
|
8801
|
-
mcpServer: true ? "0.
|
|
8802
|
-
sdk: true ? "0.
|
|
8801
|
+
mcpServer: true ? "0.7.0" : "dev",
|
|
8802
|
+
sdk: true ? "0.33.0" : "dev"
|
|
8803
8803
|
};
|
|
8804
8804
|
|
|
8805
8805
|
// src/log.ts
|
|
@@ -9758,7 +9758,7 @@ function isNotAvailable(err) {
|
|
|
9758
9758
|
var documentGet = ({ client, log }) => ({
|
|
9759
9759
|
name: "document_get",
|
|
9760
9760
|
title: "Get document metadata (and optionally text)",
|
|
9761
|
-
description: "Fetch metadata for a single document \u2014 select it by its Vectros `documentId` OR by your own `externalId` + `type` (resolved for you). Pass `includeText: true` to also fetch the text body (capped at ~8K tokens; `truncated: true` flag if cut).
|
|
9761
|
+
description: "Fetch metadata for a single document \u2014 select it by its Vectros `documentId` OR by your own `externalId` + `type` (resolved for you). Pass `includeText: true` to also fetch the text body (capped at ~8K tokens; `truncated: true` flag if cut). Text is available for every text-ingested document and for file-ingested documents unless they were uploaded with `storeText: false` (extracted text discarded after indexing) \u2014 then `textAvailable: false` is set; the original file is still retrievable via `includeDownloadUrl`. Pass `includeDownloadUrl: true` to also get a short-lived presigned `downloadUrl` for the original file (file-backed documents only). Returns the full document metadata, including its lifecycle `status` (ACTIVE, or ARCHIVED when soft-retracted from search \u2014 restorable via document_update) and its processing `indexStatus`.",
|
|
9762
9762
|
inputSchema: inputSchema10,
|
|
9763
9763
|
handler: async (args) => {
|
|
9764
9764
|
const documentId = args.documentId;
|
|
@@ -9782,7 +9782,7 @@ var documentGet = ({ client, log }) => ({
|
|
|
9782
9782
|
if (isNotAvailable(textErr)) {
|
|
9783
9783
|
log.debug(
|
|
9784
9784
|
{ tool: "document_get", id },
|
|
9785
|
-
"document_get text unavailable (
|
|
9785
|
+
"document_get text unavailable (not retained \u2014 storeText:false upload)"
|
|
9786
9786
|
);
|
|
9787
9787
|
extra = { ...extra, textAvailable: false };
|
|
9788
9788
|
} else {
|
|
@@ -9944,7 +9944,6 @@ var inputSchema12 = {
|
|
|
9944
9944
|
"New raw text body. Supplying it re-ingests the document body and re-queues it for indexing, so the search index reflects the edit (text-ingested documents only \u2014 not file-backed ones). Omit to leave the stored text unchanged. This is the in-place alternative to re-ingesting with upsert:true."
|
|
9945
9945
|
),
|
|
9946
9946
|
folderId: import_zod12.z.string().optional().describe("Move the document into this folder (cannot be cleared once set)."),
|
|
9947
|
-
storeText: import_zod12.z.boolean().optional().describe("Whether the raw text is stored + retrievable."),
|
|
9948
9947
|
status: import_zod12.z.enum(["ACTIVE", "ARCHIVED"]).optional().describe(
|
|
9949
9948
|
"Lifecycle status. `ARCHIVED` soft-retracts the document \u2014 it is pulled from search and recall but kept and recoverable; set it back to `ACTIVE` to re-index and restore it. The way to retire superseded content when the credential has no delete authority. Omit to leave unchanged."
|
|
9950
9949
|
),
|
|
@@ -9968,7 +9967,6 @@ var documentUpdate = ({ client, log }) => ({
|
|
|
9968
9967
|
const fields = args.fields;
|
|
9969
9968
|
const text = args.text;
|
|
9970
9969
|
const folderId = args.folderId;
|
|
9971
|
-
const storeText = args.storeText;
|
|
9972
9970
|
const status = args.status;
|
|
9973
9971
|
const userId = args.userId;
|
|
9974
9972
|
const orgId = args.orgId;
|
|
@@ -9982,7 +9980,6 @@ var documentUpdate = ({ client, log }) => ({
|
|
|
9982
9980
|
if (fields !== void 0) body.payload = fields;
|
|
9983
9981
|
if (text !== void 0) body.text = text;
|
|
9984
9982
|
if (folderId !== void 0) body.folderId = folderId;
|
|
9985
|
-
if (storeText !== void 0) body.storeText = storeText;
|
|
9986
9983
|
if (status !== void 0) body.status = status;
|
|
9987
9984
|
if (userId !== void 0) body.userId = userId;
|
|
9988
9985
|
if (orgId !== void 0) body.orgId = orgId;
|
|
@@ -10302,7 +10299,7 @@ var inputSchema19 = {
|
|
|
10302
10299
|
// Inline text mode (mutually exclusive with filePath):
|
|
10303
10300
|
text: import_zod18.z.string().min(1).optional().describe("Text body to ingest inline. Mutually exclusive with filePath. Either text or filePath is required."),
|
|
10304
10301
|
storeText: import_zod18.z.boolean().optional().describe(
|
|
10305
|
-
"
|
|
10302
|
+
"Whether the document's text is retained after indexing (default true). Applies to BOTH modes and is fixed at ingest time. Text mode: the ingested body is always retained (this flag is effectively always true \u2014 the body is the document). File mode: true keeps the extracted text retrievable via document_get(includeText:true) and usable by document_ask; false discards the extracted text once indexing completes \u2014 search still works and the original file remains downloadable, but includeText returns textAvailable:false and document_ask is unavailable."
|
|
10306
10303
|
),
|
|
10307
10304
|
// File upload mode (mutually exclusive with text; stdio-transport-only):
|
|
10308
10305
|
filePath: import_zod18.z.string().min(1).optional().describe(
|
|
@@ -10318,7 +10315,7 @@ var inputSchema19 = {
|
|
|
10318
10315
|
var documentIngest = ({ client, log, transport, ingestRoot }) => ({
|
|
10319
10316
|
name: "document_ingest",
|
|
10320
10317
|
title: "Ingest a new document (text body or file upload)",
|
|
10321
|
-
description: "Create a new document in your Vectros tenant. Two modes:\n \u2022 Text mode: pass `text` (string body). Single-call. Use for crawled content, notes, generated text.\n \u2022 File mode: pass `filePath` (local path on the MCP server's host machine). STDIO-TRANSPORT ONLY \u2014 rejected on HTTP transport. MCP server reads the bytes, requests a presigned upload URL, and PUTs them. Returns when the upload is accepted (indexStatus: PENDING_INDEX); poll with `document_get` until indexStatus is INDEXED.\nEither `text` or `filePath` must be present; both is an error. Idempotent by `externalId` (re-ingest returns the existing document, not a duplicate). To UPDATE an existing document instead \u2014 re-index an edited body \u2014 pass `upsert:true` with the same `externalId` (and the same `schemaId`); this is the re-sync primitive for keeping a knowledge base current. Pass `schemaId` + `payload` for a typed, lookup-queryable document (records parity). indexMode defaults to HYBRID for untyped documents (omit to inherit a bound schema's default). storeText defaults to true
|
|
10318
|
+
description: "Create a new document in your Vectros tenant. Two modes:\n \u2022 Text mode: pass `text` (string body). Single-call. Use for crawled content, notes, generated text.\n \u2022 File mode: pass `filePath` (local path on the MCP server's host machine). STDIO-TRANSPORT ONLY \u2014 rejected on HTTP transport. MCP server reads the bytes, requests a presigned upload URL, and PUTs them. Returns when the upload is accepted (indexStatus: PENDING_INDEX); poll with `document_get` until indexStatus is INDEXED.\nEither `text` or `filePath` must be present; both is an error. Idempotent by `externalId` (re-ingest returns the existing document, not a duplicate). To UPDATE an existing document instead \u2014 re-index an edited body \u2014 pass `upsert:true` with the same `externalId` (and the same `schemaId`); this is the re-sync primitive for keeping a knowledge base current. Pass `schemaId` + `payload` for a typed, lookup-queryable document (records parity). indexMode defaults to HYBRID for untyped documents (omit to inherit a bound schema's default). storeText defaults to true and is fixed at ingest: in file mode, false discards the extracted text after indexing (search + file download keep working; text retrieval and document_ask do not). Text-mode bodies are always retained.",
|
|
10322
10319
|
inputSchema: inputSchema19,
|
|
10323
10320
|
handler: async (args) => {
|
|
10324
10321
|
const title = args.title;
|
|
@@ -10358,14 +10355,12 @@ var documentIngest = ({ client, log, transport, ingestRoot }) => ({
|
|
|
10358
10355
|
};
|
|
10359
10356
|
try {
|
|
10360
10357
|
if (text) {
|
|
10361
|
-
const storeText = args.storeText ?? true;
|
|
10362
10358
|
const result = await client.documents.ingestDocument({
|
|
10363
10359
|
upsert,
|
|
10364
10360
|
body: {
|
|
10365
10361
|
title,
|
|
10366
10362
|
text,
|
|
10367
10363
|
indexMode,
|
|
10368
|
-
storeText,
|
|
10369
10364
|
...common
|
|
10370
10365
|
}
|
|
10371
10366
|
});
|
|
@@ -10396,11 +10391,13 @@ var documentIngest = ({ client, log, transport, ingestRoot }) => ({
|
|
|
10396
10391
|
}
|
|
10397
10392
|
const fileName = (0, import_node_path.basename)(safePath);
|
|
10398
10393
|
const fileType = args.fileType ?? inferMimeType(safePath);
|
|
10394
|
+
const storeTextFile = args.storeText ?? true;
|
|
10399
10395
|
const upload = await client.documents.uploadDocument({
|
|
10400
10396
|
upsert,
|
|
10401
10397
|
fileName,
|
|
10402
10398
|
fileType,
|
|
10403
10399
|
indexMode,
|
|
10400
|
+
storeText: storeTextFile,
|
|
10404
10401
|
...common
|
|
10405
10402
|
});
|
|
10406
10403
|
const uploadUrl = upload?.uploadUrl;
|