436 Commits

Author SHA1 Message Date
jxxghp
9aab7c0f4c fix(agent): pin scheduled tasks to real execution accounts (#7241) 2026-10-29 22:39:08 +08:00
Cat
87561a90d1 fix(agent): route agent command receipts to the signed channel user (#7228)
- Agent 代渠道用户调用内部 API 时,把会话渠道与渠道用户写入宿主签发令牌的签名
  声明(agent_channel、agent_channel_user),不再新增可伪造的请求头。
- /commands/run 对 Telegram 等通知渠道只使用与请求渠道一致的签名渠道用户执行命令
  和投递回执;缺少该声明时明确拒绝,不再把 MoviePilot 用户表主键当作渠道 chat id。
  Web、WebAgent 与无渠道调用仍按 MoviePilot 用户 ID 处理。
- 只读公共资料借用宿主身份,不携带渠道发起人声明。
- 同步依赖基线与架构总览中的内部导入边数量。

Refs #7225

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-28 19:05:52 +08:00
JontyLee
0ba73f5b87 fix(database-operation): 拦截未显式授权的凭据配置表读取
systemconfig 按 SystemConfigKey 聚合实例级 API Key、Cookie 与口令,托管
config.system.get 默认脱敏,但数据库技能脚本与 MCP database_operation 接受
任意 SQL,一条 SELECT 就能整包取回明文。

现在由脚本本身按表拦截:引用 systemconfig 的语句(含引号标识符、模式限定名、
CTE 与子查询)在读写两种模式下都默认拒绝,只有显式 --show-secrets /
show_secrets=true 才放行,失败信息直接给出可执行的下一步,因此 MCP 工具、
技能调用与命令行入口共享同一道边界。宿主策略把开启该开关的查询判定为
SENSITIVE_READ:要求系统管理员确认,结果标记为 SECRET,回执摘要不再保留内容。

门禁范围收敛为单表:userconfig 只承载界面偏好,plugindata 是文档化的诊断路径,
其余表的凭据残留风险改由 SKILL.md 的窄投影要求约束,避免以不可绕过的方式破坏
既有可运维性。MCP 文档、技能说明与相关契约测试同步更新。
2026-10-26 20:20:16 +08:00
Aqr-K
7584d4b9fc fix: isolate agent sessions and retain runtime resource ownership (#7149)
* fix: arbitrate subscription identity and restore workflow state

* fix: isolate agent sessions and retain runtime resource ownership

* test: preserve legacy empty-owner subscription transactions

* test: handle reaped terminal descendants during shutdown polling

* fix: align shared atomic configuration method with lifecycle prerequisite

* test: cover subagent cancellation and completion lifecycle boundaries

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-23 08:20:59 +08:00
jxxghp
ec5ff575f0 fix(agent): restore API bodies before direct request dispatch 2026-10-23 07:55:16 +08:00
jxxghp
6d4ce83837 fix(types): clear host mypy debt and prevent typing regressions
严格检查全部宿主源码,清零类型错误预算并移除按模块类型豁免。
按原因、所属方法、错误码及语法指纹锁定必要兼容例外和站点类型桩,
CI 阻断新增忽略、检查范围退化、本地桩替代真实接口及新的类型错误。

修复空值、异步和供应方类型边界,保持插件与 API 兼容合同,
并补充存储、订阅、通知、Agent 和工作流边界的回归覆盖。
2026-10-21 22:03:18 +08:00
jxxghp
c85f9b262f feat(agent): isolate interactive execution from background services (#7083) 2026-10-19 18:12:05 +08:00
Aqr-K
bf4ef4214e perf(mediaserver): add caller-controlled query projections (#7068)
* perf(mediaserver): add caller-controlled query projections

* test(mediaserver): cover query projection option contracts

---------

Co-authored-by: jxxghp <jxxghp@gmail.com>
2026-10-19 08:33:45 +08:00
DDSRem
e0642eafa7 chore(types): reduce v3 host mypy debt (#7057)
* chore(types): clear AniList endpoint mypy debt

* chore(types): clear Douban endpoint mypy debt

* chore(types): clear recommendation endpoint mypy debt

* chore(types): clear subscription notification mypy debt

* chore(types): clear SDK string compatibility mypy debt

* chore(types): ratchet v3 host mypy across remaining files

* chore(types): reduce v3 host mypy debt and retire ledger

* chore(types): reconcile host snapshot with upstream HTTP pool

* test(types): cover host paths exposed by mypy cleanup
2026-10-18 09:37:49 +08:00
DDSRem
2de976f6b3 Merge pull request #7050 from DDSRem-Dev/codex-comment-migration
docs: 统一全项目中文注释和结构化契约说明
2026-10-17 19:26:29 +08:00
jxxghp
14680dd4ad fix: narrow tool schema model type 2026-10-17 12:36:48 +08:00
wenking
5ec9516a89 fix(mcp): 支持显式 opt-in 的 tools/list schema 紧凑投影
默认保留 MCP tools/list 的完整 schema;显式携带 X-MCP-Schema-Mode: compact 时,为超限工具提供保留顶层对象和 operation/action 枚举的紧凑投影。REST 合同、tools/call 校验与权限判定沿用完整合同。

合并前修复嵌套定义引用与 patternProperties 投影边界,使用 app.agent.tools.projection 作为纯函数 owner,补充回归和相关 Skill 说明,并同步当前 v3 的架构快照与类型低水位。

验证:113 项相关回归、167 项架构策略测试、45 项架构快照测试通过;Pylint 10/10,类型、复杂度及并发等相关棘轮通过。最终 PR head 6d25e1039d 的全部 10 项必需 GitHub 检查通过;待合并树与 CI 测试树一致。

投影是 best-effort,不承诺压入 5000 字节以内;未进行生产实例或镜像发布验证。

Co-authored-by: clone <clone_fan@foxmail.com>
2026-10-16 19:52:57 +08:00
jxxghp
bd1e6eb899 fix(agent): separate public API queries from bound user operations 2026-10-12 07:30:35 +08:00
freeman
f3ad81b39e style: apply safe ruff auto-fixes and exempt startup late imports
Run `ruff check app tests scripts --fix` with the configured rule set
(E4/E7/E9/F/I): import sorting (I001), f-strings without placeholders
(F541), lambda/variable/unused-import cleanups that ruff marks safe.
Nine files whose only ruff debt sits next to pre-existing pylint
import-resolution errors (lazy exports, sys.path script imports) or
whose "unused" imports are reached through attribute access by tests are
left untouched so the changed-file pylint gate and the benchmark tests
stay green; their diagnostics remain in the baseline.

app/startup/lifecycle/__init__.py and app/main.py import business
modules after cache composition, import-path and stdio setup on purpose
(the source comments document the contract), so declare E402
per-file-ignores for them instead of adding per-line noqa.

Ruff ratchet watermark drops from 498 to 100; sync the baseline fixture
and the optimization checklist figure.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 13:29:09 +08:00
jxxghp
e51fd44964 fix(agent): resolve alternative QQ and Feishu user bindings
Keep strict binding lookup as the default and explicitly match alternative channel identifiers for the Agent API gateway. Reject ambiguous active-user matches and cover single-field bindings with database-backed tests.

Refs #6905
2026-10-07 09:16:33 +08:00
LIN student
aa78bc9d8e fix(agent): 浏览器与验证码工具的私网访问参数仅限管理员
browse_webpage、recognize_captcha 的 allow_private_network 是模型可以直接
填写的工具参数,此前对任何调用方都生效。现与同工具的 evaluate、
get_cookies 保持一致:仅管理员可设置为 true,其他调用方返回
admin_required,并提示去掉该参数后只访问公网地址。

browse_webpage 的三项管理员检查合并到 _admin_required_error,run() 的
圈复杂度维持在门禁阈值以内。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 15:42:28 +08:00
jxxghp
d8031e29a8 fix(agent): guide captcha OCR failures to browser vision 2026-10-04 09:19:29 +08:00
jxxghp
6b8f5f90df fix(agent): type and cover encoded api bodies 2026-10-02 23:12:48 +08:00
q10710
37d9680674 fix(agent): restore JSON-encoded string bodies in api argument canonicalization 2026-10-02 22:19:07 +08:00
jxxghp
60cf52b246 fix(agent): bind CLI commands to project virtualenv 2026-10-01 12:33:10 +08:00
jxxghp
3fc57808d7 Merge pull request #6839 from thsrite/feat/rename-mediavault-to-vyo
feat(mediaserver): 内置媒体服务 MediaVault 更名为 Vyo
2026-09-30 21:03:57 +08:00
jxxghp
3a1abca44d merge: resolve v3 conflicts for vyo rename 2026-09-30 20:55:43 +08:00
jxxghp
3ffc64cfd6 feat(agent): complete integrated evaluation
Validate persistent recall, learning carry-over, and controlled read-only Python orchestration in real graphs and isolated model scenarios.
2026-09-30 20:53:19 +08:00
jxxghp
f803e6cc5c feat(agent): add persistent Python read-only orchestration 2026-09-30 20:16:53 +08:00
thsrite
4395ddecf2 feat(mediaserver): 内置媒体服务 MediaVault 更名为 Vyo
主项目更名为 Muvyo,内置媒体服务更名为 Vyo。模块目录、文件、类名、模块 ID、枚举、
名称描述、日志与文档统一改为 Vyo;配置类型值 mediavault 保持不变,
已保存的媒体服务器配置无需迁移。
2026-09-30 19:46:09 +08:00
jxxghp
dc0ad842fb fix(agent): make API input errors actionable 2026-09-30 19:16:35 +08:00
jxxghp
864ac1892e feat(agent): align background learning with Hermes 2026-09-30 17:45:39 +08:00
jxxghp
47d51c3630 feat(agent): align history recall with Hermes SQLite FTS5 2026-09-30 16:28:39 +08:00
jxxghp
4f72b77ef0 fix(agent): constrain API request body shapes 2026-09-23 14:24:06 +08:00
moviepilot-codex[bot]
1d043bb64e fix(agent): isolate memory by user 2026-09-21 08:59:33 +08:00
cyt-666
6e92a02255 fix: extend search.torrents timeout (#6734) 2026-09-20 15:23:47 +08:00
jxxghp
3eb339b8e0 feat(agent): unify memory retrieval and activity history 2026-09-16 18:24:30 +08:00
jxxghp
4e9a64c0f0 refactor(application): 按模块子目录统一文件命名 2026-09-15 23:57:06 +08:00
jxxghp
61b0ae951f refactor(application): 拆分消息渠道权限 2026-09-15 23:57:06 +08:00
jxxghp
0fa5224e66 refactor(application): 拆分 Agent 选择交互 2026-09-15 23:57:06 +08:00
jxxghp
d665426157 fix(agent): constrain API body input to JSON values 2026-09-15 18:15:31 +08:00
jxxghp
8072b7d78f Refactor application architecture and compatibility boundaries 2026-09-13 12:53:00 +08:00
jxxghp
c59a054351 fix(agent): validate browser redirects after actions 2026-09-12 14:08:14 +08:00
jxxghp
551fe76a54 fix(agent): preserve uncertain browser close state 2026-09-12 13:37:34 +08:00
jxxghp
046a8abcad fix(agent): harden browser session recovery 2026-09-12 13:31:23 +08:00
jxxghp
c57605312a fix(agent): close recovery contract CI regressions 2026-09-12 13:09:37 +08:00
jxxghp
67f0fe3d40 fix(agent): make browser observation outcomes explicit 2026-09-12 12:57:51 +08:00
jxxghp
e9e1aa8e0f fix(agent): clarify browser and subagent states 2026-09-12 12:50:22 +08:00
jxxghp
985618f6de fix(agent): improve shell recovery guidance 2026-09-12 12:43:11 +08:00
jxxghp
ebe654290d fix(agent): harden file range and conflict recovery 2026-09-12 12:40:27 +08:00
jxxghp
7389be5694 fix(agent): normalize legacy tool failures 2026-09-12 12:30:37 +08:00
jxxghp
c3eb884d8f fix(agent): guide missing tool and permission failures 2026-09-12 12:25:57 +08:00
jxxghp
1711882e6d fix(agent): expose structured recovery on tool failures 2026-09-12 12:19:36 +08:00
jxxghp
9cc2ab08ad fix(agent): accept image content in view_image 2026-09-11 23:34:58 +08:00
jxxghp
d21bd2981b feat(agent): add image viewing tool 2026-09-11 23:17:36 +08:00