@tachu/extensions 1.0.0-alpha.6 → 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.
Files changed (144) hide show
  1. package/CHANGELOG.md +25 -236
  2. package/README.md +53 -998
  3. package/README_ZH.md +52 -973
  4. package/dist/backends/file.d.ts +6 -6
  5. package/dist/backends/file.d.ts.map +1 -1
  6. package/dist/backends/file.js +12 -12
  7. package/dist/backends/file.js.map +1 -1
  8. package/dist/backends/terminal.d.ts +6 -6
  9. package/dist/backends/terminal.d.ts.map +1 -1
  10. package/dist/backends/terminal.js +9 -9
  11. package/dist/backends/terminal.js.map +1 -1
  12. package/dist/backends/web.d.ts +6 -6
  13. package/dist/backends/web.d.ts.map +1 -1
  14. package/dist/backends/web.js +8 -8
  15. package/dist/backends/web.js.map +1 -1
  16. package/dist/common/path.d.ts +14 -14
  17. package/dist/common/path.d.ts.map +1 -1
  18. package/dist/common/path.js +3 -3
  19. package/dist/common/process.js.map +1 -1
  20. package/dist/index.d.ts +2 -2
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -2
  23. package/dist/index.js.map +1 -1
  24. package/dist/mcp/sse-adapter.d.ts +38 -38
  25. package/dist/mcp/sse-adapter.d.ts.map +1 -1
  26. package/dist/mcp/sse-adapter.js +34 -34
  27. package/dist/mcp/sse-adapter.js.map +1 -1
  28. package/dist/mcp/stdio-adapter.d.ts +38 -38
  29. package/dist/mcp/stdio-adapter.d.ts.map +1 -1
  30. package/dist/mcp/stdio-adapter.js +34 -34
  31. package/dist/mcp/stdio-adapter.js.map +1 -1
  32. package/dist/memory/fs-memory-system.d.ts +199 -58
  33. package/dist/memory/fs-memory-system.d.ts.map +1 -1
  34. package/dist/memory/fs-memory-system.js +290 -74
  35. package/dist/memory/fs-memory-system.js.map +1 -1
  36. package/dist/memory/index.d.ts +3 -0
  37. package/dist/memory/index.d.ts.map +1 -1
  38. package/dist/memory/index.js +3 -0
  39. package/dist/memory/index.js.map +1 -1
  40. package/dist/memory/projection-outbox.d.ts +69 -0
  41. package/dist/memory/projection-outbox.d.ts.map +1 -0
  42. package/dist/memory/projection-outbox.js +187 -0
  43. package/dist/memory/projection-outbox.js.map +1 -0
  44. package/dist/memory/projection-projector.d.ts +16 -0
  45. package/dist/memory/projection-projector.d.ts.map +1 -0
  46. package/dist/memory/projection-projector.js +56 -0
  47. package/dist/memory/projection-projector.js.map +1 -0
  48. package/dist/memory/projection-worker.d.ts +28 -0
  49. package/dist/memory/projection-worker.d.ts.map +1 -0
  50. package/dist/memory/projection-worker.js +84 -0
  51. package/dist/memory/projection-worker.js.map +1 -0
  52. package/dist/observability/jsonl-emitter.d.ts +25 -25
  53. package/dist/observability/jsonl-emitter.d.ts.map +1 -1
  54. package/dist/observability/jsonl-emitter.js +25 -25
  55. package/dist/observability/jsonl-emitter.js.map +1 -1
  56. package/dist/observability/otel-emitter.d.ts +23 -23
  57. package/dist/observability/otel-emitter.d.ts.map +1 -1
  58. package/dist/observability/otel-emitter.js +37 -28
  59. package/dist/observability/otel-emitter.js.map +1 -1
  60. package/dist/providers/anthropic.d.ts +39 -39
  61. package/dist/providers/anthropic.d.ts.map +1 -1
  62. package/dist/providers/anthropic.js +35 -35
  63. package/dist/providers/anthropic.js.map +1 -1
  64. package/dist/providers/mock.d.ts +33 -33
  65. package/dist/providers/mock.d.ts.map +1 -1
  66. package/dist/providers/mock.js +24 -24
  67. package/dist/providers/mock.js.map +1 -1
  68. package/dist/providers/openai.d.ts +51 -50
  69. package/dist/providers/openai.d.ts.map +1 -1
  70. package/dist/providers/openai.js +81 -46
  71. package/dist/providers/openai.js.map +1 -1
  72. package/dist/providers/qwen.d.ts +39 -38
  73. package/dist/providers/qwen.d.ts.map +1 -1
  74. package/dist/providers/qwen.js +27 -24
  75. package/dist/providers/qwen.js.map +1 -1
  76. package/dist/safety/default-gate.d.ts +35 -35
  77. package/dist/safety/default-gate.d.ts.map +1 -1
  78. package/dist/safety/default-gate.js +3 -3
  79. package/dist/safety/default-gate.js.map +1 -1
  80. package/dist/tools/_shared/web-client.d.ts +1 -1
  81. package/dist/tools/_shared/web-client.js +1 -1
  82. package/dist/tools/apply-patch/executor.js.map +1 -1
  83. package/dist/tools/fetch-url/executor.d.ts +2 -2
  84. package/dist/tools/fetch-url/executor.js +7 -7
  85. package/dist/tools/git-blame/executor.js.map +1 -1
  86. package/dist/tools/git-branch/executor.js +2 -2
  87. package/dist/tools/git-branch/executor.js.map +1 -1
  88. package/dist/tools/git-diff/executor.js.map +1 -1
  89. package/dist/tools/git-show/executor.js.map +1 -1
  90. package/dist/tools/git-status/executor.js.map +1 -1
  91. package/dist/tools/glob/executor.js.map +1 -1
  92. package/dist/tools/index.d.ts.map +1 -1
  93. package/dist/tools/index.js +3 -0
  94. package/dist/tools/index.js.map +1 -1
  95. package/dist/tools/list-dir/executor.js +1 -1
  96. package/dist/tools/list-dir/executor.js.map +1 -1
  97. package/dist/tools/read-file/executor.js +1 -1
  98. package/dist/tools/read-file/executor.js.map +1 -1
  99. package/dist/tools/run-shell/executor.js.map +1 -1
  100. package/dist/tools/run-tests/executor.js.map +1 -1
  101. package/dist/tools/run-typecheck/executor.js.map +1 -1
  102. package/dist/tools/search-code/executor.js +1 -1
  103. package/dist/tools/search-code/executor.js.map +1 -1
  104. package/dist/tools/shared.d.ts +9 -9
  105. package/dist/tools/web-fetch/errors.d.ts +2 -2
  106. package/dist/tools/web-fetch/errors.js +3 -3
  107. package/dist/tools/web-fetch/errors.js.map +1 -1
  108. package/dist/tools/web-fetch/executor.d.ts +2 -2
  109. package/dist/tools/web-fetch/executor.js +2 -2
  110. package/dist/tools/web-fetch/types.d.ts +7 -7
  111. package/dist/tools/web-fetch/types.d.ts.map +1 -1
  112. package/dist/tools/web-fetch/types.js +1 -1
  113. package/dist/tools/web-search/errors.d.ts +3 -3
  114. package/dist/tools/web-search/errors.js +3 -3
  115. package/dist/tools/web-search/executor.d.ts +2 -2
  116. package/dist/tools/web-search/executor.js +2 -2
  117. package/dist/tools/web-search/types.d.ts +4 -4
  118. package/dist/tools/web-search/types.d.ts.map +1 -1
  119. package/dist/tools/web-search/types.js +1 -1
  120. package/dist/transformers/document-to-text.d.ts +11 -11
  121. package/dist/transformers/document-to-text.d.ts.map +1 -1
  122. package/dist/transformers/document-to-text.js +11 -11
  123. package/dist/transformers/document-to-text.js.map +1 -1
  124. package/dist/transformers/image-to-text.d.ts +15 -15
  125. package/dist/transformers/image-to-text.d.ts.map +1 -1
  126. package/dist/transformers/image-to-text.js +15 -15
  127. package/dist/transformers/image-to-text.js.map +1 -1
  128. package/dist/vector/index.d.ts +4 -2
  129. package/dist/vector/index.d.ts.map +1 -1
  130. package/dist/vector/index.js +2 -2
  131. package/dist/vector/index.js.map +1 -1
  132. package/dist/vector/local-fs-index.d.ts +59 -0
  133. package/dist/vector/local-fs-index.d.ts.map +1 -0
  134. package/dist/vector/local-fs-index.js +216 -0
  135. package/dist/vector/local-fs-index.js.map +1 -0
  136. package/dist/vector/qdrant.d.ts +11 -73
  137. package/dist/vector/qdrant.d.ts.map +1 -1
  138. package/dist/vector/qdrant.js +29 -164
  139. package/dist/vector/qdrant.js.map +1 -1
  140. package/package.json +19 -4
  141. package/dist/vector/local-fs.d.ts +0 -81
  142. package/dist/vector/local-fs.d.ts.map +0 -1
  143. package/dist/vector/local-fs.js +0 -161
  144. package/dist/vector/local-fs.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Web Fetch 工具与 `/v1/extract` 共享的类型(客户端本地复刻,不依赖 `@tachu/web-fetch-server`)。
3
3
  *
4
- * @see docs/adr/decisions/0003b-web-fetch-types.md
4
+ * @see packages/web-fetch-server/src/0003b-web-fetch-types.md
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=types.js.map
@@ -3,7 +3,7 @@ import type { ErrorResponseBody } from "../web-fetch/types";
3
3
  /**
4
4
  * `web-search` 工具在客户端抛出的错误类型(语义上与 {@link ../web-fetch/errors.WebFetchClientError} 一致)。
5
5
  *
6
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.2 / §4
6
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.2 / §4
7
7
  */
8
8
  export declare class WebSearchClientError extends Error {
9
9
  readonly code: WebFetchClientErrorCode;
@@ -18,14 +18,14 @@ export declare class WebSearchClientError extends Error {
18
18
  * 将 `/v1/search` 的错误响应映射为 {@link WebSearchClientError}。
19
19
  * 对 `PROVIDER_NOT_CONFIGURED`(503)提供面向运维的中文指引。
20
20
  *
21
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.2
21
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.2
22
22
  */
23
23
  export declare function mapSearchServerErrorToClient(httpStatus: number, body: ErrorResponseBody | null, ctx: {
24
24
  endpoint: string;
25
25
  }): WebSearchClientError;
26
26
  /**
27
27
  * 客户端整体超时(`TIMEOUT_WEB_SEARCH`)。
28
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.3
28
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.3
29
29
  */
30
30
  export declare function getSearchTimeoutError(timeoutMs: number): WebSearchClientError;
31
31
  /** 将 {@link WebFetchClientError} 转为本工具统一抛出的错误类型。 */
@@ -2,7 +2,7 @@ import { mapServerErrorToClient, } from "../web-fetch/errors";
2
2
  /**
3
3
  * `web-search` 工具在客户端抛出的错误类型(语义上与 {@link ../web-fetch/errors.WebFetchClientError} 一致)。
4
4
  *
5
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.2 / §4
5
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.2 / §4
6
6
  */
7
7
  export class WebSearchClientError extends Error {
8
8
  code;
@@ -20,7 +20,7 @@ export class WebSearchClientError extends Error {
20
20
  * 将 `/v1/search` 的错误响应映射为 {@link WebSearchClientError}。
21
21
  * 对 `PROVIDER_NOT_CONFIGURED`(503)提供面向运维的中文指引。
22
22
  *
23
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.2
23
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.2
24
24
  */
25
25
  export function mapSearchServerErrorToClient(httpStatus, body, ctx) {
26
26
  const mapped = mapServerErrorToClient(httpStatus, body, ctx);
@@ -33,7 +33,7 @@ export function mapSearchServerErrorToClient(httpStatus, body, ctx) {
33
33
  }
34
34
  /**
35
35
  * 客户端整体超时(`TIMEOUT_WEB_SEARCH`)。
36
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.3
36
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.3
37
37
  */
38
38
  export function getSearchTimeoutError(timeoutMs) {
39
39
  return new WebSearchClientError("TIMEOUT_WEB_SEARCH", "搜索超时。请缩短查询词或减少 fetchTopN 后重试。", { timeoutMs });
@@ -3,8 +3,8 @@ import type { WebSearchToolInput, WebSearchToolOutput } from "./types";
3
3
  /**
4
4
  * 调用 Web Fetch Server `POST /v1/search`。
5
5
  *
6
- * @see docs/adr/decisions/0003a-web-fetch-api-contract.md §Endpoint 3
7
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.2
6
+ * @see packages/web-fetch-server/src/0003a-web-fetch-api-contract.md §Endpoint 3
7
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.2
8
8
  */
9
9
  export declare function executeWebSearch(input: WebSearchToolInput, ctx: ToolExecutionContext): Promise<WebSearchToolOutput>;
10
10
  //# sourceMappingURL=executor.d.ts.map
@@ -136,8 +136,8 @@ function tryParseErrorBody(text) {
136
136
  /**
137
137
  * 调用 Web Fetch Server `POST /v1/search`。
138
138
  *
139
- * @see docs/adr/decisions/0003a-web-fetch-api-contract.md §Endpoint 3
140
- * @see docs/adr/decisions/0003d-web-fetch-errors.md §2.2
139
+ * @see packages/web-fetch-server/src/0003a-web-fetch-api-contract.md §Endpoint 3
140
+ * @see packages/web-fetch-server/src/0003d-web-fetch-errors.md §2.2
141
141
  */
142
142
  export async function executeWebSearch(input, ctx) {
143
143
  assertNotAborted(ctx.abortSignal);
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Web Search 工具类型(客户端本地复刻,不依赖 `@tachu/web-fetch-server`)。
3
3
  *
4
- * @see docs/adr/decisions/0003b-web-fetch-types.md §2 / §6.2
4
+ * @see packages/web-fetch-server/src/0003b-web-fetch-types.md §2 / §6.2
5
5
  */
6
6
  import type { ExtractRequest, ExtractResponse } from "../web-fetch/types";
7
7
  /**
8
8
  * POST /v1/search 请求体。
9
- * @see docs/adr/decisions/0003a-web-fetch-api-contract.md §Endpoint 3
9
+ * @see packages/web-fetch-server/src/0003a-web-fetch-api-contract.md §Endpoint 3
10
10
  */
11
11
  export interface SearchRequest {
12
12
  query: string;
@@ -40,7 +40,7 @@ export interface SearchResultItem {
40
40
  }
41
41
  /**
42
42
  * `web-search` 工具入参(`timeoutMs` 仅客户端使用)。
43
- * @see docs/adr/decisions/0003b-web-fetch-types.md §6.2
43
+ * @see packages/web-fetch-server/src/0003b-web-fetch-types.md §6.2
44
44
  */
45
45
  export interface WebSearchToolInput {
46
46
  query: string;
@@ -59,7 +59,7 @@ export interface WebSearchToolInput {
59
59
  }
60
60
  /**
61
61
  * `web-search` 工具成功出参(不含 `searchedAtMs` / `traceId` 等追踪字段)。
62
- * @see docs/adr/decisions/0003b-web-fetch-types.md §6.2
62
+ * @see packages/web-fetch-server/src/0003b-web-fetch-types.md §6.2
63
63
  */
64
64
  export interface WebSearchToolOutput {
65
65
  query: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/web-search/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/tools/web-search/types.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Web Search 工具类型(客户端本地复刻,不依赖 `@tachu/web-fetch-server`)。
3
3
  *
4
- * @see docs/adr/decisions/0003b-web-fetch-types.md §2 / §6.2
4
+ * @see packages/web-fetch-server/src/0003b-web-fetch-types.md §2 / §6.2
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=types.js.map
@@ -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
- * @param metadata 输入元信息
11
- * @param modelCapabilities 模型能力
12
- * @returns true 表示需要转换
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
- * @param envelope 输入信封
19
- * @returns 文本信封
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;IAE/B;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO;IAMjF;;;;;OAKG;IACG,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CAkCjE"}
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
- * @param metadata 输入元信息
22
- * @param modelCapabilities 模型能力
23
- * @returns true 表示需要转换
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
- * @param envelope 输入信封
34
- * @returns 文本信封
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;IAE/B;;;;;;OAMG;IACH,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;IAED;;;;;OAKG;IACH,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"}
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
- * @param options 配置项
19
- */
16
+ * 创建图像转换器。
17
+ *
18
+ * @param options 配置项
19
+ */
20
20
  constructor(options: ImageToTextTransformerOptions);
21
21
  /**
22
- * 判断是否需要执行降级转换。
23
- *
24
- * @param metadata 输入元信息
25
- * @param modelCapabilities 模型能力
26
- * @returns true 表示需要转换
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
- * @param envelope 输入信封
33
- * @returns 转换后的文本信封
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,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;IAExC;;;;OAIG;gBACS,OAAO,EAAE,6BAA6B;IAMlD;;;;;;OAMG;IACH,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,GAAG,OAAO;IAOjF;;;;;OAKG;IACG,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;CA4CjE"}
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"}
@@ -9,32 +9,32 @@ export class ImageToTextTransformer {
9
9
  model;
10
10
  promptTemplate;
11
11
  /**
12
- * 创建图像转换器。
13
- *
14
- * @param options 配置项
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
- * @param metadata 输入元信息
25
- * @param modelCapabilities 模型能力
26
- * @returns true 表示需要转换
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
- * @param envelope 输入信封
36
- * @returns 转换后的文本信封
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 ??
@@ -1 +1 @@
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;IAExC;;;;OAIG;IACH,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;IAED;;;;;;OAMG;IACH,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;IAED;;;;;OAKG;IACH,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"}
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"}
@@ -1,3 +1,5 @@
1
- export { LocalFsVectorStore } from "./local-fs";
2
- export { QdrantVectorStore } from "./qdrant";
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,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
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"}
@@ -1,3 +1,3 @@
1
- export { LocalFsVectorStore } from "./local-fs";
2
- export { QdrantVectorStore } from "./qdrant";
1
+ export { LocalFsVectorIndexAdapter } from "./local-fs-index";
2
+ export { QdrantVectorIndexAdapter, QdrantVectorStore } from "./qdrant";
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vector/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC"}
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"}