@optima-chat/optima-agent 0.9.45 → 0.9.46
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/video-edit/SKILL.md +41 -31
- package/dist/bin/bi-cli.js +0 -0
- package/dist/bin/browser-cli.js +0 -0
- package/dist/bin/channels.js +0 -0
- package/dist/bin/commerce.js +0 -0
- package/dist/bin/gen.js +0 -0
- package/dist/bin/google-ads.js +0 -0
- package/dist/bin/kb-skills.js +0 -0
- package/dist/bin/logistics.js +0 -0
- package/dist/bin/optima.js +0 -0
- package/dist/bin/scout.js +0 -0
- package/dist/bin/sentinel.js +0 -0
- package/dist/bin/shopify.js +0 -0
- package/package.json +12 -11
- package/.claude/settings.local.json +0 -166
- package/dist/bin/comfy.d.ts +0 -3
- package/dist/bin/comfy.d.ts.map +0 -1
- package/dist/bin/comfy.js +0 -3
- package/dist/bin/comfy.js.map +0 -1
- package/dist/bin/growth.d.ts +0 -3
- package/dist/bin/growth.d.ts.map +0 -1
- package/dist/bin/growth.js +0 -3
- package/dist/bin/growth.js.map +0 -1
- 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
|
@@ -70,29 +70,38 @@ It is just hoarding goods
|
|
|
70
70
|
|
|
71
71
|
写脚本时的判断:
|
|
72
72
|
|
|
73
|
-
|
|
73
|
+
**你的唯一任务:识别 NG 重拍 + 完全无意义填充语,删掉。其它一律保留。**
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
3. **重申/落地句**:核心卖点的二次出现,**判别启发**(关键,区分"重申要留" vs "NG 要删"):
|
|
79
|
-
- 换了角度? 地理 → 产品形态 → 操作步骤 / 实例 → 概念 → 是 → **留**
|
|
80
|
-
- 加了新信息? 新数字 / 新案例 / 新时间 → 是 → **留**
|
|
81
|
-
- 完全等价、只是措辞不同?(如"我做这个挺久了" / "做了三四年了")→ 否 → **算 NG 重拍,删一遍**
|
|
75
|
+
> ⚠️ 这条规则 2026-05-08 重写过(之前是"保留率 ≥ 60% + 三类必留 + 两类才删"):
|
|
76
|
+
>
|
|
77
|
+
> 实证显示百分比硬规则不工作 — LLM 心算字数飘 + 用户感觉"删多了"的真实原因是误删了非 NG 的内容句。改成**只删两类,边界明确**,不再设字数门槛。**卡顿/停顿由工具阈值控制**(下方 smart-cut 已放宽),不是 prompt 层判断。
|
|
82
78
|
|
|
83
|
-
|
|
84
|
-
1. **完全填充语**:`嗯`/`啊`/`呃`/`这个`/`那个`/`然后`,且单独成句、上下文无意义
|
|
85
|
-
2. **明确 NG 重拍**:同一句话出现 take A 和 take B(措辞可能不同但信息等价),选信息更全的留
|
|
79
|
+
**只删两类**(明确边界 + 反例):
|
|
86
80
|
|
|
87
|
-
|
|
81
|
+
1. **NG 重拍** = whisper 转写中**前后字面相同的字串**(2+ 字)出现两次。通常因为主播照稿子念时卡顿,然后从前面几个字重念。
|
|
82
|
+
- ✅ 删:转写得 `我们在我们在做跨境电商` → 删一份 `我们在`(留 `我们在做跨境电商`)
|
|
83
|
+
- ✅ 删:转写得 `批量打爆批量打爆你的店铺` → 删一份 `批量打爆`
|
|
84
|
+
- ✅ 删:转写得 `如果你想如果你想做店铺` → 删一份 `如果你想`
|
|
85
|
+
- **判定标准:字面相同字串 ≥ 2 字**(不是同义,是字面一致)
|
|
86
|
+
- 工具(`smart-cut HARD repeated-content`)会自动检测 4+ 字字面重复并阻断,你也可以预先在 cut_proposal 里看相邻 phrase 文本扫一眼
|
|
88
87
|
|
|
89
|
-
|
|
90
|
-
-
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
-
|
|
88
|
+
**以下不算 NG,默认保留**:
|
|
89
|
+
- **同义不同字**(如 `我做这个挺久了` / `做了三四年了`)— 字面不重复,留两个 OR 选措辞流畅那个,**不强制删**
|
|
90
|
+
- **同事实换措辞强调**(如 `日发四万单` + 后段 `我们日均出货四万`)— 字面不重复,留措辞好的就行,不强制删
|
|
91
|
+
- **同概念不同角度**(如 `海外货盘` + `一件代发`)— 信息有增量,**两个都留**
|
|
92
|
+
- 关键启发:**LLM 不可靠地判断"同义",但可靠地判断"字面相同"。所以 NG 严格收窄到字面级**
|
|
93
|
+
|
|
94
|
+
2. **完全无意义填充语**:`嗯`/`啊`/`呃` 单字**独立成短语**(不嵌在句中)。嵌在句中作为停顿语气词的**不删**。
|
|
94
95
|
|
|
95
|
-
|
|
96
|
+
**其它一律保留**:钩子条件句、背景前缀、重申/铺垫、引导词、CTA、即使你觉得"不那么核心"的句子。**不确定就留**。
|
|
97
|
+
|
|
98
|
+
**卡顿/短停顿/词尾喘气由 smart-cut 工具自动处理**(silencedetect + RMS 软停顿 + 残留验证三层),**不是你的工作**。短停顿(< 0.30s)是自然语流,工具会保留;长停顿才删。
|
|
99
|
+
|
|
100
|
+
**通用约束**(写法层):
|
|
101
|
+
- **中文必须用原文措辞**——不要润色或改写,否则匹配不上
|
|
102
|
+
- **每行 ≤ 10 个汉字**——超过会显示挤、可能溢出视频边界
|
|
103
|
+
- **`**关键词**` 标记 1-2 个**:挑能传达这句"重点信息"的实词(名词/动词),不要标助词、口头禅;短语里没明显重点就 0 个标记
|
|
104
|
+
- **英文翻译要地道、口语化**——给海外用户看的,不是直译。短句即可,可省略主语。
|
|
96
105
|
|
|
97
106
|
**写完后必做的自查(保存前)**:把 final_script 当成一段**连续口播稿**通读一遍——不是一行行检查,是**整体读**。问自己:
|
|
98
107
|
|
|
@@ -163,26 +172,27 @@ video-edit smart-cut <video>
|
|
|
163
172
|
|
|
164
173
|
## 写脚本的心法
|
|
165
174
|
|
|
166
|
-
|
|
175
|
+
读 proposal 时**逐 phrase 判断**(简化决策树):
|
|
167
176
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
3. 这句是明确 NG 重拍的较差版?(同一意思 take A 和 take B 选其一)→ 跳过较差那遍
|
|
172
|
-
4. 不属于上述任一类 → **默认留**(不确定就留,不要默认删)
|
|
177
|
+
1. 这句是 NG 重拍?(口误/吞字后当场重说同一句)→ 删较差那遍
|
|
178
|
+
2. 这句是孤立 `嗯/啊/呃` 单字独立短语?→ 跳过
|
|
179
|
+
3. 其它(包括钩子/背景/重申/引导/听起来"不太核心"的句子)→ **保留**
|
|
173
180
|
|
|
174
|
-
|
|
181
|
+
不算字数,不设比例。**疑则留**。
|
|
175
182
|
|
|
176
|
-
**关键纪律 1
|
|
177
|
-
|
|
183
|
+
**关键纪律 1**:脚本里的字**必须**来自原始转写——直接复制 proposal 里的 phrase 文本最稳。
|
|
184
|
+
你想怎么润色都不行(系统按字符匹配,改了字就匹不上)。
|
|
178
185
|
|
|
179
|
-
**关键纪律 2
|
|
186
|
+
**关键纪律 2**:**只识别 NG,卡顿交给工具**。你不要在 prompt 层做"内容是不是太长" / "保留率够不够"的判断 — 那是工具阈值的事,smart-cut 会自动删卡顿/短停顿/喘气。
|
|
180
187
|
|
|
181
|
-
> ⚠️ 这条纪律 2026-05-
|
|
188
|
+
> ⚠️ 这条纪律 2026-05-08 重写过(经历两次反转):
|
|
189
|
+
> - 2026-05-07 之前:"宁可激进删,删多了用户能加回来"
|
|
190
|
+
> - 2026-05-07:反转为"宁可保守 + 60% 保留率",理由是开拍对比发现我们删多了内容(钩子/重申被删)
|
|
191
|
+
> - 2026-05-08:再次重写为"只识别 NG,其它全留",理由是 60% 硬规则 LLM 心算飘 + 工具阈值同步放宽,prompt 层不需要数字约束
|
|
182
192
|
>
|
|
183
|
-
>
|
|
193
|
+
> 现在的模型:**agent 只判断 NG;静音/卡顿由 smart-cut 工具阈值控制**(`DELETE_SILENCE_MIN=0.30s`/`RESIDUAL_PAUSE_MAX=0.50s`)。两层职责不再交叉。
|
|
184
194
|
>
|
|
185
|
-
>
|
|
195
|
+
> 详见 [P0 spec](https://github.com/Optima-Chat/video-edit-skill-spec/blob/main/docs/spec/P0-content-preservation.md) 和 [ADR](https://github.com/Optima-Chat/video-edit-skill-spec/blob/main/docs/decisions/2026-05-07-stop-pause-tightening.md)。
|
|
186
196
|
|
|
187
197
|
## 交付怎么说
|
|
188
198
|
|
package/dist/bin/bi-cli.js
CHANGED
|
File without changes
|
package/dist/bin/browser-cli.js
CHANGED
|
File without changes
|
package/dist/bin/channels.js
CHANGED
|
File without changes
|
package/dist/bin/commerce.js
CHANGED
|
File without changes
|
package/dist/bin/gen.js
CHANGED
|
File without changes
|
package/dist/bin/google-ads.js
CHANGED
|
File without changes
|
package/dist/bin/kb-skills.js
CHANGED
|
File without changes
|
package/dist/bin/logistics.js
CHANGED
|
File without changes
|
package/dist/bin/optima.js
CHANGED
|
File without changes
|
package/dist/bin/scout.js
CHANGED
|
File without changes
|
package/dist/bin/sentinel.js
CHANGED
|
File without changes
|
package/dist/bin/shopify.js
CHANGED
|
File without changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@optima-chat/optima-agent",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.46",
|
|
4
4
|
"description": "基于 Claude Agent SDK 的电商运营 AI 助手",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -36,6 +36,17 @@
|
|
|
36
36
|
],
|
|
37
37
|
"author": "Optima Chat",
|
|
38
38
|
"license": "MIT",
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "npm run sync:kb-skills && tsc",
|
|
41
|
+
"dev": "tsx watch src/index.ts",
|
|
42
|
+
"start": "node dist/src/index.js",
|
|
43
|
+
"typecheck": "tsc --noEmit",
|
|
44
|
+
"test": "vitest run",
|
|
45
|
+
"test:watch": "vitest",
|
|
46
|
+
"optima": "tsx bin/optima.ts",
|
|
47
|
+
"prepublishOnly": "npm run build",
|
|
48
|
+
"sync:kb-skills": "tsx bin/sync-kb-skills.ts"
|
|
49
|
+
},
|
|
39
50
|
"dependencies": {
|
|
40
51
|
"@anthropic-ai/claude-agent-sdk": "^0.2.63",
|
|
41
52
|
"@optima-chat/ads-cli": "latest",
|
|
@@ -64,15 +75,5 @@
|
|
|
64
75
|
},
|
|
65
76
|
"engines": {
|
|
66
77
|
"node": ">=18.0.0"
|
|
67
|
-
},
|
|
68
|
-
"scripts": {
|
|
69
|
-
"build": "npm run sync:kb-skills && tsc",
|
|
70
|
-
"dev": "tsx watch src/index.ts",
|
|
71
|
-
"start": "node dist/src/index.js",
|
|
72
|
-
"typecheck": "tsc --noEmit",
|
|
73
|
-
"test": "vitest run",
|
|
74
|
-
"test:watch": "vitest",
|
|
75
|
-
"optima": "tsx bin/optima.ts",
|
|
76
|
-
"sync:kb-skills": "tsx bin/sync-kb-skills.ts"
|
|
77
78
|
}
|
|
78
79
|
}
|
|
@@ -1,166 +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
|
-
"Bash(optima-agent:*)",
|
|
115
|
-
"Bash(python3:*)",
|
|
116
|
-
"Bash(python3 -c \" import sys content = sys.stdin.read\\(\\) # Find flushMessageQueueSync idx = content.find\\(''flushMessageQueueSync''\\) # Get context around it lines = content.split\\(''\\\\n''\\) for i, line in enumerate\\(lines\\): if ''flushMessageQueueSync'' in line and ''private'' in line: for j in range\\(i, min\\(i+20, len\\(lines\\)\\)\\): print\\(f''{j+1}: {lines[j]}''\\) break \")",
|
|
117
|
-
"Bash(optima:*)",
|
|
118
|
-
"WebFetch(domain:www.npmjs.com)",
|
|
119
|
-
"WebFetch(domain:registry.npmjs.org)",
|
|
120
|
-
"WebFetch(domain:zod.dev)",
|
|
121
|
-
"Bash(npm ls:*)",
|
|
122
|
-
"Bash(NODE_DEBUG=child_process npx tsx:*)",
|
|
123
|
-
"Bash(DEBUG_CLAUDE_AGENT_SDK=1 npx tsx:*)",
|
|
124
|
-
"Bash(CLAUDECODE= npx tsx:*)",
|
|
125
|
-
"Bash(env:*)",
|
|
126
|
-
"Bash(gh release:*)",
|
|
127
|
-
"Bash(npm info:*)",
|
|
128
|
-
"Bash(gh run:*)",
|
|
129
|
-
"Bash(gtimeout 90:*)",
|
|
130
|
-
"Bash(sentinel:*)",
|
|
131
|
-
"Bash(gh pr:*)",
|
|
132
|
-
"Bash(git fetch:*)",
|
|
133
|
-
"Bash(git log:*)",
|
|
134
|
-
"Bash(npm bin:*)",
|
|
135
|
-
"Bash(git status:*)",
|
|
136
|
-
"Bash(browser-cli --version && browser-cli --help)",
|
|
137
|
-
"Bash(browser-cli status:*)",
|
|
138
|
-
"Bash(browser-cli launch:*)",
|
|
139
|
-
"Bash(browser-cli screenshot:*)",
|
|
140
|
-
"Bash(browser-cli --version)",
|
|
141
|
-
"Bash(browser-cli close:*)",
|
|
142
|
-
"Bash(npm update:*)",
|
|
143
|
-
"Bash(node -e \"console.log\\(require\\('./node_modules/@optima-chat/browser-cli/package.json'\\).version\\)\")",
|
|
144
|
-
"WebFetch(domain:raw.githubusercontent.com)",
|
|
145
|
-
"Bash(aws ecs:*)",
|
|
146
|
-
"Bash(aws ecr:*)",
|
|
147
|
-
"Bash(gh search:*)",
|
|
148
|
-
"Bash(npx tsc:*)",
|
|
149
|
-
"Bash(find /Users/verypro/optima-agent -path */node_modules -prune -o -type f \\\\\\(-name *comfy* -o -name *gen* \\\\\\) -print)",
|
|
150
|
-
"Bash(export PATH=\"/usr/local/bin:$PATH\")",
|
|
151
|
-
"Bash(pnpm add:*)",
|
|
152
|
-
"Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/max-rounds-hit)",
|
|
153
|
-
"Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/budget-almost-spent)",
|
|
154
|
-
"Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/two-active-campaigns)",
|
|
155
|
-
"Bash(cp -r ~/optima-agent/test/skills/kol-outreach/fixtures/one-active-campaign ~/optima-agent/test/skills/kol-outreach/fixtures/brand-only)",
|
|
156
|
-
"Bash(pnpm vitest:*)",
|
|
157
|
-
"Bash(pnpm test:*)",
|
|
158
|
-
"Bash(pnpm --filter @optima-scout/backend test --reporter=verbose backend/src/routes/outreach/__tests__/lock.test.ts backend/src/routes/outreach/__tests__/inbound.test.ts)",
|
|
159
|
-
"Bash(npx vitest:*)",
|
|
160
|
-
"Bash(DATABASE_URL=postgres://optima_scout:optima_scout_dev@localhost:7293/optima_scout pnpm --filter @optima-scout/backend test)",
|
|
161
|
-
"Bash(pnpm --filter @optima-scout/backend exec vitest run src/routes/outreach/__tests__/inbound.test.ts)"
|
|
162
|
-
],
|
|
163
|
-
"deny": [],
|
|
164
|
-
"ask": []
|
|
165
|
-
}
|
|
166
|
-
}
|
package/dist/bin/comfy.d.ts
DELETED
package/dist/bin/comfy.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"comfy.d.ts","sourceRoot":"","sources":["../../bin/comfy.ts"],"names":[],"mappings":";AACA,OAAO,wBAAwB,CAAC"}
|
package/dist/bin/comfy.js
DELETED
package/dist/bin/comfy.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"comfy.js","sourceRoot":"","sources":["../../bin/comfy.ts"],"names":[],"mappings":";AACA,OAAO,wBAAwB,CAAC"}
|
package/dist/bin/growth.d.ts
DELETED
package/dist/bin/growth.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"growth.d.ts","sourceRoot":"","sources":["../../bin/growth.ts"],"names":[],"mappings":";AACA,OAAO,yBAAyB,CAAC"}
|
package/dist/bin/growth.js
DELETED
package/dist/bin/growth.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"growth.js","sourceRoot":"","sources":["../../bin/growth.ts"],"names":[],"mappings":";AACA,OAAO,yBAAyB,CAAC"}
|
|
@@ -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"}
|