Commit Graph
603 Commits
Author SHA1 Message Date
RockChinQandmultica-agent a0405a0b2c feat(api-tools): processor workspace operations authorization and WebUI
LANG-226

Co-authored-by: multica-agent <[email protected]>
2026-10-31 17:39:10 +00:00
RockChinQandmultica-agent f527c61a41 test(api-tools): add unit tests for assistant progressive disclosure
LANG-225

Co-authored-by: multica-agent <[email protected]>
2026-10-31 23:57:21 +08:00
RockChinQandmultica-agent d41959effd feat(api-tools): preserve run_id is required error message in from_handler mode
LANG-231: Restore backward-compatible 'run_id is required' error message when run-scoped actions are invoked via handler without run_id, resolving regression in agent auth tests.
Co-authored-by: multica-agent <[email protected]>
2026-10-31 22:52:45 +08:00
RockChinQandmultica-agent 8c5ee20283 fix(api-tools): accept runtime_list cursor and float stale_after_seconds, verify 69 operation dispatches
LANG-231: Fix SDK 0.7.19 input compatibility regressions by accepting optional
cursor in ExecutionRuntimesInput and float | None stale_after_seconds in
ExecutionRuntimeReconcileInput. Update test_all_69_operations_route_through_execution_api
to drive real SDK 0.7.19 payloads through handler and assert raw execution dispatch.
Add autouse fixture in plugin tests to isolate transfer root environment leaks.

Co-authored-by: multica-agent <[email protected]>
2026-10-31 21:34:04 +08:00
RockChinQandmultica-agent 9ab64baa63 feat(api-tools): route plugin actions through ExecutionAPI facade and accept SDK 0.7.19 payloads
LANG-231: Route all plugin/runner actions to Core through ExecutionAPI facade.
Support real SDK 0.7.19 payloads across query, model, storage, and RAG schemas.
Add integration routing test for all 69 operations and catalog export script.

Co-authored-by: multica-agent <[email protected]>
2026-10-31 21:00:04 +08:00
RockChinQandmultica-agent a159b27b8e fix(api-application): enforce processor allowed operation intersection and remove privilege escalation (LANG-224)
Co-authored-by: multica-agent <[email protected]>
2026-10-31 12:37:41 +00:00
RockChinQandmultica-agent 50abaf83e8 test(api-tools): add processor principal sweep integration test
LANG-224

Co-authored-by: multica-agent <[email protected]>
2026-10-31 12:20:14 +00:00
RockChinQandmultica-agent 6c366897ac test(api-tools): add unit tests for granted operations access layer
LANG-224

Co-authored-by: multica-agent <[email protected]>
2026-10-31 12:20:09 +00:00
RockChinQandmultica-agent 2621328de0 test(api-tools): assert all referenced operation IDs exist in catalog
- Add test_referenced_operation_ids_exist asserting all 'get it from X' and 'Call X' targets exist in the catalog
- Add assertions for model_uuid, server_uuid, mcp.server.* risk and exposure

Ref: LANG-229
Co-authored-by: multica-agent <[email protected]>
2026-10-31 11:02:30 +00:00
RockChinQandmultica-agent 6864b91770 test(api-tools): verify processor dedupe isolation and builder validation
LANG-230

Co-authored-by: multica-agent <[email protected]>
2026-10-31 19:00:00 +08:00
RockChinQandmultica-agent 0f7ee5775e test(api-tools): add unit tests for operation documentation and exposure metadata
LANG-229

Co-authored-by: multica-agent <[email protected]>
2026-10-31 10:31:14 +00:00
RockChinQandmultica-agent fdd4d2e9d9 test(api-tools): add unit tests for processor principal and context factory
LANG-230

Co-authored-by: multica-agent <[email protected]>
2026-10-31 18:20:51 +08:00
huanghuoguoguo 8f2f537e34 fix(api): preserve integer knowledge ingestion task IDs 2026-10-29 15:47:56 +08:00
huanghuoguoguo d2176eaa27 test(persistence): require PostgreSQL release upgrade regression 2026-10-29 14:43:13 +08:00
huanghuoguoguo 211f4e93f4 fix(api): align plugin media errors with master 2026-10-29 12:50:15 +08:00
huanghuoguoguo 7295639423 feat(api): provide Workspace and execution API foundations 2026-10-29 12:45:02 +08:00
huanghuoguoguo 96ec96baf2 Merge pull request #2805 from langbot-app/fix/mcp-mode-validation
fix(mcp): reject unsupported modes before persistence
2026-10-29 10:41:57 +08:00
huanghuoguoguo 3969c3d25d fix(mcp): reject unsupported modes before persistence 2026-10-29 10:14:02 +08:00
Chin Rockandmultica-agent 117e3bb350 fix(dify-agent): separate final answers and release 0.2.5
Co-authored-by: multica-agent <[email protected]>
2026-10-28 15:15:48 +00:00
huanghuoguoguo c21b3bc0ad Merge pull request #2803 from langbot-app/fix/localagent-latest-sdk
fix(localagent): follow the latest stable SDK in dependency checks
2026-10-28 21:43:07 +08:00
huanghuoguoguo e3792184bf test(localagent): refresh source hashes for updated SDK requirements 2026-10-28 21:08:53 +08:00
Guanchao Wang ce3a4e7bfd Merge pull request #2564 from Smilewithoutfalling/fix/wecombot-throttle-stream-push
fix(wecombot): throttle intermediate stream frames in WS mode
2026-10-28 13:03:37 +00:00
WangCham bab86430e6 fix(wecombot): preserve throttled snapshots for empty final frames 2026-10-28 20:46:15 +08:00
RockChinQandmultica-agent 0608408352 chore(deps): pin langbot-plugin 0.7.19 (#2801)
* chore(deps): pin langbot-plugin 0.7.19

Co-authored-by: multica-agent <[email protected]>

* test(agent): accept the SDK 0.7.19 cancel_peer_on_cancel handoff in runtime doubles

Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: multica-agent <[email protected]>
2026-10-28 19:26:01 +08:00
RockChinQandmultica-agent 0219007acd fix(qqofficial): correct group mentions and reply sequences (LANG-181) (#2799)
* fix(qqofficial): preserve native mentions and reply sequences (LANG-181)

Co-authored-by: multica-agent <[email protected]>

* fix(qqofficial): respect group mention rendering capability

Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: multica-agent <[email protected]>
2026-10-28 18:43:18 +08:00
4b537973f9 feat(plugin): upload debug plugin to LangBot Space with optional GitH… (#2612)
* feat(plugin): upload debug plugin to LangBot Space with optional GitHub sync

- SDK: reusable in-memory .lbpkg packaging + git sync helper (local git by default, optional repo/token override)
- routing: space-upload config/upload/git-sync endpoints; debug plugins resolved via OSS bridge without touching get_plugin_info
- frontend: debug-card entry + upload dialog with multi-language metadata, icon upload and changelog
- i18n across 8 locales; operation-trace + action allowlist entries

* fix(plugin-space-upload): stable dialog width, single-line locale tabs, broader error surfacing

- fixed dialog width so toggling the GitHub section no longer resizes it
- language tabs render on one line (horizontal scroll when needed)
- surface the real upload/git error message (msg field) instead of [object Object]
- hint that a missing GitHub repo is auto-created when a token is provided

* fix(plugin-space-upload): narrow dialog and reset sm:max-w clamp

The base DialogContent applies sm:max-w-lg at the sm breakpoint, which overrode the unprefixed max-w-none and clamped the upload card to 32rem on desktop. Set an explicit sm:max-width and size the card to ~36rem. Locale tabs now wrap instead of scrolling horizontally.

* fix

* fix(plugin-space-upload): address CI and UX feedback

- narrow the upload dialog to ~36rem and reset the sm:max-w clamp
- guide the publisher to the Space review page after a successful upload
- drop the redundant null comparison flagged by code quality
- update the operation-action expectation and Space/LangBot Account wording
- ruff format the touched API modules

* feat(plugin-space-upload): public repo, editable author/license, card red dot

* fix(market): replace yellow download count with update available badge

* style(market): unify installed and update indicators into badges

* feat(plugin): redesign debug card banner, style debug icon, and prioritize debug plugins

* feat(plugin-space-upload): simplify upload dialog layout, add creator verification and market redirection

* fix(i18n): use LangBot Account terminology in Space upload dialog

Co-authored-by: multica-agent <[email protected]>

* style(i18n): reflow reworded locale strings for prettier

Co-authored-by: multica-agent <[email protected]>

* test(utils): stop timing out the pattern-count cap test on loaded runners

Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: Hyu <[email protected]>
Co-authored-by: RockChinQ <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-10-28 18:23:09 +08:00
Chin Rockandmultica-agent 4687fc96e7 fix(auth): allow sole OSS account to adopt Space email
Co-authored-by: multica-agent <[email protected]>
2026-10-28 10:21:35 +00:00
RockChinQandmultica-agent 3a77306c3c feat(plugins): consolidate official plugins with independent releases (LANG-180) (#2797)
Co-authored-by: multica-agent <[email protected]>
2026-10-28 17:32:24 +08:00
Smilewithoutfalling 76873c85e7 fix(wecombot): throttle intermediate stream frames in WS mode
Drop intermediate stream frames that land inside the pacing window so a fast
runner cannot flood the WeCom wire. The first frame of a stream is released
immediately because there is no prior timestamp to compare against, and final
frames always bypass the throttle.

Frames carry complete snapshots since a2b7f6b7, so dropping an intermediate
frame loses no content: the next frame already carries everything.
2026-10-28 12:26:37 +08:00
huanghuoguoguo 82eef2496a fix(http-bot): reset persistent conversation context through shared service (#2788) 2026-10-28 10:29:17 +08:00
0c99832298 fix(qqofficial): receive full-group messages and preserve bot mentions (#2769)
* fix(qqofficial): support full-group messages and native bot mentions

* test(qqofficial): cover full-group form reply targets

---------

Co-authored-by: Chin Rock <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-10-28 09:57:00 +08:00
6b57a1074f fix(events): normalize millisecond timestamps before datetime conversion (LANG-170) (#2722)
* fix(events): normalize millisecond timestamps before datetime conversion

- run_journal: _event_time_to_utc normalizes second/millisecond/
  microsecond epoch values (loop-divide above 1e10) with guards for
  bool/non-numeric/zero/non-finite inputs; OverflowError contained
- run_ledger_store, interaction_store: divide epoch values above 1e11
  by 1000 before datetime conversion; OverflowError added to the
  handled exceptions

Second-based inputs are unchanged. Verified in production on a
self-hosted v4.11.0 deployment.

* fix(events): harden timestamp conversion and cover persistence regressions

Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: leonoxo <[email protected]>
Co-authored-by: Chin Rock <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-10-27 23:49:01 +08:00
Li-john1021andLi-john1021 bd4e408d7e fix(plugin): honor display_plugin_debug_url port for managed Runtime (#2782)
Stdio and Windows launches always bound the SDK default debug port 5401,
so changing plugin.display_plugin_debug_url only updated the console URL
and a second Core instance hit Address already in use. Pass the configured
debug (and Windows control) ports into the Runtime CLI, and document the
behavior.

Fixes #2713

Co-authored-by: Li-john1021 <[email protected]>
2026-10-27 20:56:26 +08:00
Martin 12debe2747 fix(plugin): persist v4 runtime state and tolerate runner registration gaps (#2774)
Persist the v4 plugin runtime state so recreating the runtime container no
longer discards installed plugins' artifacts, dependency environments and
installation-private data, and stop a transient Runner registry miss during
steering from dropping the message.

- docker-compose: bind-mount ./data/plugin-runtime for the plugin runtime
  alongside ./data/plugins.
- kubernetes: add the langbot-plugin-runtime-state claim (5Gi) mounted at
  /app/data/plugin-runtime, kept separate from the plugin data claim so
  runtime state does not land inside the plugin directory.
- chat handler: treat RunnerNotFoundError while claiming steering as
  "steering unavailable" and continue with a normal run; every other error
  keeps propagating. The runner error imports move to module scope, which
  the new early reference requires.
- tests: cover the steering fallback, the claimed-steering interrupt, and
  the lasting-gap path that still reports runner-not-found.

The steering fallback buys one extra uncached registry lookup while a
runtime reconnects; it does not recover a gap that outlasts the message.
2026-10-27 20:31:49 +08:00
Dongze Yang 6990607c5c Merge pull request #2743 from ydzat/fix/normalize-access-control-ids
fix(pipeline): normalize IDs in wildcard access control
2026-10-27 20:18:51 +08:00
0582d1b3d4 chore: rename internal docs/ to dev-docs/ and prepare docs site merge
Move the 27 internal design docs (87 tracked files) from docs/ to dev-docs/
to make room for the public documentation site, adjust Docker/fnOS ignores,
refresh the README/AGENTS/ARCHITECTURE references, and land the docs
workflows ahead of the subtree import so they cannot diverge from mirror.

Co-Authored-By: Mika (Multica) <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-10-27 08:04:20 +00: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
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
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
彼方 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 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
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
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
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