@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.
- package/CHANGELOG.md +25 -236
- package/README.md +53 -998
- package/README_ZH.md +52 -973
- package/dist/backends/file.d.ts +6 -6
- package/dist/backends/file.d.ts.map +1 -1
- package/dist/backends/file.js +12 -12
- package/dist/backends/file.js.map +1 -1
- package/dist/backends/terminal.d.ts +6 -6
- package/dist/backends/terminal.d.ts.map +1 -1
- package/dist/backends/terminal.js +9 -9
- package/dist/backends/terminal.js.map +1 -1
- package/dist/backends/web.d.ts +6 -6
- package/dist/backends/web.d.ts.map +1 -1
- package/dist/backends/web.js +8 -8
- package/dist/backends/web.js.map +1 -1
- package/dist/common/path.d.ts +14 -14
- package/dist/common/path.d.ts.map +1 -1
- package/dist/common/path.js +3 -3
- package/dist/common/process.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/mcp/sse-adapter.d.ts +38 -38
- package/dist/mcp/sse-adapter.d.ts.map +1 -1
- package/dist/mcp/sse-adapter.js +34 -34
- package/dist/mcp/sse-adapter.js.map +1 -1
- package/dist/mcp/stdio-adapter.d.ts +38 -38
- package/dist/mcp/stdio-adapter.d.ts.map +1 -1
- package/dist/mcp/stdio-adapter.js +34 -34
- package/dist/mcp/stdio-adapter.js.map +1 -1
- package/dist/memory/fs-memory-system.d.ts +199 -58
- package/dist/memory/fs-memory-system.d.ts.map +1 -1
- package/dist/memory/fs-memory-system.js +290 -74
- package/dist/memory/fs-memory-system.js.map +1 -1
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +3 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/projection-outbox.d.ts +69 -0
- package/dist/memory/projection-outbox.d.ts.map +1 -0
- package/dist/memory/projection-outbox.js +187 -0
- package/dist/memory/projection-outbox.js.map +1 -0
- package/dist/memory/projection-projector.d.ts +16 -0
- package/dist/memory/projection-projector.d.ts.map +1 -0
- package/dist/memory/projection-projector.js +56 -0
- package/dist/memory/projection-projector.js.map +1 -0
- package/dist/memory/projection-worker.d.ts +28 -0
- package/dist/memory/projection-worker.d.ts.map +1 -0
- package/dist/memory/projection-worker.js +84 -0
- package/dist/memory/projection-worker.js.map +1 -0
- package/dist/observability/jsonl-emitter.d.ts +25 -25
- package/dist/observability/jsonl-emitter.d.ts.map +1 -1
- package/dist/observability/jsonl-emitter.js +25 -25
- package/dist/observability/jsonl-emitter.js.map +1 -1
- package/dist/observability/otel-emitter.d.ts +23 -23
- package/dist/observability/otel-emitter.d.ts.map +1 -1
- package/dist/observability/otel-emitter.js +37 -28
- package/dist/observability/otel-emitter.js.map +1 -1
- package/dist/providers/anthropic.d.ts +39 -39
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +35 -35
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/mock.d.ts +33 -33
- package/dist/providers/mock.d.ts.map +1 -1
- package/dist/providers/mock.js +24 -24
- package/dist/providers/mock.js.map +1 -1
- package/dist/providers/openai.d.ts +51 -50
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +81 -46
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/qwen.d.ts +39 -38
- package/dist/providers/qwen.d.ts.map +1 -1
- package/dist/providers/qwen.js +27 -24
- package/dist/providers/qwen.js.map +1 -1
- package/dist/safety/default-gate.d.ts +35 -35
- package/dist/safety/default-gate.d.ts.map +1 -1
- package/dist/safety/default-gate.js +3 -3
- package/dist/safety/default-gate.js.map +1 -1
- package/dist/tools/_shared/web-client.d.ts +1 -1
- package/dist/tools/_shared/web-client.js +1 -1
- package/dist/tools/apply-patch/executor.js.map +1 -1
- package/dist/tools/fetch-url/executor.d.ts +2 -2
- package/dist/tools/fetch-url/executor.js +7 -7
- package/dist/tools/git-blame/executor.js.map +1 -1
- package/dist/tools/git-branch/executor.js +2 -2
- package/dist/tools/git-branch/executor.js.map +1 -1
- package/dist/tools/git-diff/executor.js.map +1 -1
- package/dist/tools/git-show/executor.js.map +1 -1
- package/dist/tools/git-status/executor.js.map +1 -1
- package/dist/tools/glob/executor.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/list-dir/executor.js +1 -1
- package/dist/tools/list-dir/executor.js.map +1 -1
- package/dist/tools/read-file/executor.js +1 -1
- package/dist/tools/read-file/executor.js.map +1 -1
- package/dist/tools/run-shell/executor.js.map +1 -1
- package/dist/tools/run-tests/executor.js.map +1 -1
- package/dist/tools/run-typecheck/executor.js.map +1 -1
- package/dist/tools/search-code/executor.js +1 -1
- package/dist/tools/search-code/executor.js.map +1 -1
- package/dist/tools/shared.d.ts +9 -9
- package/dist/tools/web-fetch/errors.d.ts +2 -2
- package/dist/tools/web-fetch/errors.js +3 -3
- package/dist/tools/web-fetch/errors.js.map +1 -1
- package/dist/tools/web-fetch/executor.d.ts +2 -2
- package/dist/tools/web-fetch/executor.js +2 -2
- package/dist/tools/web-fetch/types.d.ts +7 -7
- package/dist/tools/web-fetch/types.d.ts.map +1 -1
- package/dist/tools/web-fetch/types.js +1 -1
- package/dist/tools/web-search/errors.d.ts +3 -3
- package/dist/tools/web-search/errors.js +3 -3
- package/dist/tools/web-search/executor.d.ts +2 -2
- package/dist/tools/web-search/executor.js +2 -2
- package/dist/tools/web-search/types.d.ts +4 -4
- package/dist/tools/web-search/types.d.ts.map +1 -1
- package/dist/tools/web-search/types.js +1 -1
- package/dist/transformers/document-to-text.d.ts +11 -11
- package/dist/transformers/document-to-text.d.ts.map +1 -1
- package/dist/transformers/document-to-text.js +11 -11
- package/dist/transformers/document-to-text.js.map +1 -1
- package/dist/transformers/image-to-text.d.ts +15 -15
- package/dist/transformers/image-to-text.d.ts.map +1 -1
- package/dist/transformers/image-to-text.js +15 -15
- package/dist/transformers/image-to-text.js.map +1 -1
- package/dist/vector/index.d.ts +4 -2
- package/dist/vector/index.d.ts.map +1 -1
- package/dist/vector/index.js +2 -2
- package/dist/vector/index.js.map +1 -1
- package/dist/vector/local-fs-index.d.ts +59 -0
- package/dist/vector/local-fs-index.d.ts.map +1 -0
- package/dist/vector/local-fs-index.js +216 -0
- package/dist/vector/local-fs-index.js.map +1 -0
- package/dist/vector/qdrant.d.ts +11 -73
- package/dist/vector/qdrant.d.ts.map +1 -1
- package/dist/vector/qdrant.js +29 -164
- package/dist/vector/qdrant.js.map +1 -1
- package/package.json +19 -4
- package/dist/vector/local-fs.d.ts +0 -81
- package/dist/vector/local-fs.d.ts.map +0 -1
- package/dist/vector/local-fs.js +0 -161
- package/dist/vector/local-fs.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,259 +5,48 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [1.0.0-
|
|
8
|
+
## [1.0.0-rc.0] - 2026-06-01
|
|
9
9
|
|
|
10
10
|
### Added
|
|
11
11
|
|
|
12
12
|
#### `@tachu/core`
|
|
13
13
|
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
-
|
|
18
|
-
-
|
|
14
|
+
- 9-phase execution pipeline with session management, minimum safety, intent analysis, planning, graph validation, sub-task execution, candidate-answer synthesis, result validation, and output normalization.
|
|
15
|
+
- Built-in `direct-answer` and `tool-use` sub-flows, including tool-loop execution, streaming deltas, cancellation propagation, and turn retry bookkeeping.
|
|
16
|
+
- Descriptor Registry for Rules, Skills, Tools, and Agents, including version-aware descriptor lookup and deterministic activation gates.
|
|
17
|
+
- Prompt assembly with token accounting, context budgeting hooks, multimodal resource placeholders, and provider-bound reference materialization.
|
|
18
|
+
- Result Validation contracts: `EvidenceEntry`, `ClaimEntry`, `CandidateAnswer`, `ValidationOutcome`, deterministic validation rules, optional semantic judge adapter, and degrade / handoff / retry outcomes.
|
|
19
|
+
- Turn Policy support for tool include/exclude, skill pin/exclude, explicit skill priority, final-answer skill inheritance, and visualization metadata passthrough.
|
|
20
|
+
- Resource Reference Pool, token-level Resource Demand routing, multimodal memory fidelity for new sessions, and provider image carrier support.
|
|
19
21
|
|
|
20
22
|
#### `@tachu/extensions`
|
|
21
23
|
|
|
22
|
-
-
|
|
24
|
+
- OpenAI, Anthropic, Qwen, Gemini, and Mock provider adapters with streaming, tool calling, configurable base URLs, timeouts, and embedding support where implemented.
|
|
25
|
+
- Built-in tools for file, terminal, search, web, git, task tracking, and typecheck/test execution workflows.
|
|
26
|
+
- MCP stdio and SSE adapters, OpenTelemetry / JSONL emitters, Qdrant and local vector index adapters, and file-backed memory with projection outbox support.
|
|
23
27
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
#### `@tachu/core`
|
|
27
|
-
|
|
28
|
-
- **Tool-use loop** — structured tool results vs final assistant streaming split, parallel tool-approval budgeting with active tool-loop timers, streamed `providerMetadata` merged into persisted assistant tool calls, and streaming correctness fixes.
|
|
29
|
-
- **Prompt assembler** — memory history preserves `MessageContentPart[]` when present; `file` parts render as stable placeholders instead of being stringified blindly.
|
|
30
|
-
|
|
31
|
-
### Housekeeping
|
|
28
|
+
#### `@tachu/host-defaults`
|
|
32
29
|
|
|
33
|
-
-
|
|
34
|
-
|
|
35
|
-
#### Docs
|
|
36
|
-
|
|
37
|
-
- **README / README_ZH / CHANGELOG** — milestone bumped to `1.0.0-alpha.6` with an English-first release note for this cut.
|
|
38
|
-
|
|
39
|
-
## [1.0.0-alpha.5] - 2026-05-11
|
|
40
|
-
|
|
41
|
-
### Added
|
|
42
|
-
|
|
43
|
-
#### `@tachu/core`
|
|
44
|
-
|
|
45
|
-
- **Descriptor governance fields** — `BaseDescriptor` 新增可选 `version` / `displayName` / `deprecated` / `deprecatedMessage`,用于版本治理与迁移提示
|
|
46
|
-
- **Version-aware registry APIs** — `DescriptorRegistry` 新增 `get(kind,name,version)`、`getLatest(kind,name)`、`listVersions(kind,name)`,支持同名多版本共存与精确查询
|
|
47
|
-
- **Timeout policy split** — 新增 `llmWaitFirstTokenMs`、`llmStreamingMs`、`maxToolLoopActiveMs` 三类预算项,并支持 `runtime.timeouts.byPhase` 分阶段覆盖
|
|
48
|
-
- **LLM timeout utility layer** — 新增 `engine/llm-timeouts.ts`,统一 LLM 调用超时解析与信号构造
|
|
49
|
-
|
|
50
|
-
#### `@tachu/extensions`
|
|
51
|
-
|
|
52
|
-
- **`search-code` regex self-healing** — 当正则语法非法时自动降级为 fixed-string 搜索,减少因参数细节导致的整轮失败
|
|
53
|
-
|
|
54
|
-
### Changed
|
|
55
|
-
|
|
56
|
-
#### `@tachu/core`
|
|
57
|
-
|
|
58
|
-
- **DescriptorRegistry storage model** — 从单一 `name -> descriptor` 升级为 `name -> version -> descriptor`;重复冲突判定调整为 `kind + name + version`
|
|
59
|
-
- **Latest selection semantics** — `get(kind,name)` 保持向后兼容但改为 latest 解析(稳定版优先;无稳定版时取最高 pre-release)
|
|
60
|
-
- **Unknown field passthrough contract** — `RegistryLoader` 与 `DescriptorRegistry` 明确保留未知顶层字段,`register -> get` 往返不丢失扩展字段
|
|
61
|
-
- **Deprecation consistency check** — `deprecated === true` 且缺失 `deprecatedMessage` 时在 `registry.register()` 统一抛出 `RegistryError`
|
|
62
|
-
- **Tool-loop budget accounting** — 新增“活跃时长”统计,审批/HITL/交互等待记为阻塞时间并从 tool-loop 预算中扣除
|
|
63
|
-
|
|
64
|
-
#### `@tachu/cli`
|
|
65
|
-
|
|
66
|
-
- **`tachu init` template budget defaults** — 默认预算更新为 12h 级运行兜底,并生成 LLM 超时拆分字段与 phase 覆盖注释模板
|
|
67
|
-
|
|
68
|
-
#### Docs
|
|
69
|
-
|
|
70
|
-
- **ADR contract updates** — `architecture-design.md` 与 `detailed-design.md` 补充 Descriptor 扩展字段契约与版本治理规则
|
|
71
|
-
- **README / README_ZH roadmap** — 当前里程碑更新为 `1.0.0-alpha.5`,新增本版本交付摘要
|
|
72
|
-
|
|
73
|
-
## [1.0.0-alpha.4] - 2026-05-07
|
|
74
|
-
|
|
75
|
-
### Added
|
|
76
|
-
|
|
77
|
-
#### `@tachu/extensions`
|
|
78
|
-
|
|
79
|
-
- **`edit-file` tool** — 精确字符串替换,含唯一性校验、fuzzy 宽容匹配(行首空白差异)、`replaceAll` 批量替换;错误时返回 `matchCount` 辅助 LLM 调整 `oldString`
|
|
80
|
-
- **`multi-edit` tool** — 在同一文件中原子地应用多处字符串替换;任一失败则全部回滚,不写磁盘
|
|
81
|
-
- **`glob` tool** — 基于 `Bun.Glob` 的文件名模式查找,支持 `ignore` 排除、`maxResults` 截断
|
|
82
|
-
- **`todo-write` / `todo-read` tool** — 会话级任务清单,持久化到 `.tachu/sessions/<id>/todos.json`;`merge=true` 按 id 合并,`false` 全量覆盖
|
|
83
|
-
- **`git-status` tool** — `git status --porcelain=v2` 结构化输出,含分支、ahead/behind、staged/unstaged/untracked
|
|
84
|
-
- **`git-diff` tool** — 支持 staged / ref 范围 / 指定文件,结构化 `FileDiff[]` 输出
|
|
85
|
-
- **`git-log` tool** — 支持 limit/since/until/author/path 过滤,结构化 commit 列表
|
|
86
|
-
- **`git-blame` tool** — `--porcelain` 格式逐行 author/commit 映射
|
|
87
|
-
- **`git-show` tool** — 单 commit 元信息 + diff,支持 `maxBytes` 截断
|
|
88
|
-
- **`git-branch` tool** — 本地/远端分支列表,含 upstream/ahead/behind
|
|
89
|
-
- **`run-typecheck` tool** — 自动识别 `typecheck` script 或回退到 `bunx tsc --noEmit`,结构化错误列表(file/line/col/code/severity)
|
|
90
|
-
- **`run-tests` tool** — 自动识别 `bun test` 或 `package.json test` script,结构化通过/失败/跳过数和失败用例详情
|
|
91
|
-
- **`read-file` 升级** — 新增 `offset`/`limit` 分段读取、`withLineNumbers`(默认 true)6 位右对齐行号前缀;新增出参 `totalLines`/`hasMore`
|
|
92
|
-
- **`apply-patch` 升级** — 上下文行宽容匹配(trim + ±3 行偏移容忍),减少 patch 因空白差异导致的 `VALIDATION_PATCH_CONFLICT`
|
|
30
|
+
- Shared host wiring for CLI and embedded hosts: provider inference, capability checks, semantic retrieval facade setup, semantic judge resolution, and memory projection stack helpers.
|
|
93
31
|
|
|
94
32
|
#### `@tachu/cli`
|
|
95
33
|
|
|
96
|
-
-
|
|
97
|
-
-
|
|
98
|
-
- **`tachu approval` 子命令组** — `list` / `revoke` / `clear` / `promote` / `add` / `export` / `import` 管理持久化授权记录
|
|
99
|
-
|
|
100
|
-
#### `@tachu/core`
|
|
101
|
-
|
|
102
|
-
- **`EngineConfig.intent` 可扩展字段** — `additionalComplexPatterns: string[]`(正则源串,编译后与内置 complex 规则取并集)、`fewShotExamples`(追加到 intent system prompt 末尾的 few-shot 示例);业务层按领域注入,core 不内置任何领域知识
|
|
103
|
-
- **`EngineConfig.toolUse` 可扩展字段** — `systemPromptSuffix: string`,追加到 tool-use system prompt 末尾的补充指令(如编码工作流指南),不污染 core
|
|
104
|
-
|
|
105
|
-
### Changed
|
|
34
|
+
- `tachu init`, `tachu run`, `tachu chat`, and approval-management commands.
|
|
35
|
+
- Interactive session persistence, streaming renderer, terminal Markdown rendering, configuration loading, provider setup, and opt-in real-provider end-to-end test path.
|
|
106
36
|
|
|
107
|
-
#### `@tachu/
|
|
108
|
-
|
|
109
|
-
- **`runtime.toolLoop.maxSteps` 默认值** 从 8 改为 25,适应复杂代码编写任务(探索→多文件改→typecheck→fix 循环)
|
|
110
|
-
- **Intent phase — complex 信号拆分** — `STRONG_COMPLEX_MARKERS` 回归仅含真正普遍的信号(URL / 文件路径 / 反引号命令语法 / 实时数据);原硬编码的命令名白名单(npm/bun/yarn 等)和领域词汇(package.json、dev script 等)从 core 撤出,改由 `config.intent.additionalComplexPatterns` 注入
|
|
111
|
-
- **Tool-use system prompt 架构修正** — 撤回 `### Code editing workflow` 硬编码段(该段直接引用了 extensions 层的工具名,违反层间依赖);改由 `config.toolUse.systemPromptSuffix` 在 CLI/business 层注入
|
|
112
|
-
|
|
113
|
-
#### `@tachu/cli`
|
|
114
|
-
|
|
115
|
-
- **`run-shell` 升级** — 默认 env 白名单扩展(含 `NODE_ENV` / `BUN_INSTALL` / `PNPM_HOME`);session 级持久 cwd(同 session 内 cd 生效);内置危险命令黑名单(`rm -rf /`、`| sh` 等);`TACHU_SHELL_ENV_ALLOWLIST` / `TACHU_SHELL_DENY_PATTERNS` 环境变量可配置
|
|
116
|
-
- **工具输出截断提示升级** — `read-file` 截断时给出 `offset/limit` 续读提示;其他工具给出缩小请求范围建议
|
|
117
|
-
- **`tachu.config.ts` 参考配置更新** — 通过 `intent.additionalComplexPatterns` 和 `toolUse.systemPromptSuffix` 注入编码 Agent 专用规则,保持 core 边界清晰
|
|
118
|
-
- **`tachu init` 模板更新** — 生成的 `tachu.config.ts` 含 `intent` / `toolUse` 注释示例,引导用户按领域扩展而非直接修改 core
|
|
119
|
-
|
|
120
|
-
## [1.0.0-alpha.3] - 2026-05-07
|
|
121
|
-
|
|
122
|
-
### Changed
|
|
123
|
-
|
|
124
|
-
#### `@tachu/core`
|
|
125
|
-
|
|
126
|
-
- **Internal system prompts** — intent, tool-use, direct-answer and fallback prompts are now English-first with explicit “mirror the user’s language” guidance; reduces prompt tokens and stabilizes instruction following.
|
|
127
|
-
- **Intent phase** — fast-path for strong simple vs strong complex heuristics (including timeliness / “current time” style queries) to skip redundant LLM classification when safe.
|
|
128
|
-
- **Planning / tool-use** — optional narrowing to `run-shell` for current-time style tasks; `toolLoop.shortTaskRoute` can route short single-tool loops to a `fast-cheap` capability; `safety.shellAutoApprovePatterns` auto-approves matching read-only shell commands (config-driven, validated by schema).
|
|
129
|
-
- **Prompt assembler** — tool listing in the system prompt keeps name + description only (drops full JSON Schema) to shrink every request.
|
|
130
|
-
- **Usage reporting** — propagates provider `cachedPromptTokens` into orchestrator totals and `OutputMetadata.tokenUsage.cached`.
|
|
131
|
-
|
|
132
|
-
#### `@tachu/cli`
|
|
133
|
-
|
|
134
|
-
- **Stream renderer** — shows cached input tokens when present and adjusts the rough cost estimate (cached counted at half weight vs uncached).
|
|
135
|
-
- **`tachu init`** — seeds `shortTaskRoute`, `shellAutoApprovePatterns`, and the `respond-in-user-language` rule file in the generated project template.
|
|
136
|
-
|
|
137
|
-
#### `@tachu/extensions`
|
|
138
|
-
|
|
139
|
-
- **OpenAI / Anthropic adapters** — map provider cache read fields into `ChatUsage.cachedPromptTokens`.
|
|
140
|
-
- **`run-shell` executor** — runs single-string commands that contain shell metacharacters via `/bin/sh -c` so quoting and pipelines work without login-shell profile noise.
|
|
37
|
+
#### `@tachu/web-fetch-server`
|
|
141
38
|
|
|
142
|
-
|
|
39
|
+
- Private optional sidecar for browser-backed `web-fetch` and `web-search` workflows, with Playwright-based rendering and Docker runtime alignment.
|
|
143
40
|
|
|
144
41
|
### Changed
|
|
145
42
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
-
|
|
149
|
-
|
|
150
|
-
## [1.0.0-alpha.1] - 2026-04-21
|
|
151
|
-
|
|
152
|
-
First public alpha of the Tachu Agentic Engine. Ships four workspace packages
|
|
153
|
-
(`@tachu/core`, `@tachu/extensions`, `@tachu/cli`, `@tachu/web-fetch-server`)
|
|
154
|
-
with end-to-end coverage of the descriptor-driven, 9-phase execution pipeline,
|
|
155
|
-
the two built-in sub-flows (`direct-answer` / `tool-use`), MCP integration,
|
|
156
|
-
vector stores and an optional browser-rendering sidecar.
|
|
157
|
-
|
|
158
|
-
### Added
|
|
159
|
-
|
|
160
|
-
#### `@tachu/core`
|
|
161
|
-
|
|
162
|
-
- **9-phase execution pipeline** — input / intent / planning / task / execution /
|
|
163
|
-
validation / output / observation / archive. Per-phase hooks, streaming events
|
|
164
|
-
(`phase-start` / `phase-end` / `delta` / `tool-call` / `artifact` / `error`
|
|
165
|
-
/ `done`) and structured `EngineError` codes for every failure mode.
|
|
166
|
-
- **Two built-in sub-flows** — `direct-answer` handles simple intents with
|
|
167
|
-
streaming LLM replies; `tool-use` runs a full agentic loop (tool selection,
|
|
168
|
-
approval, execution, feedback, termination) that shares the same descriptor
|
|
169
|
-
registry and safety controls.
|
|
170
|
-
- **Descriptor registry** — declarative schema for tools, rules, providers,
|
|
171
|
-
vector stores, transformers, backends, MCP servers and observability
|
|
172
|
-
emitters; `DescriptorRegistry` resolves runtime handlers and powers the
|
|
173
|
-
capability-driven task planner.
|
|
174
|
-
- **Prompt assembler** — deterministic assembly of system rules, retrieval
|
|
175
|
-
context, tool schemas, message history and capability hints, with precise
|
|
176
|
-
token accounting via `tiktoken` and trimming strategies that respect
|
|
177
|
-
provider-reported context windows.
|
|
178
|
-
- **Safety & approval** — per-tool approval policy (`auto` / `require-approval`
|
|
179
|
-
/ `deny`), redaction hooks, cancellation propagation via `AbortSignal`, and
|
|
180
|
-
structured audit events for every tool call.
|
|
181
|
-
- **Observability** — pluggable emitters for OpenTelemetry spans, JSONL event
|
|
182
|
-
logs and console tracing; every phase, tool call and LLM chunk carries a
|
|
183
|
-
trace id.
|
|
184
|
-
- **Structured image contract** — `ChatResponse.images` and
|
|
185
|
-
`EngineOutput.metadata.generatedImages` wired through provider adapters,
|
|
186
|
-
sub-flows and output assembly so that text-to-image capabilities surface in
|
|
187
|
-
the same shape regardless of provider.
|
|
188
|
-
|
|
189
|
-
#### `@tachu/extensions`
|
|
190
|
-
|
|
191
|
-
- **Provider adapters** — `OpenAIProviderAdapter` (chat, streaming, tools,
|
|
192
|
-
vision, embeddings), `AnthropicProviderAdapter` (chat, streaming, tools,
|
|
193
|
-
vision) and `QwenProviderAdapter` (DashScope chat, streaming, tools,
|
|
194
|
-
embeddings, text-to-image via both `multimodal-generation` and async
|
|
195
|
-
`image-synthesis` endpoints).
|
|
196
|
-
- **Nine built-in tools** — `read-file`, `write-file`, `list-dir`,
|
|
197
|
-
`search-code`, `fetch-url`, `web-fetch`, `web-search`, `run-shell`,
|
|
198
|
-
`apply-patch`; each with a descriptor, safety policy
|
|
199
|
-
(`readonly` / `write` / `irreversible`) and unit / integration tests.
|
|
200
|
-
- **MCP integration** — `McpStdioAdapter` and `McpSseAdapter` built on the
|
|
201
|
-
official `@modelcontextprotocol/sdk`; declarative `mcpServers` in
|
|
202
|
-
`tachu.config.ts` auto-discovers remote tools, routes calls and tears down
|
|
203
|
-
connections on shutdown.
|
|
204
|
-
- **Vector stores** — `LocalFsVectorStore` (on-disk JSON, no external deps) and
|
|
205
|
-
`QdrantVectorStore` (via `@qdrant/js-client-rest`); both implement the same
|
|
206
|
-
`VectorStore` interface exposed by `@tachu/core`.
|
|
207
|
-
- **Transformers** — `VisionTransformer` (image captioning through the active
|
|
208
|
-
provider) and `DocumentToTextTransformer` (PDF / DOCX extraction via
|
|
209
|
-
`pdf-parse` and `mammoth`).
|
|
210
|
-
- **Observability emitters** — `OtelEmitter` (OTLP traces), `JsonlEmitter`
|
|
211
|
-
(append-only event log) and `ConsoleEmitter` (human-readable debugging).
|
|
212
|
-
- **Rule library** — four default rules (reasoning hygiene, tool discipline,
|
|
213
|
-
output format, safety) loadable by descriptor id.
|
|
214
|
-
|
|
215
|
-
#### `@tachu/cli`
|
|
216
|
-
|
|
217
|
-
- **`tachu init`** — scaffolds `tachu.config.ts`, `.env.local` template and an
|
|
218
|
-
example skill / rule layout.
|
|
219
|
-
- **`tachu run`** — single-shot execution with streaming progress, approval
|
|
220
|
-
UI for write / irreversible tool calls, `--output text|json|jsonl`,
|
|
221
|
-
`--markdown` / `--no-markdown` controls and a `--save-image <path>` flag
|
|
222
|
-
that materialises `EngineOutput.metadata.generatedImages` to disk
|
|
223
|
-
(base64 `data:` URLs and remote URLs both supported).
|
|
224
|
-
- **`tachu chat`** — interactive REPL with session persistence under
|
|
225
|
-
`.tachu/sessions/`, `--resume` / `--session <id>`, `--history`, `--export`,
|
|
226
|
-
slash commands (`/help`, `/exit`, `/clear`, `/history`, `/draw` …),
|
|
227
|
-
double-Ctrl+C exit semantics and cancellation of in-flight turns.
|
|
228
|
-
- **Terminal Markdown renderer** — final assistant replies rendered via
|
|
229
|
-
`marked` + `marked-terminal` + `cli-highlight`; headings, lists,
|
|
230
|
-
block quotes, links, tables and syntax-highlighted fenced code blocks.
|
|
231
|
-
Automatically disabled under `NO_COLOR`, non-TTY or `--no-color`.
|
|
232
|
-
- **Descriptor scanner** — loads `.tachu/` directory contents (skills, rules,
|
|
233
|
-
tools) into the registry at startup.
|
|
234
|
-
- **Config loader** — resolves `tachu.config.ts` with type safety, environment
|
|
235
|
-
overlay and helpful error messages on missing required fields.
|
|
236
|
-
|
|
237
|
-
#### `@tachu/web-fetch-server`
|
|
238
|
-
|
|
239
|
-
- **Optional HTTP sidecar** for JavaScript-rendered page fetching; consumed by
|
|
240
|
-
the `web-fetch` and `web-search` tools in `@tachu/extensions` via a plain
|
|
241
|
-
REST contract, so the core SDK stays free of browser dependencies.
|
|
242
|
-
- **Dual pipeline** — static pipeline (Mozilla Readability + Turndown over
|
|
243
|
-
`linkedom`) for cheap HTML extraction and a browser pipeline
|
|
244
|
-
(`playwright-core` + `playwright-extra` + stealth plugin) for SPAs.
|
|
245
|
-
- **Browser pool** — bounded concurrency, per-context idle eviction, SSRF
|
|
246
|
-
guard, per-request token auth and rate limiting.
|
|
247
|
-
- **Observability** — structured logging, OTLP metrics / traces and graceful
|
|
248
|
-
shutdown on `SIGINT` / `SIGTERM`.
|
|
249
|
-
|
|
250
|
-
### Docs
|
|
43
|
+
- Workspace packages now publish in lockstep as `1.0.0-rc.0`.
|
|
44
|
+
- Public package publish order is `@tachu/core` → `@tachu/extensions` → `@tachu/host-defaults` → `@tachu/cli`.
|
|
45
|
+
- Release artifact validation checks public package metadata, mirrored package docs, executable bins, built artifacts, private sidecar exclusion, and Web Fetch Docker / Playwright runtime alignment.
|
|
46
|
+
- Package descriptions and install guidance now use release-candidate terminology.
|
|
251
47
|
|
|
252
|
-
|
|
253
|
-
installation, quick start, package layout, provider setup, MCP config,
|
|
254
|
-
CLI reference, configuration schema, benchmarks and roadmap.
|
|
255
|
-
- Architecture Decision Records under `docs/adr/`:
|
|
256
|
-
`architecture-design.md`, `technical-design.md`, `detailed-design.md`,
|
|
257
|
-
and decision records `0001`–`0005` covering the two built-in sub-flows,
|
|
258
|
-
the web fetch server split and the text-to-image routing.
|
|
259
|
-
- Apache License 2.0.
|
|
48
|
+
### Known Limitations
|
|
260
49
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
50
|
+
- Runtime provider fallback after `ProviderError` is not implemented in this release candidate.
|
|
51
|
+
- Semantic judge support is available but not production-complete.
|
|
52
|
+
- The Web Fetch sidecar remains private and is not published to npm.
|