@tachu/extensions 1.0.0-beta.1 → 1.0.0-rc.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 +41 -66
- package/README.md +83 -708
- package/README_ZH.md +82 -696
- package/dist/backends/file.d.ts +6 -6
- package/dist/backends/file.d.ts.map +1 -1
- package/dist/backends/file.js +27 -11
- package/dist/backends/file.js.map +1 -1
- package/dist/backends/terminal.d.ts +6 -6
- package/dist/backends/terminal.d.ts.map +1 -1
- package/dist/backends/terminal.js +31 -7
- package/dist/backends/terminal.js.map +1 -1
- package/dist/backends/web.d.ts +6 -6
- package/dist/backends/web.d.ts.map +1 -1
- package/dist/backends/web.js +10 -8
- package/dist/backends/web.js.map +1 -1
- package/dist/common/net.d.ts +8 -0
- package/dist/common/net.d.ts.map +1 -1
- package/dist/common/net.js +39 -24
- package/dist/common/net.js.map +1 -1
- package/dist/common/path.d.ts +38 -5
- package/dist/common/path.d.ts.map +1 -1
- package/dist/common/path.js +55 -13
- package/dist/common/path.js.map +1 -1
- package/dist/common/process.js.map +1 -1
- package/dist/index.d.ts +7 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp/sse-adapter.d.ts +45 -33
- package/dist/mcp/sse-adapter.d.ts.map +1 -1
- package/dist/mcp/sse-adapter.js +59 -34
- package/dist/mcp/sse-adapter.js.map +1 -1
- package/dist/mcp/stdio-adapter.d.ts +45 -33
- package/dist/mcp/stdio-adapter.d.ts.map +1 -1
- package/dist/mcp/stdio-adapter.js +59 -34
- package/dist/mcp/stdio-adapter.js.map +1 -1
- package/dist/memory/fs-memory-system.d.ts +288 -0
- package/dist/memory/fs-memory-system.d.ts.map +1 -0
- package/dist/memory/fs-memory-system.js +482 -0
- package/dist/memory/fs-memory-system.js.map +1 -0
- package/dist/memory/index.d.ts +5 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +5 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/projection-outbox.d.ts +69 -0
- package/dist/memory/projection-outbox.d.ts.map +1 -0
- package/dist/memory/projection-outbox.js +187 -0
- package/dist/memory/projection-outbox.js.map +1 -0
- package/dist/memory/projection-projector.d.ts +16 -0
- package/dist/memory/projection-projector.d.ts.map +1 -0
- package/dist/memory/projection-projector.js +56 -0
- package/dist/memory/projection-projector.js.map +1 -0
- package/dist/memory/projection-worker.d.ts +28 -0
- package/dist/memory/projection-worker.d.ts.map +1 -0
- package/dist/memory/projection-worker.js +84 -0
- package/dist/memory/projection-worker.js.map +1 -0
- package/dist/observability/jsonl-emitter.d.ts +25 -25
- package/dist/observability/jsonl-emitter.d.ts.map +1 -1
- package/dist/observability/jsonl-emitter.js +25 -25
- package/dist/observability/jsonl-emitter.js.map +1 -1
- package/dist/observability/otel-emitter.d.ts +23 -23
- package/dist/observability/otel-emitter.d.ts.map +1 -1
- package/dist/observability/otel-emitter.js +39 -30
- package/dist/observability/otel-emitter.js.map +1 -1
- package/dist/providers/anthropic.d.ts +51 -32
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +293 -58
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/gemini.d.ts +115 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +901 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/index.d.ts +2 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/mock.d.ts +67 -24
- package/dist/providers/mock.d.ts.map +1 -1
- package/dist/providers/mock.js +122 -41
- package/dist/providers/mock.js.map +1 -1
- package/dist/providers/openai.d.ts +70 -35
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +330 -50
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/qwen.d.ts +146 -0
- package/dist/providers/qwen.d.ts.map +1 -0
- package/dist/providers/qwen.js +672 -0
- package/dist/providers/qwen.js.map +1 -0
- package/dist/safety/default-gate.d.ts +112 -0
- package/dist/safety/default-gate.d.ts.map +1 -0
- package/dist/safety/default-gate.js +188 -0
- package/dist/safety/default-gate.js.map +1 -0
- package/dist/safety/index.d.ts +2 -0
- package/dist/safety/index.d.ts.map +1 -0
- package/dist/safety/index.js +2 -0
- package/dist/safety/index.js.map +1 -0
- package/dist/tools/_shared/web-client.d.ts +18 -0
- package/dist/tools/_shared/web-client.d.ts.map +1 -0
- package/dist/tools/_shared/web-client.js +46 -0
- package/dist/tools/_shared/web-client.js.map +1 -0
- package/dist/tools/apply-patch/executor.d.ts.map +1 -1
- package/dist/tools/apply-patch/executor.js +54 -4
- package/dist/tools/apply-patch/executor.js.map +1 -1
- package/dist/tools/edit-file/executor.d.ts +32 -0
- package/dist/tools/edit-file/executor.d.ts.map +1 -0
- package/dist/tools/edit-file/executor.js +84 -0
- package/dist/tools/edit-file/executor.js.map +1 -0
- package/dist/tools/fetch-url/descriptor.md +6 -0
- package/dist/tools/fetch-url/executor.d.ts +8 -0
- package/dist/tools/fetch-url/executor.d.ts.map +1 -1
- package/dist/tools/fetch-url/executor.js +83 -2
- package/dist/tools/fetch-url/executor.js.map +1 -1
- package/dist/tools/git-blame/executor.d.ts +24 -0
- package/dist/tools/git-blame/executor.d.ts.map +1 -0
- package/dist/tools/git-blame/executor.js +76 -0
- package/dist/tools/git-blame/executor.js.map +1 -0
- package/dist/tools/git-branch/executor.d.ts +22 -0
- package/dist/tools/git-branch/executor.d.ts.map +1 -0
- package/dist/tools/git-branch/executor.js +81 -0
- package/dist/tools/git-branch/executor.js.map +1 -0
- package/dist/tools/git-diff/executor.d.ts +37 -0
- package/dist/tools/git-diff/executor.d.ts.map +1 -0
- package/dist/tools/git-diff/executor.js +156 -0
- package/dist/tools/git-diff/executor.js.map +1 -0
- package/dist/tools/git-log/executor.d.ts +31 -0
- package/dist/tools/git-log/executor.d.ts.map +1 -0
- package/dist/tools/git-log/executor.js +65 -0
- package/dist/tools/git-log/executor.js.map +1 -0
- package/dist/tools/git-show/executor.d.ts +22 -0
- package/dist/tools/git-show/executor.d.ts.map +1 -0
- package/dist/tools/git-show/executor.js +74 -0
- package/dist/tools/git-show/executor.js.map +1 -0
- package/dist/tools/git-status/executor.d.ts +25 -0
- package/dist/tools/git-status/executor.d.ts.map +1 -0
- package/dist/tools/git-status/executor.js +120 -0
- package/dist/tools/git-status/executor.js.map +1 -0
- package/dist/tools/glob/executor.d.ts +18 -0
- package/dist/tools/glob/executor.d.ts.map +1 -0
- package/dist/tools/glob/executor.js +47 -0
- package/dist/tools/glob/executor.js.map +1 -0
- package/dist/tools/index.d.ts +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +459 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-dir/executor.d.ts.map +1 -1
- package/dist/tools/list-dir/executor.js +5 -3
- package/dist/tools/list-dir/executor.js.map +1 -1
- package/dist/tools/multi-edit/executor.d.ts +29 -0
- package/dist/tools/multi-edit/executor.d.ts.map +1 -0
- package/dist/tools/multi-edit/executor.js +37 -0
- package/dist/tools/multi-edit/executor.js.map +1 -0
- package/dist/tools/read-file/executor.d.ts +5 -0
- package/dist/tools/read-file/executor.d.ts.map +1 -1
- package/dist/tools/read-file/executor.js +49 -5
- package/dist/tools/read-file/executor.js.map +1 -1
- package/dist/tools/run-shell/executor.d.ts +12 -1
- package/dist/tools/run-shell/executor.d.ts.map +1 -1
- package/dist/tools/run-shell/executor.js +105 -9
- package/dist/tools/run-shell/executor.js.map +1 -1
- package/dist/tools/run-tests/executor.d.ts +28 -0
- package/dist/tools/run-tests/executor.d.ts.map +1 -0
- package/dist/tools/run-tests/executor.js +161 -0
- package/dist/tools/run-tests/executor.js.map +1 -0
- package/dist/tools/run-typecheck/executor.d.ts +25 -0
- package/dist/tools/run-typecheck/executor.d.ts.map +1 -0
- package/dist/tools/run-typecheck/executor.js +83 -0
- package/dist/tools/run-typecheck/executor.js.map +1 -0
- package/dist/tools/search-code/executor.d.ts.map +1 -1
- package/dist/tools/search-code/executor.js +60 -30
- package/dist/tools/search-code/executor.js.map +1 -1
- package/dist/tools/shared.d.ts +26 -0
- package/dist/tools/shared.d.ts.map +1 -1
- package/dist/tools/shared.js +15 -0
- package/dist/tools/shared.js.map +1 -1
- package/dist/tools/todo-read/executor.d.ts +20 -0
- package/dist/tools/todo-read/executor.d.ts.map +1 -0
- package/dist/tools/todo-read/executor.js +26 -0
- package/dist/tools/todo-read/executor.js.map +1 -0
- package/dist/tools/todo-write/executor.d.ts +21 -0
- package/dist/tools/todo-write/executor.d.ts.map +1 -0
- package/dist/tools/todo-write/executor.js +38 -0
- package/dist/tools/todo-write/executor.js.map +1 -0
- package/dist/tools/web-fetch/descriptor.md +198 -0
- package/dist/tools/web-fetch/errors.d.ts +32 -0
- package/dist/tools/web-fetch/errors.d.ts.map +1 -0
- package/dist/tools/web-fetch/errors.js +91 -0
- package/dist/tools/web-fetch/errors.js.map +1 -0
- package/dist/tools/web-fetch/executor.d.ts +10 -0
- package/dist/tools/web-fetch/executor.d.ts.map +1 -0
- package/dist/tools/web-fetch/executor.js +191 -0
- package/dist/tools/web-fetch/executor.js.map +1 -0
- package/dist/tools/web-fetch/index.d.ts +4 -0
- package/dist/tools/web-fetch/index.d.ts.map +1 -0
- package/dist/tools/web-fetch/index.js +3 -0
- package/dist/tools/web-fetch/index.js.map +1 -0
- package/dist/tools/web-fetch/types.d.ts +157 -0
- package/dist/tools/web-fetch/types.d.ts.map +1 -0
- package/dist/tools/web-fetch/types.js +7 -0
- package/dist/tools/web-fetch/types.js.map +1 -0
- package/dist/tools/web-search/descriptor.md +89 -0
- package/dist/tools/web-search/errors.d.ts +33 -0
- package/dist/tools/web-search/errors.d.ts.map +1 -0
- package/dist/tools/web-search/errors.js +45 -0
- package/dist/tools/web-search/errors.js.map +1 -0
- package/dist/tools/web-search/executor.d.ts +10 -0
- package/dist/tools/web-search/executor.d.ts.map +1 -0
- package/dist/tools/web-search/executor.js +185 -0
- package/dist/tools/web-search/executor.js.map +1 -0
- package/dist/tools/web-search/index.d.ts +4 -0
- package/dist/tools/web-search/index.d.ts.map +1 -0
- package/dist/tools/web-search/index.js +3 -0
- package/dist/tools/web-search/index.js.map +1 -0
- package/dist/tools/web-search/types.d.ts +86 -0
- package/dist/tools/web-search/types.d.ts.map +1 -0
- package/dist/tools/web-search/types.js +7 -0
- package/dist/tools/web-search/types.js.map +1 -0
- package/dist/tools/write-file/executor.js +3 -3
- package/dist/tools/write-file/executor.js.map +1 -1
- package/dist/transformers/document-to-text.d.ts +11 -11
- package/dist/transformers/document-to-text.d.ts.map +1 -1
- package/dist/transformers/document-to-text.js +11 -11
- package/dist/transformers/document-to-text.js.map +1 -1
- package/dist/transformers/image-to-text.d.ts +15 -15
- package/dist/transformers/image-to-text.d.ts.map +1 -1
- package/dist/transformers/image-to-text.js +22 -21
- package/dist/transformers/image-to-text.js.map +1 -1
- package/dist/vector/index.d.ts +4 -2
- package/dist/vector/index.d.ts.map +1 -1
- package/dist/vector/index.js +2 -2
- package/dist/vector/index.js.map +1 -1
- package/dist/vector/local-fs-index.d.ts +59 -0
- package/dist/vector/local-fs-index.d.ts.map +1 -0
- package/dist/vector/local-fs-index.js +216 -0
- package/dist/vector/local-fs-index.js.map +1 -0
- package/dist/vector/qdrant.d.ts +11 -52
- package/dist/vector/qdrant.d.ts.map +1 -1
- package/dist/vector/qdrant.js +39 -105
- package/dist/vector/qdrant.js.map +1 -1
- package/package.json +27 -6
- package/dist/vector/local-fs.d.ts +0 -76
- package/dist/vector/local-fs.d.ts.map +0 -1
- package/dist/vector/local-fs.js +0 -153
- package/dist/vector/local-fs.js.map +0 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Search 工具类型(客户端本地复刻,不依赖 `@tachu/web-fetch-server`)。
|
|
3
|
+
*
|
|
4
|
+
* @see packages/web-fetch-server/src/0003b-web-fetch-types.md §2 / §6.2
|
|
5
|
+
*/
|
|
6
|
+
import type { ExtractRequest, ExtractResponse } from "../web-fetch/types";
|
|
7
|
+
/**
|
|
8
|
+
* POST /v1/search 请求体。
|
|
9
|
+
* @see packages/web-fetch-server/src/0003a-web-fetch-api-contract.md §Endpoint 3
|
|
10
|
+
*/
|
|
11
|
+
export interface SearchRequest {
|
|
12
|
+
query: string;
|
|
13
|
+
maxResults?: number;
|
|
14
|
+
language?: string | null;
|
|
15
|
+
region?: string | null;
|
|
16
|
+
timeRange?: "day" | "week" | "month" | "year" | null;
|
|
17
|
+
safeSearch?: "off" | "moderate" | "strict";
|
|
18
|
+
includeDomains?: string[];
|
|
19
|
+
excludeDomains?: string[];
|
|
20
|
+
fetchTopN?: number;
|
|
21
|
+
fetchOptions?: Omit<ExtractRequest, "url" | "traceId">;
|
|
22
|
+
traceId?: string | null;
|
|
23
|
+
}
|
|
24
|
+
export interface SearchResponse {
|
|
25
|
+
query: string;
|
|
26
|
+
provider: string;
|
|
27
|
+
results: SearchResultItem[];
|
|
28
|
+
totalResults: number;
|
|
29
|
+
searchedAtMs: number;
|
|
30
|
+
warnings: string[];
|
|
31
|
+
traceId: string;
|
|
32
|
+
}
|
|
33
|
+
export interface SearchResultItem {
|
|
34
|
+
title: string;
|
|
35
|
+
url: string;
|
|
36
|
+
snippet: string;
|
|
37
|
+
publishedAt?: string | null;
|
|
38
|
+
score?: number | null;
|
|
39
|
+
extract?: Pick<ExtractResponse, "status" | "renderedWith" | "title" | "body" | "wordCount" | "truncated" | "warnings">;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* `web-search` 工具入参(`timeoutMs` 仅客户端使用)。
|
|
43
|
+
* @see packages/web-fetch-server/src/0003b-web-fetch-types.md §6.2
|
|
44
|
+
*/
|
|
45
|
+
export interface WebSearchToolInput {
|
|
46
|
+
query: string;
|
|
47
|
+
maxResults?: number;
|
|
48
|
+
language?: string;
|
|
49
|
+
region?: string;
|
|
50
|
+
timeRange?: "day" | "week" | "month" | "year";
|
|
51
|
+
safeSearch?: "off" | "moderate" | "strict";
|
|
52
|
+
includeDomains?: string[];
|
|
53
|
+
excludeDomains?: string[];
|
|
54
|
+
/** 渲染前 N 条结果为 Markdown;上限 5 */
|
|
55
|
+
fetchTopN?: number;
|
|
56
|
+
/** `fetchTopN > 0` 时透传至服务端 extract 管线 */
|
|
57
|
+
fetchOptions?: Omit<ExtractRequest, "url" | "traceId">;
|
|
58
|
+
timeoutMs?: number;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* `web-search` 工具成功出参(不含 `searchedAtMs` / `traceId` 等追踪字段)。
|
|
62
|
+
* @see packages/web-fetch-server/src/0003b-web-fetch-types.md §6.2
|
|
63
|
+
*/
|
|
64
|
+
export interface WebSearchToolOutput {
|
|
65
|
+
query: string;
|
|
66
|
+
provider: string;
|
|
67
|
+
results: Array<{
|
|
68
|
+
title: string;
|
|
69
|
+
url: string;
|
|
70
|
+
snippet: string;
|
|
71
|
+
publishedAt?: string | null;
|
|
72
|
+
score?: number | null;
|
|
73
|
+
extract?: {
|
|
74
|
+
status: number;
|
|
75
|
+
renderedWith: "static" | "browser";
|
|
76
|
+
title?: string;
|
|
77
|
+
body: string;
|
|
78
|
+
wordCount: number;
|
|
79
|
+
truncated: boolean;
|
|
80
|
+
warnings?: string[];
|
|
81
|
+
};
|
|
82
|
+
}>;
|
|
83
|
+
totalResults: number;
|
|
84
|
+
warnings: string[];
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/web-search/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/tools/web-search/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { mkdir, writeFile } from "node:fs/promises";
|
|
2
2
|
import { dirname } from "node:path";
|
|
3
|
-
import {
|
|
4
|
-
import { assertNotAborted } from "../shared";
|
|
3
|
+
import { resolveAllowedPath } from "../../common/path";
|
|
4
|
+
import { assertNotAborted, resolveSandboxPolicy } from "../shared";
|
|
5
5
|
/**
|
|
6
6
|
* 写入文件 Tool 执行器。
|
|
7
7
|
*/
|
|
8
8
|
export const writeFileExecutor = async (input, context) => {
|
|
9
9
|
assertNotAborted(context.abortSignal);
|
|
10
|
-
const target =
|
|
10
|
+
const target = resolveAllowedPath(input.path, resolveSandboxPolicy(context));
|
|
11
11
|
if (input.createDirs) {
|
|
12
12
|
await mkdir(dirname(target), { recursive: true });
|
|
13
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/tools/write-file/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../../src/tools/write-file/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAanE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAkD,KAAK,EACnF,KAAK,EACL,OAAO,EACP,EAAE;IACF,gBAAgB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,OAAO,GACX,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClG,MAAM,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC;AAC9C,CAAC,CAAC"}
|
|
@@ -5,19 +5,19 @@ import type { InputEnvelope, InputMetadata, InputTransformer, ModelCapabilities
|
|
|
5
5
|
export declare class DocumentToTextTransformer implements InputTransformer {
|
|
6
6
|
readonly modality = "document";
|
|
7
7
|
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
* 判断是否需要文档降级。
|
|
9
|
+
*
|
|
10
|
+
* @param metadata 输入元信息
|
|
11
|
+
* @param modelCapabilities 模型能力
|
|
12
|
+
* @returns true 表示需要转换
|
|
13
|
+
*/
|
|
14
14
|
canHandle(metadata: InputMetadata, modelCapabilities: ModelCapabilities): boolean;
|
|
15
15
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
* 将文档转换为文本信封。
|
|
17
|
+
*
|
|
18
|
+
* @param envelope 输入信封
|
|
19
|
+
* @returns 文本信封
|
|
20
|
+
*/
|
|
21
21
|
transform(envelope: InputEnvelope): Promise<InputEnvelope>;
|
|
22
22
|
}
|
|
23
23
|
//# sourceMappingURL=document-to-text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-to-text.d.ts","sourceRoot":"","sources":["../../src/transformers/document-to-text.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAkBrG;;GAEG;AACH,qBAAa,yBAA0B,YAAW,gBAAgB;IAChE,QAAQ,CAAC,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"file":"document-to-text.d.ts","sourceRoot":"","sources":["../../src/transformers/document-to-text.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAkBrG;;GAEG;AACH,qBAAa,yBAA0B,YAAW,gBAAgB;IAChE,QAAQ,CAAC,QAAQ,cAAc;IAEhC;;;;;;MAME;IACD,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO;IAMlF;;;;;MAKE;IACK,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAkCjE"}
|
|
@@ -16,23 +16,23 @@ const truncateIfNeeded = (text) => {
|
|
|
16
16
|
export class DocumentToTextTransformer {
|
|
17
17
|
modality = "document";
|
|
18
18
|
/**
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
* 判断是否需要文档降级。
|
|
20
|
+
*
|
|
21
|
+
* @param metadata 输入元信息
|
|
22
|
+
* @param modelCapabilities 模型能力
|
|
23
|
+
* @returns true 表示需要转换
|
|
24
|
+
*/
|
|
25
25
|
canHandle(metadata, modelCapabilities) {
|
|
26
26
|
const modality = metadata.modality ?? "";
|
|
27
27
|
const isDocument = modality === "document" || modality === "file";
|
|
28
28
|
return isDocument && !modelCapabilities.supportedModalities.includes("file");
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
* 将文档转换为文本信封。
|
|
32
|
+
*
|
|
33
|
+
* @param envelope 输入信封
|
|
34
|
+
* @returns 文本信封
|
|
35
|
+
*/
|
|
36
36
|
async transform(envelope) {
|
|
37
37
|
const content = envelope.content;
|
|
38
38
|
if (!content.path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document-to-text.js","sourceRoot":"","sources":["../../src/transformers/document-to-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE;IAChD,IAAI,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,GAAG,OAAO,kBAAkB,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC;AACrE,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAC3B,QAAQ,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"document-to-text.js","sourceRoot":"","sources":["../../src/transformers/document-to-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAU,EAAE;IAChD,IAAI,IAAI,CAAC,MAAM,IAAI,cAAc,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IAC9C,OAAO,GAAG,OAAO,kBAAkB,IAAI,CAAC,MAAM,GAAG,cAAc,GAAG,CAAC;AACrE,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,yBAAyB;IAC3B,QAAQ,GAAG,UAAU,CAAC;IAEhC;;;;;;MAME;IACD,SAAS,CAAC,QAAuB,EAAE,iBAAoC;QACrE,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,QAAQ,KAAK,UAAU,IAAI,QAAQ,KAAK,MAAM,CAAC;QAClE,OAAO,UAAU,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/E,CAAC;IAEF;;;;;MAKE;IACD,KAAK,CAAC,SAAS,CAAC,QAAuB;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAA0B,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAClB,MAAM,IAAI,eAAe,CAAC,0BAA0B,EAAE,aAAa,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC;QAEtE,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YACnB,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC;QACzB,CAAC;aAAM,IACL,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,EAC5C,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACpE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,OAAO;YACL,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC;YAC/B,QAAQ,EAAE;gBACR,GAAG,QAAQ,CAAC,QAAQ;gBACpB,QAAQ,EAAE,MAAM;gBAChB,QAAQ,EAAE,YAAY;aACvB;SACF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -13,25 +13,25 @@ export declare class ImageToTextTransformer implements InputTransformer {
|
|
|
13
13
|
private readonly model;
|
|
14
14
|
private readonly promptTemplate;
|
|
15
15
|
/**
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
* 创建图像转换器。
|
|
17
|
+
*
|
|
18
|
+
* @param options 配置项
|
|
19
|
+
*/
|
|
20
20
|
constructor(options: ImageToTextTransformerOptions);
|
|
21
21
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
* 判断是否需要执行降级转换。
|
|
23
|
+
*
|
|
24
|
+
* @param metadata 输入元信息
|
|
25
|
+
* @param modelCapabilities 模型能力
|
|
26
|
+
* @returns true 表示需要转换
|
|
27
|
+
*/
|
|
28
28
|
canHandle(metadata: InputMetadata, modelCapabilities: ModelCapabilities): boolean;
|
|
29
29
|
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
* 将图像输入转换为文本信封。
|
|
31
|
+
*
|
|
32
|
+
* @param envelope 输入信封
|
|
33
|
+
* @returns 转换后的文本信封
|
|
34
|
+
*/
|
|
35
35
|
transform(envelope: InputEnvelope): Promise<InputEnvelope>;
|
|
36
36
|
}
|
|
37
37
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-to-text.d.ts","sourceRoot":"","sources":["../../src/transformers/image-to-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACb,gBAAgB,
|
|
1
|
+
{"version":3,"file":"image-to-text.d.ts","sourceRoot":"","sources":["../../src/transformers/image-to-text.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,aAAa,EACb,aAAa,EACb,gBAAgB,EAEhB,iBAAiB,EACjB,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,UAAU,6BAA6B;IACrC,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAUD;;GAEG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,QAAQ,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAEzC;;;;MAIE;gBACW,OAAO,EAAE,6BAA6B;IAMnD;;;;;;MAME;IACD,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO;IAOlF;;;;;MAKE;IACK,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CA4CjE"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ProviderError } from "@tachu/core";
|
|
1
|
+
import { DEFAULT_ADAPTER_CALL_CONTEXT, ProviderError } from "@tachu/core";
|
|
2
2
|
const DEFAULT_PROMPT = "请描述图片的主要内容、关键信息和可见文本。";
|
|
3
3
|
/**
|
|
4
4
|
* 图像转文本转换器(基于 Provider Vision 能力)。
|
|
@@ -9,32 +9,32 @@ export class ImageToTextTransformer {
|
|
|
9
9
|
model;
|
|
10
10
|
promptTemplate;
|
|
11
11
|
/**
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
* 创建图像转换器。
|
|
13
|
+
*
|
|
14
|
+
* @param options 配置项
|
|
15
|
+
*/
|
|
16
16
|
constructor(options) {
|
|
17
17
|
this.provider = options.provider;
|
|
18
18
|
this.model = options.model ?? "gpt-4o";
|
|
19
19
|
this.promptTemplate = options.promptTemplate ?? DEFAULT_PROMPT;
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
* 判断是否需要执行降级转换。
|
|
23
|
+
*
|
|
24
|
+
* @param metadata 输入元信息
|
|
25
|
+
* @param modelCapabilities 模型能力
|
|
26
|
+
* @returns true 表示需要转换
|
|
27
|
+
*/
|
|
28
28
|
canHandle(metadata, modelCapabilities) {
|
|
29
29
|
return (metadata.modality === "image" &&
|
|
30
30
|
!modelCapabilities.supportedModalities.includes("image"));
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
33
|
+
* 将图像输入转换为文本信封。
|
|
34
|
+
*
|
|
35
|
+
* @param envelope 输入信封
|
|
36
|
+
* @returns 转换后的文本信封
|
|
37
|
+
*/
|
|
38
38
|
async transform(envelope) {
|
|
39
39
|
const content = envelope.content;
|
|
40
40
|
const imageUrl = content.imageUrl ??
|
|
@@ -45,19 +45,20 @@ export class ImageToTextTransformer {
|
|
|
45
45
|
throw new ProviderError("PROVIDER_INVALID_INPUT", "缺少 imageUrl 或 imageBase64");
|
|
46
46
|
}
|
|
47
47
|
try {
|
|
48
|
+
const parts = [
|
|
49
|
+
{ type: "text", text: this.promptTemplate },
|
|
50
|
+
{ type: "image_url", image_url: { url: imageUrl } },
|
|
51
|
+
];
|
|
48
52
|
const request = {
|
|
49
53
|
model: this.model,
|
|
50
54
|
messages: [
|
|
51
55
|
{
|
|
52
56
|
role: "user",
|
|
53
|
-
content:
|
|
54
|
-
{ type: "text", text: this.promptTemplate },
|
|
55
|
-
{ type: "image_url", image_url: { url: imageUrl } },
|
|
56
|
-
],
|
|
57
|
+
content: parts,
|
|
57
58
|
},
|
|
58
59
|
],
|
|
59
60
|
};
|
|
60
|
-
const response = await this.provider.chat(request);
|
|
61
|
+
const response = await this.provider.chat(request, DEFAULT_ADAPTER_CALL_CONTEXT);
|
|
61
62
|
return {
|
|
62
63
|
content: response.content,
|
|
63
64
|
metadata: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"image-to-text.js","sourceRoot":"","sources":["../../src/transformers/image-to-text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"image-to-text.js","sourceRoot":"","sources":["../../src/transformers/image-to-text.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,4BAA4B,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAc1E,MAAM,cAAc,GAAG,uBAAuB,CAAC;AAE/C;;GAEG;AACH,MAAM,OAAO,sBAAsB;IACxB,QAAQ,GAAG,OAAO,CAAC;IAEX,QAAQ,CAAkB;IAC1B,KAAK,CAAS;IACd,cAAc,CAAS;IAEzC;;;;MAIE;IACD,YAAY,OAAsC;QAChD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,QAAQ,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,cAAc,CAAC;IACjE,CAAC;IAEF;;;;;;MAME;IACD,SAAS,CAAC,QAAuB,EAAE,iBAAoC;QACrE,OAAO,CACL,QAAQ,CAAC,QAAQ,KAAK,OAAO;YAC7B,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,CACzD,CAAC;IACJ,CAAC;IAEF;;;;;MAKE;IACD,KAAK,CAAC,SAAS,CAAC,QAAuB;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAuB,CAAC;QACjD,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;YAChB,CAAC,OAAO,CAAC,WAAW;gBAClB,CAAC,CAAC,QAAQ,OAAO,CAAC,QAAQ,IAAI,WAAW,WAAW,OAAO,CAAC,WAAW,EAAE;gBACzE,CAAC,CAAC,SAAS,CAAC,CAAC;QACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,IAAI,aAAa,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,CAAC;QACjF,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAyB;gBAClC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE;gBAC3C,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;aACpD,CAAC;YACF,MAAM,OAAO,GAAgB;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE,KAAK;qBACf;iBACF;aACF,CAAC;YACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,4BAA4B,CAAC,CAAC;YACjF,OAAO;gBACL,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,QAAQ,EAAE;oBACR,GAAG,QAAQ,CAAC,QAAQ;oBACpB,QAAQ,EAAE,MAAM;oBAChB,QAAQ,EAAE,YAAY;iBACvB;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,aAAa,EAAE,CAAC;gBACnC,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,IAAI,aAAa,CAAC,yBAAyB,EAAE,SAAS,EAAE;gBAC5D,KAAK,EAAE,KAAK;gBACZ,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
|
package/dist/vector/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export {
|
|
1
|
+
export { LocalFsVectorIndexAdapter } from "./local-fs-index";
|
|
2
|
+
export type { LocalFsVectorIndexAdapterOptions } from "./local-fs-index";
|
|
3
|
+
export { QdrantVectorIndexAdapter, QdrantVectorStore } from "./qdrant";
|
|
4
|
+
export type { QdrantVectorIndexAdapterOptions } from "./qdrant";
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,YAAY,EAAE,gCAAgC,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACvE,YAAY,EAAE,+BAA+B,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/vector/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export { QdrantVectorStore } from "./qdrant";
|
|
1
|
+
export { LocalFsVectorIndexAdapter } from "./local-fs-index";
|
|
2
|
+
export { QdrantVectorIndexAdapter, QdrantVectorStore } from "./qdrant";
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/dist/vector/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type AdapterCallContext, type VectorHit, type VectorIndexAdapter, type VectorPayloadFilter, type VectorPoint } from "@tachu/core";
|
|
2
|
+
export interface LocalFsVectorIndexAdapterOptions {
|
|
3
|
+
/** Persisted index file. Defaults to `.tachu/vector-index.json` under cwd. */
|
|
4
|
+
filePath?: string;
|
|
5
|
+
/** Debounce window (ms) before flushing buffered writes to disk. Default 500. */
|
|
6
|
+
persistDebounceMs?: number;
|
|
7
|
+
/**
|
|
8
|
+
* Optional soft cap on the number of points retained. When exceeded, the
|
|
9
|
+
* oldest insertions are evicted (FIFO) to prevent unbounded growth.
|
|
10
|
+
*/
|
|
11
|
+
indexLimit?: number;
|
|
12
|
+
}
|
|
13
|
+
interface PersistedPoint {
|
|
14
|
+
id: string;
|
|
15
|
+
vector: number[];
|
|
16
|
+
payload: Record<string, unknown>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Pure-vector local filesystem index ( / / ).
|
|
20
|
+
*
|
|
21
|
+
* - Accepts only precomputed numeric `VectorPoint`s. Text-only `upsert(id, string, …)`
|
|
22
|
+
* shortcuts from pre- hosts are rejected — production projection paths
|
|
23
|
+
* must embed via {@link EmbeddingRuntime} before reaching this adapter.
|
|
24
|
+
* - Persisted as a single JSON snapshot at `.tachu/vector-index.json` with
|
|
25
|
+
* debounced atomic rewrites; safe for the CLI default deployment without
|
|
26
|
+
* pulling in an external vector database.
|
|
27
|
+
* - Implements {@link VectorIndexAdapter}, the only interface the
|
|
28
|
+
* {@link ProjectionWorker} and {@link DefaultSemanticRetrievalFacade}
|
|
29
|
+
* consume in production wiring.
|
|
30
|
+
*/
|
|
31
|
+
export declare class LocalFsVectorIndexAdapter implements VectorIndexAdapter {
|
|
32
|
+
private readonly filePath;
|
|
33
|
+
private readonly lockPath;
|
|
34
|
+
private readonly persistDebounceMs;
|
|
35
|
+
private readonly indexLimit;
|
|
36
|
+
private readonly entries;
|
|
37
|
+
private readonly initPromise;
|
|
38
|
+
private persistTimer;
|
|
39
|
+
private persisting;
|
|
40
|
+
constructor(options?: LocalFsVectorIndexAdapterOptions);
|
|
41
|
+
upsert(points: readonly VectorPoint[], _ctx: AdapterCallContext, signal?: AbortSignal): Promise<void>;
|
|
42
|
+
searchVector(query: number[], topK: number, filters: VectorPayloadFilter, _ctx: AdapterCallContext, signal?: AbortSignal): Promise<VectorHit[]>;
|
|
43
|
+
delete(ids: readonly string[], _ctx: AdapterCallContext, signal?: AbortSignal): Promise<void>;
|
|
44
|
+
/** Test-only inspection helper. Not part of the {@link VectorIndexAdapter} contract. */
|
|
45
|
+
snapshot(): PersistedPoint[];
|
|
46
|
+
/**
|
|
47
|
+
* Flush any pending writes synchronously. Hosts wiring this adapter into a
|
|
48
|
+
* graceful shutdown should `await flush()` before the process exits to avoid
|
|
49
|
+
* losing buffered upserts.
|
|
50
|
+
*/
|
|
51
|
+
flush(): Promise<void>;
|
|
52
|
+
private loadFromDisk;
|
|
53
|
+
private schedulePersist;
|
|
54
|
+
private acquireLock;
|
|
55
|
+
private persistToDisk;
|
|
56
|
+
static fileExists(path: string): boolean;
|
|
57
|
+
}
|
|
58
|
+
export {};
|
|
59
|
+
//# sourceMappingURL=local-fs-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local-fs-index.d.ts","sourceRoot":"","sources":["../../src/vector/local-fs-index.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,gCAAgC;IAChD,8EAA8E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IAChF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;MAGE;IACD,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAmCD;;;;;;;;;;;;GAYG;AACH,qBAAa,yBAA0B,YAAW,kBAAkB;IAClE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,UAAU,CAAoC;gBAE1C,OAAO,GAAE,gCAAqC;IAQpD,MAAM,CACV,MAAM,EAAE,SAAS,WAAW,EAAE,EAC9B,IAAI,EAAE,kBAAkB,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IA2CV,YAAY,CAChB,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,EAC5B,IAAI,EAAE,kBAAkB,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,EAAE,CAAC;IAsBjB,MAAM,CACV,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,IAAI,EAAE,kBAAkB,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC;IAWjB,wFAAwF;IACvF,QAAQ,IAAI,cAAc,EAAE;IAQ7B;;;;MAIE;IACK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YASd,YAAY;IAyB1B,OAAO,CAAC,eAAe;YAOT,WAAW;YAgBX,aAAa;IAsB3B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGzC"}
|