@seanyao/roll 2026.524.2 → 2026.526.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 +38 -8
- package/README.md +4 -2
- package/bin/roll +1022 -442
- package/conventions/config.yaml +9 -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_render.cpython-314.pyc +0 -0
- package/lib/i18n/agent.sh +21 -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 +3 -0
- package/lib/i18n/ci.sh +15 -0
- package/lib/i18n/init.sh +52 -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 +16 -0
- package/lib/i18n/peer.sh +34 -0
- package/lib/i18n/peer_help.sh +21 -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/setup.sh +3 -0
- package/lib/i18n/shared.sh +74 -0
- package/lib/i18n/skills/roll-brief.sh +27 -0
- package/lib/i18n/skills/roll-fix.sh +39 -0
- package/lib/i18n/skills/roll-onboard.sh +17 -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 +19 -0
- package/lib/i18n/update.sh +7 -0
- package/lib/i18n.sh +85 -4
- package/lib/roll-home.py +55 -0
- package/lib/roll-loop-status.py +196 -19
- package/lib/roll-loop-story.py +191 -0
- package/lib/roll_render.py +15 -1
- package/lib/slides/components/README.md +117 -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/pitch.html +0 -0
- package/package.json +1 -1
- package/skills/roll-brief/SKILL.md +2 -2
- package/skills/roll-build/SKILL.md +40 -40
- package/skills/roll-fix/SKILL.md +22 -22
- package/skills/roll-loop/SKILL.md +26 -15
- package/skills/roll-onboard/SKILL.md +6 -6
package/conventions/config.yaml
CHANGED
|
@@ -13,3 +13,12 @@ sync_agy: ~/.gemini/GEMINI.md # Antigravity (agy) reuses the legacy ~/.gemini/
|
|
|
13
13
|
default_language: zh
|
|
14
14
|
default_project_type: fullstack
|
|
15
15
|
editor: ${EDITOR:-vim}
|
|
16
|
+
|
|
17
|
+
# --- Advanced ---
|
|
18
|
+
# Cross-machine loop record sync (optional).
|
|
19
|
+
# Set to a private git remote URL to share cycle history across machines.
|
|
20
|
+
# Each machine writes its own events file — no merge conflicts.
|
|
21
|
+
# Private repo strongly recommended: cycle records contain prompt text,
|
|
22
|
+
# file paths, and other potentially sensitive information.
|
|
23
|
+
#
|
|
24
|
+
# roll_records_remote: "git@github.com:you/roll-loop-records.git"
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/lib/i18n/agent.sh
CHANGED
|
@@ -0,0 +1,21 @@
|
|
|
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"
|
package/lib/i18n/alert.sh
CHANGED
|
@@ -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]"
|
package/lib/i18n/backlog.sh
CHANGED
|
@@ -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]"
|
package/lib/i18n/brief.sh
CHANGED
|
@@ -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 小时未更新,重新生成..."
|
package/lib/i18n/changelog.sh
CHANGED
package/lib/i18n/ci.sh
CHANGED
|
@@ -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 "无违规"
|
package/lib/i18n/init.sh
CHANGED
|
@@ -15,3 +15,55 @@ _i18n_set en init.onboard_switch "switch to another: ROLL_ONBOARD_AGENT=<na
|
|
|
15
15
|
_i18n_set zh init.onboard_switch "换一个 agent: ROLL_ONBOARD_AGENT=<name> roll init"
|
|
16
16
|
_i18n_set en init.onboard_switch_en "switch to another: ROLL_ONBOARD_AGENT=<name> roll init"
|
|
17
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
|
+
_i18n_set en init.no_ai_agent_detected_install_one "No AI agent detected. Install one (e.g., claude, codex, kimi) and try again."
|
|
57
|
+
_i18n_set zh init.no_ai_agent_detected_install_one "未检测到 AI agent。请先安装 (如 claude / codex / kimi) 后重试。"
|
|
58
|
+
_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."
|
|
59
|
+
_i18n_set zh init.the_process_will_use_your_agent " 后续过程会使用你的 agent 调用模型,token 消耗在你自己的账户上。"
|
|
60
|
+
_i18n_set en init.code_and_conversations_stay_in_your "Code and conversations stay in your agent tool — Roll does not upload anything."
|
|
61
|
+
_i18n_set zh init.code_and_conversations_stay_in_your " 代码与对话都留在你的 agent 工具里 —— Roll 本身不上传任何内容。"
|
|
62
|
+
_i18n_set en init.use_exit_to_end_or_ctrl "Use /exit to end (or Ctrl-C). Roll will auto-apply after exit."
|
|
63
|
+
_i18n_set zh init.use_exit_to_end_or_ctrl " 在 agent 内用 /exit 结束(或 Ctrl-C)。退出后 Roll 会自动衔接 apply。"
|
|
64
|
+
_i18n_set en init.pick_an_agent "Pick an agent:"
|
|
65
|
+
_i18n_set zh init.pick_an_agent " 选一个 agent Pick an agent:"
|
|
66
|
+
_i18n_set en init.en_roll_init "[EN: 对话完成后再次运行 \`roll init\` 即可。...]"
|
|
67
|
+
_i18n_set zh init.en_roll_init " 对话完成后再次运行 \`roll init\` 即可。"
|
|
68
|
+
_i18n_set en init.en_ai_agent_onboard_plan_ap "[EN: 请先在 AI agent 里运行 \%s-onboard 生成 plan,再回来执行 ap...]"
|
|
69
|
+
_i18n_set zh init.en_ai_agent_onboard_plan_ap " 请先在 AI agent 里运行 \%s-onboard 生成 plan,再回来执行 apply。"
|
package/lib/i18n/lang.sh
CHANGED
|
@@ -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
CHANGED
|
@@ -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("
|
|
7
|
+
_i18n_set zh loop.roll_loop_s_active_02d_00 "窗口 %02d:00–%02d:00)\n"
|
|
8
|
+
_i18n_set en loop.roll_dream_daily_at_02d_02d " • roll-.dream daily at %02d:%02d"
|
|
9
|
+
_i18n_set zh loop.roll_dream_daily_at_02d_02d "每天 %02d:%02d\n"
|
|
10
|
+
_i18n_set en loop.roll_brief_daily_at_02d_02d " • roll-brief daily at %02d:%02d"
|
|
11
|
+
_i18n_set zh loop.roll_brief_daily_at_02d_02d "每天 %02d:%02d\n"
|
|
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("
|
|
17
|
+
_i18n_set zh loop.roll_loop_s_active_02d_00_2 "窗口 %02d:00–%02d:00)\n"
|
|
18
|
+
_i18n_set en loop.roll_dream_daily_at_02d_02d_2 " • roll-.dream daily at %02d:%02d"
|
|
19
|
+
_i18n_set zh loop.roll_dream_daily_at_02d_02d_2 "每天 %02d:%02d\n"
|
|
20
|
+
_i18n_set en loop.roll_brief_daily_at_02d_02d_2 " • roll-brief daily at %02d:%02d"
|
|
21
|
+
_i18n_set zh loop.roll_brief_daily_at_02d_02d_2 "每天 %02d:%02d\n"
|
|
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 文件错误"
|
package/lib/i18n/migrate.sh
CHANGED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en migrate.unknown_arg_1 "Unknown arg: %s"
|
|
3
|
+
_i18n_set zh migrate.unknown_arg_1 "未知参数: %s"
|
|
4
|
+
_i18n_set en migrate.not_a_git_repository_roll_migrate "Not a git repository. roll migrate requires git."
|
|
5
|
+
_i18n_set zh migrate.not_a_git_repository_roll_migrate "当前目录不是 git 仓库。"
|
|
6
|
+
_i18n_set en migrate.both_old_and_new_structures_exist "Both old and new structures exist (partial migration detected)."
|
|
7
|
+
_i18n_set zh migrate.both_old_and_new_structures_exist "老结构与新结构同时存在(部分迁移)。"
|
|
8
|
+
_i18n_set en migrate.conflicting_paths "Conflicting paths:"
|
|
9
|
+
_i18n_set zh migrate.conflicting_paths "冲突路径:"
|
|
10
|
+
_i18n_set en migrate.resolve_manually_then_re_run "Resolve manually then re-run."
|
|
11
|
+
_i18n_set zh migrate.resolve_manually_then_re_run "请手动解决冲突后重新运行。"
|
|
12
|
+
_i18n_set en migrate.already_migrated_roll_exists_no_old "Already migrated. .roll/ exists, no old paths found."
|
|
13
|
+
_i18n_set zh migrate.already_migrated_roll_exists_no_old "已迁移,无需重复操作。"
|
|
14
|
+
_i18n_set en migrate.no_old_structure_detected_nothing_to "No old structure detected. Nothing to migrate."
|
|
15
|
+
_i18n_set zh migrate.no_old_structure_detected_nothing_to "未发现老结构,无需迁移。"
|
|
16
|
+
_i18n_set en migrate.old_structure_markers_found_but_no "Old structure markers found but no migratable files."
|
|
17
|
+
_i18n_set zh migrate.old_structure_markers_found_but_no "未找到可迁移文件。"
|
|
18
|
+
_i18n_set en migrate.working_tree_not_clean_commit_or "Working tree not clean. Commit or stash changes before running migrate."
|
|
19
|
+
_i18n_set zh migrate.working_tree_not_clean_commit_or "工作区有未提交改动,请先 commit 或 stash。"
|
|
20
|
+
_i18n_set en migrate.migration_preview_dry_run "Migration preview (dry-run):"
|
|
21
|
+
_i18n_set zh migrate.migration_preview_dry_run "迁移预览(dry-run)"
|
|
22
|
+
_i18n_set en migrate.run_without_dry_run_to_execute "Run without --dry-run to execute."
|
|
23
|
+
_i18n_set zh migrate.run_without_dry_run_to_execute "去掉 --dry-run 即可真实执行。"
|
|
24
|
+
_i18n_set en migrate.migrating_paths_via_git_mv "Migrating %s paths via git mv..."
|
|
25
|
+
_i18n_set zh migrate.migrating_paths_via_git_mv "正在通过 git mv 迁移 %s 个路径..."
|
|
26
|
+
_i18n_set en migrate.aborting_previous_moves_are_staged_but "Aborting; previous moves are staged but not committed. Run 'git reset --hard' to undo."
|
|
27
|
+
_i18n_set zh migrate.aborting_previous_moves_are_staged_but "已 stage 但未 commit,运行 'git reset --hard' 回滚。"
|
|
28
|
+
_i18n_set en migrate.migrated_paths_in_a_single_commit "Migrated %s paths in a single commit."
|
|
29
|
+
_i18n_set zh migrate.migrated_paths_in_a_single_commit "已在单 commit 中迁移 %s 个路径。"
|
|
30
|
+
_i18n_set en migrate.next_steps " Next steps"
|
|
31
|
+
_i18n_set zh migrate.next_steps "下一步:"
|
|
32
|
+
_i18n_set en migrate.summary " ┌─"
|
|
33
|
+
_i18n_set zh migrate.summary "操作摘要 Summary ──────────────────────────────────┐"
|
|
34
|
+
_i18n_set en migrate.roll_convention_status_roll "%sRoll Convention Status Roll"
|
|
35
|
+
_i18n_set zh migrate.roll_convention_status_roll "约定状态%s"
|
|
36
|
+
_i18n_set en migrate.roll_exists_roll "~/.roll/ exists ~/.roll/"
|
|
37
|
+
_i18n_set zh migrate.roll_exists_roll "已存在"
|
|
38
|
+
_i18n_set en migrate.roll_not_found_run_roll_setup "~/.roll/ not found — run 'roll setup' ~/.roll/"
|
|
39
|
+
_i18n_set zh migrate.roll_not_found_run_roll_setup "不存在 — 请运行 'roll setup'"
|
|
40
|
+
_i18n_set en migrate.global_conventions "%sGlobal conventions:"
|
|
41
|
+
_i18n_set zh migrate.global_conventions "全局约定%s"
|
|
42
|
+
_i18n_set en migrate.missing " %s-%s %s (missing /"
|
|
43
|
+
_i18n_set zh migrate.missing "缺失)"
|
|
44
|
+
_i18n_set en migrate.global_skills "%sGlobal skills:"
|
|
45
|
+
_i18n_set zh migrate.global_skills "全局技能%s"
|
|
46
|
+
_i18n_set en migrate.roll_skills_skills_installed " %s+%s ~/.roll/skills (%s skills installed /"
|
|
47
|
+
_i18n_set zh migrate.roll_skills_skills_installed "已安装 %s 个技能)"
|
|
48
|
+
_i18n_set en migrate.roll_skills_missing " %s-%s ~/.roll/skills (missing /"
|
|
49
|
+
_i18n_set zh migrate.roll_skills_missing "缺失)"
|
|
50
|
+
_i18n_set en migrate.sync_targets "%sSync targets:"
|
|
51
|
+
_i18n_set zh migrate.sync_targets "同步目标%s"
|
|
52
|
+
_i18n_set en migrate.no_ai_tools_configured_check_roll "No AI tools configured — check ~/.roll/config.yaml"
|
|
53
|
+
_i18n_set zh migrate.no_ai_tools_configured_check_roll "未配置 AI 工具 — 请检查 ~/.roll/config.yaml"
|
|
54
|
+
_i18n_set en migrate.add_ai_entries_or_run_roll "Add ai_* entries or run 'roll setup' to restore defaults."
|
|
55
|
+
_i18n_set zh migrate.add_ai_entries_or_run_roll "添加 ai_* 条目或运行 'roll setup' 恢复默认配置。"
|
|
56
|
+
_i18n_set en migrate.skill_symlinks "%sSkill symlinks:"
|
|
57
|
+
_i18n_set zh migrate.skill_symlinks "技能软链接%s"
|
|
58
|
+
_i18n_set en migrate.roll_skills_mounted " %s=%s %s: %s -> ~/.roll/skills (mounted /"
|
|
59
|
+
_i18n_set zh migrate.roll_skills_mounted "已挂载)"
|
|
60
|
+
_i18n_set en migrate.no_roll_skills_linked " %s-%s %s: %s (no roll-* skills linked /"
|
|
61
|
+
_i18n_set zh migrate.no_roll_skills_linked "未链接 roll-* 技能)"
|
|
62
|
+
_i18n_set en migrate.not_found " %s-%s %s: %s (not found /"
|
|
63
|
+
_i18n_set zh migrate.not_found "未找到)"
|
|
64
|
+
_i18n_set en migrate.no_ai_tools_configured_check_roll_2 "No AI tools configured — check ~/.roll/config.yaml"
|
|
65
|
+
_i18n_set zh migrate.no_ai_tools_configured_check_roll_2 "未配置 AI 工具 — 请检查 ~/.roll/config.yaml"
|
|
66
|
+
_i18n_set en migrate.templates "%sTemplates:"
|
|
67
|
+
_i18n_set zh migrate.templates "模板%s"
|
|
68
|
+
_i18n_set en migrate.missing_2 " %s-%s %s (missing /"
|
|
69
|
+
_i18n_set zh migrate.missing_2 "缺失)"
|
|
70
|
+
|
|
71
|
+
_i18n_set en migrate.old_path "Old path"
|
|
72
|
+
_i18n_set zh migrate.old_path "老路径"
|
|
73
|
+
_i18n_set en migrate.new_path "New path"
|
|
74
|
+
_i18n_set zh migrate.new_path "新路径"
|
package/lib/i18n/offboard.sh
CHANGED
|
@@ -13,3 +13,19 @@ _i18n_set en offboard.manual_rm_agents "rm -f AGENTS.md CLAUDE.md # only if
|
|
|
13
13
|
_i18n_set zh offboard.manual_rm_agents "rm -f AGENTS.md CLAUDE.md # 仅当这些文件由 roll init 生成"
|
|
14
14
|
_i18n_set en offboard.manual_edit_gitignore "Edit .gitignore to remove any '.roll/' entry"
|
|
15
15
|
_i18n_set zh offboard.manual_edit_gitignore "编辑 .gitignore 移除 '.roll/' 条目"
|
|
16
|
+
|
|
17
|
+
_i18n_set en offboard.unknown_flag "Unknown flag: %s"
|
|
18
|
+
_i18n_set zh offboard.unknown_flag "未知参数"
|
|
19
|
+
_i18n_set en offboard.failed_to_parse_changeset "Failed to parse changeset"
|
|
20
|
+
_i18n_set zh offboard.failed_to_parse_changeset "解析变更清单失败"
|
|
21
|
+
_i18n_set en offboard.applying_offboard " Applying offboard..."
|
|
22
|
+
_i18n_set zh offboard.applying_offboard "执行 offboard..."
|
|
23
|
+
_i18n_set en offboard.offboard_complete_offboard "Offboard complete. Offboard"
|
|
24
|
+
_i18n_set zh offboard.offboard_complete_offboard "完成。"
|
|
25
|
+
|
|
26
|
+
_i18n_set en offboard.en "[EN:拒绝处理 '%s' — 路径不在当前项目下,可能是误用...]"
|
|
27
|
+
_i18n_set zh offboard.en "拒绝处理 '%s' — 路径不在当前项目下,可能是误用"
|
|
28
|
+
_i18n_set en offboard.change_list_is_empty_nothing_to "Change list is empty, nothing to offboard."
|
|
29
|
+
_i18n_set zh offboard.change_list_is_empty_nothing_to "变更清单为空,无需 offboard。"
|
|
30
|
+
_i18n_set en offboard.above_is_a_dry_run_preview "Above is a dry-run preview. Add --confirm to execute."
|
|
31
|
+
_i18n_set zh offboard.above_is_a_dry_run_preview " 以上为预演结果。加 --confirm 后才会真正执行。"
|
package/lib/i18n/peer.sh
CHANGED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en peer.unknown_option_1 "Unknown option: %s"
|
|
3
|
+
_i18n_set zh peer.unknown_option_1 "未知选项: %s"
|
|
4
|
+
_i18n_set en peer.from_is_required "--from is required."
|
|
5
|
+
_i18n_set zh peer.from_is_required "必须指定 --from。"
|
|
6
|
+
_i18n_set en peer.no_available_peer_found_for_tag "No available peer found for tag '%s'."
|
|
7
|
+
_i18n_set zh peer.no_available_peer_found_for_tag "未找到 tag '%s' 的可用 peer。"
|
|
8
|
+
_i18n_set en peer.auto_selected_peer "Auto-selected peer: %s"
|
|
9
|
+
_i18n_set zh peer.auto_selected_peer "自动选择 peer: %s"
|
|
10
|
+
_i18n_set en peer.peer_pair_is_abandoned_run_roll "Peer pair %s is abandoned. Run 'roll peer reset %s %s' to restore. Peer"
|
|
11
|
+
_i18n_set zh peer.peer_pair_is_abandoned_run_roll "对 %s 已废弃。运行 'roll peer reset %s %s' 恢复。"
|
|
12
|
+
_i18n_set en peer.peer_review_aborted_by_user "Peer review aborted by user."
|
|
13
|
+
_i18n_set zh peer.peer_review_aborted_by_user "用户取消 peer review。"
|
|
14
|
+
_i18n_set en peer.calling "Calling %s..."
|
|
15
|
+
_i18n_set zh peer.calling "调用 %s..."
|
|
16
|
+
_i18n_set en peer.peer_stderr_peer "%sPeer stderr Peer"
|
|
17
|
+
_i18n_set zh peer.peer_stderr_peer "标准错误:%s"
|
|
18
|
+
_i18n_set en peer.could_not_parse_resolution_from_peer "Could not parse resolution from peer response."
|
|
19
|
+
_i18n_set zh peer.could_not_parse_resolution_from_peer "无法解析 peer 响应中的决议状态。"
|
|
20
|
+
_i18n_set en peer.peer_review_result_peer_review "%sPeer Review Result Peer Review"
|
|
21
|
+
_i18n_set zh peer.peer_review_result_peer_review "结果%s"
|
|
22
|
+
_i18n_set en peer.consensus_reached_proceed_with_execution "Consensus reached. Proceed with execution."
|
|
23
|
+
_i18n_set zh peer.consensus_reached_proceed_with_execution "达成共识,继续执行。"
|
|
24
|
+
_i18n_set en peer.max_rounds_reached_escalating_to_user "Max rounds reached. Escalating to user."
|
|
25
|
+
_i18n_set zh peer.max_rounds_reached_escalating_to_user "达到最大轮数,升级给用户。"
|
|
26
|
+
_i18n_set en peer.peer_requests_continue_to_round_round "Peer requests %s. Continue to round %s."
|
|
27
|
+
_i18n_set zh peer.peer_requests_continue_to_round_round "请求 %s,继续第 %s 轮。"
|
|
28
|
+
_i18n_set en peer.peer_review_escalated_or_failed_human "Peer review escalated or failed. Human decision required. Peer review"
|
|
29
|
+
_i18n_set zh peer.peer_review_escalated_or_failed_human "升级或失败,需要人类决策。"
|
|
30
|
+
|
|
31
|
+
_i18n_set en peer.en_peer_review "[EN:启动 peer review: %s → %s (第 %s 轮,...]"
|
|
32
|
+
_i18n_set zh peer.en_peer_review "启动 peer review: %s → %s (第 %s 轮, tag: %s)"
|
|
33
|
+
_i18n_set en peer.en_enter_n "[EN:按 Enter 执行或输入 n 取消。%s 秒后自动执行......]"
|
|
34
|
+
_i18n_set zh peer.en_enter_n "按 Enter 执行或输入 n 取消。%s 秒后自动执行..."
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en peer_help.usage_roll_peer_options "Usage: roll peer [options]"
|
|
3
|
+
_i18n_set zh peer_help.usage_roll_peer_options "用法: roll peer [选项]"
|
|
4
|
+
_i18n_set en peer_help.from_tool_originating_agent_kimi_claude " --from <tool> Originating agent (kimi, claude, pi)"
|
|
5
|
+
_i18n_set zh peer_help.from_tool_originating_agent_kimi_claude "发起方"
|
|
6
|
+
_i18n_set en peer_help.to_tool_target_peer_auto_detected " --to <tool> Target peer (auto-detected if omitted)"
|
|
7
|
+
_i18n_set zh peer_help.to_tool_target_peer_auto_detected "对端 peer(省略则自动选择)"
|
|
8
|
+
_i18n_set en peer_help.round_n_current_round_default_1 " --round <N> Current round (default: 1)"
|
|
9
|
+
_i18n_set zh peer_help.round_n_current_round_default_1 "当前轮数"
|
|
10
|
+
_i18n_set en peer_help.tag_type_task_type_for_routing " --tag <type> Task type for routing (architecture, security, test...)"
|
|
11
|
+
_i18n_set zh peer_help.tag_type_task_type_for_routing "任务类型"
|
|
12
|
+
_i18n_set en peer_help.context_file_context_file_to_send " --context <file> Context file to send to peer"
|
|
13
|
+
_i18n_set zh peer_help.context_file_context_file_to_send "上下文文件"
|
|
14
|
+
_i18n_set en peer_help.yes_yolo_skip_opt_out_prompt " --yes, --yolo Skip opt-out prompt"
|
|
15
|
+
_i18n_set zh peer_help.yes_yolo_skip_opt_out_prompt "跳过确认提示"
|
|
16
|
+
_i18n_set en peer_help.status_show_peer_review_state " status Show peer review state"
|
|
17
|
+
_i18n_set zh peer_help.status_show_peer_review_state "显示状态"
|
|
18
|
+
_i18n_set en peer_help.reset_pair_all_reset_peer_state " reset <pair|--all> Reset peer state"
|
|
19
|
+
_i18n_set zh peer_help.reset_pair_all_reset_peer_state "重置状态"
|
|
20
|
+
_i18n_set en peer_help.help_show_this_help " help Show this help"
|
|
21
|
+
_i18n_set zh peer_help.help_show_this_help "显示帮助"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en peer_reset.all_peer_states_reset "All peer states reset."
|
|
3
|
+
_i18n_set zh peer_reset.all_peer_states_reset "所有 peer 状态已重置。"
|
|
4
|
+
_i18n_set en peer_reset.usage_roll_peer_reset_from_to "Usage: roll peer reset <from>→<to> | --all"
|
|
5
|
+
_i18n_set zh peer_reset.usage_roll_peer_reset_from_to "用法: roll peer reset <from>→<to> | --all"
|
|
6
|
+
_i18n_set en peer_reset.peer_state_reset_peer "Peer state reset: %s Peer"
|
|
7
|
+
_i18n_set zh peer_reset.peer_state_reset_peer "状态已重置: %s"
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en peer_status.peer_review_status_peer_review "%sPeer Review Status Peer Review"
|
|
3
|
+
_i18n_set zh peer_status.peer_review_status_peer_review "状态%s"
|
|
4
|
+
_i18n_set en peer_status.no_peer_review_history_yet "No peer review history yet."
|
|
5
|
+
_i18n_set zh peer_status.no_peer_review_history_yet "暂无 peer review 记录。"
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en prices_refresh.unknown_flag_1 "Unknown flag: %s"
|
|
3
|
+
_i18n_set zh prices_refresh.unknown_flag_1 "未知参数: %s"
|
|
4
|
+
_i18n_set en prices_refresh.roll_unknown_vendor_vendor "[roll] unknown vendor: {vendor}"
|
|
5
|
+
_i18n_set zh prices_refresh.roll_unknown_vendor_vendor "未知厂商"
|
|
6
|
+
_i18n_set en prices_refresh.roll_known_vendors_join_sorted_vendor "[roll] known vendors: {', '.join(sorted(VENDOR_URLS))}"
|
|
7
|
+
_i18n_set zh prices_refresh.roll_known_vendors_join_sorted_vendor "已知厂商"
|
|
8
|
+
_i18n_set en prices_refresh.roll_keeping_existing_snapshot_no_changes "[roll] keeping existing snapshot, no changes written"
|
|
9
|
+
_i18n_set zh prices_refresh.roll_keeping_existing_snapshot_no_changes "保留旧快照,未写入新文件"
|
|
10
|
+
_i18n_set en prices_refresh.roll_keeping_existing_snapshot_no_changes_2 "[roll] keeping existing snapshot, no changes written"
|
|
11
|
+
_i18n_set zh prices_refresh.roll_keeping_existing_snapshot_no_changes_2 "保留旧快照,未写入新文件"
|
|
12
|
+
_i18n_set en prices_refresh.roll_up_to_date "[roll] up to date"
|
|
13
|
+
_i18n_set zh prices_refresh.roll_up_to_date "价格快照已是最新"
|
|
14
|
+
_i18n_set en prices_refresh.roll_baseline_snapshot_written "[roll] baseline snapshot written"
|
|
15
|
+
_i18n_set zh prices_refresh.roll_baseline_snapshot_written "写入首份基线快照"
|
|
16
|
+
_i18n_set en prices_refresh.roll_new_snapshot_written "[roll] new snapshot written"
|
|
17
|
+
_i18n_set zh prices_refresh.roll_new_snapshot_written "写入新版价格快照"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
|
|
2
|
+
_i18n_set en prices_show.price_snapshot "price snapshot"
|
|
3
|
+
_i18n_set zh prices_show.price_snapshot "价格快照"
|
|
4
|
+
_i18n_set en prices_show.snapshots_len_mp_snapshots_loaded " snapshots {len(mp._SNAPSHOTS)} loaded"
|
|
5
|
+
_i18n_set zh prices_show.snapshots_len_mp_snapshots_loaded "已加载"
|
|
6
|
+
_i18n_set en prices_show.rates_per_million_tokens "rates per million tokens"
|
|
7
|
+
_i18n_set zh prices_show.rates_per_million_tokens "每百万 token 单价"
|
package/lib/i18n/setup.sh
CHANGED