@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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tachu/extensions",
3
- "version": "1.0.0-alpha.6",
4
- "description": "Tachu extensions (alpha) — OpenAI/Anthropic/Mock providers, 7 built-in tools, execution backends, MCP adapters (stdio+SSE), vector stores (local/Qdrant), observability emitters, input transformers and common rules.",
3
+ "version": "1.0.0-rc.0",
4
+ "description": "Tachu extensions (release candidate) — OpenAI/Anthropic/Mock providers, 22 built-in tools, execution backends, MCP adapters (stdio+SSE), vector stores (local/Qdrant), observability emitters, input transformers and common rules.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -11,10 +11,25 @@
11
11
  "import": "./dist/index.js",
12
12
  "default": "./dist/index.js"
13
13
  },
14
+ "./providers": {
15
+ "types": "./dist/providers/index.d.ts",
16
+ "import": "./dist/providers/index.js",
17
+ "default": "./dist/providers/index.js"
18
+ },
14
19
  "./providers/gemini": {
15
20
  "types": "./dist/providers/gemini.d.ts",
16
21
  "import": "./dist/providers/gemini.js",
17
22
  "default": "./dist/providers/gemini.js"
23
+ },
24
+ "./memory": {
25
+ "types": "./dist/memory/index.d.ts",
26
+ "import": "./dist/memory/index.js",
27
+ "default": "./dist/memory/index.js"
28
+ },
29
+ "./vector": {
30
+ "types": "./dist/vector/index.d.ts",
31
+ "import": "./dist/vector/index.js",
32
+ "default": "./dist/vector/index.js"
18
33
  }
19
34
  },
20
35
  "files": [
@@ -51,7 +66,7 @@
51
66
  "url": "https://github.com/dangaogit/tachu/issues"
52
67
  },
53
68
  "engines": {
54
- "bun": ">=1.3.12"
69
+ "bun": ">=1.3.14"
55
70
  },
56
71
  "publishConfig": {
57
72
  "access": "public",
@@ -65,7 +80,7 @@
65
80
  "@opentelemetry/sdk-trace-base": "^2.7.0",
66
81
  "@opentelemetry/sdk-trace-node": "^2.7.0",
67
82
  "@qdrant/js-client-rest": "^1.17.0",
68
- "@tachu/core": "1.0.0-alpha.6",
83
+ "@tachu/core": "1.0.0-rc.0",
69
84
  "mammoth": "^1.12.0",
70
85
  "openai": "^6.34.0",
71
86
  "pdf-parse": "^2.4.5"
@@ -1,81 +0,0 @@
1
- import { type AdapterCallContext, type VectorHit, type VectorPayloadFilter, type VectorSearchQuery, type VectorStore, type SparseVector } from "@tachu/core";
2
- interface LocalFsVectorStoreOptions {
3
- filePath?: string;
4
- persistDebounceMs?: number;
5
- indexLimit?: number;
6
- }
7
- /**
8
- * 本地文件持久化 VectorStore(基于 InMemoryVectorStore)。
9
- */
10
- export declare class LocalFsVectorStore implements VectorStore {
11
- private readonly filePath;
12
- private readonly lockPath;
13
- private readonly persistDebounceMs;
14
- private readonly store;
15
- private readonly entries;
16
- private readonly initPromise;
17
- private persistTimer;
18
- private persisting;
19
- /**
20
- * 创建本地向量存储。
21
- *
22
- * @param options 配置项
23
- */
24
- constructor(options?: LocalFsVectorStoreOptions);
25
- /**
26
- * 文本向量化。
27
- *
28
- * @param texts 文本列表
29
- * @returns 向量列表
30
- */
31
- embed(texts: string[]): Promise<number[][]>;
32
- /**
33
- * 写入或更新向量条目。
34
- *
35
- * @param id 条目 ID
36
- * @param vectorOrText 向量或文本
37
- * @param metadata 元数据
38
- */
39
- upsert(id: string, vectorOrText: number[] | string, metadata: Record<string, unknown>): Promise<void>;
40
- /**
41
- * 相似度检索。
42
- *
43
- * @param query 查询请求
44
- * @param ctx 链路上下文
45
- * @param signal 取消信号
46
- * @returns 检索结果
47
- */
48
- search(query: VectorSearchQuery, ctx: AdapterCallContext, signal?: AbortSignal): Promise<VectorHit[]>;
49
- /**
50
- * @inheritdoc
51
- */
52
- hybridSearch(denseVector: number[], sparseVector: SparseVector | null, k: number, filters: VectorPayloadFilter, ctx: AdapterCallContext, signal?: AbortSignal): Promise<VectorHit[]>;
53
- /**
54
- * 删除条目。
55
- *
56
- * @param id 条目 ID
57
- */
58
- delete(id: string): Promise<void>;
59
- /**
60
- * 清空向量库。
61
- */
62
- clear(): Promise<void>;
63
- /**
64
- * 返回当前条目数。
65
- *
66
- * @returns 条目数量
67
- */
68
- size(): number;
69
- /**
70
- * 手动导出快照文件。
71
- *
72
- * @param path 快照路径
73
- */
74
- snapshot(path: string): Promise<void>;
75
- private schedulePersist;
76
- private loadFromDisk;
77
- private acquireLock;
78
- private persistToDisk;
79
- }
80
- export {};
81
- //# sourceMappingURL=local-fs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-fs.d.ts","sourceRoot":"","sources":["../../src/vector/local-fs.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,SAAS,EACd,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AAErB,UAAU,yBAAyB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD;;GAEG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,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,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqC;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAgB;IAC5C,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,UAAU,CAAqB;IAEvC;;;;OAIG;gBACS,OAAO,GAAE,yBAA8B;IAUnD;;;;;OAKG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;IAKjD;;;;;;OAMG;IACG,MAAM,CACV,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,MAAM,EAAE,GAAG,MAAM,EAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;;OAOG;IACG,MAAM,CACV,KAAK,EAAE,iBAAiB,EACxB,GAAG,EAAE,kBAAkB,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,EAAE,CAAC;IAKvB;;OAEG;IACG,YAAY,CAChB,WAAW,EAAE,MAAM,EAAE,EACrB,YAAY,EAAE,YAAY,GAAG,IAAI,EACjC,CAAC,EAAE,MAAM,EACT,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,kBAAkB,EACvB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,EAAE,CAAC;IAKvB;;;;OAIG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOvC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;;OAIG;IACH,IAAI,IAAI,MAAM;IAId;;;;OAIG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO3C,OAAO,CAAC,eAAe;YAST,YAAY;YAYZ,WAAW;YAgBX,aAAa;CAY5B"}
@@ -1,161 +0,0 @@
1
- import { mkdir, open, readFile, rename, rm, writeFile } from "node:fs/promises";
2
- import { dirname } from "node:path";
3
- import { InMemoryVectorStore, } from "@tachu/core";
4
- /**
5
- * 本地文件持久化 VectorStore(基于 InMemoryVectorStore)。
6
- */
7
- export class LocalFsVectorStore {
8
- filePath;
9
- lockPath;
10
- persistDebounceMs;
11
- store;
12
- entries = new Map();
13
- initPromise;
14
- persistTimer;
15
- persisting = Promise.resolve();
16
- /**
17
- * 创建本地向量存储。
18
- *
19
- * @param options 配置项
20
- */
21
- constructor(options = {}) {
22
- this.filePath = options.filePath ?? ".tachu/vectors.json";
23
- this.lockPath = `${this.filePath}.lock`;
24
- this.persistDebounceMs = options.persistDebounceMs ?? 500;
25
- this.store = new InMemoryVectorStore({
26
- ...(options.indexLimit !== undefined ? { indexLimit: options.indexLimit } : {}),
27
- });
28
- this.initPromise = this.loadFromDisk();
29
- }
30
- /**
31
- * 文本向量化。
32
- *
33
- * @param texts 文本列表
34
- * @returns 向量列表
35
- */
36
- async embed(texts) {
37
- await this.initPromise;
38
- return this.store.embed(texts);
39
- }
40
- /**
41
- * 写入或更新向量条目。
42
- *
43
- * @param id 条目 ID
44
- * @param vectorOrText 向量或文本
45
- * @param metadata 元数据
46
- */
47
- async upsert(id, vectorOrText, metadata) {
48
- await this.initPromise;
49
- const vector = typeof vectorOrText === "string" ? (await this.store.embed([vectorOrText]))[0] ?? [] : vectorOrText;
50
- await this.store.upsert(id, vector, metadata);
51
- this.entries.set(id, { id, vector, metadata });
52
- this.schedulePersist();
53
- }
54
- /**
55
- * 相似度检索。
56
- *
57
- * @param query 查询请求
58
- * @param ctx 链路上下文
59
- * @param signal 取消信号
60
- * @returns 检索结果
61
- */
62
- async search(query, ctx, signal) {
63
- await this.initPromise;
64
- return this.store.search(query, ctx, signal);
65
- }
66
- /**
67
- * @inheritdoc
68
- */
69
- async hybridSearch(denseVector, sparseVector, k, filters, ctx, signal) {
70
- await this.initPromise;
71
- return this.store.hybridSearch(denseVector, sparseVector, k, filters, ctx, signal);
72
- }
73
- /**
74
- * 删除条目。
75
- *
76
- * @param id 条目 ID
77
- */
78
- async delete(id) {
79
- await this.initPromise;
80
- await this.store.delete(id);
81
- this.entries.delete(id);
82
- this.schedulePersist();
83
- }
84
- /**
85
- * 清空向量库。
86
- */
87
- async clear() {
88
- await this.initPromise;
89
- await this.store.clear();
90
- this.entries.clear();
91
- this.schedulePersist();
92
- }
93
- /**
94
- * 返回当前条目数。
95
- *
96
- * @returns 条目数量
97
- */
98
- size() {
99
- return this.entries.size;
100
- }
101
- /**
102
- * 手动导出快照文件。
103
- *
104
- * @param path 快照路径
105
- */
106
- async snapshot(path) {
107
- await this.initPromise;
108
- const payload = { entries: [...this.entries.values()] };
109
- await mkdir(dirname(path), { recursive: true });
110
- await writeFile(path, JSON.stringify(payload, null, 2), "utf8");
111
- }
112
- schedulePersist() {
113
- if (this.persistTimer) {
114
- clearTimeout(this.persistTimer);
115
- }
116
- this.persistTimer = setTimeout(() => {
117
- this.persisting = this.persisting.then(() => this.persistToDisk());
118
- }, this.persistDebounceMs);
119
- }
120
- async loadFromDisk() {
121
- const raw = await readFile(this.filePath, "utf8").catch(() => "");
122
- if (!raw) {
123
- return;
124
- }
125
- const payload = JSON.parse(raw);
126
- for (const entry of payload.entries ?? []) {
127
- await this.store.upsert(entry.id, entry.vector, entry.metadata);
128
- this.entries.set(entry.id, entry);
129
- }
130
- }
131
- async acquireLock() {
132
- for (let attempt = 0; attempt < 30; attempt += 1) {
133
- try {
134
- await mkdir(dirname(this.lockPath), { recursive: true });
135
- const handle = await open(this.lockPath, "wx");
136
- return async () => {
137
- await handle.close().catch(() => undefined);
138
- await rm(this.lockPath, { force: true }).catch(() => undefined);
139
- };
140
- }
141
- catch {
142
- await new Promise((resolve) => setTimeout(resolve, 50 * (attempt + 1)));
143
- }
144
- }
145
- throw new Error(`无法获取文件锁: ${this.lockPath}`);
146
- }
147
- async persistToDisk() {
148
- const release = await this.acquireLock();
149
- try {
150
- await mkdir(dirname(this.filePath), { recursive: true });
151
- const tempPath = `${this.filePath}.tmp`;
152
- const payload = { entries: [...this.entries.values()] };
153
- await writeFile(tempPath, JSON.stringify(payload), "utf8");
154
- await rename(tempPath, this.filePath);
155
- }
156
- finally {
157
- await release();
158
- }
159
- }
160
- }
161
- //# sourceMappingURL=local-fs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-fs.js","sourceRoot":"","sources":["../../src/vector/local-fs.ts"],"names":[],"mappings":"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"}