psyclaw 0.25.1 → 0.25.2

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/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 版本沿革
6
6
 
7
- `PsyClaw v0.25.1` 以 `psypi v0.4.1` 的完整实现为基线完成产品改名和源码迁移。`F:\Projects\psypi\psypi` 保留为历史仓库;此后的正式开发、发布和 `psyclaw` 命令均以本仓库为准。为避免中断已有模型、主题、扩展和 Skill 配置,运行时继续兼容既有 Pi profile;研究项目状态则统一写入 `.psyclaw/`。
7
+ `PsyClaw v0.25.2` 以 `psypi v0.4.1` 的完整实现为基线完成产品改名和源码迁移。`F:\Projects\psypi\psypi` 保留为历史仓库;此后的正式开发、发布和 `psyclaw` 命令均以本仓库为准。为避免中断已有模型、主题、安装包和生态 Skill 配置,运行时继续兼容既有 Pi profile;研究项目状态则统一写入 `.psyclaw/`。
8
8
 
9
9
  psyclaw 的目标不是再造一个重量级 Agent,而是在官方 Pi 之上提供少量、可审计、可组合的科研契约:研究项目状态、Claim-Evidence-Provenance 账本、完整性门禁、可恢复工作流、受控记忆和按需技能。统计计算交给成熟库或外接 MCP;Pi 的会话、模型、Skill、Package 和 TUI/RPC 能力继续由 Pi 提供。
10
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "psyclaw",
3
- "version": "0.25.1",
3
+ "version": "0.25.2",
4
4
  "description": "A standalone, evidence-grounded social-science research agent — a conversation-driven agent that bundles the Pi runtime with psyclaw's research contracts, evidence gates, and workflows",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -245,8 +245,9 @@ async function applyModePatches(modePath) {
245
245
  let content = await readFile(modePath, "utf8");
246
246
  const applied = [];
247
247
 
248
- // 动态检测并替换任何现有 logo / BANNER 定义,实现启动时多形态随机轮换
249
- const dynamicBannerRegex = /(?:const BANNER_VARIANTS[\s\S]*?const logo = \[[\s\S]*?\]\.join\("\\n"\);|const logo = (?:`[\s\S]*?`|\[[\s\S]*?\]\.join\("\\n"\)|theme\.bold[\s\S]*?);)/;
248
+ // Replace the entire generated block. The greedy range also repairs a module
249
+ // that a previous build appended to, instead of declaring the banner twice.
250
+ const dynamicBannerRegex = /(?:const (?:wideBannerVariants|BANNER_VARIANTS)[\s\S]*const logo = \[[\s\S]*?\]\.join\("\\n"\);|const logo = (?:`[\s\S]*?`|\[[\s\S]*?\]\.join\("\\n"\)|theme\.bold[\s\S]*?);)/;
250
251
  const currentMatch = content.match(dynamicBannerRegex);
251
252
  if (currentMatch && currentMatch[0] !== PSYCLAW_DYNAMIC_BANNER) {
252
253
  content = content.replace(dynamicBannerRegex, PSYCLAW_DYNAMIC_BANNER);