@humanclaw/humanclaw 1.2.8 → 2.0.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.
package/README.md CHANGED
@@ -21,7 +21,7 @@
21
21
 
22
22
  HumanClaw 是一个碳基节点编排框架。系统将真实人类抽象为 Agent(碳基节点),将现实中的任务派发与结果收集抽象为进程的**挂起(Suspend)**与**恢复(Resume)**。
23
23
 
24
- 核心流程:输入自然语言需求 → 选人 → AI 自动规划(拆任务 + 生成话术 + 设 DDL)→ 确认分发 → 收交付物 → AI 聚合审查。
24
+ 核心流程:输入自然语言需求 → 选人/选团队 → AI 自动规划(拆任务 + 生成话术 + 设 DDL)→ 确认分发 → 收交付物 → AI 聚合审查 → 绩效评价。
25
25
 
26
26
  ## 核心架构
27
27
 
@@ -31,19 +31,20 @@ HumanClaw 是一个碳基节点编排框架。系统将真实人类抽象为 Age
31
31
  │ Master │ trace_id │ HumanAgent │
32
32
  │ (老板/PM) │ ◄────────────── │ (碳基算力) │
33
33
  │ │ Resume + Result │ │
34
- └─────┬───────┘ └──────────────┘
35
-
36
- │ AI Review
37
-
38
- ┌─────────────┐
39
- │ LLM 审查 │
40
- │ (Claude/GPT)│
41
- └─────────────┘
34
+ └─────┬───────┘ └──────┬───────┘
35
+
36
+ │ AI Review + Eval Team Context
37
+
38
+ ┌─────────────┐ ┌──────────────┐
39
+ │ LLM 审查 │ │ 团队管理 │
40
+ + 绩效评价 │ │ (关系 & 权重)
41
+ └─────────────┘ └──────────────┘
42
42
  ```
43
43
 
44
44
  - **Master 节点**:输入需求,AI 自动拆解为独立子任务,分发给碳基节点
45
45
  - **Worker 节点 (HumanAgent)**:接收带 `trace_id` 的独立任务,在碳基世界异步执行
46
- - **AI 审查**:所有任务完成后,LLM 自动审查交付质量并生成报告
46
+ - **团队管理**:碳基节点按团队组织,每个团队有独立的关系上下文
47
+ - **AI 审查 + 绩效评价**:所有任务完成后,LLM 审查交付质量并生成报告和绩效评分
47
48
 
48
49
  ## 快速开始
49
50
 
@@ -83,76 +84,98 @@ humanclaw agent list
83
84
 
84
85
  ## API 接口
85
86
 
87
+ ### 碳基节点
88
+
86
89
  | 方法 | 路径 | 说明 |
87
90
  |------|------|------|
88
91
  | `GET` | `/api/v1/nodes/status` | 碳基算力池状态 |
89
92
  | `POST` | `/api/v1/nodes` | 注册碳基节点 |
93
+ | `GET` | `/api/v1/nodes/:id` | 获取节点详情(含团队) |
90
94
  | `PATCH` | `/api/v1/nodes/:id/status` | 更新节点状态 |
91
- | `POST` | `/api/v1/jobs/plan` | AI 智能规划(不分发) |
95
+ | `DELETE` | `/api/v1/nodes/:id` | 删除节点 |
96
+
97
+ ### 任务编排
98
+
99
+ | 方法 | 路径 | 说明 |
100
+ |------|------|------|
101
+ | `POST` | `/api/v1/jobs/plan` | AI 智能规划(支持 `team_id`) |
92
102
  | `POST` | `/api/v1/jobs/create` | 创建并分发任务 |
93
103
  | `GET` | `/api/v1/jobs/active` | 获取看板数据 |
94
104
  | `POST` | `/api/v1/tasks/resume` | 提交交付物,触发恢复 |
95
105
  | `POST` | `/api/v1/tasks/reject` | 打回重做 |
96
106
  | `POST` | `/api/v1/tasks/simulate` | AI 模拟交付(角色扮演) |
97
- | `POST` | `/api/v1/jobs/:id/review` | AI 聚合审查交付质量 |
98
- | `GET` | `/api/v1/config` | 获取 LLM 配置 |
99
- | `PUT` | `/api/v1/config` | 更新 LLM 配置 |
107
+ | `POST` | `/api/v1/jobs/:id/review` | AI 聚合审查(支持评分体系) |
100
108
 
101
- ### AI 规划示例
109
+ ### 团队管理
102
110
 
103
- ```bash
104
- curl -X POST http://localhost:2026/api/v1/jobs/plan \
105
- -H "Content-Type: application/json" \
106
- -d '{ "prompt": "完成首页重构" }'
107
- ```
111
+ | 方法 | 路径 | 说明 |
112
+ |------|------|------|
113
+ | `GET` | `/api/v1/teams` | 团队列表(含成员) |
114
+ | `GET` | `/api/v1/teams/:id` | 团队详情 |
115
+ | `POST` | `/api/v1/teams` | 创建团队 |
116
+ | `DELETE` | `/api/v1/teams/:id` | 删除团队 |
117
+ | `POST` | `/api/v1/teams/:id/members` | 添加成员 |
118
+ | `DELETE` | `/api/v1/teams/:id/members/:agent_id` | 移除成员 |
119
+ | `PUT` | `/api/v1/teams/:id/members/:agent_id` | 更新成员团队关系 |
108
120
 
109
- ### 提交交付物
121
+ ### 绩效评价
110
122
 
111
- ```bash
112
- curl -X POST http://localhost:2026/api/v1/tasks/resume \
113
- -H "Content-Type: application/json" \
114
- -d '{
115
- "trace_id": "TK-9527",
116
- "result_data": { "text": "https://github.com/org/repo/pull/42" }
117
- }'
118
- ```
123
+ | 方法 | 路径 | 说明 |
124
+ |------|------|------|
125
+ | `POST` | `/api/v1/evaluations/generate` | 生成绩效评价 |
126
+ | `GET` | `/api/v1/evaluations/job/:job_id` | 按 Job 查询评价 |
127
+ | `GET` | `/api/v1/evaluations/agent/:agent_id` | 按 Agent 查询评价历史 |
128
+ | `GET` | `/api/v1/evaluations/dashboard` | 绩效看板 |
129
+
130
+ ### LLM 配置
131
+
132
+ | 方法 | 路径 | 说明 |
133
+ |------|------|------|
134
+ | `GET` | `/api/v1/config` | 获取 LLM 配置 |
135
+ | `PUT` | `/api/v1/config` | 更新 LLM 配置 |
119
136
 
120
137
  ## Dashboard 看板
121
138
 
122
139
  Web 看板包含三个核心视图:
123
140
 
124
- - **碳基算力池** — 实时查看碳基节点状态(🟢空闲 🟡忙碌 🔴离线 🟣崩溃),一键添加/删除节点
125
- - **碳基编排大盘** — AI 智能规划 + 任务看板 + 可交互任务卡片(点击直接提交交付/打回)+ 模拟交付 + AI 聚合审查
141
+ - **碳基算力池** — 实时查看碳基节点状态(🟢空闲 🟡忙碌 🔴离线 🟣崩溃),团队管理,一键添加/删除节点
142
+ - **碳基编排大盘** — AI 智能规划(可按团队)+ 任务看板 + 模拟交付 + AI 聚合审查 + 绩效评价
126
143
  - **I/O 交付终端** — 输入 trace_id 和交付载荷,触发系统恢复
127
144
 
128
145
  ### AI 功能
129
146
 
130
- - **智能规划** — 输入需求,AI 自动拆任务、匹配碳基节点、生成布置话术、设 DDL(可调)
147
+ - **智能规划** — 输入需求,AI 自动拆任务、匹配碳基节点、生成布置话术、设 DDL(支持按团队规划,注入团队关系上下文)
131
148
  - **模拟交付** — 点击按钮,AI 以碳基节点视角角色扮演,根据身份、技能、关系生成模拟交付物
132
149
  - **聚合审查** — 全部交付后,AI 审查每个交付物质量(支持 GitHub PR/Commit/Issue URL),生成评分报告
133
- - **可配置 LLM** 支持 Claude / OpenAI,可自定义 Base URL 接入私有模型服务(vLLM / Ollama / Azure)
150
+ - **绩效评价**支持三种评分体系(阿里 3.75 / SABCD / EM),AI 生成按人按任务的绩效评分和评语
151
+ - **可配置 LLM** — 支持 3 种 API 格式(Anthropic Messages / OpenAI Chat Completions / OpenAI Responses),可自定义 Base URL 接入私有模型服务
152
+
153
+ ### 可伸缩编辑器
154
+
155
+ 所有文本编辑区域(任务交付、审查结果、规划话术)均支持拖拽调整大小和全屏展开。
134
156
 
135
157
  ### Demo 场景
136
158
 
137
- Dashboard 内置三个开箱即用的 Demo 场景,一键加载即可体验:
159
+ Dashboard 内置三个开箱即用的 Demo 场景,一键加载碳基节点和团队:
138
160
 
139
- - **三国蜀汉** 🐉 — 你是刘备,底下有关羽、张飞、赵云、诸葛亮等七员大将
140
- - **互联网大厂** 💻 — 你是技术总监,管理前端、后端、算法、产品、设计、测试、运维团队
161
+ - **三国蜀汉** 🐉 — 你是刘备,麾下关羽、张飞、赵云、诸葛亮等七员文臣武将
162
+ - **互联网大厂** 💻 — 你是技术总监,管理前端、后端、算法、产品、设计、测试、运维
141
163
  - **美国政府** 🇺🇸 — 你是特朗普,指挥 Musk、Rubio、Bessent 等核心内阁
142
164
 
143
165
  ## 核心工作流
144
166
 
145
- 1. **镜像封装** — 录入碳基成员信息,构建碳基算力池
146
- 2. **AI 规划** — 输入需求,AI 拆解任务、匹配节点、生成话术和 DDL
167
+ 1. **镜像封装** — 录入碳基成员信息,建立团队,构建碳基算力池
168
+ 2. **AI 规划** — 输入需求,选择团队/节点,AI 拆解任务、生成话术和 DDL
147
169
  3. **确认分发** — 预览规划结果,调整 DDL,确认后一键分发
148
170
  4. **异步恢复** — 碳基节点提交交付物(支持 GitHub URL),系统唤醒 Job
149
171
  5. **AI 审查** — 所有子任务完成后,LLM 审查交付质量并生成报告
172
+ 6. **绩效评价** — 选择评分体系,AI 生成每个碳基节点的绩效评分
150
173
 
151
174
  ## 环境变量
152
175
 
153
176
  | 变量 | 默认值 | 说明 |
154
177
  |------|--------|------|
155
- | `HUMANCLAW_LLM_PROVIDER` | `claude` | LLM 提供商:`claude` `openai` |
178
+ | `HUMANCLAW_LLM_PROVIDER` | `anthropic` | API 格式:`anthropic` / `openai` / `responses` |
156
179
  | `HUMANCLAW_LLM_API_KEY` | - | LLM API Key(使用 AI 功能时必填) |
157
180
  | `HUMANCLAW_LLM_MODEL` | 按 provider | 可选覆盖模型名 |
158
181
  | `HUMANCLAW_LLM_BASE_URL` | 官方地址 | 自定义 API 地址(私有部署) |
@@ -170,14 +193,21 @@ interface HumanAgent {
170
193
  status: AgentStatus; // IDLE | BUSY | OFFLINE | OOM
171
194
  }
172
195
 
173
- interface HumanTask {
174
- trace_id: string; // TK-9527
175
- job_id: string;
176
- assignee_id: string;
177
- todo_description: string;
178
- deadline: string;
179
- status: TaskStatus; // PENDING | DISPATCHED | RESOLVED | OVERDUE
180
- result_data: unknown;
196
+ interface Team {
197
+ team_id: string; // team_xxxxxxxx
198
+ name: string; // "前端组"
199
+ description: string;
200
+ members: TeamMember[]; // 含团队关系
201
+ }
202
+
203
+ interface Evaluation {
204
+ eval_id: string;
205
+ agent_id: string;
206
+ trace_id: string;
207
+ rating_system: 'ali' | 'letter' | 'em';
208
+ rating: string; // "3.75" / "A" / "EM+"
209
+ weight: number;
210
+ comment: string;
181
211
  }
182
212
  ```
183
213
 
@@ -197,10 +227,10 @@ npm run lint # 类型检查
197
227
  - **Runtime**: Node.js 22+, TypeScript (ESM, strict)
198
228
  - **API**: Express v5
199
229
  - **Storage**: SQLite (better-sqlite3, WAL mode)
200
- - **LLM**: Claude / OpenAI(原生 fetch,零依赖)
230
+ - **LLM**: 3 种 API 格式(Anthropic / OpenAI / Responses),原生 fetch,零依赖
201
231
  - **CLI**: Commander.js + @clack/prompts
202
232
  - **Dashboard**: 内联 HTML(无需构建)
203
- - **Testing**: Vitest (40 tests)
233
+ - **Testing**: Vitest (68 tests)
204
234
 
205
235
  ## License
206
236
 
package/README_EN.md CHANGED
@@ -21,7 +21,7 @@
21
21
 
22
22
  HumanClaw is a carbon-based node orchestration framework. The system abstracts real humans as Agents (carbon-based nodes), models task dispatch and result collection as process **Suspend** and **Resume**.
23
23
 
24
- Core flow: natural language input → select people → AI auto-plans (breaks down tasks + generates briefings + sets deadlines) → confirm dispatch → collect deliverables → AI aggregated review.
24
+ Core flow: natural language input → select people/team → AI auto-plans (breaks down tasks + generates briefings + sets deadlines) → confirm dispatch → collect deliverables → AI aggregated review → performance evaluation.
25
25
 
26
26
  ## Core Architecture
27
27
 
@@ -31,19 +31,20 @@ Core flow: natural language input → select people → AI auto-plans (breaks do
31
31
  │ Master │ trace_id │ HumanAgent │
32
32
  │ (Boss/PM) │ ◄────────────── │ (Carbon CPU)│
33
33
  │ │ Resume + Result │ │
34
- └─────┬───────┘ └──────────────┘
35
-
36
- │ AI Review
37
-
38
- ┌─────────────┐
39
- │ LLM Review │
40
- (Claude/GPT)
41
- └─────────────┘
34
+ └─────┬───────┘ └──────┬───────┘
35
+
36
+ │ AI Review + Eval Team Context
37
+
38
+ ┌─────────────┐ ┌──────────────┐
39
+ │ LLM Review │ │ Team │
40
+ + Perf Eval │ Management │
41
+ └─────────────┘ └──────────────┘
42
42
  ```
43
43
 
44
44
  - **Master Node**: Input requirements, AI auto-breaks them into independent sub-tasks, dispatches to carbon-based nodes
45
45
  - **Worker Node (HumanAgent)**: Receives independent tasks with a `trace_id`, executes asynchronously in the carbon-based world
46
- - **AI Review**: After all tasks complete, LLM reviews deliverable quality and generates a report
46
+ - **Team Management**: Carbon-based nodes organized into teams, each team with its own relationship context
47
+ - **AI Review + Performance Evaluation**: After all tasks complete, LLM reviews deliverable quality and generates reports with performance ratings
47
48
 
48
49
  ## Quick Start
49
50
 
@@ -83,76 +84,98 @@ humanclaw agent list
83
84
 
84
85
  ## API Endpoints
85
86
 
87
+ ### Carbon-Based Nodes
88
+
86
89
  | Method | Path | Description |
87
90
  |--------|------|-------------|
88
91
  | `GET` | `/api/v1/nodes/status` | Carbon compute pool status |
89
92
  | `POST` | `/api/v1/nodes` | Register carbon-based node |
93
+ | `GET` | `/api/v1/nodes/:id` | Get node details (with teams) |
90
94
  | `PATCH` | `/api/v1/nodes/:id/status` | Update node status |
91
- | `POST` | `/api/v1/jobs/plan` | AI task planning (does not dispatch) |
95
+ | `DELETE` | `/api/v1/nodes/:id` | Delete node |
96
+
97
+ ### Task Orchestration
98
+
99
+ | Method | Path | Description |
100
+ |--------|------|-------------|
101
+ | `POST` | `/api/v1/jobs/plan` | AI smart planning (supports `team_id`) |
92
102
  | `POST` | `/api/v1/jobs/create` | Create and dispatch job |
93
- | `GET` | `/api/v1/jobs/active` | Get active jobs data |
103
+ | `GET` | `/api/v1/jobs/active` | Get dashboard data |
94
104
  | `POST` | `/api/v1/tasks/resume` | Submit deliverable, trigger resume |
95
- | `POST` | `/api/v1/tasks/reject` | Reject and retry |
105
+ | `POST` | `/api/v1/tasks/reject` | Reject and redo |
96
106
  | `POST` | `/api/v1/tasks/simulate` | AI simulate delivery (role-play) |
97
- | `POST` | `/api/v1/jobs/:id/review` | AI aggregated review of deliverables |
98
- | `GET` | `/api/v1/config` | Get LLM configuration |
99
- | `PUT` | `/api/v1/config` | Update LLM configuration |
107
+ | `POST` | `/api/v1/jobs/:id/review` | AI aggregated review (supports rating system) |
100
108
 
101
- ### AI Planning Example
109
+ ### Team Management
102
110
 
103
- ```bash
104
- curl -X POST http://localhost:2026/api/v1/jobs/plan \
105
- -H "Content-Type: application/json" \
106
- -d '{ "prompt": "Rebuild the homepage" }'
107
- ```
111
+ | Method | Path | Description |
112
+ |--------|------|-------------|
113
+ | `GET` | `/api/v1/teams` | Team list (with members) |
114
+ | `GET` | `/api/v1/teams/:id` | Team details |
115
+ | `POST` | `/api/v1/teams` | Create team |
116
+ | `DELETE` | `/api/v1/teams/:id` | Delete team |
117
+ | `POST` | `/api/v1/teams/:id/members` | Add member |
118
+ | `DELETE` | `/api/v1/teams/:id/members/:agent_id` | Remove member |
119
+ | `PUT` | `/api/v1/teams/:id/members/:agent_id` | Update member team relationship |
108
120
 
109
- ### Submit Deliverable
121
+ ### Performance Evaluation
110
122
 
111
- ```bash
112
- curl -X POST http://localhost:2026/api/v1/tasks/resume \
113
- -H "Content-Type: application/json" \
114
- -d '{
115
- "trace_id": "TK-9527",
116
- "result_data": { "text": "https://github.com/org/repo/pull/42" }
117
- }'
118
- ```
123
+ | Method | Path | Description |
124
+ |--------|------|-------------|
125
+ | `POST` | `/api/v1/evaluations/generate` | Generate performance evaluations |
126
+ | `GET` | `/api/v1/evaluations/job/:job_id` | Query evaluations by Job |
127
+ | `GET` | `/api/v1/evaluations/agent/:agent_id` | Query evaluation history by Agent |
128
+ | `GET` | `/api/v1/evaluations/dashboard` | Performance dashboard |
129
+
130
+ ### LLM Configuration
131
+
132
+ | Method | Path | Description |
133
+ |--------|------|-------------|
134
+ | `GET` | `/api/v1/config` | Get LLM configuration |
135
+ | `PUT` | `/api/v1/config` | Update LLM configuration |
119
136
 
120
137
  ## Dashboard
121
138
 
122
139
  The web dashboard includes three core views:
123
140
 
124
- - **Carbon Compute Pool** — Real-time carbon-based node status (🟢Idle 🟡Busy 🔴Offline 🟣OOM), add/remove nodes
125
- - **Carbon Orchestration Pipeline** — AI planning + task board + interactive task cards (click to submit/reject) + simulate delivery + AI review
141
+ - **Carbon Compute Pool** — Real-time carbon-based node status (🟢Idle 🟡Busy 🔴Offline 🟣OOM), team management, add/remove nodes
142
+ - **Carbon Orchestration Pipeline** — AI smart planning (by team) + task board + simulate delivery + AI aggregated review + performance evaluation
126
143
  - **I/O Resolution Terminal** — Input trace_id and payload to trigger system resume
127
144
 
128
145
  ### AI Features
129
146
 
130
- - **Smart Planning** — Input requirements, AI auto-breaks tasks, matches nodes, generates briefings, sets adjustable deadlines
131
- - **Simulate Delivery** — Click a button, AI role-plays as the worker node based on their identity, skills, and relationship to generate mock deliverables
147
+ - **Smart Planning** — Input requirements, AI auto-breaks tasks, matches nodes, generates briefings, sets deadlines (supports team-based planning with team relationship context injection)
148
+ - **Simulate Delivery** — Click a button, AI role-plays as the worker node based on identity, skills, and relationships to generate mock deliverables
132
149
  - **Aggregated Review** — After all deliveries, AI reviews each deliverable (supports GitHub PR/Commit/Issue URLs), generates quality report
133
- - **Configurable LLM** — Supports Claude / OpenAI, custom Base URL for private deployments (vLLM / Ollama / Azure)
150
+ - **Performance Evaluation** — Three rating systems (Ali 3.75 / SABCD / EM), AI generates per-person per-task performance ratings and comments
151
+ - **Configurable LLM** — Supports 3 API formats (Anthropic Messages / OpenAI Chat Completions / OpenAI Responses), custom Base URL for private model services
152
+
153
+ ### Resizable Editors
154
+
155
+ All text editing areas (task delivery, review results, planning briefings) support drag-to-resize and fullscreen expansion.
134
156
 
135
157
  ### Demo Scenarios
136
158
 
137
- The dashboard includes three built-in demo scenarios for instant hands-on experience:
159
+ The dashboard includes three built-in demo scenarios, one-click to load carbon-based nodes and teams:
138
160
 
139
161
  - **Three Kingdoms (Shu Han)** 🐉 — You are Liu Bei, commanding Guan Yu, Zhang Fei, Zhao Yun, Zhuge Liang and more
140
- - **Tech Company** 💻 — You are the Tech Director, managing frontend, backend, algorithm, product, design, QA, and ops teams
162
+ - **Tech Company** 💻 — You are the Tech Director, managing frontend, backend, algorithm, product, design, QA, and DevOps
141
163
  - **US Government** 🇺🇸 — You are Trump, directing Musk, Rubio, Bessent and the core cabinet
142
164
 
143
165
  ## Core Workflow
144
166
 
145
- 1. **Agent Encapsulation** — Register human members, build the carbon compute pool
146
- 2. **AI Planning** — Input requirements, AI breaks tasks, matches nodes, generates briefings and deadlines
167
+ 1. **Agent Encapsulation** — Register human members, build teams, construct the carbon compute pool
168
+ 2. **AI Planning** — Input requirements, select team/nodes, AI breaks tasks, generates briefings and deadlines
147
169
  3. **Confirm Dispatch** — Preview plan, adjust deadlines, one-click dispatch
148
170
  4. **Async Resume** — Carbon-based nodes submit deliverables (supports GitHub URLs), system wakes up the Job
149
171
  5. **AI Review** — When all sub-tasks complete, LLM reviews deliverable quality and generates a report
172
+ 6. **Performance Evaluation** — Select rating system, AI generates performance ratings for each carbon-based node
150
173
 
151
174
  ## Environment Variables
152
175
 
153
176
  | Variable | Default | Description |
154
177
  |----------|---------|-------------|
155
- | `HUMANCLAW_LLM_PROVIDER` | `claude` | LLM provider: `claude` or `openai` |
178
+ | `HUMANCLAW_LLM_PROVIDER` | `anthropic` | API format: `anthropic` / `openai` / `responses` |
156
179
  | `HUMANCLAW_LLM_API_KEY` | - | LLM API Key (required for AI features) |
157
180
  | `HUMANCLAW_LLM_MODEL` | per provider | Optional model override |
158
181
  | `HUMANCLAW_LLM_BASE_URL` | official | Custom API URL (private deployments) |
@@ -170,14 +193,21 @@ interface HumanAgent {
170
193
  status: AgentStatus; // IDLE | BUSY | OFFLINE | OOM
171
194
  }
172
195
 
173
- interface HumanTask {
174
- trace_id: string; // TK-9527
175
- job_id: string;
176
- assignee_id: string;
177
- todo_description: string;
178
- deadline: string;
179
- status: TaskStatus; // PENDING | DISPATCHED | RESOLVED | OVERDUE
180
- result_data: unknown;
196
+ interface Team {
197
+ team_id: string; // team_xxxxxxxx
198
+ name: string; // "Frontend Team"
199
+ description: string;
200
+ members: TeamMember[]; // with team relationships
201
+ }
202
+
203
+ interface Evaluation {
204
+ eval_id: string;
205
+ agent_id: string;
206
+ trace_id: string;
207
+ rating_system: 'ali' | 'letter' | 'em';
208
+ rating: string; // "3.75" / "A" / "EM+"
209
+ weight: number;
210
+ comment: string;
181
211
  }
182
212
  ```
183
213
 
@@ -197,10 +227,10 @@ npm run lint # Type check
197
227
  - **Runtime**: Node.js 22+, TypeScript (ESM, strict)
198
228
  - **API**: Express v5
199
229
  - **Storage**: SQLite (better-sqlite3, WAL mode)
200
- - **LLM**: Claude / OpenAI (native fetch, zero dependencies)
230
+ - **LLM**: 3 API formats (Anthropic / OpenAI / Responses), native fetch, zero dependencies
201
231
  - **CLI**: Commander.js + @clack/prompts
202
232
  - **Dashboard**: Inline HTML (no build step)
203
- - **Testing**: Vitest (40 tests)
233
+ - **Testing**: Vitest (68 tests)
204
234
 
205
235
  ## License
206
236