@seanyao/roll 0.5.0 → 2.602.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 +717 -0
- package/LICENSE +21 -0
- package/README.md +65 -165
- package/bin/dream-test-quality-scan +110 -0
- package/bin/roll +14897 -815
- package/conventions/config.yaml +17 -1
- package/conventions/global/AGENTS.md +146 -100
- package/conventions/global/CLAUDE.md +1 -21
- package/conventions/global/GEMINI.md +8 -22
- package/conventions/global/project_rules.md +9 -0
- package/conventions/templates/backend-service/AGENTS.md +30 -81
- package/conventions/templates/backend-service/GEMINI.md +3 -3
- package/conventions/templates/backend-service/project_rules.md +16 -0
- package/conventions/templates/cli/AGENTS.md +31 -58
- package/conventions/templates/cli/CLAUDE.md +3 -5
- package/conventions/templates/cli/GEMINI.md +3 -3
- package/conventions/templates/cli/project_rules.md +16 -0
- package/conventions/templates/frontend-only/AGENTS.md +29 -64
- package/conventions/templates/frontend-only/GEMINI.md +3 -3
- package/conventions/templates/frontend-only/project_rules.md +14 -0
- package/conventions/templates/fullstack/AGENTS.md +31 -79
- package/conventions/templates/fullstack/CLAUDE.md +1 -1
- package/conventions/templates/fullstack/GEMINI.md +3 -3
- package/conventions/templates/fullstack/project_rules.md +15 -0
- package/lib/README.md +42 -0
- package/lib/__pycache__/github_sync.cpython-314.pyc +0 -0
- package/lib/__pycache__/loop-fmt.cpython-314.pyc +0 -0
- package/lib/__pycache__/loop_result_eval.cpython-314.pyc +0 -0
- package/lib/__pycache__/loop_unstick.cpython-314.pyc +0 -0
- package/lib/__pycache__/model_prices.cpython-314.pyc +0 -0
- package/lib/__pycache__/prices_fetcher.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll-home.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll-loop-status.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll_git.cpython-314.pyc +0 -0
- package/lib/__pycache__/roll_render.cpython-314.pyc +0 -0
- package/lib/__pycache__/slides-render.cpython-314.pyc +0 -0
- package/lib/agent_usage/README.md +49 -0
- package/lib/agent_usage/__init__.py +108 -0
- package/lib/agent_usage/__pycache__/__init__.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/gemini.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/kimi.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/openai.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/pi.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/pi_emit.cpython-314.pyc +0 -0
- package/lib/agent_usage/__pycache__/qwen.cpython-314.pyc +0 -0
- package/lib/agent_usage/gemini.py +127 -0
- package/lib/agent_usage/kimi.py +278 -0
- package/lib/agent_usage/kimi_emit.py +123 -0
- package/lib/agent_usage/openai.py +126 -0
- package/lib/agent_usage/pi.py +200 -0
- package/lib/agent_usage/pi_emit.py +135 -0
- package/lib/agent_usage/qwen.py +128 -0
- package/lib/backfill-pi-usage.py +243 -0
- package/lib/changelog_audit.py +155 -0
- package/lib/changelog_generate.py +263 -0
- package/lib/context_feed_budget.sh +194 -0
- package/lib/github_sync.py +876 -0
- package/lib/i18n/README.md +54 -0
- package/lib/i18n/agent.sh +75 -0
- package/lib/i18n/alert.sh +20 -0
- package/lib/i18n/backlog.sh +96 -0
- package/lib/i18n/brief.sh +5 -0
- package/lib/i18n/changelog.sh +5 -0
- package/lib/i18n/ci.sh +15 -0
- package/lib/i18n/debug.sh +0 -0
- package/lib/i18n/doctor.sh +44 -0
- package/lib/i18n/dream.sh +0 -0
- package/lib/i18n/init.sh +91 -0
- package/lib/i18n/lang.sh +10 -0
- package/lib/i18n/loop.sh +140 -0
- package/lib/i18n/migrate.sh +74 -0
- package/lib/i18n/offboard.sh +31 -0
- package/lib/i18n/onboard.sh +0 -0
- package/lib/i18n/peer.sh +41 -0
- package/lib/i18n/peer_help.sh +25 -0
- package/lib/i18n/peer_reset.sh +7 -0
- package/lib/i18n/peer_status.sh +5 -0
- package/lib/i18n/prices.sh +3 -0
- package/lib/i18n/prices_refresh.sh +17 -0
- package/lib/i18n/prices_show.sh +7 -0
- package/lib/i18n/propose.sh +0 -0
- package/lib/i18n/release.sh +0 -0
- package/lib/i18n/research.sh +0 -0
- package/lib/i18n/review_pr.sh +0 -0
- package/lib/i18n/sentinel.sh +0 -0
- package/lib/i18n/setup.sh +3 -0
- package/lib/i18n/shared.sh +157 -0
- package/lib/i18n/skills/roll-brief.sh +47 -0
- package/lib/i18n/skills/roll-build.sh +97 -0
- package/lib/i18n/skills/roll-design.sh +18 -0
- package/lib/i18n/skills/roll-fix.sh +53 -0
- package/lib/i18n/skills/roll-loop.sh +28 -0
- package/lib/i18n/skills/roll-onboard.sh +33 -0
- package/lib/i18n/skills_catalog.sh +30 -0
- package/lib/i18n/slides.sh +3 -0
- package/lib/i18n/slides_build.sh +38 -0
- package/lib/i18n/slides_delete.sh +19 -0
- package/lib/i18n/slides_list.sh +14 -0
- package/lib/i18n/slides_logs.sh +12 -0
- package/lib/i18n/slides_new.sh +15 -0
- package/lib/i18n/slides_preview.sh +14 -0
- package/lib/i18n/slides_templates.sh +7 -0
- package/lib/i18n/status.sh +21 -0
- package/lib/i18n/update.sh +24 -0
- package/lib/i18n.sh +211 -0
- package/lib/loop-exit-summary.py +393 -0
- package/lib/loop-fmt.py +589 -0
- package/lib/loop_pick_agent.py +316 -0
- package/lib/loop_result_eval.py +469 -0
- package/lib/loop_unstick.py +180 -0
- package/lib/model_prices.py +186 -0
- package/lib/prices/README.md +35 -0
- package/lib/prices/snapshot-2026-05-22.json +22 -0
- package/lib/prices/snapshot-2026-05-23-deepseek.json +15 -0
- package/lib/prices/snapshot-2026-05-23-kimi.json +14 -0
- package/lib/prices_fetcher.py +285 -0
- package/lib/roll-backlog.py +225 -0
- package/lib/roll-brief.py +286 -0
- package/lib/roll-help.py +158 -0
- package/lib/roll-home.py +556 -0
- package/lib/roll-init.py +156 -0
- package/lib/roll-loop-status.py +1683 -0
- package/lib/roll-loop-story.py +191 -0
- package/lib/roll-onboard-render.py +378 -0
- package/lib/roll-peer.py +252 -0
- package/lib/roll-plan-validate.py +386 -0
- package/lib/roll-setup.py +102 -0
- package/lib/roll-status.py +367 -0
- package/lib/roll_git.py +41 -0
- package/lib/roll_render.py +414 -0
- package/lib/slides/components/README.md +123 -0
- package/lib/slides/components/cards-2.html +9 -0
- package/lib/slides/components/cards-3.html +9 -0
- package/lib/slides/components/cards-4.html +9 -0
- package/lib/slides/components/compare.html +22 -0
- package/lib/slides/components/highlight.html +9 -0
- package/lib/slides/components/pipeline.html +12 -0
- package/lib/slides/components/plain.html +7 -0
- package/lib/slides/components/quote.html +4 -0
- package/lib/slides/components/timeline.html +9 -0
- package/lib/slides/templates/introduction-v3.html +571 -0
- package/lib/slides/templates/pitch.html +0 -0
- package/lib/slides-render.py +778 -0
- package/lib/slides-validate.py +357 -0
- package/lib/test_quality_gate.py +143 -0
- package/package.json +8 -7
- package/skills/roll-.changelog/SKILL.md +406 -33
- package/skills/roll-.clarify/SKILL.md +5 -2
- package/skills/roll-.dream/SKILL.md +374 -0
- package/skills/roll-.echo/SKILL.md +5 -2
- package/skills/roll-.qa/SKILL.md +57 -3
- package/skills/roll-.review/SKILL.md +42 -3
- package/skills/roll-brief/SKILL.md +209 -0
- package/skills/roll-build/SKILL.md +308 -63
- package/skills/roll-debug/SKILL.md +341 -162
- package/skills/roll-debug/injectable-bb.js +263 -0
- package/skills/roll-deck/SKILL.md +296 -0
- package/skills/roll-design/ENGINEERING_CHECKLIST.md +1 -1
- package/skills/roll-design/SKILL.md +727 -94
- package/skills/roll-doc/SKILL.md +595 -0
- package/skills/roll-doctor/SKILL.md +192 -0
- package/skills/roll-fix/SKILL.md +149 -32
- package/skills/{roll-jot → roll-idea}/SKILL.md +18 -10
- package/skills/roll-loop/SKILL.md +578 -0
- package/skills/roll-notes/SKILL.md +103 -0
- package/skills/roll-onboard/SKILL.md +234 -0
- package/skills/roll-peer/SKILL.md +336 -0
- package/skills/roll-propose/SKILL.md +157 -0
- package/skills/roll-review-pr/SKILL.md +58 -0
- package/skills/roll-sentinel/SKILL.md +11 -2
- package/skills/roll-spar/SKILL.md +8 -6
- package/template/.github/workflows/ci.yml +5 -2
- package/template/AGENTS.md +20 -74
- package/skills/roll-research/SKILL.md +0 -307
- package/skills/roll-research/references/schema.json +0 -162
- package/skills/roll-research/scripts/md_to_pdf.py +0 -289
- package/tools/roll-fetch/SKILL.md +0 -182
- package/tools/roll-fetch/package.json +0 -15
- package/tools/roll-fetch/smart-web-fetch.js +0 -558
- package/tools/roll-probe/SKILL.md +0 -84
- /package/template/{BACKLOG.md → .roll/backlog.md} +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
> **Draft** — auto-generated by roll-doc on 2026-05-28. Review before treating as authoritative.
|
|
2
|
+
|
|
3
|
+
# lib/i18n/ — Localized string tables
|
|
4
|
+
|
|
5
|
+
All user-visible CLI output strings for both `en` and `zh` locales, organized by command domain.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
Each `.sh` file under `lib/i18n/` is a shell associative-array fragment exporting a `MSG_*` namespace:
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
lib/i18n/
|
|
13
|
+
├── agent.sh # roll agent use / install messages
|
|
14
|
+
├── alert.sh # ALERT lifecycle messages
|
|
15
|
+
├── backlog.sh # backlog read/write output
|
|
16
|
+
├── brief.sh # roll-brief generation output
|
|
17
|
+
├── changelog.sh # changelog sync messages
|
|
18
|
+
├── ci.sh # CI self-heal messages
|
|
19
|
+
├── debug.sh # roll debug diagnostics
|
|
20
|
+
├── doctor.sh # roll-doctor check output
|
|
21
|
+
├── dream.sh # roll-.dream scan output
|
|
22
|
+
├── init.sh # roll init setup messages
|
|
23
|
+
├── lang.sh # locale detection + ROLL_LANG resolution
|
|
24
|
+
├── loop.sh # roll loop subcommand output (largest file)
|
|
25
|
+
├── migrate.sh # roll migrate messages
|
|
26
|
+
├── offboard.sh # roll offboard output
|
|
27
|
+
├── onboard.sh # roll onboard / legacy-onboard output
|
|
28
|
+
├── peer.sh # roll peer review messages
|
|
29
|
+
├── peer_help.sh # peer --help text
|
|
30
|
+
├── peer_reset.sh # peer reset confirmation messages
|
|
31
|
+
├── peer_status.sh # peer status output
|
|
32
|
+
├── prices_refresh.sh # prices refresh output
|
|
33
|
+
└── skills/ # per-skill i18n overrides
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Locale selection
|
|
37
|
+
|
|
38
|
+
`ROLL_LANG` env var controls which locale is active. Resolved by `lang.sh`:
|
|
39
|
+
|
|
40
|
+
1. `ROLL_LANG` explicit → use it
|
|
41
|
+
2. `LC_ALL` / `LANG` contains `zh` → `zh`
|
|
42
|
+
3. Default → `en`
|
|
43
|
+
|
|
44
|
+
Each `.sh` file branches on `ROLL_LANG` and exports the appropriate string set.
|
|
45
|
+
|
|
46
|
+
## skills/
|
|
47
|
+
|
|
48
|
+
Per-skill message overrides for `roll-build`, `roll-design`, `roll-fix`, `roll-loop`, `roll-onboard`. Same structure as top-level files — sourced after the base file to allow skill-specific overrides without editing shared strings.
|
|
49
|
+
|
|
50
|
+
## Adding a new string
|
|
51
|
+
|
|
52
|
+
1. Add the key to both `en` and `zh` branches in the appropriate domain file.
|
|
53
|
+
2. Reference via `msg <KEY>` in `bin/roll` or the relevant skill.
|
|
54
|
+
3. Never hardcode user-facing strings in `bin/roll` directly — always go through i18n.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en agent.agent_set_to_for_this_project "Agent set to %s for this project"
|
|
3
|
+
_i18n_set zh agent.agent_set_to_for_this_project "当前项目 agent 已设为 %s"
|
|
4
|
+
_i18n_set en agent.loop_runner_scripts_regenerated_for_new "Loop runner scripts regenerated for new agent"
|
|
5
|
+
_i18n_set zh agent.loop_runner_scripts_regenerated_for_new "已为新 agent 重新生成 loop 脚本"
|
|
6
|
+
_i18n_set en agent.launchd_plists_installed_updated_launchagents "Launchd plists installed (%s updated) LaunchAgents"
|
|
7
|
+
_i18n_set zh agent.launchd_plists_installed_updated_launchagents "已安装"
|
|
8
|
+
_i18n_set en agent.run_roll_loop_on_to_activate " Run: roll loop on to activate"
|
|
9
|
+
_i18n_set zh agent.run_roll_loop_on_to_activate "运行 roll loop on 激活"
|
|
10
|
+
_i18n_set en agent.launchd_plists_up_to_date_launchagents "Launchd plists up to date LaunchAgents"
|
|
11
|
+
_i18n_set zh agent.launchd_plists_up_to_date_launchagents "无需更新"
|
|
12
|
+
|
|
13
|
+
_i18n_set en agent.hourly_at_02d "Hourly at :%02d"
|
|
14
|
+
_i18n_set zh agent.hourly_at_02d "每小時 :%02d"
|
|
15
|
+
_i18n_set en agent.every_d_min_s "Every %d min (%s)"
|
|
16
|
+
_i18n_set zh agent.every_d_min_s "每%d分鐘 (%s)"
|
|
17
|
+
|
|
18
|
+
_i18n_set en agent.not_found_in_path_setting_anyway "%s not found in PATH — setting anyway"
|
|
19
|
+
_i18n_set zh agent.not_found_in_path_setting_anyway "未找到 %s,仍写入配置"
|
|
20
|
+
_i18n_set en agent.available_agents "Available agents"
|
|
21
|
+
_i18n_set zh agent.available_agents "可用 agent"
|
|
22
|
+
|
|
23
|
+
# US-AGENT-025: `roll agent` four-slot view.
|
|
24
|
+
_i18n_set en agent.view_header "Complexity routing (.roll/agents.yaml)"
|
|
25
|
+
_i18n_set zh agent.view_header "复杂度路由(.roll/agents.yaml)"
|
|
26
|
+
_i18n_set en agent.view_col_slot "SLOT"
|
|
27
|
+
_i18n_set zh agent.view_col_slot "槽位"
|
|
28
|
+
_i18n_set en agent.view_col_agent "AGENT"
|
|
29
|
+
_i18n_set zh agent.view_col_agent "AGENT"
|
|
30
|
+
_i18n_set en agent.view_col_status "STATUS"
|
|
31
|
+
_i18n_set zh agent.view_col_status "状态"
|
|
32
|
+
_i18n_set en agent.view_col_note "NOTE"
|
|
33
|
+
_i18n_set zh agent.view_col_note "备注"
|
|
34
|
+
_i18n_set en agent.view_slot_unset "(unset)"
|
|
35
|
+
_i18n_set zh agent.view_slot_unset "(未设)"
|
|
36
|
+
_i18n_set en agent.view_fallback_idle "idle"
|
|
37
|
+
_i18n_set zh agent.view_fallback_idle "待命"
|
|
38
|
+
_i18n_set en agent.view_fallback_active "active (in use)"
|
|
39
|
+
_i18n_set zh agent.view_fallback_active "已启用"
|
|
40
|
+
_i18n_set en agent.view_recent_downgrades "Recent downgrades"
|
|
41
|
+
_i18n_set zh agent.view_recent_downgrades "近期降级"
|
|
42
|
+
_i18n_set en agent.view_downgrade_line "%s slot %s → ran %s"
|
|
43
|
+
_i18n_set zh agent.view_downgrade_line "%s 档本该 %s → 实际 %s"
|
|
44
|
+
_i18n_set en agent.view_no_config "No .roll/agents.yaml yet — routing falls back to the first installed agent."
|
|
45
|
+
_i18n_set zh agent.view_no_config "尚无 .roll/agents.yaml — 路由回退到首个已装 agent。"
|
|
46
|
+
_i18n_set en agent.view_no_config_hint "Set up routing: roll agent set <slot> <agent> (or migrate from a legacy config)"
|
|
47
|
+
_i18n_set zh agent.view_no_config_hint "配置路由:roll agent set <slot> <agent>(或从旧配置迁移)"
|
|
48
|
+
|
|
49
|
+
# US-AGENT-026: `roll agent set` cascade picker.
|
|
50
|
+
_i18n_set en agent.set_pick_slot "Pick a complexity slot to configure:"
|
|
51
|
+
_i18n_set zh agent.set_pick_slot "选择要配置的复杂度档:"
|
|
52
|
+
_i18n_set en agent.set_enter_number "Enter number"
|
|
53
|
+
_i18n_set zh agent.set_enter_number "输入编号"
|
|
54
|
+
_i18n_set en agent.set_no_input "No input received — aborting."
|
|
55
|
+
_i18n_set zh agent.set_no_input "未收到输入 — 已取消。"
|
|
56
|
+
_i18n_set en agent.set_invalid_choice "Invalid choice: %s"
|
|
57
|
+
_i18n_set zh agent.set_invalid_choice "无效选择:%s"
|
|
58
|
+
_i18n_set en agent.set_unknown_slot "Unknown slot '%s' (expected easy|default|hard|fallback)"
|
|
59
|
+
_i18n_set zh agent.set_unknown_slot "未知槽位 '%s'(应为 easy|default|hard|fallback)"
|
|
60
|
+
_i18n_set en agent.set_unknown_agent "Unknown agent '%s' — run: roll agent list"
|
|
61
|
+
_i18n_set zh agent.set_unknown_agent "未知 agent '%s' — 运行:roll agent list"
|
|
62
|
+
_i18n_set en agent.set_no_online_agents "No installed agent is online right now — nothing to pick from."
|
|
63
|
+
_i18n_set zh agent.set_no_online_agents "当前没有在线的已装 agent — 无可选项。"
|
|
64
|
+
_i18n_set en agent.set_write_failed "Could not write slot '%s' to agents.yaml"
|
|
65
|
+
_i18n_set zh agent.set_write_failed "无法将槽位 '%s' 写入 agents.yaml"
|
|
66
|
+
_i18n_set en agent.set_saved "%s → %s saved"
|
|
67
|
+
_i18n_set zh agent.set_saved "%s → %s 已保存"
|
|
68
|
+
|
|
69
|
+
# US-AGENT-027: `roll agent use <name>` — lock easy/default/hard to one agent.
|
|
70
|
+
_i18n_set en agent.use_usage "Usage: roll agent use <name> (locks easy/default/hard to one agent)"
|
|
71
|
+
_i18n_set zh agent.use_usage "用法:roll agent use <name>(把 easy/default/hard 三档一次锁成同一 agent)"
|
|
72
|
+
_i18n_set en agent.use_unknown_agent "Unknown or uninstalled agent '%s' — run: roll agent list"
|
|
73
|
+
_i18n_set zh agent.use_unknown_agent "未知或未安装的 agent '%s' — 运行:roll agent list"
|
|
74
|
+
_i18n_set en agent.use_locked "easy/default/hard all locked to %s (fallback unchanged)"
|
|
75
|
+
_i18n_set zh agent.use_locked "已将 easy/default/hard 三档锁为 %s(fallback 不变)"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en alert.no_active_alerts "No active alerts"
|
|
3
|
+
_i18n_set zh alert.no_active_alerts "暂无告警"
|
|
4
|
+
_i18n_set en alert.active_alert "%sActive Alert"
|
|
5
|
+
_i18n_set zh alert.active_alert "当前告警%s"
|
|
6
|
+
_i18n_set en alert.no_active_alerts_to_acknowledge "No active alerts to acknowledge"
|
|
7
|
+
_i18n_set zh alert.no_active_alerts_to_acknowledge "暂无待确认告警"
|
|
8
|
+
_i18n_set en alert.alert_acknowledged_at "Alert acknowledged at %s"
|
|
9
|
+
_i18n_set zh alert.alert_acknowledged_at "告警已确认"
|
|
10
|
+
_i18n_set en alert.no_active_alerts_2 "No active alerts"
|
|
11
|
+
_i18n_set zh alert.no_active_alerts_2 "暂无告警"
|
|
12
|
+
_i18n_set en alert.alert_resolved_and_cleared "Alert resolved and cleared"
|
|
13
|
+
_i18n_set zh alert.alert_resolved_and_cleared "告警已解决并清除"
|
|
14
|
+
_i18n_set en alert.unknown_subcommand "Unknown subcommand: %s"
|
|
15
|
+
_i18n_set zh alert.unknown_subcommand "未知子命令: %s"
|
|
16
|
+
|
|
17
|
+
_i18n_set en alert.run_roll_alert_ack_to_acknowledge "Run 'roll alert ack' to acknowledge alerts, 'roll alert resolve' to clear."
|
|
18
|
+
_i18n_set zh alert.run_roll_alert_ack_to_acknowledge " 运行 'roll alert ack' 确认告警,'roll alert resolve' 清除告警。"
|
|
19
|
+
_i18n_set en alert.usage_roll_alert_list_ack_resolve "Usage: roll alert [list|ack|resolve]"
|
|
20
|
+
_i18n_set zh alert.usage_roll_alert_list_ack_resolve " 用法: roll alert [list|ack|resolve]"
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en backlog.roll_backlog_md_not_found_run ".roll/backlog.md not found — run 'roll init' first"
|
|
3
|
+
_i18n_set zh backlog.roll_backlog_md_not_found_run "未找到 .roll/backlog.md,请先运行 roll init"
|
|
4
|
+
_i18n_set en backlog.usage_roll_backlog_pattern_reason "Usage: roll backlog %s <pattern> [reason]"
|
|
5
|
+
_i18n_set zh backlog.usage_roll_backlog_pattern_reason "用法: roll backlog %s <匹配模式> [原因]"
|
|
6
|
+
_i18n_set en backlog.no_items_matched " No items matched: %s"
|
|
7
|
+
_i18n_set zh backlog.no_items_matched "未找到匹配项: %s"
|
|
8
|
+
_i18n_set en backlog.updated_item_s " Updated %s item(s) → %s"
|
|
9
|
+
_i18n_set zh backlog.updated_item_s "已更新 %s 条目"
|
|
10
|
+
_i18n_set en backlog.pending_backlog " %sPending Backlog"
|
|
11
|
+
_i18n_set zh backlog.pending_backlog "待处理任务%s (%s items)"
|
|
12
|
+
_i18n_set en backlog.bug_fixes "Bug Fixes"
|
|
13
|
+
_i18n_set zh backlog.bug_fixes "缺陷修复"
|
|
14
|
+
_i18n_set en backlog.user_stories "User Stories"
|
|
15
|
+
_i18n_set zh backlog.user_stories "用户故事"
|
|
16
|
+
_i18n_set en backlog.refactors "Refactors"
|
|
17
|
+
_i18n_set zh backlog.refactors "重构"
|
|
18
|
+
_i18n_set en backlog.ideas "Ideas"
|
|
19
|
+
_i18n_set zh backlog.ideas "创意"
|
|
20
|
+
_i18n_set en backlog.nothing_pending_backlog_is_clear " %s✓ Nothing pending — backlog is clear"
|
|
21
|
+
_i18n_set zh backlog.nothing_pending_backlog_is_clear "暂无待处理任务%s"
|
|
22
|
+
_i18n_set en backlog.blocked " %sBlocked"
|
|
23
|
+
_i18n_set zh backlog.blocked "已阻塞 (%s)%s"
|
|
24
|
+
_i18n_set en backlog.deferred " %sDeferred"
|
|
25
|
+
_i18n_set zh backlog.deferred "已推迟 (%s)%s"
|
|
26
|
+
_i18n_set en backlog.unknown_status " %s? Unknown Status"
|
|
27
|
+
_i18n_set zh backlog.unknown_status "未知状态 (%s)%s"
|
|
28
|
+
_i18n_set en backlog.fix_roll_backlog_block_defer_unblock " %s Fix: roll backlog block/defer/unblock <pattern>"
|
|
29
|
+
_i18n_set zh backlog.fix_roll_backlog_block_defer_unblock "运行命令修正状态%s"
|
|
30
|
+
_i18n_set en backlog.ai " %s╔══ 🤖 AI"
|
|
31
|
+
_i18n_set zh backlog.ai "自治 — 三层 × 四道防线 ══════════════════════════╗%s"
|
|
32
|
+
_i18n_set en backlog. " %s─"
|
|
33
|
+
_i18n_set zh backlog. "四道防线 ─%s"
|
|
34
|
+
_i18n_set en backlog.4_dod_see_us_auto_030 " %s"
|
|
35
|
+
_i18n_set zh backlog.4_dod_see_us_auto_030 "其余 4 项 DoD 信号源待接入:see US-AUTO-030/031, IDEA-013/014%s\n"
|
|
36
|
+
_i18n_set en backlog.n " %s👤"
|
|
37
|
+
_i18n_set zh backlog.n "需要你介入%s\n"
|
|
38
|
+
_i18n_set en backlog.ai_2 " %s✓ AI"
|
|
39
|
+
_i18n_set zh backlog.ai_2 "自驱中 — 无需介入%s\n"
|
|
40
|
+
_i18n_set en backlog.setup_f_machine_first_time_install " setup [-f] [Machine] First-time install or re-sync"
|
|
41
|
+
_i18n_set zh backlog.setup_f_machine_first_time_install "首次安装或重新同步"
|
|
42
|
+
_i18n_set en backlog.update_upgrade_npm_install_latest_re " update [Upgrade] npm install latest + re-sync"
|
|
43
|
+
_i18n_set zh backlog.update_upgrade_npm_install_latest_re "一键升级到最新版"
|
|
44
|
+
_i18n_set en backlog.init_project_create_agents_md_roll " init [Project] Create AGENTS.md + .roll/backlog.md + .roll/features/"
|
|
45
|
+
_i18n_set zh backlog.init_project_create_agents_md_roll "初始化项目工作流文件"
|
|
46
|
+
_i18n_set en backlog.offboard_confirm_project_reverse_a_previous " offboard [--confirm] [Project] Reverse a previous \`roll init --apply\` (dry-run by default)"
|
|
47
|
+
_i18n_set zh backlog.offboard_confirm_project_reverse_a_previous "卸载本项目的 Roll 痕迹"
|
|
48
|
+
_i18n_set en backlog.status_diagnostic_show_current_state " status [Diagnostic] Show current state"
|
|
49
|
+
_i18n_set zh backlog.status_diagnostic_show_current_state "显示当前状态"
|
|
50
|
+
_i18n_set en backlog.peer_peer_review_cross_agent_negotiation " peer [Peer Review] Cross-agent negotiation"
|
|
51
|
+
_i18n_set zh backlog.peer_peer_review_cross_agent_negotiation "跨 Agent 协商对审"
|
|
52
|
+
_i18n_set en backlog.loop_on_off_now_status_monitor " loop <on|off|now|status|monitor|resume|reset> [Autonomous] Manage scheduled BACKLOG executor"
|
|
53
|
+
_i18n_set zh backlog.loop_on_off_now_status_monitor "管理自主执行循环"
|
|
54
|
+
_i18n_set en backlog.brief_digest_show_latest_owner_brief " brief [Digest] Show latest owner brief (regenerate if stale)"
|
|
55
|
+
_i18n_set zh backlog.brief_digest_show_latest_owner_brief "展示最新简报"
|
|
56
|
+
_i18n_set en backlog.backlog_view_show_pending_tasks_todo " backlog [View] Show pending tasks (Todo/Blocked/Deferred/Unknown)"
|
|
57
|
+
_i18n_set zh backlog.backlog_view_show_pending_tasks_todo "显示任务清单"
|
|
58
|
+
_i18n_set en backlog.backlog_block_pat_reason_mark_matching " backlog block <pat> [reason] Mark matching items as 🔒 Blocked"
|
|
59
|
+
_i18n_set zh backlog.backlog_block_pat_reason_mark_matching "标记为已阻塞"
|
|
60
|
+
_i18n_set en backlog.backlog_defer_pat_reason_mark_matching " backlog defer <pat> [reason] Mark matching items as ⏸ Deferred"
|
|
61
|
+
_i18n_set zh backlog.backlog_defer_pat_reason_mark_matching "标记为已推迟"
|
|
62
|
+
_i18n_set en backlog.backlog_unblock_pat_restore_matching_items " backlog unblock <pat> Restore matching items to 📋 Todo"
|
|
63
|
+
_i18n_set zh backlog.backlog_unblock_pat_restore_matching_items "恢复为待处理"
|
|
64
|
+
_i18n_set en backlog.backlog_unstick_dry_run_revert_in " backlog unstick [--dry-run] Revert In Progress whose cycle failed >4h ago"
|
|
65
|
+
_i18n_set zh backlog.backlog_unstick_dry_run_revert_in "自愈卡住的进行中任务"
|
|
66
|
+
_i18n_set en backlog.backlog_lint_check_descriptions_for_path " backlog lint Check descriptions for path/function/filename violations"
|
|
67
|
+
_i18n_set zh backlog.backlog_lint_check_descriptions_for_path "检查描述合规"
|
|
68
|
+
_i18n_set en backlog.agent_use_name_list_config_per " agent [use <name>|list] [Config] Per-project agent selection"
|
|
69
|
+
_i18n_set zh backlog.agent_use_name_list_config_per "切换项目 agent"
|
|
70
|
+
_i18n_set en backlog.ci_wait_ci_show_or_wait " ci [--wait] [CI] Show or wait for current commit's CI status"
|
|
71
|
+
_i18n_set zh backlog.ci_wait_ci_show_or_wait "查看/等待 CI 状态"
|
|
72
|
+
_i18n_set en backlog.review_pr_number_pr_review_ai " review-pr <number> [PR Review] AI-powered code review for a PR AI"
|
|
73
|
+
_i18n_set zh backlog.review_pr_number_pr_review_ai "代码评审"
|
|
74
|
+
_i18n_set en backlog.examples "Examples /"
|
|
75
|
+
_i18n_set zh backlog.examples "示例:"
|
|
76
|
+
_i18n_set en backlog.roll_setup_new_machine_first_time " roll setup # New machine: first-time install"
|
|
77
|
+
_i18n_set zh backlog.roll_setup_new_machine_first_time "新机器首次安装"
|
|
78
|
+
_i18n_set en backlog.roll_update_upgrade_to_latest_version " roll update # Upgrade to latest version + re-sync"
|
|
79
|
+
_i18n_set zh backlog.roll_update_upgrade_to_latest_version "升级到最新版并重新同步"
|
|
80
|
+
_i18n_set en backlog.roll_init_new_or_re_merge " roll init # New or re-merge project (run in project)"
|
|
81
|
+
_i18n_set zh backlog.roll_init_new_or_re_merge "新建或重新合并(项目目录)"
|
|
82
|
+
_i18n_set en backlog.roll_loop_on_enable_autonomous_loop " roll loop on # Enable autonomous loop (cron)"
|
|
83
|
+
_i18n_set zh backlog.roll_loop_on_enable_autonomous_loop "启用自主执行循环"
|
|
84
|
+
_i18n_set en backlog.roll_brief_show_latest_brief " roll brief # Show latest brief"
|
|
85
|
+
_i18n_set zh backlog.roll_brief_show_latest_brief "查看最新简报"
|
|
86
|
+
_i18n_set en backlog.roll_backlog_show_pending_blocked_deferred " roll backlog # Show pending/blocked/deferred items"
|
|
87
|
+
_i18n_set zh backlog.roll_backlog_show_pending_blocked_deferred "查看待处理任务"
|
|
88
|
+
_i18n_set en backlog.roll_backlog_defer_us_doc " roll backlog defer US-DOC '"
|
|
89
|
+
_i18n_set zh backlog.roll_backlog_defer_us_doc "过早引入' # Defer all US-DOC-* items 推迟一类任务"
|
|
90
|
+
_i18n_set en backlog.roll_backlog_block_us_hw_001 " roll backlog block US-HW-001 '"
|
|
91
|
+
_i18n_set zh backlog.roll_backlog_block_us_hw_001 "硬件未到货' # Block a specific item 标记阻塞"
|
|
92
|
+
_i18n_set en backlog.roll_agent_use_kimi_switch_this " roll agent use kimi # Switch this project to kimi"
|
|
93
|
+
_i18n_set zh backlog.roll_agent_use_kimi_switch_this "切换当前项目到 kimi"
|
|
94
|
+
|
|
95
|
+
_i18n_set en backlog.usage_roll_command_options "Usage: roll <command> [options]"
|
|
96
|
+
_i18n_set zh backlog.usage_roll_command_options "用法: roll <command> [options]"
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en brief.no_brief_yet_generating "No brief yet — generating..."
|
|
3
|
+
_i18n_set zh brief.no_brief_yet_generating "暂无简报,正在生成..."
|
|
4
|
+
_i18n_set en brief.brief_is_age_3600_h_old "Brief is %sh old — regenerating..."
|
|
5
|
+
_i18n_set zh brief.brief_is_age_3600_h_old "简报已 %s 小时未更新,重新生成..."
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en changelog.unknown_subcommand "Unknown subcommand: %s"
|
|
3
|
+
_i18n_set zh changelog.unknown_subcommand "未知子命令:%s"
|
|
4
|
+
_i18n_set en changelog.generate_help "Generate draft ## Unreleased entries from backlog ✅ Done stories"
|
|
5
|
+
_i18n_set zh changelog.generate_help "从 backlog 已完成的 Story 生成 ## Unreleased 草稿"
|
package/lib/i18n/ci.sh
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en ci.usage_roll_ci_wait_timeout_n "Usage: roll ci [--wait] [--timeout=N]"
|
|
3
|
+
_i18n_set zh ci.usage_roll_ci_wait_timeout_n "用法: roll ci [--wait] [--timeout=N]"
|
|
4
|
+
_i18n_set en ci.gh_not_installed_gh "gh not installed gh"
|
|
5
|
+
_i18n_set zh ci.gh_not_installed_gh "未安装"
|
|
6
|
+
_i18n_set en ci.not_a_git_repo "Not a git repo"
|
|
7
|
+
_i18n_set zh ci.not_a_git_repo "非 git 仓库"
|
|
8
|
+
_i18n_set en ci.no_ci_runs_for_git_rev "No CI runs for %s"
|
|
9
|
+
_i18n_set zh ci.no_ci_runs_for_git_rev "%s 无 CI 记录"
|
|
10
|
+
_i18n_set en ci.gate_enabled_exiting_1 " %s violations — --gate enabled, exiting 1"
|
|
11
|
+
_i18n_set zh ci.gate_enabled_exiting_1 " %s 条违规 — --gate enabled, exiting 1"
|
|
12
|
+
_i18n_set en ci.phase_1_warn_only_not_blocking " %s violations — Phase 1: warn-only, not blocking"
|
|
13
|
+
_i18n_set zh ci.phase_1_warn_only_not_blocking " %s 条违规 — Phase 1: warn-only, not blocking"
|
|
14
|
+
_i18n_set en ci.no_violations " No violations"
|
|
15
|
+
_i18n_set zh ci.no_violations "无违规"
|
|
File without changes
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Roll i18n catalog — doctor command (US-I18N-002).
|
|
3
|
+
|
|
4
|
+
_i18n_set en doctor.stale_plists "Stale launchd plists"
|
|
5
|
+
_i18n_set zh doctor.stale_plists "无效的 launchd 服务"
|
|
6
|
+
_i18n_set en doctor.stale_plists_cleanup "Path is stale, clean up with"
|
|
7
|
+
_i18n_set zh doctor.stale_plists_cleanup "路径已失效,可清理"
|
|
8
|
+
|
|
9
|
+
_i18n_set en doctor.pr_review_extras "PR review extras"
|
|
10
|
+
_i18n_set zh doctor.pr_review_extras "PR 评审两档开关"
|
|
11
|
+
|
|
12
|
+
_i18n_set en doctor.pr_double_gate_enabled "✅ AI review double gate enabled"
|
|
13
|
+
_i18n_set zh doctor.pr_double_gate_enabled "✅ AI 评审双门已启用"
|
|
14
|
+
_i18n_set en doctor.pr_double_gate_disabled "⚪ AI review double gate not enabled"
|
|
15
|
+
_i18n_set zh doctor.pr_double_gate_disabled "⚪ 双门未启用"
|
|
16
|
+
_i18n_set en doctor.pr_double_gate_unknown "⚪ AI review double gate state unknown — requires gh auth"
|
|
17
|
+
_i18n_set zh doctor.pr_double_gate_unknown "⚪ 状态未知(需要 gh auth)"
|
|
18
|
+
|
|
19
|
+
_i18n_set en doctor.pr_event_enabled "✅ Event-driven PR review installed"
|
|
20
|
+
_i18n_set zh doctor.pr_event_enabled "✅ 事件驱动 PR 评审已安装"
|
|
21
|
+
_i18n_set en doctor.pr_event_disabled "⚪ Event-driven PR review not installed"
|
|
22
|
+
_i18n_set zh doctor.pr_event_disabled "⚪ 事件驱动 PR 评审未安装"
|
|
23
|
+
|
|
24
|
+
_i18n_set en doctor.pr_event_optional "Optional — enable event-driven PR review (seconds-fast, GitHub only)."
|
|
25
|
+
_i18n_set zh doctor.pr_event_optional "可选 —— 启用事件驱动 PR 评审(秒级响应,仅限 GitHub)。"
|
|
26
|
+
_i18n_set en doctor.pr_event_without "Without this, Roll reviews PRs each loop cycle (~1h). With it,"
|
|
27
|
+
_i18n_set zh doctor.pr_event_without "不安装也行 — loop 每轮会兜底评审。安装后"
|
|
28
|
+
_i18n_set en doctor.pr_event_without_zh "contributors get AI feedback on PR open/update immediately."
|
|
29
|
+
_i18n_set zh doctor.pr_event_without_zh "PR 一开即触发 AI 评审。"
|
|
30
|
+
_i18n_set en doctor.pr_event_secret "Then set the API key secret for your configured agent in GitHub repo settings."
|
|
31
|
+
_i18n_set zh doctor.pr_event_secret "然后在 GitHub 仓库设置中添加你配置的 agent 对应的 API key secret。"
|
|
32
|
+
|
|
33
|
+
_i18n_set en doctor.agent_detection "Agent detection"
|
|
34
|
+
_i18n_set zh doctor.agent_detection "Agent 检测"
|
|
35
|
+
_i18n_set en doctor.agent_installed "CLI on PATH"
|
|
36
|
+
_i18n_set zh doctor.agent_installed "CLI 可用"
|
|
37
|
+
_i18n_set en doctor.agent_missing "CLI not found"
|
|
38
|
+
_i18n_set zh doctor.agent_missing "CLI 未安装"
|
|
39
|
+
_i18n_set en doctor.agent_dir_exists "config dir exists"
|
|
40
|
+
_i18n_set zh doctor.agent_dir_exists "配置目录存在"
|
|
41
|
+
_i18n_set en doctor.agent_dir_missing "config dir missing"
|
|
42
|
+
_i18n_set zh doctor.agent_dir_missing "配置目录不存在"
|
|
43
|
+
_i18n_set en doctor.agent_primary_label "primary"
|
|
44
|
+
_i18n_set zh doctor.agent_primary_label "默认"
|
|
File without changes
|
package/lib/i18n/init.sh
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Roll i18n catalog — init command (US-I18N-002).
|
|
3
|
+
|
|
4
|
+
_i18n_set en init.onboard_cancelled "Onboard cancelled (Ctrl-C)."
|
|
5
|
+
_i18n_set zh init.onboard_cancelled "Onboard 已取消(Ctrl-C)。"
|
|
6
|
+
_i18n_set en init.onboard_agent_exited "Agent '%s' exited with code %s."
|
|
7
|
+
_i18n_set zh init.onboard_agent_exited "agent '%s' 异常退出 (code %s)。"
|
|
8
|
+
_i18n_set en init.onboard_next_step "Next step 下一步:"
|
|
9
|
+
_i18n_set zh init.onboard_next_step "下一步 Next step:"
|
|
10
|
+
_i18n_set en init.onboard_retry "retry the same agent: roll init"
|
|
11
|
+
_i18n_set zh init.onboard_retry "再试一次同一个 agent: roll init"
|
|
12
|
+
_i18n_set en init.onboard_retry_en "retry the same agent: roll init"
|
|
13
|
+
_i18n_set zh init.onboard_retry_en "retry the same agent: roll init"
|
|
14
|
+
_i18n_set en init.onboard_switch "switch to another: ROLL_ONBOARD_AGENT=<name> roll init"
|
|
15
|
+
_i18n_set zh init.onboard_switch "换一个 agent: ROLL_ONBOARD_AGENT=<name> roll init"
|
|
16
|
+
_i18n_set en init.onboard_switch_en "switch to another: ROLL_ONBOARD_AGENT=<name> roll init"
|
|
17
|
+
_i18n_set zh init.onboard_switch_en "switch to another: ROLL_ONBOARD_AGENT=<name> roll init"
|
|
18
|
+
|
|
19
|
+
_i18n_set en init.no_templates_found_run_roll_setup "No templates found. Run 'roll setup' first."
|
|
20
|
+
_i18n_set zh init.no_templates_found_run_roll_setup "未找到模板,请先运行 'roll setup'。"
|
|
21
|
+
_i18n_set en init.unknown_flag_1 "Unknown flag: %s"
|
|
22
|
+
_i18n_set zh init.unknown_flag_1 "未知参数: %s"
|
|
23
|
+
_i18n_set en init.no_templates_found_run_roll_setup_2 "No templates found. Run 'roll setup' first."
|
|
24
|
+
_i18n_set zh init.no_templates_found_run_roll_setup_2 "未找到模板,请先运行 'roll setup'。"
|
|
25
|
+
_i18n_set en init.detected_legacy_project "Detected: legacy project (%s)"
|
|
26
|
+
_i18n_set zh init.detected_legacy_project "检测到遗留项目"
|
|
27
|
+
_i18n_set en init.onboarding " Onboarding"
|
|
28
|
+
_i18n_set zh init.onboarding "需要一个 AI agent 来读懂这个项目。检测到:"
|
|
29
|
+
_i18n_set en init.launching "Launching %s…"
|
|
30
|
+
_i18n_set zh init.launching "正在启动 %s…"
|
|
31
|
+
_i18n_set en init.no_input_received_aborting_onboard "No input received. Aborting onboard."
|
|
32
|
+
_i18n_set zh init.no_input_received_aborting_onboard "未收到输入,已取消 onboard。"
|
|
33
|
+
_i18n_set en init.invalid_choice "Invalid choice: '%s'."
|
|
34
|
+
_i18n_set zh init.invalid_choice "无效选择。"
|
|
35
|
+
_i18n_set en init.agent_has_no_interactive_mode_wired "Agent '%s' has no interactive mode wired up. agent '%s'"
|
|
36
|
+
_i18n_set zh init.agent_has_no_interactive_mode_wired "暂未接入 interactive 模式。"
|
|
37
|
+
_i18n_set en init.agent "agent"
|
|
38
|
+
_i18n_set zh init.agent "正常退出但未生成 .roll/onboard-plan.yaml。"
|
|
39
|
+
_i18n_set en init.plan_written_running_apply "Plan written. Running apply…"
|
|
40
|
+
_i18n_set zh init.plan_written_running_apply "已写入 plan,正在执行 apply…"
|
|
41
|
+
_i18n_set en init.no_onboard_plan_found_at_roll "No onboard plan found at .roll/onboard-plan.yaml"
|
|
42
|
+
_i18n_set zh init.no_onboard_plan_found_at_roll "未找到 onboard 计划。"
|
|
43
|
+
_i18n_set en init.plan_validator_missing "Plan validator missing: %s"
|
|
44
|
+
_i18n_set zh init.plan_validator_missing "校验器缺失。"
|
|
45
|
+
_i18n_set en init.plan_validation_failed_see_errors_above "Plan validation failed. See errors above. Plan"
|
|
46
|
+
_i18n_set zh init.plan_validation_failed_see_errors_above "校验失败。"
|
|
47
|
+
_i18n_set en init.applying_onboard_plan "Applying onboard plan..."
|
|
48
|
+
_i18n_set zh init.applying_onboard_plan "正在应用 onboard 计划..."
|
|
49
|
+
_i18n_set en init.added_roll_to_gitignore "Added .roll/ to .gitignore"
|
|
50
|
+
_i18n_set zh init.added_roll_to_gitignore "已将 .roll/ 加入 .gitignore"
|
|
51
|
+
_i18n_set en init.syncing_conventions_to_ai_tools "Syncing conventions to AI tools..."
|
|
52
|
+
_i18n_set zh init.syncing_conventions_to_ai_tools "正在同步约定到 AI 工具..."
|
|
53
|
+
_i18n_set en init.onboard_apply_complete_onboard "Onboard apply complete. Onboard"
|
|
54
|
+
_i18n_set zh init.onboard_apply_complete_onboard "应用完成。"
|
|
55
|
+
|
|
56
|
+
# US-ONBOARD-017: render the three analysis sections + gated BACKLOG seeding.
|
|
57
|
+
_i18n_set en init.onboard_rendered "Rendered: %s"
|
|
58
|
+
_i18n_set zh init.onboard_rendered "已生成:%s"
|
|
59
|
+
_i18n_set en init.onboard_render_failed "Could not render analysis markdown (skipping); onboard continues."
|
|
60
|
+
_i18n_set zh init.onboard_render_failed "分析 markdown 生成失败(已跳过),onboard 继续。"
|
|
61
|
+
_i18n_set en init.onboard_seed_preview_story "About to seed %s candidate stories to BACKLOG:"
|
|
62
|
+
_i18n_set zh init.onboard_seed_preview_story "准备向 BACKLOG 播种 %s 条候选 story:"
|
|
63
|
+
_i18n_set en init.onboard_seed_preview_fix "About to seed %s HIGH-severity risks as FIX entries:"
|
|
64
|
+
_i18n_set zh init.onboard_seed_preview_fix "准备将 %s 条高严重度风险播种为 FIX 条目:"
|
|
65
|
+
_i18n_set en init.onboard_seed_prompt "Seed these to BACKLOG?"
|
|
66
|
+
_i18n_set zh init.onboard_seed_prompt "把这些播种到 BACKLOG 吗?"
|
|
67
|
+
_i18n_set en init.onboard_seed_cancelled "Seeding cancelled. The analysis markdown was still generated."
|
|
68
|
+
_i18n_set zh init.onboard_seed_cancelled "已取消播种。分析 markdown 仍已生成。"
|
|
69
|
+
_i18n_set en init.onboard_seed_noninteractive "Non-interactive stdin — skipping BACKLOG seeding (markdown still generated)."
|
|
70
|
+
_i18n_set zh init.onboard_seed_noninteractive "stdin 非交互 —— 跳过 BACKLOG 播种(markdown 仍已生成)。"
|
|
71
|
+
_i18n_set en init.onboard_seeded_stories "Seeded %s candidate stories to BACKLOG."
|
|
72
|
+
_i18n_set zh init.onboard_seeded_stories "已向 BACKLOG 播种 %s 条候选 story。"
|
|
73
|
+
_i18n_set en init.onboard_seeded_fixes "Seeded %s candidate FIX entries to BACKLOG."
|
|
74
|
+
_i18n_set zh init.onboard_seeded_fixes "已向 BACKLOG 播种 %s 条候选 FIX。"
|
|
75
|
+
_i18n_set en init.onboard_seed_no_backlog "No .roll/backlog.md (backlog scope not approved) — skipping seeding."
|
|
76
|
+
_i18n_set zh init.onboard_seed_no_backlog "无 .roll/backlog.md(未批准 backlog scope)—— 跳过播种。"
|
|
77
|
+
|
|
78
|
+
_i18n_set en init.no_ai_agent_detected_install_one "No AI agent detected. Install one (e.g., claude, codex, kimi) and try again."
|
|
79
|
+
_i18n_set zh init.no_ai_agent_detected_install_one "未检测到 AI agent。请先安装 (如 claude / codex / kimi) 后重试。"
|
|
80
|
+
_i18n_set en init.the_process_will_use_your_agent "The process will use your agent to call models. Token cost is on your own account."
|
|
81
|
+
_i18n_set zh init.the_process_will_use_your_agent " 后续过程会使用你的 agent 调用模型,token 消耗在你自己的账户上。"
|
|
82
|
+
_i18n_set en init.code_and_conversations_stay_in_your "Code and conversations stay in your agent tool — Roll does not upload anything."
|
|
83
|
+
_i18n_set zh init.code_and_conversations_stay_in_your " 代码与对话都留在你的 agent 工具里 —— Roll 本身不上传任何内容。"
|
|
84
|
+
_i18n_set en init.use_exit_to_end_or_ctrl "Use /exit to end (or Ctrl-C). Roll will auto-apply after exit."
|
|
85
|
+
_i18n_set zh init.use_exit_to_end_or_ctrl " 在 agent 内用 /exit 结束(或 Ctrl-C)。退出后 Roll 会自动衔接 apply。"
|
|
86
|
+
_i18n_set en init.pick_an_agent "Pick an agent:"
|
|
87
|
+
_i18n_set zh init.pick_an_agent " 选一个 agent Pick an agent:"
|
|
88
|
+
_i18n_set en init.en_roll_init "[EN: 对话完成后再次运行 \`roll init\` 即可。...]"
|
|
89
|
+
_i18n_set zh init.en_roll_init " 对话完成后再次运行 \`roll init\` 即可。"
|
|
90
|
+
_i18n_set en init.en_ai_agent_onboard_plan_ap "[EN: 请先在 AI agent 里运行 \%s-onboard 生成 plan,再回来执行 ap...]"
|
|
91
|
+
_i18n_set zh init.en_ai_agent_onboard_plan_ap " 请先在 AI agent 里运行 \%s-onboard 生成 plan,再回来执行 apply。"
|
package/lib/i18n/lang.sh
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en lang.language_set_to "Language set to %s"
|
|
3
|
+
_i18n_set zh lang.language_set_to "语言已设置为 %s"
|
|
4
|
+
_i18n_set en lang.language_preference_cleared_will_follow_locale "Language preference cleared (will follow locale)"
|
|
5
|
+
_i18n_set zh lang.language_preference_cleared_will_follow_locale "语言偏好已清除(跟随系统 locale)"
|
|
6
|
+
_i18n_set en lang.unknown_language "Unknown language: %s"
|
|
7
|
+
_i18n_set zh lang.unknown_language "未知语言: %s"
|
|
8
|
+
|
|
9
|
+
_i18n_set en lang.options_zh_en_reset "Options: zh, en, --reset"
|
|
10
|
+
_i18n_set zh lang.options_zh_en_reset " 可选值: zh, en, --reset"
|
package/lib/i18n/loop.sh
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en loop.loop_already_enabled_for_this_project "Loop already enabled for this project"
|
|
3
|
+
_i18n_set zh loop.loop_already_enabled_for_this_project "当前项目 loop 已启用"
|
|
4
|
+
_i18n_set en loop.loop_enabled "Loop enabled"
|
|
5
|
+
_i18n_set zh loop.loop_enabled "已启用"
|
|
6
|
+
_i18n_set en loop.roll_loop_s_active_02d_00 " • roll-loop %s active %02d:00–%02d:00 %s(窗口 %02d:00–%02d:00)"
|
|
7
|
+
_i18n_set zh loop.roll_loop_s_active_02d_00 " • roll-loop %s 有效窗口 %02d:00–%02d:00 %s(active %02d:00–%02d:00)"
|
|
8
|
+
_i18n_set en loop.roll_dream_daily_at_02d_02d " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
|
|
9
|
+
_i18n_set zh loop.roll_dream_daily_at_02d_02d " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
|
|
10
|
+
_i18n_set en loop.roll_brief_daily_at_02d_02d " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
|
|
11
|
+
_i18n_set zh loop.roll_brief_daily_at_02d_02d " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
|
|
12
|
+
_i18n_set en loop.loop_already_enabled_for_this_project_2 "Loop already enabled for this project"
|
|
13
|
+
_i18n_set zh loop.loop_already_enabled_for_this_project_2 "当前项目 loop 已启用"
|
|
14
|
+
_i18n_set en loop.loop_enabled_2 "Loop enabled"
|
|
15
|
+
_i18n_set zh loop.loop_enabled_2 "已启用"
|
|
16
|
+
_i18n_set en loop.roll_loop_s_active_02d_00_2 " • roll-loop %s active %02d:00–%02d:00 %s(窗口 %02d:00–%02d:00)"
|
|
17
|
+
_i18n_set zh loop.roll_loop_s_active_02d_00_2 " • roll-loop %s 有效窗口 %02d:00–%02d:00 %s(active %02d:00–%02d:00)"
|
|
18
|
+
_i18n_set en loop.roll_dream_daily_at_02d_02d_2 " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
|
|
19
|
+
_i18n_set zh loop.roll_dream_daily_at_02d_02d_2 " • roll-.dream daily at %02d:%02d 每天 %02d:%02d"
|
|
20
|
+
_i18n_set en loop.roll_brief_daily_at_02d_02d_2 " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
|
|
21
|
+
_i18n_set zh loop.roll_brief_daily_at_02d_02d_2 " • roll-brief daily at %02d:%02d 每天 %02d:%02d"
|
|
22
|
+
_i18n_set en loop.loop_not_enabled_for_this_project "Loop not enabled for this project"
|
|
23
|
+
_i18n_set zh loop.loop_not_enabled_for_this_project "当前项目 loop 未启用"
|
|
24
|
+
_i18n_set en loop.loop_disabled "Loop disabled"
|
|
25
|
+
_i18n_set zh loop.loop_disabled "已停用"
|
|
26
|
+
_i18n_set en loop.loop_not_enabled_for_this_project_2 "Loop not enabled for this project"
|
|
27
|
+
_i18n_set zh loop.loop_not_enabled_for_this_project_2 "当前项目 loop 未启用"
|
|
28
|
+
_i18n_set en loop.loop_disabled_2 "Loop disabled"
|
|
29
|
+
_i18n_set zh loop.loop_disabled_2 "已停用"
|
|
30
|
+
_i18n_set en loop.loop_already_running_loop "Loop already running loop"
|
|
31
|
+
_i18n_set zh loop.loop_already_running_loop "正在运行中"
|
|
32
|
+
_i18n_set en loop.stale_running_state_detected_healing_before "Stale running state detected — healing before new cycle"
|
|
33
|
+
_i18n_set zh loop.stale_running_state_detected_healing_before "检测到孤儿状态,正在修复..."
|
|
34
|
+
_i18n_set en loop.starting_new_loop_cycle "Starting new loop cycle..."
|
|
35
|
+
_i18n_set zh loop.starting_new_loop_cycle "正在启动新的循环..."
|
|
36
|
+
_i18n_set en loop.generating_test_runner_agent "Generating test runner (agent: %s)..."
|
|
37
|
+
_i18n_set zh loop.generating_test_runner_agent "正在生成测试启动脚本 (agent: %s)..."
|
|
38
|
+
_i18n_set en loop.starting_smoke_test_agent "Starting smoke test (agent: %s)..."
|
|
39
|
+
_i18n_set zh loop.starting_smoke_test_agent "正在运行 smoke 测试 (agent: %s)..."
|
|
40
|
+
_i18n_set en loop.smoke_test_passed_s_agent_smoke "Smoke test passed (%ss, agent: %s) smoke"
|
|
41
|
+
_i18n_set zh loop.smoke_test_passed_s_agent_smoke "测试通过 (%s秒, agent: %s)"
|
|
42
|
+
_i18n_set en loop.smoke_test_failed_exit_s_agent "Smoke test failed (exit %s, %ss, agent: %s) smoke"
|
|
43
|
+
_i18n_set zh loop.smoke_test_failed_exit_s_agent "测试失败 (退出码 %s, %ss, agent: %s)"
|
|
44
|
+
_i18n_set en loop.loop_not_enabled_nothing_to_pause "Loop not enabled — nothing to pause loop"
|
|
45
|
+
_i18n_set zh loop.loop_not_enabled_nothing_to_pause "未启用,无需暂停"
|
|
46
|
+
_i18n_set en loop.loop_paused "Loop paused"
|
|
47
|
+
_i18n_set zh loop.loop_paused "已暂停 run: roll loop resume"
|
|
48
|
+
_i18n_set en loop.loop_resumed "Loop resumed"
|
|
49
|
+
_i18n_set zh loop.loop_resumed "已恢复"
|
|
50
|
+
_i18n_set en loop.no_loop_state_found_nothing_to "No loop state found — nothing to resume"
|
|
51
|
+
_i18n_set zh loop.no_loop_state_found_nothing_to "未找到 loop 状态,无需恢复"
|
|
52
|
+
_i18n_set en loop.loop_already_running_loop_2 "Loop already running loop"
|
|
53
|
+
_i18n_set zh loop.loop_already_running_loop_2 "正在运行中"
|
|
54
|
+
_i18n_set en loop.resuming_loop_from_last_state "Resuming loop from last state..."
|
|
55
|
+
_i18n_set zh loop.resuming_loop_from_last_state "正在从上次状态恢复..."
|
|
56
|
+
_i18n_set en loop.loop_state_cleared_will_start_fresh "Loop state cleared — will start fresh on next run loop"
|
|
57
|
+
_i18n_set zh loop.loop_state_cleared_will_start_fresh "状态已清除,下次运行将重新开始"
|
|
58
|
+
_i18n_set en loop.no_loop_state_to_clear "No loop state to clear"
|
|
59
|
+
_i18n_set zh loop.no_loop_state_to_clear "无 loop 状态可清除"
|
|
60
|
+
_i18n_set en loop.muted_auto_attach_disabled "🔇 muted — auto-attach disabled"
|
|
61
|
+
_i18n_set zh loop.muted_auto_attach_disabled "已静音,自动弹窗已关闭"
|
|
62
|
+
_i18n_set en loop.unmuted_auto_attach_live "🔔 unmuted — auto-attach live"
|
|
63
|
+
_i18n_set zh loop.unmuted_auto_attach_live "已恢复,自动弹窗已开启"
|
|
64
|
+
_i18n_set en loop.tmux_not_installed_install_with_brew "tmux not installed — install with 'brew install tmux'"
|
|
65
|
+
_i18n_set zh loop.tmux_not_installed_install_with_brew "请先安装 tmux"
|
|
66
|
+
_i18n_set en loop.no_running_loop_session_for_this "No running loop session for this project"
|
|
67
|
+
_i18n_set zh loop.no_running_loop_session_for_this "当前项目无运行中的 loop"
|
|
68
|
+
_i18n_set en loop.no_runs_jsonl_yet "No runs.jsonl yet"
|
|
69
|
+
_i18n_set zh loop.no_runs_jsonl_yet "尚无运行记录"
|
|
70
|
+
_i18n_set en loop.cycle_not_found "Cycle not found: %s"
|
|
71
|
+
_i18n_set zh loop.cycle_not_found "未找到对应 cycle"
|
|
72
|
+
_i18n_set en loop.cycle_has_no_phases_data_pre "Cycle %s has no phases data (pre-US-LOOP-008)"
|
|
73
|
+
_i18n_set zh loop.cycle_has_no_phases_data_pre "无 phase 数据"
|
|
74
|
+
_i18n_set en loop.no_loop_runs_yet "No loop runs yet"
|
|
75
|
+
_i18n_set zh loop.no_loop_runs_yet "尚无 loop 运行记录"
|
|
76
|
+
_i18n_set en loop.jq_required_for_roll_loop_runs "jq required for 'roll loop runs'"
|
|
77
|
+
_i18n_set zh loop.jq_required_for_roll_loop_runs "需要 jq"
|
|
78
|
+
_i18n_set en loop.no_loop_runs_for_current_project "No loop runs for current project"
|
|
79
|
+
_i18n_set zh loop.no_loop_runs_for_current_project "当前项目尚无 loop 运行记录"
|
|
80
|
+
_i18n_set en loop.no_cycle_logs_found_run_roll "No cycle logs found — run 'roll loop now' first"
|
|
81
|
+
_i18n_set zh loop.no_cycle_logs_found_run_roll "尚无 cycle 日志 — 请先运行 'roll loop now'"
|
|
82
|
+
_i18n_set en loop.no_cycle_logs_found_run_roll_2 "No cycle logs found — run 'roll loop now' first"
|
|
83
|
+
_i18n_set zh loop.no_cycle_logs_found_run_roll_2 "尚无 cycle 日志 — 请先运行 'roll loop now'"
|
|
84
|
+
_i18n_set en loop.no_cycle_log_matching "No cycle log matching '%s'"
|
|
85
|
+
_i18n_set zh loop.no_cycle_log_matching "未找到匹配 '%s' 的 cycle 日志"
|
|
86
|
+
_i18n_set en loop.ambiguous_prefix_matches_logs "Ambiguous prefix '%s' — matches %s logs:"
|
|
87
|
+
_i18n_set zh loop.ambiguous_prefix_matches_logs "前缀 '%s' 匹配多个日志:"
|
|
88
|
+
_i18n_set en loop.gh_not_installed_skipping_ci_gate "gh not installed — skipping CI gate gh"
|
|
89
|
+
_i18n_set zh loop.gh_not_installed_skipping_ci_gate "未安装,跳过 CI 检查"
|
|
90
|
+
_i18n_set en loop.not_a_git_repo "Not a git repo"
|
|
91
|
+
_i18n_set zh loop.not_a_git_repo "非 git 仓库"
|
|
92
|
+
_i18n_set en loop.cannot_determine_github_repo_from_origin "Cannot determine GitHub repo from origin remote"
|
|
93
|
+
_i18n_set zh loop.cannot_determine_github_repo_from_origin "无法从 origin 推导 GitHub 仓库"
|
|
94
|
+
_i18n_set en loop.waiting_for_ci_on "Waiting for CI on %s (%s)"
|
|
95
|
+
_i18n_set zh loop.waiting_for_ci_on "等待 CI: %s"
|
|
96
|
+
_i18n_set en loop.gh_run_list_failed_for_gh "gh run list failed for %s@%s: %s gh"
|
|
97
|
+
_i18n_set zh loop.gh_run_list_failed_for_gh "调用失败"
|
|
98
|
+
_i18n_set en loop.no_open_pr_for_ci_not "No open PR for %s — CI not triggered; skipping CI gate"
|
|
99
|
+
_i18n_set zh loop.no_open_pr_for_ci_not "当前分支无 PR,CI 未触发,跳过"
|
|
100
|
+
_i18n_set en loop.no_ci_runs_found_yet_waiting " No CI runs found yet, waiting..."
|
|
101
|
+
_i18n_set zh loop.no_ci_runs_found_yet_waiting "尚无 CI 记录,等待触发..."
|
|
102
|
+
_i18n_set en loop.ci_running_ds_ci " ⏳ CI running (%ds)... CI"
|
|
103
|
+
_i18n_set zh loop.ci_running_ds_ci "运行中(%ds)...\n"
|
|
104
|
+
_i18n_set en loop.ci_failed_for_ci "CI failed for %s CI"
|
|
105
|
+
_i18n_set zh loop.ci_failed_for_ci "失败: %s"
|
|
106
|
+
_i18n_set en loop.ci_passed_ci "CI passed CI"
|
|
107
|
+
_i18n_set zh loop.ci_passed_ci "通过"
|
|
108
|
+
_i18n_set en loop.ci_timed_out_after_s_ci "CI timed out after %ss CI"
|
|
109
|
+
_i18n_set zh loop.ci_timed_out_after_s_ci "等待超时(%ss)"
|
|
110
|
+
_i18n_set en loop.pre_run_ci_check_head_ci "Pre-run CI check: HEAD CI is red — refuse to build on broken base (%s) HEAD CI"
|
|
111
|
+
_i18n_set zh loop.pre_run_ci_check_head_ci "红,拒绝在破损的基础上构建"
|
|
112
|
+
_i18n_set en loop.services " %sServices"
|
|
113
|
+
_i18n_set zh loop.services "服务状态%s Agent: %s%s%s"
|
|
114
|
+
_i18n_set en loop.queue " %sQueue"
|
|
115
|
+
_i18n_set zh loop.queue "待处理队列%s"
|
|
116
|
+
_i18n_set en loop.log_tail " %sLog Tail"
|
|
117
|
+
_i18n_set zh loop.log_tail "实时日志%s (~/.shared/roll/loop/launchd.log, last 10 lines)"
|
|
118
|
+
_i18n_set en loop.cycle_events " %sCycle Events"
|
|
119
|
+
_i18n_set zh loop.cycle_events "事件流%s (last 10)"
|
|
120
|
+
|
|
121
|
+
_i18n_set en loop.svc_enabled "● enabled"
|
|
122
|
+
_i18n_set zh loop.svc_enabled "● 已启用"
|
|
123
|
+
_i18n_set en loop.svc_installed_off "⚠ installed/off"
|
|
124
|
+
_i18n_set zh loop.svc_installed_off "⚠ 已安装未启用"
|
|
125
|
+
_i18n_set en loop.svc_not_installed "○ not installed"
|
|
126
|
+
_i18n_set zh loop.svc_not_installed "○ 未安装"
|
|
127
|
+
_i18n_set en loop.svc_enabled_run "run: roll loop on"
|
|
128
|
+
_i18n_set zh loop.svc_enabled_run "运行: roll loop on"
|
|
129
|
+
_i18n_set en loop.svc_not_installed_run "run: roll setup"
|
|
130
|
+
_i18n_set zh loop.svc_not_installed_run "运行: roll setup"
|
|
131
|
+
|
|
132
|
+
_i18n_set en loop.observing_tmux_session_terminal_popup_stream "Observing: tmux session + terminal popup + stream-json event stream"
|
|
133
|
+
_i18n_set zh loop.observing_tmux_session_terminal_popup_stream "观察:tmux 会话 + 终端弹窗 + stream-json 事件流"
|
|
134
|
+
|
|
135
|
+
_i18n_set en loop.pre_run_ci_red_base "HEAD CI is red — loop refused to build on a broken base"
|
|
136
|
+
_i18n_set zh loop.pre_run_ci_red_base "HEAD CI 红,loop 拒绝在破损的基础上构建"
|
|
137
|
+
_i18n_set en loop.ci_did_not_pass_story_kept_in_progress "CI did not pass — story kept as 🔨 In Progress"
|
|
138
|
+
_i18n_set zh loop.ci_did_not_pass_story_kept_in_progress "CI 未通过,故事保持进行中"
|
|
139
|
+
_i18n_set en loop.pr_rebased_within_24h_no_ci "PR #%s rebased %s× within 24h without CI resolution — possible workflow file error"
|
|
140
|
+
_i18n_set zh loop.pr_rebased_within_24h_no_ci "PR #%s rebase %s 次未解决(24h 内),可能是 workflow 文件错误"
|