@lightcone-ai/daemon 0.15.7 → 0.15.9

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.
@@ -13,7 +13,9 @@
13
13
  "wechat_mp": "wechat-mp",
14
14
  "gzh": "wechat-mp",
15
15
  "公众号": "wechat-mp",
16
- "tiktok_cn": "douyin"
16
+ "tiktok_cn": "douyin",
17
+ "ks": "kuaishou",
18
+ "快手": "kuaishou"
17
19
  },
18
20
  "platform_policy_data": {
19
21
  "xhs": {
@@ -116,6 +118,56 @@
116
118
  }
117
119
  ]
118
120
  },
121
+ "kuaishou": {
122
+ "platform": "kuaishou",
123
+ "display_name": "快手",
124
+ "policy_version": "kuaishou-2026.04",
125
+ "updated_at": "2026-04-20",
126
+ "ai_label_required": true,
127
+ "ad_disclosure_required": true,
128
+ "policy_window_days": 7,
129
+ "required_labels": {
130
+ "ad": "广告",
131
+ "ai": "AI 生成声明"
132
+ },
133
+ "sensitive_terms": [
134
+ {
135
+ "id": "kuaishou-url-link",
136
+ "term": "http",
137
+ "severity": "blocker",
138
+ "reason": "快手不允许在正文中放置外链 URL,会被平台过滤或触发风控。",
139
+ "action": "remove_url"
140
+ },
141
+ {
142
+ "id": "kuaishou-finance-guarantee",
143
+ "term": "保本保收益",
144
+ "severity": "blocker",
145
+ "reason": "金融收益保障承诺违规。",
146
+ "action": "remove_claim"
147
+ },
148
+ {
149
+ "id": "kuaishou-fake-news",
150
+ "term": "内幕消息",
151
+ "severity": "blocker",
152
+ "reason": "未经证实信息易触发平台处罚。",
153
+ "action": "remove_unverified_claim"
154
+ },
155
+ {
156
+ "id": "kuaishou-medical-cure",
157
+ "term": "包治百病",
158
+ "severity": "blocker",
159
+ "reason": "医疗夸大宣传高风险。",
160
+ "action": "remove_claim"
161
+ },
162
+ {
163
+ "id": "kuaishou-traffic-manipulation",
164
+ "term": "互赞互粉",
165
+ "severity": "warn",
166
+ "reason": "可被识别为异常增长操作。",
167
+ "action": "remove_growth_hack"
168
+ }
169
+ ]
170
+ },
119
171
  "wechat-mp": {
120
172
  "platform": "wechat-mp",
121
173
  "display_name": "公众号",
@@ -33,9 +33,16 @@ export class KuaishouAdapter {
33
33
  }
34
34
 
35
35
  async checkLoginStatus() {
36
+ const profileDir = process.env.KUAISHOU_PROFILE_DIR ?? '(not set)';
37
+ await this._cdp.send('Page.navigate', { url: 'https://cp.kuaishou.com/profile' });
38
+ await sleep(4000);
39
+ const urlResult = await this._cdp.send('Runtime.evaluate', { expression: 'window.location.href', returnByValue: true });
40
+ const url = urlResult.result?.value ?? '';
36
41
  const result = await this._cdp.send('Network.getAllCookies', {});
37
42
  const cookies = result.cookies ?? [];
38
- return cookies.some(c => (c.name === 'userId' || c.name === 'passToken') && c.value?.length > 0);
43
+ const loggedIn = cookies.some(c => (c.name === 'userId' || c.name === 'passToken') && c.value?.length > 0);
44
+ console.error(`[KuaishouAdapter] checkLoginStatus: loggedIn=${loggedIn} url=${url}`);
45
+ return { loggedIn, url, profileDir, userId: null, nickname: null };
39
46
  }
40
47
 
41
48
  async publishImageText({ title, text, tags = [], images = [] }) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightcone-ai/daemon",
3
- "version": "0.15.7",
3
+ "version": "0.15.9",
4
4
  "type": "module",
5
5
  "main": "src/index.js",
6
6
  "bin": {
package/src/mcp-config.js CHANGED
@@ -103,8 +103,6 @@ export function buildSkillMcpServers({
103
103
  for (const skill of (skills ?? [])) {
104
104
  if (!skill.mcpConfig) continue;
105
105
  const mc = skill.mcpConfig;
106
- if (mcpServers[mc.server]) continue;
107
-
108
106
  try {
109
107
  const resolvedArgs = (mc.args ?? []).map(arg => resolveSkillArg(arg, config));
110
108
  const resolvedEnv = {};
@@ -112,6 +110,13 @@ export function buildSkillMcpServers({
112
110
  resolvedEnv[envKey] = agentEnv[envKey] ?? process.env[envKey] ?? '';
113
111
  }
114
112
 
113
+ if (mcpServers[mc.server]) {
114
+ // Merge env vars from additional skills pointing to the same server
115
+ // (e.g. xhs-post + douyin-post + kuaishou-post all share the publisher server)
116
+ Object.assign(mcpServers[mc.server].env, resolvedEnv);
117
+ continue;
118
+ }
119
+
115
120
  mcpServers[mc.server] = {
116
121
  command: mc.command,
117
122
  args: resolvedArgs,