@optima-chat/optima-agent 0.8.0 → 0.8.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/.claude/skills/merchant/SKILL.md +1 -0
- package/.claude/skills/order/SKILL.md +19 -15
- package/.claude/skills/shipping/SKILL.md +3 -6
- package/dist/bin/bi-cli.js +0 -0
- package/dist/bin/comfy.js +0 -0
- package/dist/bin/commerce.js +0 -0
- package/dist/bin/google-ads.js +0 -0
- package/dist/bin/optima.js +0 -0
- package/dist/bin/scout.js +0 -0
- package/package.json +1 -1
- package/.claude/settings.local.json +0 -118
- package/dist/src/hooks-loader.d.ts +0 -6
- package/dist/src/hooks-loader.d.ts.map +0 -1
- package/dist/src/hooks-loader.js +0 -215
- package/dist/src/hooks-loader.js.map +0 -1
- package/dist/src/ui/App.d.ts +0 -6
- package/dist/src/ui/App.d.ts.map +0 -1
- package/dist/src/ui/App.js +0 -164
- package/dist/src/ui/App.js.map +0 -1
- package/dist/src/ui/components/Composer.d.ts +0 -10
- package/dist/src/ui/components/Composer.d.ts.map +0 -1
- package/dist/src/ui/components/Composer.js +0 -13
- package/dist/src/ui/components/Composer.js.map +0 -1
- package/dist/src/ui/components/Header.d.ts +0 -7
- package/dist/src/ui/components/Header.d.ts.map +0 -1
- package/dist/src/ui/components/Header.js +0 -7
- package/dist/src/ui/components/Header.js.map +0 -1
- package/dist/src/ui/components/Message.d.ts +0 -12
- package/dist/src/ui/components/Message.d.ts.map +0 -1
- package/dist/src/ui/components/Message.js +0 -21
- package/dist/src/ui/components/Message.js.map +0 -1
- package/dist/src/ui/components/MessageList.d.ts +0 -9
- package/dist/src/ui/components/MessageList.d.ts.map +0 -1
- package/dist/src/ui/components/MessageList.js +0 -18
- package/dist/src/ui/components/MessageList.js.map +0 -1
- package/dist/src/ui/components/Spinner.d.ts +0 -6
- package/dist/src/ui/components/Spinner.d.ts.map +0 -1
- package/dist/src/ui/components/Spinner.js +0 -7
- package/dist/src/ui/components/Spinner.js.map +0 -1
- package/dist/src/ui/components/StatusBar.d.ts +0 -11
- package/dist/src/ui/components/StatusBar.d.ts.map +0 -1
- package/dist/src/ui/components/StatusBar.js +0 -7
- package/dist/src/ui/components/StatusBar.js.map +0 -1
- package/dist/src/ui/components/index.d.ts +0 -7
- package/dist/src/ui/components/index.d.ts.map +0 -1
- package/dist/src/ui/components/index.js +0 -7
- package/dist/src/ui/components/index.js.map +0 -1
- package/dist/src/validation/error-formatter.d.ts +0 -21
- package/dist/src/validation/error-formatter.d.ts.map +0 -1
- package/dist/src/validation/error-formatter.js +0 -98
- package/dist/src/validation/error-formatter.js.map +0 -1
- package/dist/src/validation/index.d.ts +0 -10
- package/dist/src/validation/index.d.ts.map +0 -1
- package/dist/src/validation/index.js +0 -10
- package/dist/src/validation/index.js.map +0 -1
- package/dist/src/validation/json-validator.d.ts +0 -25
- package/dist/src/validation/json-validator.d.ts.map +0 -1
- package/dist/src/validation/json-validator.js +0 -173
- package/dist/src/validation/json-validator.js.map +0 -1
- package/dist/src/validation/schema.d.ts +0 -353
- package/dist/src/validation/schema.d.ts.map +0 -1
- package/dist/src/validation/schema.js +0 -57
- package/dist/src/validation/schema.js.map +0 -1
- package/dist/src/validation/suggestions.d.ts +0 -25
- package/dist/src/validation/suggestions.d.ts.map +0 -1
- package/dist/src/validation/suggestions.js +0 -144
- package/dist/src/validation/suggestions.js.map +0 -1
- package/dist/src/validation/types.d.ts +0 -40
- package/dist/src/validation/types.d.ts.map +0 -1
- package/dist/src/validation/types.js +0 -5
- package/dist/src/validation/types.js.map +0 -1
- package/dist/src/validation/yaml-validator.d.ts +0 -25
- package/dist/src/validation/yaml-validator.d.ts.map +0 -1
- package/dist/src/validation/yaml-validator.js +0 -177
- package/dist/src/validation/yaml-validator.js.map +0 -1
|
@@ -12,7 +12,8 @@ description: Order fulfillment and shipping management. Process orders, ship pac
|
|
|
12
12
|
当用户说:
|
|
13
13
|
- "查看待发货订单" → `commerce order list --status paid`
|
|
14
14
|
- "订单XX发货" → 先查订单详情,根据 shipping_mode_used 决定发货方式(见下方流程)
|
|
15
|
-
- "查询订单物流" / "
|
|
15
|
+
- "查询订单物流" / "包裹到哪了" → `commerce order tracking --id XX`
|
|
16
|
+
- "运单标签好了吗" / "查标签" → `commerce order refresh-label --id XX`
|
|
16
17
|
- "取消订单XX" → `commerce order cancel --id XX --yes`
|
|
17
18
|
- "标记订单已送达" → `commerce order mark-delivered --id XX`
|
|
18
19
|
- "处理退款" → `commerce refund create --order-id XX --amount YY`
|
|
@@ -32,7 +33,7 @@ description: Order fulfillment and shipping management. Process orders, ship pac
|
|
|
32
33
|
2. **验证订单** - 检查库存、地址、特殊要求
|
|
33
34
|
3. **批量打包** - 准备商品、包装材料、打印面单
|
|
34
35
|
4. **标记发货** - 循环 `commerce order ship --id XX --tracking YY --carrier ZZ`
|
|
35
|
-
5. **物流跟踪** - 定期 `commerce order tracking`
|
|
36
|
+
5. **物流跟踪** - 定期 `commerce order tracking` 监控异常
|
|
36
37
|
6. **确认送达** - 签收后 `commerce order mark-delivered --id XX`
|
|
37
38
|
|
|
38
39
|
### 发货流程详解(重要)
|
|
@@ -101,9 +102,12 @@ commerce order ship --id <order-id> --easyship --courier-id <courier-id>
|
|
|
101
102
|
| `failed` / `technical_failed` | 生成失败 | 告知用户需要检查 EasyShip 后台或重新发货 |
|
|
102
103
|
|
|
103
104
|
**查询标签状态**:
|
|
105
|
+
|
|
106
|
+
如果发货时 label_state 为 pending/generating,稍后使用 `order refresh-label` 从 Easyship 同步最新状态:
|
|
104
107
|
```bash
|
|
105
|
-
commerce order
|
|
108
|
+
commerce order refresh-label --id <order-id>
|
|
106
109
|
```
|
|
110
|
+
返回最新的 `label_state` 和 `label_url`(如已生成)。
|
|
107
111
|
|
|
108
112
|
**查看可用快递**:
|
|
109
113
|
```bash
|
|
@@ -182,10 +186,16 @@ AskUserQuestion:
|
|
|
182
186
|
发货成功!运单号 ES123456789,快递公司 FedEx。
|
|
183
187
|
运单标签正在生成中,稍后可以让我帮你查询。
|
|
184
188
|
|
|
185
|
-
|
|
189
|
+
用户:标签好了吗
|
|
190
|
+
|
|
191
|
+
助手:[执行 Bash: commerce order refresh-label --id order_abc]
|
|
192
|
+
[检查返回结果中的 label_state 和 label_url]
|
|
186
193
|
|
|
187
|
-
|
|
194
|
+
[情况A:label_state = "generated",有 label_url]
|
|
188
195
|
运单标签已生成,请下载打印后贴在包裹上:https://...
|
|
196
|
+
|
|
197
|
+
[情况B:label_state 仍为 "pending" 或 "generating"]
|
|
198
|
+
运单标签仍在生成中,请稍后再试。
|
|
189
199
|
```
|
|
190
200
|
|
|
191
201
|
**场景2:固定运费订单**
|
|
@@ -282,7 +292,9 @@ commerce order ship --id order_789 --tracking DHL123458 --carrier DHL
|
|
|
282
292
|
- `commerce order list` - 查看订单列表
|
|
283
293
|
- `commerce order get` - 查看订单详情
|
|
284
294
|
- `commerce order ship` - 标记订单发货
|
|
285
|
-
- `commerce order tracking` -
|
|
295
|
+
- `commerce order tracking` - 查询物流跟踪(含轨迹、预计送达)
|
|
296
|
+
- `commerce order refresh-label` - 刷新 Easyship 运单标签状态
|
|
297
|
+
- `commerce order update-shipping-status` - 更新物流状态
|
|
286
298
|
- `commerce order cancel` - 取消订单
|
|
287
299
|
- `commerce order complete` - 完成订单
|
|
288
300
|
- `commerce order mark-delivered` - 标记已送达
|
|
@@ -294,15 +306,9 @@ commerce order ship --id order_789 --tracking DHL123458 --carrier DHL
|
|
|
294
306
|
- `commerce refund approve` - 批准退款
|
|
295
307
|
- `commerce refund reject` - 拒绝退款
|
|
296
308
|
|
|
297
|
-
### 物流状态
|
|
298
|
-
- `commerce order tracking` - 查询物流跟踪和标签状态
|
|
299
|
-
- `commerce order update-shipping-status` - 更新物流状态
|
|
300
|
-
- `commerce easyship track` - 查询 Easyship 详细物流轨迹
|
|
301
|
-
|
|
302
309
|
### Easyship 集成
|
|
303
310
|
- `commerce easyship couriers` - 查看可用快递公司
|
|
304
311
|
- `commerce easyship rates --order-id <id>` - 获取订单运费报价
|
|
305
|
-
- `commerce easyship track --order-id <id>` - 跟踪 Easyship 运单
|
|
306
312
|
|
|
307
313
|
## 详细示例
|
|
308
314
|
|
|
@@ -358,10 +364,8 @@ commerce refund approve --id refund_456
|
|
|
358
364
|
### 物流追踪
|
|
359
365
|
```bash
|
|
360
366
|
# 用户说:"查询订单order_123的物流信息"
|
|
367
|
+
# 返回物流轨迹(checkpoints)、预计送达时间、当前状态
|
|
361
368
|
commerce order tracking --id order_123
|
|
362
|
-
|
|
363
|
-
# 或查询 Easyship 详细轨迹
|
|
364
|
-
commerce easyship track --order-id order_123
|
|
365
369
|
```
|
|
366
370
|
|
|
367
371
|
## 重要提示
|
|
@@ -129,7 +129,7 @@ commerce shipping-zone delete --id <区域ID> --yes
|
|
|
129
129
|
|
|
130
130
|
## Easyship 集成
|
|
131
131
|
|
|
132
|
-
Easyship
|
|
132
|
+
Easyship 提供实时国际运费报价。
|
|
133
133
|
|
|
134
134
|
### 查看可用快递
|
|
135
135
|
```bash
|
|
@@ -162,10 +162,8 @@ commerce easyship validate-address \
|
|
|
162
162
|
```
|
|
163
163
|
|
|
164
164
|
### 物流追踪
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
commerce easyship track --order-id <订单ID>
|
|
168
|
-
```
|
|
165
|
+
|
|
166
|
+
物流追踪功能已统一到 `commerce order tracking` 命令(见 order skill)。
|
|
169
167
|
|
|
170
168
|
---
|
|
171
169
|
|
|
@@ -192,7 +190,6 @@ commerce easyship track --order-id <订单ID>
|
|
|
192
190
|
- `commerce easyship get-origin` - 查看发货地址
|
|
193
191
|
- `commerce easyship validate-origin` - 验证发货地址
|
|
194
192
|
- `commerce easyship validate-address` - 验证买家地址
|
|
195
|
-
- `commerce easyship track` - 物流追踪
|
|
196
193
|
|
|
197
194
|
**更新发货地址**用 `commerce merchant update --origin-*`(见 merchant skill)
|
|
198
195
|
|
package/dist/bin/bi-cli.js
CHANGED
|
File without changes
|
package/dist/bin/comfy.js
CHANGED
|
File without changes
|
package/dist/bin/commerce.js
CHANGED
|
File without changes
|
package/dist/bin/google-ads.js
CHANGED
|
File without changes
|
package/dist/bin/optima.js
CHANGED
|
File without changes
|
package/dist/bin/scout.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"permissions": {
|
|
3
|
-
"allow": [
|
|
4
|
-
"Bash(gh api:*)",
|
|
5
|
-
"WebFetch(domain:platform.claude.com)",
|
|
6
|
-
"Bash(git init:*)",
|
|
7
|
-
"Bash(mkdir:*)",
|
|
8
|
-
"Bash(npm run typecheck:*)",
|
|
9
|
-
"Bash(npm view:*)",
|
|
10
|
-
"WebSearch",
|
|
11
|
-
"Bash(commerce --help)",
|
|
12
|
-
"Bash(done)",
|
|
13
|
-
"Bash(commerce product:*)",
|
|
14
|
-
"Bash(commerce order:*)",
|
|
15
|
-
"Bash(commerce i18n:*)",
|
|
16
|
-
"Bash(google-ads:*)",
|
|
17
|
-
"Bash(scout --help:*)",
|
|
18
|
-
"Bash(tree:*)",
|
|
19
|
-
"Bash(cloc:*)",
|
|
20
|
-
"Bash(npm run build:*)",
|
|
21
|
-
"Bash(git restore:*)",
|
|
22
|
-
"Bash(gh repo view:*)",
|
|
23
|
-
"Bash(mv:*)",
|
|
24
|
-
"Bash(rmdir:*)",
|
|
25
|
-
"Bash(git add:*)",
|
|
26
|
-
"Bash(git commit:*)",
|
|
27
|
-
"Bash(git push)",
|
|
28
|
-
"Bash(timeout 5 npm run optima:*)",
|
|
29
|
-
"Bash(npm install:*)",
|
|
30
|
-
"Bash(cat:*)",
|
|
31
|
-
"Bash(gh issue create:*)",
|
|
32
|
-
"Bash(npx tsx:*)",
|
|
33
|
-
"Bash(timeout 30 npx tsx:*)",
|
|
34
|
-
"Bash(git push origin feature/ask-user-question)",
|
|
35
|
-
"Bash(node:*)",
|
|
36
|
-
"Bash(npm version:*)",
|
|
37
|
-
"Bash(git push:*)",
|
|
38
|
-
"Bash(npm publish:*)",
|
|
39
|
-
"Bash(pkill:*)",
|
|
40
|
-
"Bash(git -C /Users/verypro/optima-agent log --oneline --all -- \".claude/\")",
|
|
41
|
-
"Bash(wc:*)",
|
|
42
|
-
"Bash(grep:*)",
|
|
43
|
-
"Bash(find:*)",
|
|
44
|
-
"Bash(commerce collection --help:*)",
|
|
45
|
-
"Bash(commerce collection update --help:*)",
|
|
46
|
-
"Bash(commerce collection set-cover:*)",
|
|
47
|
-
"Bash(commerce collection get --help:*)",
|
|
48
|
-
"Bash(commerce collection list --help:*)",
|
|
49
|
-
"Bash(commerce collection create --help:*)",
|
|
50
|
-
"Bash(commerce collection remove-products:*)",
|
|
51
|
-
"Bash(commerce collection list-products:*)",
|
|
52
|
-
"Bash(commerce --version:*)",
|
|
53
|
-
"Bash(bi-cli --version:*)",
|
|
54
|
-
"Bash(commerce homepage create --help:*)",
|
|
55
|
-
"Bash(commerce homepage reorder --help:*)",
|
|
56
|
-
"Bash(commerce homepage delete --help:*)",
|
|
57
|
-
"Bash(commerce homepage update-images:*)",
|
|
58
|
-
"Bash(commerce homepage update-collections:*)",
|
|
59
|
-
"Bash(commerce homepage update-target:*)",
|
|
60
|
-
"Bash(commerce homepage switch-template:*)",
|
|
61
|
-
"Bash(commerce inventory:*)",
|
|
62
|
-
"Bash(commerce merchant:*)",
|
|
63
|
-
"Bash(commerce review:*)",
|
|
64
|
-
"Bash(commerce product-page:*)",
|
|
65
|
-
"Bash(bi-cli:*)",
|
|
66
|
-
"Bash(comfy:*)",
|
|
67
|
-
"Bash(scout search:*)",
|
|
68
|
-
"Bash(scout product:*)",
|
|
69
|
-
"Bash(commerce homepage create-collections:*)",
|
|
70
|
-
"Bash(commerce homepage create-featured:*)",
|
|
71
|
-
"Bash(commerce homepage create-collection-products:*)",
|
|
72
|
-
"Bash(commerce homepage create-banner:*)",
|
|
73
|
-
"Bash(xargs -I {} sh -c 'echo \"\"\"\"=== {} ===\"\"\"\"; head -3 /Users/verypro/optima-agent/.claude/skills/{}/SKILL.md | grep \"\"\"\"name:\"\"\"\"')",
|
|
74
|
-
"Bash(ls:*)",
|
|
75
|
-
"Bash(gh issue view:*)",
|
|
76
|
-
"Bash(npx markdownlint-cli:*)",
|
|
77
|
-
"Bash(chmod:*)",
|
|
78
|
-
"Bash(npm whoami:*)",
|
|
79
|
-
"Bash(tsx test-scripts/test-headless-progress.ts:*)",
|
|
80
|
-
"Bash(DEBUG_STREAM=1 node dist/bin/optima.js:*)",
|
|
81
|
-
"Bash(git describe:*)",
|
|
82
|
-
"WebFetch(domain:github.com)",
|
|
83
|
-
"Bash(./scripts/test-headless.sh:*)",
|
|
84
|
-
"Bash(./scripts/test-headless-simple.sh:*)",
|
|
85
|
-
"Bash(env)",
|
|
86
|
-
"Bash(gh pr list:*)",
|
|
87
|
-
"Bash(gh pr view:*)",
|
|
88
|
-
"Bash(gh pr diff:*)",
|
|
89
|
-
"Bash(optima --version:*)",
|
|
90
|
-
"Bash(optima agent headless:*)",
|
|
91
|
-
"Bash(optima headless:*)",
|
|
92
|
-
"Bash(/Users/verypro/optima-agent/scripts/test-headless.sh:*)",
|
|
93
|
-
"Bash(/Users/verypro/optima-agent/scripts/test-headless-simple.sh:*)",
|
|
94
|
-
"Bash(tee:*)",
|
|
95
|
-
"Bash(CONV_ID=\"conv-1\":*)",
|
|
96
|
-
"Bash(echo:*)",
|
|
97
|
-
"Bash(scout tiktok trending --help:*)",
|
|
98
|
-
"Bash(scout tiktok trending:*)",
|
|
99
|
-
"Bash(git checkout:*)",
|
|
100
|
-
"Bash(npm test:*)",
|
|
101
|
-
"Bash(git tag:*)",
|
|
102
|
-
"Bash(/private/tmp/claude/-Users-verypro-optima-agent/68a9ac2c-def2-44e1-b42b-e53bd9022ab6/scratchpad/test-canUseTool.sh)",
|
|
103
|
-
"Bash(optima --help:*)",
|
|
104
|
-
"Bash(npx @optima-chat/ads-cli:*)",
|
|
105
|
-
"Bash(head:*)",
|
|
106
|
-
"Bash(git pull:*)",
|
|
107
|
-
"Bash(pnpm build:*)",
|
|
108
|
-
"Skill(read-code)",
|
|
109
|
-
"Bash(npm run cli:*)",
|
|
110
|
-
"Bash(scout:*)",
|
|
111
|
-
"WebFetch(domain:docs.scrapecreators.com)",
|
|
112
|
-
"WebFetch(domain:scrapecreators.com)",
|
|
113
|
-
"Bash(gh auth status:*)"
|
|
114
|
-
],
|
|
115
|
-
"deny": [],
|
|
116
|
-
"ask": []
|
|
117
|
-
}
|
|
118
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-loader.d.ts","sourceRoot":"","sources":["../../src/hooks-loader.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,YAAY,CAAC;AAwL5D;;GAEG;AACH,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,MAAM,GAAG,SAAS,GACrC,WAAW,CAiFb"}
|
package/dist/src/hooks-loader.js
DELETED
|
@@ -1,215 +0,0 @@
|
|
|
1
|
-
import { readFileSync, readdirSync, existsSync, writeFileSync, mkdirSync } from "fs";
|
|
2
|
-
import { join, dirname } from "path";
|
|
3
|
-
import yaml from "js-yaml";
|
|
4
|
-
import { execSync } from "child_process";
|
|
5
|
-
import { YamlValidator, formatValidationErrors, formatValidationWarning } from "./validation/index.js";
|
|
6
|
-
/**
|
|
7
|
-
* 从 SKILL.md 提取 YAML frontmatter
|
|
8
|
-
*/
|
|
9
|
-
function extractYamlFrontmatter(content) {
|
|
10
|
-
const match = content.match(/^---\n([\s\S]*?)\n---/);
|
|
11
|
-
if (!match)
|
|
12
|
-
return null;
|
|
13
|
-
try {
|
|
14
|
-
return yaml.load(match[1]);
|
|
15
|
-
}
|
|
16
|
-
catch (error) {
|
|
17
|
-
console.error("Failed to parse YAML frontmatter:", error);
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* 执行 shell 命令并返回结果
|
|
23
|
-
*/
|
|
24
|
-
function executeCommand(command, cwd, skillDir, sessionId) {
|
|
25
|
-
try {
|
|
26
|
-
// 替换环境变量
|
|
27
|
-
const expandedCommand = command
|
|
28
|
-
.replace(/\$\{CLAUDE_PLUGIN_ROOT\}/g, skillDir)
|
|
29
|
-
.replace(/\$\{SESSION_ID\}/g, sessionId || 'default');
|
|
30
|
-
const result = execSync(expandedCommand, {
|
|
31
|
-
cwd,
|
|
32
|
-
encoding: "utf-8",
|
|
33
|
-
stdio: ["pipe", "pipe", "pipe"],
|
|
34
|
-
});
|
|
35
|
-
return result.trim();
|
|
36
|
-
}
|
|
37
|
-
catch (error) {
|
|
38
|
-
// 命令失败不阻塞,返回错误信息
|
|
39
|
-
return error.stdout || error.message || "";
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* 转换 skill hooks 为 SDK hooks 格式
|
|
44
|
-
*/
|
|
45
|
-
function convertSkillHooksToSdkHooks(skillHooks, skillDir, cwd, getSessionId, hookType) {
|
|
46
|
-
return skillHooks.map((hookConfig) => ({
|
|
47
|
-
matcher: hookConfig.matcher,
|
|
48
|
-
hooks: hookConfig.hooks.map((hook) => {
|
|
49
|
-
// SDK HookCallback 签名: (input, toolUseID, options) => Promise<HookJSONOutput>
|
|
50
|
-
return async (input, toolUseID, options) => {
|
|
51
|
-
// PreToolUse: 拦截并重定向 planning 文件操作
|
|
52
|
-
if (hookType === "PreToolUse" && input.tool_name && input.tool_input) {
|
|
53
|
-
const toolName = input.tool_name;
|
|
54
|
-
const toolInput = input.tool_input;
|
|
55
|
-
// 处理文件操作工具的路径重定向
|
|
56
|
-
if ((toolName === "Write" || toolName === "Read" || toolName === "Edit") && toolInput.file_path) {
|
|
57
|
-
const filePath = toolInput.file_path;
|
|
58
|
-
if (filePath.includes(".planning/default/")) {
|
|
59
|
-
const sessionId = getSessionId() || "default";
|
|
60
|
-
const updatedPath = filePath.replace(".planning/default/", `.planning/${sessionId}/`);
|
|
61
|
-
console.log(`[hooks-loader] Intercepting and redirecting: ${filePath} -> ${updatedPath}`);
|
|
62
|
-
// 手动执行文件操作并 return,不要继续到 command 部分
|
|
63
|
-
try {
|
|
64
|
-
console.log(`[hooks-loader] Inside try block, toolName=${toolName}`);
|
|
65
|
-
if (toolName === "Write") {
|
|
66
|
-
console.log(`[hooks-loader] Handling Write operation`);
|
|
67
|
-
// 创建目录
|
|
68
|
-
const dir = dirname(updatedPath);
|
|
69
|
-
if (!existsSync(dir)) {
|
|
70
|
-
mkdirSync(dir, { recursive: true });
|
|
71
|
-
}
|
|
72
|
-
// 写入文件
|
|
73
|
-
writeFileSync(updatedPath, toolInput.content || "", "utf-8");
|
|
74
|
-
console.log(`[hooks-loader] File written to ${updatedPath}`);
|
|
75
|
-
// Block 原始工具执行
|
|
76
|
-
return {
|
|
77
|
-
decision: "block",
|
|
78
|
-
systemMessage: `File written to session-specific directory`,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
else if (toolName === "Read") {
|
|
82
|
-
// 读取文件
|
|
83
|
-
if (existsSync(updatedPath)) {
|
|
84
|
-
const content = readFileSync(updatedPath, "utf-8");
|
|
85
|
-
console.log(`[hooks-loader] File read from ${updatedPath}`);
|
|
86
|
-
// Block 原始工具,返回文件内容
|
|
87
|
-
return {
|
|
88
|
-
decision: "block",
|
|
89
|
-
systemMessage: `File content:\n\n${content}`,
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
else {
|
|
93
|
-
return {
|
|
94
|
-
decision: "block",
|
|
95
|
-
systemMessage: `File not found: ${updatedPath}`,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else if (toolName === "Edit") {
|
|
100
|
-
// Edit 需要读取、修改、写入
|
|
101
|
-
if (existsSync(updatedPath)) {
|
|
102
|
-
let content = readFileSync(updatedPath, "utf-8");
|
|
103
|
-
// 执行替换
|
|
104
|
-
if (toolInput.old_string && toolInput.new_string) {
|
|
105
|
-
if (toolInput.replace_all) {
|
|
106
|
-
content = content.split(toolInput.old_string).join(toolInput.new_string);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
content = content.replace(toolInput.old_string, toolInput.new_string);
|
|
110
|
-
}
|
|
111
|
-
writeFileSync(updatedPath, content, "utf-8");
|
|
112
|
-
console.log(`[hooks-loader] File edited at ${updatedPath}`);
|
|
113
|
-
}
|
|
114
|
-
return {
|
|
115
|
-
decision: "block",
|
|
116
|
-
systemMessage: `File edited successfully`,
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
return {
|
|
121
|
-
decision: "block",
|
|
122
|
-
systemMessage: `File not found: ${updatedPath}`,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
catch (error) {
|
|
128
|
-
console.error(`[hooks-loader] Error:`, error);
|
|
129
|
-
return {
|
|
130
|
-
decision: "block",
|
|
131
|
-
systemMessage: `Error: ${error.message}`,
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
if (hook.type === "command") {
|
|
138
|
-
const sessionId = getSessionId();
|
|
139
|
-
const result = executeCommand(hook.command, cwd, skillDir, sessionId);
|
|
140
|
-
// 如果有输出,作为系统消息返回
|
|
141
|
-
if (result) {
|
|
142
|
-
return {
|
|
143
|
-
continue: true,
|
|
144
|
-
systemMessage: result,
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
return { continue: true };
|
|
149
|
-
};
|
|
150
|
-
}),
|
|
151
|
-
}));
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* 从 skills 目录加载所有 skill 的 hooks
|
|
155
|
-
*/
|
|
156
|
-
export function loadSkillHooks(skillsDir, cwd, getSessionId) {
|
|
157
|
-
const hooks = {};
|
|
158
|
-
if (!existsSync(skillsDir)) {
|
|
159
|
-
return hooks;
|
|
160
|
-
}
|
|
161
|
-
const skillDirs = readdirSync(skillsDir, { withFileTypes: true })
|
|
162
|
-
.filter((dirent) => dirent.isDirectory())
|
|
163
|
-
.map((dirent) => dirent.name);
|
|
164
|
-
for (const skillName of skillDirs) {
|
|
165
|
-
const skillDir = join(skillsDir, skillName);
|
|
166
|
-
const skillMdPath = join(skillDir, "SKILL.md");
|
|
167
|
-
if (!existsSync(skillMdPath)) {
|
|
168
|
-
continue;
|
|
169
|
-
}
|
|
170
|
-
try {
|
|
171
|
-
const content = readFileSync(skillMdPath, "utf-8");
|
|
172
|
-
// 验证配置文件
|
|
173
|
-
const validator = new YamlValidator();
|
|
174
|
-
const validationResult = validator.validate(content, skillMdPath);
|
|
175
|
-
// 显示错误
|
|
176
|
-
if (!validationResult.valid) {
|
|
177
|
-
console.error(formatValidationErrors(validationResult.errors));
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
// 显示警告
|
|
181
|
-
if (validationResult.warnings && validationResult.warnings.length > 0) {
|
|
182
|
-
for (const warning of validationResult.warnings) {
|
|
183
|
-
console.warn(formatValidationWarning(warning));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
const frontmatter = extractYamlFrontmatter(content);
|
|
187
|
-
if (!frontmatter?.hooks) {
|
|
188
|
-
continue;
|
|
189
|
-
}
|
|
190
|
-
// 转换各个 hook 事件
|
|
191
|
-
if (frontmatter.hooks.SessionStart) {
|
|
192
|
-
hooks.SessionStart = hooks.SessionStart || [];
|
|
193
|
-
hooks.SessionStart.push(...convertSkillHooksToSdkHooks(frontmatter.hooks.SessionStart, skillDir, cwd, getSessionId, "SessionStart"));
|
|
194
|
-
}
|
|
195
|
-
if (frontmatter.hooks.PreToolUse) {
|
|
196
|
-
hooks.PreToolUse = hooks.PreToolUse || [];
|
|
197
|
-
hooks.PreToolUse.push(...convertSkillHooksToSdkHooks(frontmatter.hooks.PreToolUse, skillDir, cwd, getSessionId, "PreToolUse"));
|
|
198
|
-
}
|
|
199
|
-
if (frontmatter.hooks.PostToolUse) {
|
|
200
|
-
hooks.PostToolUse = hooks.PostToolUse || [];
|
|
201
|
-
hooks.PostToolUse.push(...convertSkillHooksToSdkHooks(frontmatter.hooks.PostToolUse, skillDir, cwd, getSessionId, "PostToolUse"));
|
|
202
|
-
}
|
|
203
|
-
if (frontmatter.hooks.Stop) {
|
|
204
|
-
hooks.Stop = hooks.Stop || [];
|
|
205
|
-
hooks.Stop.push(...convertSkillHooksToSdkHooks(frontmatter.hooks.Stop, skillDir, cwd, getSessionId, "Stop"));
|
|
206
|
-
}
|
|
207
|
-
console.log(`[hooks-loader] Loaded hooks from skill: ${skillName}`);
|
|
208
|
-
}
|
|
209
|
-
catch (error) {
|
|
210
|
-
console.error(`[hooks-loader] Failed to load hooks from ${skillName}:`, error);
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
return hooks;
|
|
214
|
-
}
|
|
215
|
-
//# sourceMappingURL=hooks-loader.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks-loader.js","sourceRoot":"","sources":["../../src/hooks-loader.ts"],"names":[],"mappings":"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"}
|
package/dist/src/ui/App.d.ts
DELETED
package/dist/src/ui/App.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../src/ui/App.tsx"],"names":[],"mappings":"AAcA,UAAU,QAAQ;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,2CAqMpC"}
|