Ten links in dev-docs/agent-runner-pluginization/ pointed to the non-existent ./RUNNER_QA_GUIDE.md; point them to AGENT_RUNNER_QA_GUIDE.md. Rebased onto the docs/ -> dev-docs/ move.
Co-authored-by: RockChinQ <[email protected]>
* feat(line): EBA LINE adapter skeleton (WO-LINE-01-SKELETON-1018)
- pkg/platform/adapters/line/ 9 files (LineAdapter hybrid inheritance +
Capability + event namespace + config env load, zero hardcoded secrets)
- LINE SDK calls all stub (NotImplementedError) pending WO-LINE-00/02/03
- Verified: compileall 7/7 + ruff 0 + import chain green against
v4.11.0-hotfixed SDK (container-extracted, read-only)
- Source: handoff box WO-LINE-01-SKELETON-1018 (sha256 9/9 matched)
Co-authored-by: multica-agent <[email protected]>
* feat(line): implement WO-LINE-02 message.received loop and converter
Co-authored-by: multica-agent <[email protected]>
* feat(line): implement WO-LINE-03 streaming and send API
Co-authored-by: multica-agent <[email protected]>
* feat(line): implement WO-LINE-04 group and user event extensions
Co-authored-by: multica-agent <[email protected]>
* feat(line): implement WO-LINE-05 group and user event extensions
Co-authored-by: multica-agent <[email protected]>
* docs(line): add EBA LINE adapter architecture guide and documentation
Co-authored-by: multica-agent <[email protected]>
* feat(line): resolve Ruff warnings and manifest spec update
Co-authored-by: multica-agent <[email protected]>
* feat(line): add webhook_url config and help_links to PR_DESCRIPTION.md
Co-authored-by: multica-agent <[email protected]>
* feat(line): add webhook_url config and help_links for PR #2736
Co-authored-by: multica-agent <[email protected]>
* fix(line): ruff format, update help_links, remove nested duplicate dir
Co-authored-by: multica-agent <[email protected]>
* fix(line): resolve 12 test failures, align types, and move architecture docs to dev-docs
Co-authored-by: multica-agent <[email protected]>
* fix(line): resolve ruff lint and formatting issues for CI
Co-authored-by: multica-agent <[email protected]>
* docs(line): sanitize internal orchestration notes and standardize documentation
Co-authored-by: multica-agent <[email protected]>
* clean(line): remove internal tracking ticket references from source code
Co-authored-by: multica-agent <[email protected]>
* fix(line): resolve MessageReceivedEvent and Friend entity mapping for 100% test pass
Co-authored-by: multica-agent <[email protected]>
* fix(line): resolve E402 import order in event_converter.py
Co-authored-by: multica-agent <[email protected]>
* feat(line): implement the LINE Omni adapter on the legacy messaging flow
Replace the placeholder skeleton with a working unified-webhook adapter:
- verify X-Line-Signature with WebhookParser and acknowledge before dispatch
- build real LINE messaging clients from channel_access_token and drop
the adapter's own messages using the account id from get_bot_info
- map message/image/voice events to message.received, unsend to
message.deleted, membership changes to group/bot events, and the
remaining LINE event types to platform.specific with chat identity
- send and reply through MessagingApi with LINE's five-message budget,
a reply-token to push fallback, and honest NotSupportedError paths
- expose get_user_info, get_group_info, leave_group and the get_bot_info,
get_profile, get_group_summary pass-through actions
- keep the legacy FriendMessage/GroupMessage listeners working
- move tests to tests/unit_tests/platform, add the adapter doc, and
register line in OMNI_ADAPTER_NAMES
Co-authored-by: multica-agent <[email protected]>
---------
Co-authored-by: multica-agent <[email protected]>
Co-authored-by: RockChinQ <[email protected]>
Fixes#2814
After a session reset, keep the reset generation marker out of provider-facing external conversation state so Runner plugins start a new remote conversation.
LocalAgent declared langbot-plugin>=0.7.18, and the published 0.2.2 artifact
pinned langbot-plugin==0.7.16. The plugin runtime rejects any SDK requirement
its own SDK version does not satisfy, so both directions were dead ends: 4.11.4
(SDK 0.7.19) could not install the published build, and a 0.7.18 floor would
have locked out 4.11.2/4.11.3 (SDK 0.7.16) from the next one.
Use a bounded range from the 4.11.2 baseline instead, matching every other
official Runner and KnowledgeEngine plugin. Verified on SDK 0.7.16 and 0.7.19:
327 tests pass on both, including the runtime dependency admission contract.
Co-authored-by: multica-agent <[email protected]>
The packaging job pinned langbot-plugin 0.7.18 while Core runs 0.7.19, so it
would validate archives with a CLI that no longer matches the SDK contracts the
plugins are shipped against. Follow the Core pin.
Co-authored-by: multica-agent <[email protected]>
0041_resource_urls could not be rolled back through the supported entry point
(`python -m langbot.pkg.persistence.alembic_runner downgrade`):
- SQLite failed with `no such function: langbot_expand_resource_urls`. The UDF
is registered by an Engine `connect` hook that only runs when the application
installs the catalog, so a standalone migration process held a connection
without it.
- Both backends failed with `AttributeError: 'Engine' object has no attribute
'_langbot_resource_aliases'`, because `uninstall()` assumed `install()` had
already run on that engine.
Register the expansion UDF on the migration connection for SQLite, and let
`uninstall()` skip the alias cache when the engine never installed it. The
downgrade still rewrites retained payloads back to literal URLs and drops the
catalog; only the missing hooks were at fault.
Co-authored-by: multica-agent <[email protected]>
- webhook handler: run listener in a tracked background task so the
HTTP ACK is not coupled to the Agent run lifetime (prevents in-flight
cancellation when the request scope ends); exceptions are logged
- send_message: implement LINE Push API path (text + image) instead of
the empty stub, separated from the reply-token path
Verified in production on a self-hosted v4.11.0 deployment (LangBot
community edition, rootless Docker).
Co-authored-by: leonoxo <[email protected]>
* 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]>
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.
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]>