@seanyao/roll 3.606.3 → 3.607.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/CHANGELOG.md +15 -0
- package/bin/roll +9 -6
- package/dist/roll.mjs +814 -400
- package/package.json +1 -1
- package/skills/roll-build/SKILL.md +5 -5
- package/skills/roll-design/SKILL.md +35 -27
- package/skills/roll-fix/SKILL.md +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v3.607.1 — 2026-06-07
|
|
4
|
+
|
|
5
|
+
### 可见性
|
|
6
|
+
|
|
7
|
+
- detectLiveCycle 僵尸周期污染:无 cycle:end 的僵尸周期被误判为"当前正在运行",叠加 state.current_item 过期,dashboard 头行显示已交付数小时的旧故事;已加 >2h 僵尸跳过+最近活跃优先(FIX-217) `[loop]`
|
|
8
|
+
|
|
9
|
+
### 其他
|
|
10
|
+
|
|
11
|
+
- 验收闸查旧档案位:迁移后真报告被判缺失,硬闸假阴性逼出双账,闸址改与写端同源(FIX-216) `[loop]`
|
|
12
|
+
- roll peer mktemp 竞态 + 解析器无法解析自然语言决议;已加 PID 防竞态 + prompt 要求 Resolution: 行 + 解析器优先读该行(FIX-219) `[loop]`
|
|
13
|
+
- 层层嵌套索引站:从总览到史诗到卡片到报告全程可点击浏览(US-META-003)
|
|
14
|
+
- 建卡时自动生成 story 定义文件和全景报告骨架,后续阶段逐步填充(US-META-005)
|
|
15
|
+
- 交付与终评产物写入 story 文件夹,与验收报告同处一层(US-META-006)
|
|
16
|
+
- 存量 story 数据迁移命令:补定义文件、建文件夹、跳过多故事文件并保留反向引用(US-META-007)
|
|
17
|
+
|
|
3
18
|
## v3.606.3 — 2026-06-06
|
|
4
19
|
|
|
5
20
|
### 新功能
|
package/bin/roll
CHANGED
|
@@ -4,7 +4,7 @@ set -euo pipefail
|
|
|
4
4
|
# Roll — AI Agent Convention Manager
|
|
5
5
|
# Single source of truth for how all AI coding agents behave.
|
|
6
6
|
|
|
7
|
-
VERSION="3.
|
|
7
|
+
VERSION="3.606.3"
|
|
8
8
|
ROLL_HOME="${ROLL_HOME:-${HOME}/.roll}"
|
|
9
9
|
ROLL_CONFIG="${ROLL_HOME}/config.yaml"
|
|
10
10
|
ROLL_GLOBAL="${ROLL_HOME}/conventions/global"
|
|
@@ -3960,7 +3960,7 @@ _peer_dispatch_in_tmux() {
|
|
|
3960
3960
|
local session="$1" cmd_str="$2" out_file="$3" err_file="$4" timeout="${5:-180}"
|
|
3961
3961
|
local done_file="${out_file}.done"
|
|
3962
3962
|
local inner
|
|
3963
|
-
inner=$(mktemp /tmp/roll-peer-inner
|
|
3963
|
+
inner=$(mktemp /tmp/roll-peer-inner-$$-XXXXXX.sh)
|
|
3964
3964
|
{
|
|
3965
3965
|
printf '#!/bin/bash -l\n'
|
|
3966
3966
|
# FIX-050: portable PATH assembly (was hardcoded /opt/homebrew/bin)
|
|
@@ -4074,9 +4074,12 @@ _peer_call() {
|
|
|
4074
4074
|
_peer_parse_resolution() {
|
|
4075
4075
|
local output="$1"
|
|
4076
4076
|
local resolution
|
|
4077
|
-
#
|
|
4078
|
-
|
|
4079
|
-
|
|
4077
|
+
# Prefer explicit "Resolution:" or "决议:" line (most reliable).
|
|
4078
|
+
resolution="$(printf '%s\n' "$output" | grep -oiE '^(Resolution|决议)\s*:\s*(AGREE|REFINE|OBJECT|ESCALATE)\b' | head -1 | grep -oiE '\b(AGREE|REFINE|OBJECT|ESCALATE)\b' | tr '[:lower:]' '[:upper:]')"
|
|
4079
|
+
if [[ -z "$resolution" ]]; then
|
|
4080
|
+
# Fallback: keyword at line start (legacy, kimi natural-language detection).
|
|
4081
|
+
resolution="$(printf '%s\n' "$output" | grep -oiE '^[^a-zA-Z]*\b(AGREE|REFINE|OBJECT|ESCALATE)\b' | head -1 | grep -oiE '\b(AGREE|REFINE|OBJECT|ESCALATE)\b' | tr '[:lower:]' '[:upper:]')"
|
|
4082
|
+
fi
|
|
4080
4083
|
printf '%s\n' "$resolution"
|
|
4081
4084
|
}
|
|
4082
4085
|
|
|
@@ -4197,7 +4200,7 @@ cmd_peer() {
|
|
|
4197
4200
|
fi
|
|
4198
4201
|
|
|
4199
4202
|
local prompt
|
|
4200
|
-
prompt="[PEER_REVIEW round=${round} tool=${from_tool}→${to_tool}]\n\n${context}"
|
|
4203
|
+
prompt="[PEER_REVIEW round=${round} tool=${from_tool}→${to_tool}]\n\n${context}\n\n---\n请以以下格式结束你的回复(必须单独一行):\nResolution: AGREE|REFINE|OBJECT"
|
|
4201
4204
|
|
|
4202
4205
|
local peer_session=""
|
|
4203
4206
|
if command -v tmux >/dev/null 2>&1; then
|