@tachu/extensions 1.0.0-beta.1 → 1.0.0-rc.1

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 (243) hide show
  1. package/CHANGELOG.md +48 -65
  2. package/README.md +83 -708
  3. package/README_ZH.md +82 -696
  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 +27 -11
  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 +31 -7
  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 +10 -8
  15. package/dist/backends/web.js.map +1 -1
  16. package/dist/common/net.d.ts +8 -0
  17. package/dist/common/net.d.ts.map +1 -1
  18. package/dist/common/net.js +39 -24
  19. package/dist/common/net.js.map +1 -1
  20. package/dist/common/path.d.ts +38 -5
  21. package/dist/common/path.d.ts.map +1 -1
  22. package/dist/common/path.js +55 -13
  23. package/dist/common/path.js.map +1 -1
  24. package/dist/common/process.js.map +1 -1
  25. package/dist/index.d.ts +7 -3
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +7 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/mcp/sse-adapter.d.ts +45 -33
  30. package/dist/mcp/sse-adapter.d.ts.map +1 -1
  31. package/dist/mcp/sse-adapter.js +59 -34
  32. package/dist/mcp/sse-adapter.js.map +1 -1
  33. package/dist/mcp/stdio-adapter.d.ts +45 -33
  34. package/dist/mcp/stdio-adapter.d.ts.map +1 -1
  35. package/dist/mcp/stdio-adapter.js +59 -34
  36. package/dist/mcp/stdio-adapter.js.map +1 -1
  37. package/dist/memory/fs-memory-system.d.ts +288 -0
  38. package/dist/memory/fs-memory-system.d.ts.map +1 -0
  39. package/dist/memory/fs-memory-system.js +482 -0
  40. package/dist/memory/fs-memory-system.js.map +1 -0
  41. package/dist/memory/index.d.ts +5 -0
  42. package/dist/memory/index.d.ts.map +1 -0
  43. package/dist/memory/index.js +5 -0
  44. package/dist/memory/index.js.map +1 -0
  45. package/dist/memory/projection-outbox.d.ts +69 -0
  46. package/dist/memory/projection-outbox.d.ts.map +1 -0
  47. package/dist/memory/projection-outbox.js +187 -0
  48. package/dist/memory/projection-outbox.js.map +1 -0
  49. package/dist/memory/projection-projector.d.ts +16 -0
  50. package/dist/memory/projection-projector.d.ts.map +1 -0
  51. package/dist/memory/projection-projector.js +56 -0
  52. package/dist/memory/projection-projector.js.map +1 -0
  53. package/dist/memory/projection-worker.d.ts +28 -0
  54. package/dist/memory/projection-worker.d.ts.map +1 -0
  55. package/dist/memory/projection-worker.js +84 -0
  56. package/dist/memory/projection-worker.js.map +1 -0
  57. package/dist/observability/jsonl-emitter.d.ts +25 -25
  58. package/dist/observability/jsonl-emitter.d.ts.map +1 -1
  59. package/dist/observability/jsonl-emitter.js +25 -25
  60. package/dist/observability/jsonl-emitter.js.map +1 -1
  61. package/dist/observability/otel-emitter.d.ts +23 -23
  62. package/dist/observability/otel-emitter.d.ts.map +1 -1
  63. package/dist/observability/otel-emitter.js +39 -30
  64. package/dist/observability/otel-emitter.js.map +1 -1
  65. package/dist/providers/anthropic.d.ts +51 -32
  66. package/dist/providers/anthropic.d.ts.map +1 -1
  67. package/dist/providers/anthropic.js +293 -58
  68. package/dist/providers/anthropic.js.map +1 -1
  69. package/dist/providers/gemini.d.ts +115 -0
  70. package/dist/providers/gemini.d.ts.map +1 -0
  71. package/dist/providers/gemini.js +901 -0
  72. package/dist/providers/gemini.js.map +1 -0
  73. package/dist/providers/index.d.ts +2 -0
  74. package/dist/providers/index.d.ts.map +1 -1
  75. package/dist/providers/index.js +2 -0
  76. package/dist/providers/index.js.map +1 -1
  77. package/dist/providers/mock.d.ts +67 -24
  78. package/dist/providers/mock.d.ts.map +1 -1
  79. package/dist/providers/mock.js +122 -41
  80. package/dist/providers/mock.js.map +1 -1
  81. package/dist/providers/openai.d.ts +70 -35
  82. package/dist/providers/openai.d.ts.map +1 -1
  83. package/dist/providers/openai.js +330 -50
  84. package/dist/providers/openai.js.map +1 -1
  85. package/dist/providers/qwen.d.ts +146 -0
  86. package/dist/providers/qwen.d.ts.map +1 -0
  87. package/dist/providers/qwen.js +672 -0
  88. package/dist/providers/qwen.js.map +1 -0
  89. package/dist/safety/default-gate.d.ts +112 -0
  90. package/dist/safety/default-gate.d.ts.map +1 -0
  91. package/dist/safety/default-gate.js +188 -0
  92. package/dist/safety/default-gate.js.map +1 -0
  93. package/dist/safety/index.d.ts +2 -0
  94. package/dist/safety/index.d.ts.map +1 -0
  95. package/dist/safety/index.js +2 -0
  96. package/dist/safety/index.js.map +1 -0
  97. package/dist/tools/_shared/web-client.d.ts +18 -0
  98. package/dist/tools/_shared/web-client.d.ts.map +1 -0
  99. package/dist/tools/_shared/web-client.js +46 -0
  100. package/dist/tools/_shared/web-client.js.map +1 -0
  101. package/dist/tools/apply-patch/executor.d.ts.map +1 -1
  102. package/dist/tools/apply-patch/executor.js +54 -4
  103. package/dist/tools/apply-patch/executor.js.map +1 -1
  104. package/dist/tools/edit-file/executor.d.ts +32 -0
  105. package/dist/tools/edit-file/executor.d.ts.map +1 -0
  106. package/dist/tools/edit-file/executor.js +84 -0
  107. package/dist/tools/edit-file/executor.js.map +1 -0
  108. package/dist/tools/fetch-url/descriptor.md +6 -0
  109. package/dist/tools/fetch-url/executor.d.ts +8 -0
  110. package/dist/tools/fetch-url/executor.d.ts.map +1 -1
  111. package/dist/tools/fetch-url/executor.js +83 -2
  112. package/dist/tools/fetch-url/executor.js.map +1 -1
  113. package/dist/tools/git-blame/executor.d.ts +24 -0
  114. package/dist/tools/git-blame/executor.d.ts.map +1 -0
  115. package/dist/tools/git-blame/executor.js +76 -0
  116. package/dist/tools/git-blame/executor.js.map +1 -0
  117. package/dist/tools/git-branch/executor.d.ts +22 -0
  118. package/dist/tools/git-branch/executor.d.ts.map +1 -0
  119. package/dist/tools/git-branch/executor.js +81 -0
  120. package/dist/tools/git-branch/executor.js.map +1 -0
  121. package/dist/tools/git-diff/executor.d.ts +37 -0
  122. package/dist/tools/git-diff/executor.d.ts.map +1 -0
  123. package/dist/tools/git-diff/executor.js +156 -0
  124. package/dist/tools/git-diff/executor.js.map +1 -0
  125. package/dist/tools/git-log/executor.d.ts +31 -0
  126. package/dist/tools/git-log/executor.d.ts.map +1 -0
  127. package/dist/tools/git-log/executor.js +65 -0
  128. package/dist/tools/git-log/executor.js.map +1 -0
  129. package/dist/tools/git-show/executor.d.ts +22 -0
  130. package/dist/tools/git-show/executor.d.ts.map +1 -0
  131. package/dist/tools/git-show/executor.js +74 -0
  132. package/dist/tools/git-show/executor.js.map +1 -0
  133. package/dist/tools/git-status/executor.d.ts +25 -0
  134. package/dist/tools/git-status/executor.d.ts.map +1 -0
  135. package/dist/tools/git-status/executor.js +120 -0
  136. package/dist/tools/git-status/executor.js.map +1 -0
  137. package/dist/tools/glob/executor.d.ts +18 -0
  138. package/dist/tools/glob/executor.d.ts.map +1 -0
  139. package/dist/tools/glob/executor.js +47 -0
  140. package/dist/tools/glob/executor.js.map +1 -0
  141. package/dist/tools/index.d.ts +1 -1
  142. package/dist/tools/index.d.ts.map +1 -1
  143. package/dist/tools/index.js +459 -4
  144. package/dist/tools/index.js.map +1 -1
  145. package/dist/tools/list-dir/executor.d.ts.map +1 -1
  146. package/dist/tools/list-dir/executor.js +5 -3
  147. package/dist/tools/list-dir/executor.js.map +1 -1
  148. package/dist/tools/multi-edit/executor.d.ts +29 -0
  149. package/dist/tools/multi-edit/executor.d.ts.map +1 -0
  150. package/dist/tools/multi-edit/executor.js +37 -0
  151. package/dist/tools/multi-edit/executor.js.map +1 -0
  152. package/dist/tools/read-file/executor.d.ts +5 -0
  153. package/dist/tools/read-file/executor.d.ts.map +1 -1
  154. package/dist/tools/read-file/executor.js +49 -5
  155. package/dist/tools/read-file/executor.js.map +1 -1
  156. package/dist/tools/run-shell/executor.d.ts +12 -1
  157. package/dist/tools/run-shell/executor.d.ts.map +1 -1
  158. package/dist/tools/run-shell/executor.js +105 -9
  159. package/dist/tools/run-shell/executor.js.map +1 -1
  160. package/dist/tools/run-tests/executor.d.ts +28 -0
  161. package/dist/tools/run-tests/executor.d.ts.map +1 -0
  162. package/dist/tools/run-tests/executor.js +161 -0
  163. package/dist/tools/run-tests/executor.js.map +1 -0
  164. package/dist/tools/run-typecheck/executor.d.ts +25 -0
  165. package/dist/tools/run-typecheck/executor.d.ts.map +1 -0
  166. package/dist/tools/run-typecheck/executor.js +83 -0
  167. package/dist/tools/run-typecheck/executor.js.map +1 -0
  168. package/dist/tools/search-code/executor.d.ts.map +1 -1
  169. package/dist/tools/search-code/executor.js +60 -30
  170. package/dist/tools/search-code/executor.js.map +1 -1
  171. package/dist/tools/shared.d.ts +26 -0
  172. package/dist/tools/shared.d.ts.map +1 -1
  173. package/dist/tools/shared.js +15 -0
  174. package/dist/tools/shared.js.map +1 -1
  175. package/dist/tools/todo-read/executor.d.ts +20 -0
  176. package/dist/tools/todo-read/executor.d.ts.map +1 -0
  177. package/dist/tools/todo-read/executor.js +26 -0
  178. package/dist/tools/todo-read/executor.js.map +1 -0
  179. package/dist/tools/todo-write/executor.d.ts +21 -0
  180. package/dist/tools/todo-write/executor.d.ts.map +1 -0
  181. package/dist/tools/todo-write/executor.js +38 -0
  182. package/dist/tools/todo-write/executor.js.map +1 -0
  183. package/dist/tools/web-fetch/descriptor.md +198 -0
  184. package/dist/tools/web-fetch/errors.d.ts +32 -0
  185. package/dist/tools/web-fetch/errors.d.ts.map +1 -0
  186. package/dist/tools/web-fetch/errors.js +91 -0
  187. package/dist/tools/web-fetch/errors.js.map +1 -0
  188. package/dist/tools/web-fetch/executor.d.ts +10 -0
  189. package/dist/tools/web-fetch/executor.d.ts.map +1 -0
  190. package/dist/tools/web-fetch/executor.js +191 -0
  191. package/dist/tools/web-fetch/executor.js.map +1 -0
  192. package/dist/tools/web-fetch/index.d.ts +4 -0
  193. package/dist/tools/web-fetch/index.d.ts.map +1 -0
  194. package/dist/tools/web-fetch/index.js +3 -0
  195. package/dist/tools/web-fetch/index.js.map +1 -0
  196. package/dist/tools/web-fetch/types.d.ts +157 -0
  197. package/dist/tools/web-fetch/types.d.ts.map +1 -0
  198. package/dist/tools/web-fetch/types.js +7 -0
  199. package/dist/tools/web-fetch/types.js.map +1 -0
  200. package/dist/tools/web-search/descriptor.md +89 -0
  201. package/dist/tools/web-search/errors.d.ts +33 -0
  202. package/dist/tools/web-search/errors.d.ts.map +1 -0
  203. package/dist/tools/web-search/errors.js +45 -0
  204. package/dist/tools/web-search/errors.js.map +1 -0
  205. package/dist/tools/web-search/executor.d.ts +10 -0
  206. package/dist/tools/web-search/executor.d.ts.map +1 -0
  207. package/dist/tools/web-search/executor.js +185 -0
  208. package/dist/tools/web-search/executor.js.map +1 -0
  209. package/dist/tools/web-search/index.d.ts +4 -0
  210. package/dist/tools/web-search/index.d.ts.map +1 -0
  211. package/dist/tools/web-search/index.js +3 -0
  212. package/dist/tools/web-search/index.js.map +1 -0
  213. package/dist/tools/web-search/types.d.ts +86 -0
  214. package/dist/tools/web-search/types.d.ts.map +1 -0
  215. package/dist/tools/web-search/types.js +7 -0
  216. package/dist/tools/web-search/types.js.map +1 -0
  217. package/dist/tools/write-file/executor.js +3 -3
  218. package/dist/tools/write-file/executor.js.map +1 -1
  219. package/dist/transformers/document-to-text.d.ts +11 -11
  220. package/dist/transformers/document-to-text.d.ts.map +1 -1
  221. package/dist/transformers/document-to-text.js +11 -11
  222. package/dist/transformers/document-to-text.js.map +1 -1
  223. package/dist/transformers/image-to-text.d.ts +15 -15
  224. package/dist/transformers/image-to-text.d.ts.map +1 -1
  225. package/dist/transformers/image-to-text.js +22 -21
  226. package/dist/transformers/image-to-text.js.map +1 -1
  227. package/dist/vector/index.d.ts +4 -2
  228. package/dist/vector/index.d.ts.map +1 -1
  229. package/dist/vector/index.js +2 -2
  230. package/dist/vector/index.js.map +1 -1
  231. package/dist/vector/local-fs-index.d.ts +59 -0
  232. package/dist/vector/local-fs-index.d.ts.map +1 -0
  233. package/dist/vector/local-fs-index.js +216 -0
  234. package/dist/vector/local-fs-index.js.map +1 -0
  235. package/dist/vector/qdrant.d.ts +11 -52
  236. package/dist/vector/qdrant.d.ts.map +1 -1
  237. package/dist/vector/qdrant.js +39 -105
  238. package/dist/vector/qdrant.js.map +1 -1
  239. package/package.json +27 -6
  240. package/dist/vector/local-fs.d.ts +0 -76
  241. package/dist/vector/local-fs.d.ts.map +0 -1
  242. package/dist/vector/local-fs.js +0 -153
  243. 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,7 @@
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
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -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 { resolveWorkspacePath } from "../../common/path";
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 = resolveWorkspacePath(context.workspaceRoot, input.path);
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,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAa7C;;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,oBAAoB,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACvE,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"}
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
- * @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,EAChB,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;CA2CjE"}
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
- * @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 ??
@@ -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":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAc5C,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,OAAO,GAAG;gBACd,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE;oBACR;wBACE,IAAI,EAAE,MAAM;wBACZ,OAAO,EAAE;4BACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE;4BAC3C,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;yBACpD;qBACF;iBACF;aACwB,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,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"}