Commit Graph
4666 Commits
Author SHA1 Message Date
fdc310 983e12acdf fix(lark): stream replies after HITL submissions 2026-10-30 01:06:10 +08:00
fdc310 21e2187c6c fix(dingtalk): show submitted HITL choices in cards 2026-10-29 20:23:06 +08:00
fdc310 d611f687eb fix(wecombot): stream replies after HITL cards 2026-10-29 19:29:32 +08:00
fdc310 2721a213e8 fix(wecombot): handle native select card callbacks 2026-10-29 04:23:54 +08:00
fdc310 506fb3505b Move DingTalk branding into compact card footer 2026-10-28 04:04:31 +08:00
fdc310 72aa4112c7 Stream DingTalk replies without a source message 2026-10-28 03:57:24 +08:00
fdc310 1b00a7aa40 Place LangBot branding above DingTalk card content 2026-10-28 03:44:07 +08:00
fdc310 6a29ffe07f Use compatible Markdown link in DingTalk A2UI branding 2026-10-28 03:41:08 +08:00
fdc310 19967c8a73 Restore LangBot branding on DingTalk A2UI cards 2026-10-28 02:23:55 +08:00
fdc310 21307f9b5d Fix DingTalk A2UI form submissions and agent replies 2026-10-28 02:18:17 +08:00
fdc310 d68b371734 feat(dingtalk): deliver A2UI cards and restore agent replies 2026-10-28 00:14:59 +08:00
fdc310 de565d0bcc fix(agent): enable reliable cross-platform card interactions 2026-10-27 16:03:11 +08:00
fdc310 71b5b70633 fix(agent): create pipelines with selected runner defaults 2026-10-27 16:01:53 +08:00
fdc310 cf9d8eee9d Merge remote-tracking branch 'origin/master' into feat/cross-platform-ai-cards 2026-10-27 12:06:36 +08:00
huanghuoguoguo 7865ad51f7 perf(plugin): negotiate ordered batch event dispatch (#2778) 2026-10-27 11:36:47 +08:00
huanghuoguoguo 62c0f46dc4 perf(persistence): avoid formatting missing SQL attribute errors (#2776) 2026-10-27 11:19:44 +08:00
huanghuoguoguo fd255a13f4 perf(pipeline): skip redundant binding reads for silent stage output (#2777) 2026-10-27 11:19:33 +08:00
Guanchao Wang 1d3c47c439 fix(wecomcs): preserve provider error details (#2772) 2026-10-26 18:05:38 +08:00
RockChinQandmultica-agent 029fbbf3c3 fix(deps): raise the python-multipart floor to the locked version (#2773)
The declared floor was python-multipart>=0.0.27 while uv.lock resolves 0.0.32.
0.0.27 falls inside four published advisories, so any resolve that honours the
floor rather than the lock can land on a vulnerable release:

- GHSA-5rvq-cxj2-64vf / GHSA-6jv3-5f52-599m / GHSA-vffw-93wf-4j4q (quadratic-time
  querystring DoS, semicolon field-separator and Content-Disposition parameter
  smuggling), fixed in 0.0.30
- GHSA-v9pg-7xvm-68hf (negative Content-Length buffers the entire body), fixed in
  0.0.31

The locked 0.0.32 has no known advisories. Raising the floor to match the lock
costs nothing and keeps the two from drifting apart.

Reachability, for the record: multipart parsing happens on the skills and plugin
local-upload routes, both of which require USER_TOKEN_OR_API_KEY with
RESOURCE_MANAGE, so this is an authenticated-admin DoS rather than an anonymous
one.

The resolved version is unchanged; only the requirement metadata moves.

Co-authored-by: multica-agent <[email protected]>
2026-10-26 14:20:16 +08:00
huanghuoguoguo b1b7ddc259 feat(skill): wire standard host skill contract (#2771)
* feat(skill): wire standard host skill contract

* chore(skill): pin bounded SDK revision

* fix(skill): correct SDK pin and formatting

* chore: use released SDK 0.7.17

* fix(deps): validate nested component imports with SDK 0.7.18rc1

* fix(deps): pin validated SDK 0.7.18
2026-10-26 12:11:27 +08:00
fdc310 438244b8ae feat(agent): add cross-platform interactive card tool 2026-10-25 01:42:51 +08:00
彼方 33653244fc Merge pull request #2770 from langbot-app/fix/test-event-loop-leak
test(vector): prevent event loop leak in base database test
2026-10-25 00:49:43 +08:00
bifangknt bba442a8d3 test(vector): prevent event loop leak in base database test
Use pytest-asyncio and await instead of asyncio.run() to preserve
pytest's event loop lifecycle.
2026-10-25 00:14:41 +08:00
Hyu c6df289345 fix(plugin): initialize setting capability for locally mounted plugins 2026-10-25 00:08:26 +08:00
Hyu d6bce3228b refactor(skill): remove legacy host scan endpoint and client method 2026-10-25 00:08:25 +08:00
彼方 a75f9e2953 Merge pull request #2768 from langbot-app/fix/sqlite-startup-wal-checkpoint
fix(sqlite): reclaim startup WAL and ship patched SQLite
2026-10-24 23:45:56 +08:00
bifangknt 73d5c7d46e test(storage): make SQLite query plan assertions version-independent
Classify event cleanup queries by selected columns instead of CORRELATED
plan text, preserving covering-index, primary-key, and no-sort checks.

Validated all 15 tests on ARM64 with SQLite 3.53.4 and 3.46.1.
2026-10-24 23:23:55 +08:00
RockChinQ 4b4830d4b6 Merge pull request #2542 from Nikarhub/feat/box-local-env
feat(box): 支持 box.local.env 注入每次 exec,便于 skill 读取配置/凭据
2026-10-24 20:19:44 +08:00
49afd9f320 fix(box): ignore box.local.env in multi-workspace deployments
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-10-24 12:06:00 +00:00
BiFangKNT 96e435486b build(docker): migrate to Debian trixie and update SQLite
- Switch Python base images to python:3.12-slim-trixie
- Replace libprotobuf32 with libprotobuf32t64
- Pin SQLite to 3.53.4-2 from forky for the WAL-reset fix
- Restrict forky packages to libsqlite3-0 with APT pinning
2026-10-24 04:19:18 +08:00
BiFangKNT 95a378a8f1 fix(persistence): reclaim oversized SQLite WAL files
- Require successful WAL truncation before starting application producers
- Preserve completed migrations and retry checkpoint failures on restart
- Set a 64 MiB WAL retention limit on every SQLite connection
- Preserve default automatic checkpoint behavior and reader snapshots
- Cover startup failures, connection recreation, and WAL reclamation
2026-10-24 02:03:41 +08:00
彼方 4aebe9ef2f Merge pull request #2767 from langbot-app/fix/mcp-retirement-test-overhead
test(mcp): reduce scope retirement test overhead
2026-10-24 01:07:30 +08:00
BiFangKNT 4eafc3c22e test(mcp): reduce scope retirement test overhead
- Replace per-session mocks with lightweight shutdown counters
- Preserve the one-second timeout and 100-workspace coverage
- Assert that every session shuts down exactly once
2026-10-24 00:52:50 +08:00
彼方 0f95ce4980 Merge pull request #2766 from langbot-app/fix/sqlite-cleanup-lock
fix(persistence): replace online SQLite VACUUM with incremental reclamation
2026-10-24 00:44:09 +08:00
BiFangKNT 93e5ae4689 fix(persistence): replace online SQLite VACUUM with incremental reclamation
- Add migration 0042 to enable incremental vacuum with verified backup and restore
- Enable incremental vacuum before creating tables in new SQLite databases
- Adapt reclamation batches to elapsed time and lock contention
- Cover migration recovery, WAL mode, and concurrent writes with regression tests
2026-10-23 23:59:00 +08:00
彼方 cdca700c69 Merge pull request #2764 from langbot-app/fix/runner-cancel-terminal-event
fix(agent): preserve terminal events when cancelling runner execution
2026-10-23 20:40:44 +08:00
BiFangKNT ce5b7ffea1 fix(agent): preserve terminal events when cancelling runner execution
Emit and persist a Host cancellation event before closing the runner stream.
Preserve existing terminal events and record cancelled runs consistently.

Serialize Host event sequence allocation to prevent conflicts with admin
cancellation audits, and notify observers with the persisted sequence.

Add deterministic cancellation and concurrent event allocation regressions.
2026-10-23 17:23:44 +08:00
huanghuoguoguo 5ec41f15a1 test(ci): add a 60-second core smoke gate and regression jobs (#2711)
* test(tools): add deterministic lbctl regression job

* test(tools): simulate persistent multi-group conversations

* test(tools): add finite core smoke with terminal run and file oracles

* test(tools): expand smoke coverage across execution stages

* ci: add a timed real core smoke and lightweight tool checks

* fix(ci): keep infrastructure failures visible in smoke verdicts
2026-10-23 16:24:26 +08:00
彼方 38ec3cc9be Merge pull request #2759 from langbot-app/feat/onebot-image-url-refresh
feat(onebot): refresh expired image URLs in history and model requests
2026-10-23 15:22:32 +08:00
BiFangKNT 24ce4ebe47 perf(persistence): remove unused resource URL indexes
- Keep only primary-key and URL-hash unique indexes
- Fold index cleanup into migration 0041
- Verify SQLite and PostgreSQL migration behavior
2026-10-23 14:58:22 +08:00
BiFangKNT 5d774ff555 fix(persistence): resolve resource URL migration and scoped SQL failures
- Reflect migration tables without resolving foreign-key targets
- Allow validated resource URL expansion through the tenant SQL AST guard
- Add regression coverage for trusted and malformed expansion expressions
2026-10-23 14:39:38 +08:00
RockChinQ 07466c9d99 copy: call every plan 计划 instead of 套餐 (#2763)
The Chinese copy used 套餐 (package) for the subscription plan in the cloud
banner, the model errors and the multi-tenant docs. Name the same concept 计划
everywhere; Traditional Chinese keeps 計劃.
v4.11.3
2026-10-23 12:54:53 +08:00
BiFangKNT 97204a5d94 docs(agents): Update test run instructions
- Add recommendation for using Linux containers on Windows
- Emphasize running tests on Linux to match CI
2026-10-23 12:51:28 +08:00
BiFangKNT 3456668497 feat(media): centralize resource URLs and persist refreshed image URLs
- Deduplicate message and history resource URLs using stable catalog references
- Persist renewed URLs with concurrent refresh protection
- Refresh OneBot images via get_msg intervals or NapCat rkey TTL
- Migrate historical payloads and cover SQLite and PostgreSQL behavior
2026-10-23 12:49:56 +08:00
RockChinQandmultica-agent b8f7b295ba fix(deps): patch Dependabot vulnerability alerts (Python + web) (#2762)
Python (pyproject.toml + uv.lock):
- Pillow >=13.0.0 (52 alerts closed, including 4 critical, 33 high, 15 medium)
- pyjwt >=2.15.0 (15 alerts closed, including 1 critical, 8 high, 6 medium)
- aiohttp >=3.14.4 (11 alerts closed)
- virtualenv -> 21.14.13 (12 alerts closed)
- mcp >=1.30.0,<2.0.0 (4 alerts closed)
- soupsieve -> 3.0.4 (4 alerts closed)
- urllib3 >=2.8.0 (3 alerts closed)
- transformers -> 5.20.2 (3 alerts closed)
- anyio -> 4.14.2 (2 alerts closed, including 1 critical)
- oauthlib -> 4.0.0 (2 alerts closed)
- certifi >=2026.10.19 (1 critical alert closed)
- uv >=0.13.4 (1 critical alert closed)
- sentence-transformers -> 6.2.0 (1 critical alert closed)
- cryptography >=50.0.0, fsspec -> 2026.9.0, h2 -> 4.4.1, hpack -> 4.2.0
- langgraph-sdk -> 0.4.8, litellm >=1.88.6, Mako >=1.4.2, multidict -> 7.1.0
- opentelemetry-api -> 1.45.1, pip >=26.2.0, setuptools -> 84.2.1, torch -> 2.14.1, werkzeug -> 3.1.9
- PyPDF2: replaced with pypdf>=6.0.0 (deprecated PyPDF2 had no upstream fix; closes 1 medium alert)

Web (web/package.json + dual lockfiles npm + pnpm in sync):
- axios 1.17.0 -> 1.20.0 (22 alerts closed)
- vite 8.0.16 -> 8.3.4 (5 alerts closed)
- react-router / react-router-dom 7.17.0 -> 7.18.4 (5 alerts closed)
- brace-expansion -> 1.1.21 & 5.0.12 (4 alerts closed)
- js-yaml -> 4.3.2 (3 alerts closed)
- follow-redirects -> 1.16.1 (2 alerts closed)
- nanoid -> 3.3.18 / 3.3.20 (2 alerts closed)
- postcss -> 8.5.31 (2 alerts closed)
- @humanfs/node -> 0.16.8 (1 alert closed)
- source-map-js -> 1.2.2 (1 alert closed)

Unfixable upstream (pending ChromaDB release):
- chromadb (4 open alerts: GHSA-36p7-vc44-83pf, GHSA-2wm9-hf6c-p5cr, GHSA-xph7-9rjv-w5fr, GHSA-f4j7-r4q5-qw2c; vulnerable range <=1.5.9, latest published version is 1.5.9 with no patched release).

Verified: uv sync + core imports, pytest test suites, pnpm build, pnpm lint.

Co-authored-by: multica-agent <[email protected]>
2026-10-23 12:23:50 +08:00
RockChinQ 39645cdd84 fix(web): keep the dedicated-environment link on a custom Cloud banner (#2760)
* fix(web): keep the dedicated-environment link on a custom Cloud banner

The Cloud banner can carry per-language copy, but the custom-copy branch
rendered that text alone: everything else in the banner swaps the built-in
message for an override so the operator can say what is actually happening,
and doing so silently dropped the link to the dedicated environment -- the only
destination that turns a warning into an upgrade.

Render the dedicated link after the override when show_links is on, using new
cta_dedicated copy in every locale so the second half of the sentence reads as
a call to action rather than repeating the environment name.

* test(web): expect the new banner CTA copy in every locale
2026-10-23 11:43:15 +08:00
BiFangKNT 1be47ae925 fix(monitoring): refresh image URLs in execution details
- Refresh images in inputs, outputs, deliveries, and conversation history
- Reuse OneBot refresh logic without rewriting persisted records
- Cover existing image URLs across agent and pipeline execution views
2026-10-23 10:21:54 +08:00
BiFangKNT e3c7e49214 test(provider): initialize Codex requester fixture 2026-10-23 09:02:23 +08:00
BiFangKNT baddaa2b74 feat(onebot): refresh expired image URLs in history and model requests
- Cache NapCat rkeys by type and refresh only when their TTL expires
- Renew image URLs through get_msg for other OneBot v11 implementations
- Refresh session views, Runner history, and each model request attempt
- Isolate caches by connection without downloading images or rewriting history
2026-10-23 08:41:50 +08:00
RockChinQ c538e696b2 chore(release): bump version to 4.11.2 (#2758) v4.11.2 2026-10-22 23:45:23 +08:00