Skip to content

Looper v2.14.167

Choose a tag to compare

@github-actions github-actions released this 12 Nov 22:08
· 68 commits to main since this release
b8bf3de

Looper v2.14.167

This is the patch release v2.14.167, a hotfix line in which each merged change ships at once. It documents two changes: #1305 (Planner profile refusals) and #1303 (Overview project counts and Lark admission).

Release Decision

Who should upgrade: Installations where a Planner changes Worker or Reviewer profiles, where tasks move between projects while Workers run, or that run a Lark bot channel. Others need not upgrade for behavior.

What this release solves: #1305 fixes the listed valid items of the review follow-up #1228 (fixes #1228): a refused Planner profile change now says which task role pins the profile and where it came from, and points to looper_task_role_set for a Planner-defined role. #1303 fixes the listed valid items of #1097 and #1132 (fixes #1097, part of #1132): the Overview counts runs by the task's current project, and the Lark bot decides sender admission once per event.

Breaking changes: No. There is no API change, migration or database schema change. The bridge boundary is unchanged: upgrade to v2.13.165 first if the installation is older.

How to verify: Check the installed version.

looper --version   # looper 2.14.167

Contributors: Maintainer @foolzzz authored #1305 and #1303; no community contribution was included in this release.

Upgrading

The bridge boundary is unchanged: an installation older than v2.13.165 must upgrade to v2.13.165 first (upgrade to v2.13.165 first) and be started once; see the Upgrading section of the v2.14.0 release for the steps and rollback. An installation on v2.14.0 to v2.14.166 upgrades directly. There is no database schema change.

Behavior changes

Both pull requests state that their behavior changes follow the triage notes' fixes (maintainer decision, intended). Read in the code:

  • #1305, Planner profile refusals (looper/agents/ops/planner.py). When looper_task_profile_set is refused because a pin outranks the Planner's choice, the error for a task role pin now names the role key and its origin (Planner, workflow, task template or user edit). For a role the Planner defined, with the project's role tools enabled, it says to define a new version with looper_task_role_set and profile_id; in other cases it keeps the dashboard (task → Roles) or user-gate guidance. The refusal itself is unchanged: the same pins are refused and nothing changes.
  • #1303, Overview (looper/agents/overview.py). Running Workers' project IDs are now always replaced by the task's current project, not only when the Overview is scoped to projects. Previously an unscoped Overview (including the manager-scoped one) could show the dispatch-time project of a task that moved while its Worker ran. Project-scoped filtering is unchanged.
  • #1303, Lark admission (looper/agents/channels/lark.py, lark_stream.py). The bot stream's prefilter result is recorded on the event as admitted. The adapter reuses it instead of resolving the chat and checking the allowlist again: a refused event is logged as dropped by the prefilter and rejected as before; an admitted one skips the second check; events without the field (CLI events) are decided in the adapter as before. The admission rule itself is unchanged.
  • Model-visible changes: #1305 changes the Planner prompt's text for looper_task_profile_set and the tool's description, and the refusal message the Planner sees. #1303 has none.

Optional Capability Activation & Use

No new optional capability activation is introduced in this release.

Validation

Reported by the pull requests: #1305 lists the tests that cover the change (tests/test_planner_profile_choice_db.py), automated reviews, and CI before the merge. #1303 lists tests/test_overview.py, tests/test_lark_rich_bot.py and tests/test_lark_stream.py, automated reviews, and CI before the merge. Neither reports a local full suite.

CI: CI runs after the release is drafted; its result is not recorded here.

Not tested for this draft: a local full suite and the built wheel. The release documentation gate checks the body only.

中文摘要

本版本是 patch release v2.14.167(热修线,每个合并的改动立即发布),说明两项改动:#1305(Planner 的 profile 拒绝提示)和 #1303(Overview 项目计数与 Lark 准入)。

升级决策

**谁需要升级:**Planner 会更改 Worker 或 Reviewer profile 的安装、任务在 Worker 运行期间在项目间移动的安装,或运行 Lark bot 渠道的安装。其他安装没有行为上的升级需求。

解决了什么:#1305 修复评审后续 #1228 中列出的有效项(修复 #1228):Planner 的 profile 变更被拒时,现在会说明是哪个任务角色及其来源固定了 profile,并为 Planner 自己定义的角色指向 looper_task_role_set。#1303 修复 #1097 和 #1132 中列出的有效项(修复 #1097,属于 #1132):Overview 按任务当前所属项目统计运行,Lark bot 对每个事件只判定一次发送者准入。

**是否有破坏性变更:**否。没有 API、迁移或数据库结构变更。桥接边界不变:早于 v2.13.165 的安装须先升级到 v2.13.165。

**如何验证:**核对版本为 2.14.167。

**贡献者:**维护者 @foolzzz 提交 #1305 和 #1303;本版本无社区贡献。

looper --version   # looper 2.14.167

升级

桥接边界不变:早于 v2.13.165 的安装必须先升级到 v2.13.165 并启动一次(upgrade to v2.13.165 first 即先升级到 v2.13.165),步骤与回退见 v2.14.0 发布说明的升级一节。v2.14.0 至 v2.14.166 上的安装可直接升级。数据库没有结构变更。

行为变化与入口

两个 PR 都声明行为变化遵循分诊记录中的修复(维护者决定,符合预期)。代码中可见:

  • #1305,Planner profile 拒绝提示(looper/agents/ops/planner.py)。looper_task_profile_set 因固定项优先于 Planner 的选择而被拒时,任务角色固定的错误信息现在会给出角色 key 及其来源(Planner、workflow、任务模板或用户编辑)。对 Planner 自己定义的角色,在项目启用角色工具时,提示用 looper_task_role_set 和 profile_id 定义新版本;其他情况仍给出 dashboard(task → Roles)或 user gate 的指引。拒绝本身不变:被拒的固定项相同,也不会有任何改动。
  • #1303,Overview(looper/agents/overview.py)。运行中 Worker 的项目 ID 现在总是替换为任务当前所属项目,而不再仅限按项目限定的 Overview。此前,未限定范围(含按 manager 限定)的 Overview 可能显示 Worker 运行期间已移动的任务的派发时项目。按项目过滤的行为不变。
  • #1303,Lark 准入(looper/agents/channels/lark.py、lark_stream.py)。bot 流的预过滤结果记录在事件的 admitted 字段上,适配器复用该结果,不再重新解析聊天并检查白名单:被拒事件记录为被预过滤丢弃,并照常被拒绝;已准入事件跳过第二次检查;没有该字段的事件(CLI 事件)仍在适配器中判定。准入规则本身不变。
  • 面向模型的变化:#1305 改动了 Planner 提示词中 looper_task_profile_set 的文字、该工具的描述,以及 Planner 看到的拒绝信息。#1303 没有。

可选能力启用与使用

本版本未新增可选能力启用入口。

验证

PR 报告的:#1305 列出覆盖该改动的测试(tests/test_planner_profile_choice_db.py)、自动评审,以及合并前的 CI。#1303 列出 tests/test_overview.py、tests/test_lark_rich_bot.py 和 tests/test_lark_stream.py、自动评审,以及合并前的 CI。两者都未报告本地完整套件。

**CI:**发布草稿后 CI 会运行,其结果未在此记录。

**本次草稿未测试:**本地完整套件以及构建出的 wheel。发布文档 gate 只检查正文。