ranzhigg
914abf6273
fix: tighten API authorization boundaries
2026-10-30 16:14:49 +08:00
jxxghp
9aab7c0f4c
fix(agent): pin scheduled tasks to real execution accounts ( #7241 )
2026-10-29 22:39:08 +08:00
jxxghp
8fe8ea477e
fix(agent): preserve cache keys for compatible Responses endpoints ( #7236 )
...
Forward the stable anonymized session key through the generic OpenAI-compatible Responses path so gateways can retain cache routing across tool calls.
Refs #7233
2026-10-29 17:17:48 +08:00
Tony Davis
421dd2c055
feat(llm): 新增 Obscurify.ai provider ( #7229 )
2026-10-29 17:06:11 +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
andyxu8023
e1b276bf9b
fix(agent): encode API session header as ASCII ( #7210 )
2026-10-27 10:36:28 +08:00
jxxghp
42edfd1da8
fix(api): bound collection views and query calendar dates ( #7200 )
2026-10-27 00:40:09 +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
Nirupam Bhowmick
363b8d9e5d
feat(llm): 新增 Runcrate provider
...
新增 Runcrate OpenAI-compatible 预设(https://api.runcrate.ai/v1),沿用共享
openai_compatible 通道,模型目录通过 /v1/models 发现;附带模型发现的边界回归测试。
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com >
2026-10-25 08:02:17 +00: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
17a866f47b
fix(transfer): restore AI takeover for failed transfers
2026-10-22 09:43:03 +08:00
jxxghp
cc2e02793e
fix(telegram): wait for final streaming edit interval
...
Wait once for the remaining message edit interval during Agent finalization, without bypassing Telegram 429 cooldown or replaying confirmed text.
Refs #7124
2026-10-22 08:25:25 +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
53c5344f4e
fix(agent): avoid replaying delivered streaming progress
2026-10-21 00:20:13 +08:00
alexcastgonz
14b9ea6d3e
fix(setup): 更新 Google 默认模型并兼容 Gemini 3.8 思考级别 ( #7109 )
...
* fix(setup): 更新 Google 默认模型为 gemini-3.8-flash
安装向导中 Google 的预设模型 gemini-2.5-flash 对新建的 Gemini API 密钥
已返回 404,在模型选择处直接回车会写入无法使用的 LLM_MODEL。改为
Google 文档中推荐给新项目的稳定模型 gemini-3.8-flash。
新增用例校验预设值不再是 Gemini 2.5 系列。
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com >
* fix(llm): honor Gemini 3.8 minimum thinking level
---------
Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com >
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-20 18:41:57 +08:00
paysen
1f7e91b645
fix(llm): serialize ChatGPT OAuth token refresh ( #7092 )
2026-10-20 11:25:52 +08:00
aiapienthusiast
75ee313f4c
feat(llm): add Cheaper Inference provider ( #7088 )
2026-10-19 23:02:38 +08:00
jxxghp
c85f9b262f
feat(agent): isolate interactive execution from background services ( #7083 )
2026-10-19 18:12:05 +08:00
jxxghp
6e5c9d0afb
fix(storage): 修复 reflink 同存储回退语义与测试稳定性 ( #7081 )
...
- transhandler: 恢复同存储 copy/move 的 elif 回退语义,不再在 item 操作未命中后重复调用远端操作
- local: reflink 空源路径直接失败,避免新增 mypy 存量债务
- tests: 管道用例改为模拟克隆,系统用例改用真实能力探测,并新增不支持时严格失败的用例
- mcp: 整理历史模式说明补充 reflink
2026-10-19 17:07:02 +08:00
秋澪Akimio
114c2cebe5
feat(storage): 本地存储增加引用链接(reflink)整理方式 ( #7077 )
2026-10-19 16:48:41 +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
e1b703aacc
refactor(agent): centralize graph resource ownership ( #7062 )
2026-10-18 21:49:57 +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
jxxghp
0658c7f384
fix(agent): clean removed bundled subagents
2026-10-17 09:09:33 +08:00
jxxghp
f0b8bf75b8
refactor(agent): type provider manager initialization
2026-10-17 02:27:01 +08:00
jxxghp
8df7bd40ad
refactor(agent): type sanitizer container delimiter stack
2026-10-17 02:26:56 +08:00
jxxghp
226ecd7fd1
refactor(agent): type streaming callback task lifecycle
2026-10-17 02:10:50 +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
225da1a7f0
fix(agent): prefer model catalog for image input support
2026-10-16 12:22:31 +08:00
jxxghp
9d5ad08e08
refactor(types): govern agent display contract with strict mypy
2026-10-16 10:03:27 +08:00
jxxghp
4955b7b9ea
fix: harden backend isolation and execution safety
2026-10-16 09:11:28 +08:00
jxxghp
edc719596d
feat(update): prepare latest updates for a single restart
2026-10-13 12:50:01 +08:00
DennyHo0917
f4cd7d02ad
feat(llm): add API Route provider ( #6972 )
...
Signed-off-by: dennyho0917 <dennyho0917@gmail.com >
Co-authored-by: jxxghp <jxxghp@gmail.com >
2026-10-13 07:25:47 +08:00
jxxghp
c8e935fc6c
fix(agent): point capability entrypoints at canonical manager module ( #6969 )
2026-10-12 17:47:56 +08:00
jxxghp
bd1e6eb899
fix(agent): separate public API queries from bound user operations
2026-10-12 07:30:35 +08:00
jxxghp
ec93101289
Merge pull request #6932 from binyangzhu000-sudo/feat/atlas-cloud-provider
2026-10-09 18:52:23 +08:00
binyangzhu000-sudo
6d479317c1
feat(llm): 新增 Atlas Cloud provider
...
Atlas Cloud (https://api.atlascloud.ai/v1 ) 是 OpenAI 兼容的聚合网关,一个
Key 覆盖 DeepSeek、智谱、月之暗面、通义千问与 MiniMax 等开源权重模型,
形态与 OpenRouter 一致,sort_order 取 50 与 60 之间的 55。
用 openai_provider() 而非 catalog_openai_provider():后者的
model_list_strategy 是 models_dev_only,而 Atlas Cloud 尚未被 models.dev
收录;前者走 openai_compatible,直接读网关自己的 /v1/models。
models_dev_provider_id 保留默认值 atlascloud,这样等 models.dev 收录后
_models_dev_reserved_provider_ids 会认到它,不会再自动生成一个重复条目。
实测:用 discovery 内部同款 AsyncOpenAI 构造调用,models.list() 返回 117
个模型,deepseek-ai/deepseek-v4-flash 的对话正常返回。
Signed-off-by: binyangzhu000-sudo <binyangzhu000@gmail.com >
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com >
Signed-off-by: binyangzhu000-sudo <binyangzhu000@gmail.com >
2026-10-09 16:03:47 +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
0cd6b3660f
fix(agent): inject host dependencies into protocol factories
...
Pass the session owner's data context and memory to Web and compatible protocol agent factories. Cover task creation, listing, session reuse and subagent tool injection across the shared entrypoints.
Refs #6910
2026-10-08 13:43:59 +08:00
jxxghp
230b128b8e
fix(agent): exclude history storage from runtime signatures
2026-10-07 13:27:15 +08:00
jxxghp
6c9ebd01f3
fix(agent): close owned LLM clients with their lifecycle
...
Refs #6901
2026-10-07 09:18:40 +08:00
jxxghp
d22e4785a6
fix(agent): preserve nullable tool schemas outside Gemini
2026-10-07 09:17:33 +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
Freeman
4c994c993f
docs(download): document directory aliases for save_path
...
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
2026-10-06 15:30:29 +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
6f0f528e2f
feat(agent): add configurable output language
2026-10-05 07:35:05 +08:00
jxxghp
d8031e29a8
fix(agent): guide captcha OCR failures to browser vision
2026-10-04 09:19:29 +08:00