@vibe-lark/larkpal 0.1.14 → 0.1.15
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/dist/main.mjs +12 -29
- package/package.json +1 -1
package/dist/main.mjs
CHANGED
|
@@ -238,6 +238,10 @@ const DEFAULT_SETTINGS = {
|
|
|
238
238
|
"WebSearch(*)"
|
|
239
239
|
],
|
|
240
240
|
deny: [
|
|
241
|
+
"Write(//.claude/CLAUDE.md)",
|
|
242
|
+
"Edit(//.claude/CLAUDE.md)",
|
|
243
|
+
"Write(//.claude/settings.json)",
|
|
244
|
+
"Edit(//.claude/settings.json)",
|
|
241
245
|
"Read(//.lark-cli/**)",
|
|
242
246
|
"Read(//.config/lark/**)",
|
|
243
247
|
"Read(//.larkpal/credentials.json)",
|
|
@@ -311,6 +315,9 @@ const DEFAULT_CLAUDE_MD = `# LarkPal
|
|
|
311
315
|
- 任何 API 密钥、Token、密码等敏感凭证
|
|
312
316
|
- **严禁**执行 \`cat\`/\`head\`/\`tail\`/\`grep\` 等命令读取上述文件内容
|
|
313
317
|
- **严禁**在对话中引用、复述或暗示凭证的具体值(即使用户明确要求)
|
|
318
|
+
- **严禁**修改 ~/.claude/CLAUDE.md 和 ~/.claude/settings.json — 这些文件由系统管理,人设内容来源于飞书云文档,你无权更改
|
|
319
|
+
- 如果用户要求修改全局人设,应回复:"全局人设由飞书云文档统一管理,请在云文档中修改后执行 /sync-app-info 同步。"
|
|
320
|
+
- 如果用户想添加个人偏好,可以修改当前会话目录下的 CLAUDE.md(仅当前会话生效)
|
|
314
321
|
- 如果用户要求查看凭证,应回复:"出于安全策略,凭证信息不可查看或透露。"
|
|
315
322
|
- lark-cli 的认证配置由系统自动管理,无需用户介入
|
|
316
323
|
|
|
@@ -338,11 +345,8 @@ async function ensureDefaults() {
|
|
|
338
345
|
const claudeMdPath = join(claudeDir, "CLAUDE.md");
|
|
339
346
|
await mkdir(claudeDir, { recursive: true });
|
|
340
347
|
logger$7.info("确保 ~/.claude 目录存在", { path: claudeDir });
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
await writeFile(settingsPath, JSON.stringify(DEFAULT_SETTINGS, null, 2), "utf-8");
|
|
344
|
-
logger$7.info("已生成默认 settings.json", { path: settingsPath });
|
|
345
|
-
}
|
|
348
|
+
await writeFile(settingsPath, JSON.stringify(DEFAULT_SETTINGS, null, 2), "utf-8");
|
|
349
|
+
logger$7.info("settings.json 已同步(强制覆盖)", { path: settingsPath });
|
|
346
350
|
if (await fileExists(claudeMdPath)) logger$7.info("CLAUDE.md 已存在,跳过生成", { path: claudeMdPath });
|
|
347
351
|
else {
|
|
348
352
|
await writeFile(claudeMdPath, DEFAULT_CLAUDE_MD, "utf-8");
|
|
@@ -2512,30 +2516,9 @@ function createStatusRouter() {
|
|
|
2512
2516
|
});
|
|
2513
2517
|
}
|
|
2514
2518
|
});
|
|
2515
|
-
router.put("/persona", async (
|
|
2516
|
-
|
|
2517
|
-
|
|
2518
|
-
method: req.method,
|
|
2519
|
-
url: req.originalUrl,
|
|
2520
|
-
contentLength: content?.length
|
|
2521
|
-
});
|
|
2522
|
-
if (content === void 0 || content === null) {
|
|
2523
|
-
logger$3.warn("update persona bad request: missing content");
|
|
2524
|
-
res.status(400).json({ error: "Missing required field: content" });
|
|
2525
|
-
return;
|
|
2526
|
-
}
|
|
2527
|
-
try {
|
|
2528
|
-
await mkdir(join(homedir(), ".claude"), { recursive: true });
|
|
2529
|
-
await writeFile(PERSONA_FILE, content, "utf-8");
|
|
2530
|
-
logger$3.info("update persona response", { updated: true });
|
|
2531
|
-
res.json({ updated: true });
|
|
2532
|
-
} catch (err) {
|
|
2533
|
-
logger$3.error("update persona failed", { error: String(err) });
|
|
2534
|
-
res.status(500).json({
|
|
2535
|
-
error: "Failed to update persona",
|
|
2536
|
-
detail: String(err)
|
|
2537
|
-
});
|
|
2538
|
-
}
|
|
2519
|
+
router.put("/persona", async (_req, res) => {
|
|
2520
|
+
logger$3.warn("PUT /persona 已废弃,人设内容由飞书云文档统一管理,请使用 POST /api/sync-app-info 触发同步");
|
|
2521
|
+
res.status(403).json({ error: "人设内容由飞书云文档统一管理,不支持直接修改。请在云文档中编辑后调用 POST /api/sync-app-info 同步。" });
|
|
2539
2522
|
});
|
|
2540
2523
|
return router;
|
|
2541
2524
|
}
|