golembot 0.1.0 → 0.2.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 (59) hide show
  1. package/README.md +73 -96
  2. package/README.zh-CN.md +168 -0
  3. package/dist/channels/wecom.js +1 -1
  4. package/dist/channels/wecom.js.map +1 -1
  5. package/dist/cli-utils.d.ts +6 -0
  6. package/dist/cli-utils.d.ts.map +1 -0
  7. package/dist/cli-utils.js +34 -0
  8. package/dist/cli-utils.js.map +1 -0
  9. package/dist/cli.js +112 -11
  10. package/dist/cli.js.map +1 -1
  11. package/dist/doctor.d.ts +2 -0
  12. package/dist/doctor.d.ts.map +1 -0
  13. package/dist/doctor.js +112 -0
  14. package/dist/doctor.js.map +1 -0
  15. package/dist/engine.d.ts +10 -33
  16. package/dist/engine.d.ts.map +1 -1
  17. package/dist/engine.js +15 -738
  18. package/dist/engine.js.map +1 -1
  19. package/dist/engines/claude-code.d.ts +10 -0
  20. package/dist/engines/claude-code.d.ts.map +1 -0
  21. package/dist/engines/claude-code.js +241 -0
  22. package/dist/engines/claude-code.js.map +1 -0
  23. package/dist/engines/codex.d.ts +27 -0
  24. package/dist/engines/codex.d.ts.map +1 -0
  25. package/dist/engines/codex.js +219 -0
  26. package/dist/engines/codex.js.map +1 -0
  27. package/dist/engines/cursor.d.ts +7 -0
  28. package/dist/engines/cursor.d.ts.map +1 -0
  29. package/dist/engines/cursor.js +240 -0
  30. package/dist/engines/cursor.js.map +1 -0
  31. package/dist/engines/opencode.d.ts +20 -0
  32. package/dist/engines/opencode.d.ts.map +1 -0
  33. package/dist/engines/opencode.js +260 -0
  34. package/dist/engines/opencode.js.map +1 -0
  35. package/dist/engines/shared.d.ts +3 -0
  36. package/dist/engines/shared.d.ts.map +1 -0
  37. package/dist/engines/shared.js +15 -0
  38. package/dist/engines/shared.js.map +1 -0
  39. package/dist/gateway.d.ts +1 -0
  40. package/dist/gateway.d.ts.map +1 -1
  41. package/dist/gateway.js +43 -4
  42. package/dist/gateway.js.map +1 -1
  43. package/dist/index.d.ts +7 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +95 -16
  46. package/dist/index.js.map +1 -1
  47. package/dist/server.d.ts +7 -2
  48. package/dist/server.d.ts.map +1 -1
  49. package/dist/server.js +15 -0
  50. package/dist/server.js.map +1 -1
  51. package/dist/session.d.ts +10 -0
  52. package/dist/session.d.ts.map +1 -1
  53. package/dist/session.js +36 -3
  54. package/dist/session.js.map +1 -1
  55. package/dist/workspace.d.ts +10 -0
  56. package/dist/workspace.d.ts.map +1 -1
  57. package/dist/workspace.js +15 -0
  58. package/dist/workspace.js.map +1 -1
  59. package/package.json +6 -1
package/README.md CHANGED
@@ -1,46 +1,73 @@
1
- # GolemBot — Local-First AI Assistant Platform
1
+ [English](README.md) | [中文](README.zh-CN.md)
2
2
 
3
- > **Coding Agent = the soul, GolemBot = the body of clay.**
4
- >
5
- > Use the Coding Agents you already have (Cursor / Claude Code / OpenCode) as the brain — so they can do more than just chat, they can actually get things done.
3
+ <p align="center">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/logo-golem-light.svg">
6
+ <img src="https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/logo-golem-dark.svg" alt="GolemBot" width="560">
7
+ </picture>
8
+ </p>
6
9
 
7
- GolemBot is a TypeScript library + CLI that wraps Coding Agent CLIs into a unified AI assistant engine. One command spins up an intelligent assistant connected to Feishu, DingTalk, or WeCom — running locally, fully transparent, and engine-swappable.
10
+ <p align="center">
11
+ <a href="https://github.com/0xranx/golembot/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/0xranx/golembot/ci.yml?branch=main&style=for-the-badge" alt="CI"></a>
12
+ <a href="https://www.npmjs.com/package/golembot"><img src="https://img.shields.io/npm/v/golembot.svg?style=for-the-badge" alt="npm version"></a>
13
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge" alt="MIT License"></a>
14
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg?style=for-the-badge" alt="Node.js"></a>
15
+ </p>
8
16
 
9
- ## Features
17
+ <p align="center"><strong>Your Coding Agent is trapped in a terminal. GolemBot sets it free.</strong></p>
10
18
 
11
- - **Three Engines** — Cursor / Claude Code / OpenCode, switch with a single config line
12
- - **Built-in IM Channels** — Native adapters for Feishu, DingTalk, and WeCom, no code required
13
- - **Library First** — `createAssistant()` API embeds into any Node.js project
14
- - **Directory = Assistant** — `ls` the directory to see what the assistant knows, what it can do, and what it has done
15
- - **Skill = Capability** — Drop Markdown + scripts into the `skills/` directory, and the assistant gains new abilities automatically
16
- - **Multi-User Isolation** — Routes by sessionKey, each user gets an independent session
17
- - **HTTP Service** — Built-in SSE streaming API with Bearer token auth
18
- - **Docker Deployment** — One-click deploy to the cloud
19
+ ---
19
20
 
20
- ## Quick Start
21
+ Cursor, Claude Code, OpenCode, Codex — these Coding Agents can already write code, run scripts, analyze data, and reason through complex tasks. But they're stuck in an IDE or a terminal window.
22
+
23
+ **GolemBot gives them a body.** One command connects your Coding Agent to Feishu, DingTalk, WeCom, or any HTTP client. Or embed it into your own product with 5 lines of code. No AI framework, no prompt engineering — the agent you already have *is* the brain.
24
+
25
+ ## Run Your Coding Agent Everywhere
26
+
27
+ ### On IM — your team's 24/7 AI teammate
21
28
 
22
29
  ```bash
23
- # Install
24
- npm install -g golembot
30
+ golembot init -e claude-code -n my-bot
31
+ golembot gateway # connects to Feishu / DingTalk / WeCom
32
+ ```
33
+
34
+ Your colleagues @ the bot in group chat. It can write code, analyze files, answer questions — because behind it is a real Coding Agent, not a thin API wrapper.
25
35
 
26
- # Guided setup (recommended)
27
- mkdir my-assistant && cd my-assistant
28
- golembot onboard
36
+ ### In your product — full agent power, 5 lines of code
29
37
 
30
- # Or initialize manually
31
- golembot init
38
+ ```typescript
39
+ import { createAssistant } from 'golembot';
40
+ const bot = createAssistant({ dir: './my-agent' });
32
41
 
33
- # Start the gateway (IM channels + HTTP service)
34
- golembot gateway
42
+ for await (const event of bot.chat('Analyze last month sales data')) {
43
+ if (event.type === 'text') process.stdout.write(event.content);
44
+ }
35
45
  ```
36
46
 
37
- Try it in 30 seconds:
47
+ Embed into Slack bots, internal tools, SaaS products, customer support — anything that speaks Node.js.
48
+
49
+ ## Why GolemBot, not another AI framework?
50
+
51
+ | | GolemBot | Traditional AI Frameworks |
52
+ |---|---|---|
53
+ | **AI brain** | Cursor / Claude Code / OpenCode / Codex — battle-tested, full coding ability | You wire up LLM APIs + tools from scratch |
54
+ | **Setup** | `golembot init` → done | Chains, RAG, vector DB, prompt tuning... |
55
+ | **Auto-upgrade** | Agent gets smarter? Your assistant gets smarter. Zero code changes. | You maintain everything yourself |
56
+ | **Transparency** | `ls` the directory = see what the assistant knows and does | Black box pipelines |
57
+ | **Engine lock-in** | Change one line in config to swap engines | Rewrite everything |
58
+
59
+ ## Quick Start
38
60
 
39
61
  ```bash
62
+ npm install -g golembot
63
+
40
64
  mkdir my-bot && cd my-bot
65
+ golembot onboard # guided setup (recommended)
66
+
67
+ # Or manually:
41
68
  golembot init -e claude-code -n my-bot
42
- golembot run
43
- # > Write a Python script to calculate file sizes in the current directory
69
+ golembot run # REPL conversation
70
+ golembot gateway # start IM + HTTP service
44
71
  ```
45
72
 
46
73
  ## Architecture
@@ -57,73 +84,29 @@ Feishu / DingTalk / WeCom / HTTP API
57
84
 
58
85
  createAssistant()
59
86
 
60
- ┌───────┼───────┐
61
- ▼ ▼ ▼
62
- Cursor Claude OpenCode
87
+ ┌───────┼───────┬───────┐
88
+ ▼ ▼ ▼
89
+ Cursor Claude OpenCode Codex
63
90
  Code
64
91
  ```
65
92
 
66
- Core design: The Gateway is a long-running service that reuses the `createAssistant()` library API internally, with an IM channel adapter layer on top.
67
-
68
93
  ## Engine Comparison
69
94
 
70
- | | Cursor | Claude Code | OpenCode |
71
- |---|---|---|---|
72
- | Spawn Method | child_process.spawn | child_process.spawn | child_process.spawn |
73
- | Skill Injection | `.cursor/skills/` | `.claude/skills/` + CLAUDE.md | `.opencode/skills/` + opencode.json |
74
- | Session Resume | `--resume` | `--resume` | `--session` |
75
- | API Key | CURSOR_API_KEY | ANTHROPIC_API_KEY | Depends on Provider |
76
-
77
- The exposed `StreamEvent` interface is identical across engines — switching engines requires zero changes to your application code.
78
-
79
- ## Usage
95
+ | | Cursor | Claude Code | OpenCode | Codex |
96
+ |---|---|---|---|---|
97
+ | Skill Injection | `.cursor/skills/` | `.claude/skills/` + CLAUDE.md | `.opencode/skills/` + opencode.json | `AGENTS.md` at workspace root |
98
+ | Session Resume | `--resume` | `--resume` | `--session` | `exec resume <thread_id>` |
99
+ | API Key | CURSOR_API_KEY | ANTHROPIC_API_KEY | Depends on Provider | OPENAI_API_KEY or ChatGPT OAuth |
80
100
 
81
- ### Option 1: CLI (fastest way to get started)
82
-
83
- ```bash
84
- golembot init # Initialize an assistant
85
- golembot run # REPL conversation
86
- golembot gateway # Start IM + HTTP service
87
- golembot onboard # Guided setup
88
- ```
89
-
90
- ### Option 2: Library Import
91
-
92
- ```typescript
93
- import { createAssistant } from 'golembot';
94
-
95
- const assistant = createAssistant({ dir: './my-agent' });
96
-
97
- for await (const event of assistant.chat('Analyze the competitor data')) {
98
- if (event.type === 'text') process.stdout.write(event.content);
99
- }
100
- ```
101
-
102
- ### Option 3: Embed Anywhere
103
-
104
- ```typescript
105
- import { createAssistant } from 'golembot';
106
- const bot = createAssistant({ dir: './slack-bot' });
107
-
108
- slackApp.message(async ({ message, say }) => {
109
- let reply = '';
110
- for await (const event of bot.chat(message.text, {
111
- sessionKey: `slack:${message.user}`,
112
- })) {
113
- if (event.type === 'text') reply += event.content;
114
- }
115
- await say(reply);
116
- });
117
- ```
101
+ The `StreamEvent` interface is identical across all engines — switching requires zero code changes.
118
102
 
119
103
  ## Configuration
120
104
 
121
- `golem.yaml` — the single config file for an assistant:
105
+ `golem.yaml` — the single config file:
122
106
 
123
107
  ```yaml
124
108
  name: my-assistant
125
109
  engine: claude-code
126
- model: openrouter/anthropic/claude-sonnet-4
127
110
 
128
111
  channels:
129
112
  feishu:
@@ -138,34 +121,27 @@ gateway:
138
121
  token: ${GOLEM_TOKEN}
139
122
  ```
140
123
 
141
- Sensitive fields support `${ENV_VAR}` references to environment variables.
124
+ Sensitive fields support `${ENV_VAR}` references.
142
125
 
143
126
  ## Skill System
144
127
 
145
- A Skill is the unit of assistant capability — a directory containing `SKILL.md` (knowledge and instructions) and optional supporting files (scripts, templates, etc.).
128
+ A Skill is a directory containing `SKILL.md` + optional scripts. Drop it in, the assistant gains new abilities. Remove it, the ability is gone.
146
129
 
147
130
  ```
148
131
  skills/
149
- ├── general/ # General assistant (built-in)
132
+ ├── general/ # Built-in: general assistant
150
133
  │ └── SKILL.md
151
- ├── im-adapter/ # IM reply conventions (built-in)
134
+ ├── im-adapter/ # Built-in: IM reply conventions
152
135
  │ └── SKILL.md
153
- └── my-custom-skill/ # Your own Skill
136
+ └── my-custom-skill/ # Your own
154
137
  ├── SKILL.md
155
138
  └── analyze.py
156
139
  ```
157
140
 
158
- Want to add a capability? Drop a folder into `skills/`. Want to remove one? Delete the folder. `ls skills/` is the complete list of what the assistant can do.
141
+ `ls skills/` is the complete list of what your assistant can do.
159
142
 
160
143
  ## Docker Deployment
161
144
 
162
- ```bash
163
- # In the assistant directory
164
- docker compose up -d
165
- ```
166
-
167
- Or use a Dockerfile:
168
-
169
145
  ```dockerfile
170
146
  FROM node:22-slim
171
147
  RUN npm install -g golembot
@@ -182,8 +158,9 @@ git clone https://github.com/0xranx/golembot.git
182
158
  cd golembot
183
159
  pnpm install
184
160
  pnpm run build
185
- pnpm run test # Unit tests
186
- pnpm run e2e:opencode # End-to-end tests (requires API Key)
161
+ pnpm run test # Unit tests (676+)
162
+ pnpm run e2e:opencode # End-to-end tests (OpenCode)
163
+ pnpm run e2e:codex # End-to-end tests (Codex)
187
164
  ```
188
165
 
189
166
  ## License
@@ -0,0 +1,168 @@
1
+ [English](README.md) | [中文](README.zh-CN.md)
2
+
3
+ <p align="center">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/logo-golem-light.svg">
6
+ <img src="https://raw.githubusercontent.com/0xranx/golembot/main/docs/assets/logo-golem-dark.svg" alt="GolemBot" width="560">
7
+ </picture>
8
+ </p>
9
+
10
+ <p align="center">
11
+ <a href="https://github.com/0xranx/golembot/actions/workflows/ci.yml"><img src="https://img.shields.io/github/actions/workflow/status/0xranx/golembot/ci.yml?branch=main&style=for-the-badge" alt="CI"></a>
12
+ <a href="https://www.npmjs.com/package/golembot"><img src="https://img.shields.io/npm/v/golembot.svg?style=for-the-badge" alt="npm version"></a>
13
+ <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge" alt="MIT License"></a>
14
+ <a href="https://nodejs.org/"><img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg?style=for-the-badge" alt="Node.js"></a>
15
+ </p>
16
+
17
+ <p align="center"><strong>你的 Coding Agent 被困在终端里。GolemBot 把它释放出来。</strong></p>
18
+
19
+ ---
20
+
21
+ Cursor、Claude Code、OpenCode、Codex —— 这些 Coding Agent 已经能写代码、跑脚本、分析数据、进行复杂推理。但它们被困在 IDE 或终端窗口里。
22
+
23
+ **GolemBot 给它们一个身体。** 一条命令就能把你的 Coding Agent 接入飞书、钉钉、企业微信,或任何 HTTP 客户端。也可以 5 行代码嵌入你自己的产品。不需要 AI 框架,不需要 prompt 工程 —— 你已有的 Agent 就是大脑。
24
+
25
+ ## 让你的 Coding Agent 跑在任何地方
26
+
27
+ ### 接入 IM —— 团队的 7x24 AI 队友
28
+
29
+ ```bash
30
+ golembot init -e claude-code -n my-bot
31
+ golembot gateway # 接入飞书 / 钉钉 / 企业微信
32
+ ```
33
+
34
+ 同事在群里 @ 机器人,它能写代码、分析文件、回答问题 —— 因为背后是一个真正的 Coding Agent,不是套壳 API。
35
+
36
+ ### 嵌入你的产品 —— 5 行代码,完整 Agent 能力
37
+
38
+ ```typescript
39
+ import { createAssistant } from 'golembot';
40
+ const bot = createAssistant({ dir: './my-agent' });
41
+
42
+ for await (const event of bot.chat('分析上个月的销售数据')) {
43
+ if (event.type === 'text') process.stdout.write(event.content);
44
+ }
45
+ ```
46
+
47
+ 嵌入 Slack 机器人、内部工具、SaaS 产品、客服系统 —— 任何跑 Node.js 的地方。
48
+
49
+ ## 为什么选 GolemBot,而不是其他 AI 框架?
50
+
51
+ | | GolemBot | 传统 AI 框架 |
52
+ |---|---|---|
53
+ | **AI 大脑** | Cursor / Claude Code / OpenCode / Codex —— 久经考验,完整编码能力 | 你自己从 LLM API + 工具开始拼装 |
54
+ | **上手成本** | `golembot init` → 搞定 | Chains、RAG、向量数据库、prompt 调优…… |
55
+ | **自动升级** | Agent 变强了?你的助手自动变强,零代码改动 | 你自己维护所有东西 |
56
+ | **透明度** | `ls` 目录 = 看到助手知道什么、做了什么 | 黑盒流水线 |
57
+ | **引擎锁定** | 改一行配置换引擎 | 全部重写 |
58
+
59
+ ## 快速开始
60
+
61
+ ```bash
62
+ npm install -g golembot
63
+
64
+ mkdir my-bot && cd my-bot
65
+ golembot onboard # 引导式安装(推荐)
66
+
67
+ # 或手动:
68
+ golembot init -e claude-code -n my-bot
69
+ golembot run # REPL 对话
70
+ golembot gateway # 启动 IM + HTTP 服务
71
+ ```
72
+
73
+ ## 架构
74
+
75
+ ```
76
+ 飞书 / 钉钉 / 企业微信 / HTTP API
77
+
78
+
79
+ ┌─────────────────────────┐
80
+ │ Gateway 服务 │
81
+ │ (通道适配器 + │
82
+ │ HTTP 服务) │
83
+ └────────────┬────────────┘
84
+
85
+ createAssistant()
86
+
87
+ ┌───────┼───────┬───────┐
88
+ ▼ ▼ ▼ ▼
89
+ Cursor Claude OpenCode Codex
90
+ Code
91
+ ```
92
+
93
+ ## 引擎对比
94
+
95
+ | | Cursor | Claude Code | OpenCode | Codex |
96
+ |---|---|---|---|---|
97
+ | Skill 注入 | `.cursor/skills/` | `.claude/skills/` + CLAUDE.md | `.opencode/skills/` + opencode.json | workspace 根目录的 `AGENTS.md` |
98
+ | 会话恢复 | `--resume` | `--resume` | `--session` | `exec resume <thread_id>` |
99
+ | API Key | CURSOR_API_KEY | ANTHROPIC_API_KEY | 取决于 Provider | OPENAI_API_KEY 或 ChatGPT OAuth |
100
+
101
+ 所有引擎暴露的 `StreamEvent` 接口完全一致 —— 切换引擎无需改任何代码。
102
+
103
+ ## 配置
104
+
105
+ `golem.yaml` —— 唯一的配置文件:
106
+
107
+ ```yaml
108
+ name: my-assistant
109
+ engine: claude-code
110
+
111
+ channels:
112
+ feishu:
113
+ appId: ${FEISHU_APP_ID}
114
+ appSecret: ${FEISHU_APP_SECRET}
115
+ dingtalk:
116
+ clientId: ${DINGTALK_CLIENT_ID}
117
+ clientSecret: ${DINGTALK_CLIENT_SECRET}
118
+
119
+ gateway:
120
+ port: 3000
121
+ token: ${GOLEM_TOKEN}
122
+ ```
123
+
124
+ 敏感字段支持 `${ENV_VAR}` 引用环境变量。
125
+
126
+ ## Skill 系统
127
+
128
+ Skill 就是一个目录:`SKILL.md` + 可选脚本。放进去,助手获得新能力;删掉,能力消失。
129
+
130
+ ```
131
+ skills/
132
+ ├── general/ # 内置:通用助手
133
+ │ └── SKILL.md
134
+ ├── im-adapter/ # 内置:IM 回复规范
135
+ │ └── SKILL.md
136
+ └── my-custom-skill/ # 你自己的
137
+ ├── SKILL.md
138
+ └── analyze.py
139
+ ```
140
+
141
+ `ls skills/` 就是助手能力的完整清单。
142
+
143
+ ## Docker 部署
144
+
145
+ ```dockerfile
146
+ FROM node:22-slim
147
+ RUN npm install -g golembot
148
+ WORKDIR /assistant
149
+ COPY . .
150
+ EXPOSE 3000
151
+ CMD ["golembot", "gateway"]
152
+ ```
153
+
154
+ ## 开发
155
+
156
+ ```bash
157
+ git clone https://github.com/0xranx/golembot.git
158
+ cd golembot
159
+ pnpm install
160
+ pnpm run build
161
+ pnpm run test # 单元测试 (676+)
162
+ pnpm run e2e:opencode # 端到端测试(OpenCode)
163
+ pnpm run e2e:codex # 端到端测试(Codex)
164
+ ```
165
+
166
+ ## 许可证
167
+
168
+ [MIT](LICENSE)
@@ -118,7 +118,7 @@ export class WecomAdapter {
118
118
  res.writeHead(405);
119
119
  res.end();
120
120
  });
121
- const port = 9000;
121
+ const port = this.config.port ?? 9000;
122
122
  this.server.listen(port, () => {
123
123
  console.log(`[wecom] Webhook server started on port ${port}, callback path: /wecom`);
124
124
  });
@@ -1 +1 @@
1
- {"version":3,"file":"wecom.js","sourceRoot":"","sources":["../../src/channels/wecom.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA6C,MAAM,WAAW,CAAC;AAIpF,SAAS,QAAQ,CAAC,GAAoB;IACpC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACtE,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,OAAO,YAAY;IACd,IAAI,GAAG,OAAO,CAAC;IAChB,MAAM,CAAqB;IAC3B,MAAM,GAA2C,IAAI,CAAC;IACtD,WAAW,GAAW,EAAE,CAAC;IACzB,cAAc,GAAW,CAAC,CAAC;IAEnC,YAAY,MAA0B;QACpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YACzD,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,uDAAuD,IAAI,CAAC,MAAM,CAAC,MAAM,eAAe,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACzH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAqF,CAAC;QACjH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC;QAClE,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,SAAwC;QAClD,IAAI,WAAgB,CAAC;QACrB,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,WAAW,CAAC;QAE9C,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAE,EAAE;YAC7E,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;YAEjF,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAElD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACzB,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBACtD,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;oBAC7E,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;wBAC/B,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;wBACjE,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;wBACrD,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBACnB,CAAC;yBAAM,CAAC;wBACN,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAChC,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;gBACjC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC;oBACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;oBAC/E,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;oBAC3B,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;oBAErC,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;oBAClF,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;wBAC/B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;wBAC9B,OAAO;oBACT,CAAC;oBAED,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;oBACtE,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;oBACrF,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC;oBAE7B,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;wBAC9B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBACd,OAAO;oBACT,CAAC;oBAED,MAAM,UAAU,GAAmB;wBACjC,WAAW,EAAE,OAAO;wBACpB,QAAQ,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;wBACnC,MAAM,EAAE,MAAM,CAAC,YAAY,IAAI,EAAE;wBACjC,QAAQ,EAAE,IAAI;wBACd,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE;wBAC1B,GAAG,EAAE,MAAM;qBACZ,CAAC;oBAEF,SAAS,CAAC,UAAU,CAAC,CAAC;oBAEtB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAChB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,CAAC,CAAC;oBACvD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnB,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC5B,CAAC;gBACD,OAAO;YACT,CAAC;YAED,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;YAC5B,OAAO,CAAC,GAAG,CAAC,0CAA0C,IAAI,yBAAyB,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAmB,EAAE,IAAY;QAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,iEAAiE,KAAK,EAAE,CAAC;QACrF,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,GAAG,CAAC,QAAQ;YACpB,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACpC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SACxB,CAAC;QACF,MAAM,KAAK,CAAC,GAAG,EAAE;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"wecom.js","sourceRoot":"","sources":["../../src/channels/wecom.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * CLI formatting helpers — tool call display and string truncation.
3
+ */
4
+ export declare function truncate(s: string, max: number): string;
5
+ export declare function formatToolCall(name: string, argsJson: string): string;
6
+ //# sourceMappingURL=cli-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-utils.d.ts","sourceRoot":"","sources":["../src/cli-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqBrE"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * CLI formatting helpers — tool call display and string truncation.
3
+ */
4
+ export function truncate(s, max) {
5
+ if (s.length <= max)
6
+ return s;
7
+ return s.slice(0, max - 1) + '\u2026';
8
+ }
9
+ export function formatToolCall(name, argsJson) {
10
+ let detail = '';
11
+ try {
12
+ const args = JSON.parse(argsJson);
13
+ if (typeof args === 'object' && args !== null) {
14
+ // Pick the most informative argument to display
15
+ const path = args.file_path ?? args.path ?? args.filename;
16
+ const command = args.command;
17
+ const query = args.query ?? args.pattern ?? args.search;
18
+ if (path) {
19
+ detail = ` ${truncate(String(path), 60)}`;
20
+ }
21
+ else if (command) {
22
+ detail = ` ${truncate(String(command), 60)}`;
23
+ }
24
+ else if (query) {
25
+ detail = ` ${truncate(String(query), 60)}`;
26
+ }
27
+ }
28
+ }
29
+ catch {
30
+ // not valid JSON — show nothing extra
31
+ }
32
+ return `${name}${detail}`;
33
+ }
34
+ //# sourceMappingURL=cli-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-utils.js","sourceRoot":"","sources":["../src/cli-utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,GAAW;IAC7C,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,QAAgB;IAC3D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAC9C,gDAAgD;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC;YAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC;YACxD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5C,CAAC;iBAAM,IAAI,OAAO,EAAE,CAAC;gBACnB,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC/C,CAAC;iBAAM,IAAI,KAAK,EAAE,CAAC;gBACjB,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;IACD,OAAO,GAAG,IAAI,GAAG,MAAM,EAAE,CAAC;AAC5B,CAAC"}