Commit Graph
4367 Commits
Author SHA1 Message Date
Hyu d2ec53ec91 feat(dingtalk): support group subscriptions and card interaction events 2026-10-10 21:29:49 +08:00
Hyu 387cc9c30c fix(dingtalk): normalize spacing around visible think markers 2026-10-10 21:29:47 +08:00
Hyu e675a81bd8 fix(dingtalk): make card replies switch control streaming and settings 2026-10-10 21:29:47 +08:00
Hyu 0a18440faf fix(dingtalk): improve card replies and attachment delivery 2026-10-10 20:31:56 +08:00
Dongchuan FuandRockChinQ 339dd56722 fix(web): hide duplicate connection mode control (#2621)
* fix(web): hide duplicate connection mode control

* fix(web): restore event processor guide target

---------

Co-authored-by: RockChinQ <[email protected]>
2026-10-10 18:52:52 +08:00
Hyu 4f43da0fb3 fix(wecombot): improve event routing and sandbox attachment delivery 2026-10-10 18:41:57 +08:00
Hyu a2b7f6b7bb fix: stabilize native streaming and improve bot controls 2026-10-10 18:02:42 +08:00
Hyu e8da99be63 fix(wecomcs): handle service events and prevent duplicate replies 2026-10-10 16:25:36 +08:00
Hyu 36a167cd16 fix(bots): clarify message pagination and hide single-page controls 2026-10-09 23:51:42 +08:00
Hyu 846d1f14e6 fix(bots): restore sessions across processor types 2026-10-09 23:49:35 +08:00
Hyu 6ecd0f68cf fix(bots): inline disabled routes with enable switches 2026-10-09 21:24:42 +08:00
Hyu 96280b3bcc fix(events): restrict pipeline routes and load agent prompts 2026-10-09 21:22:34 +08:00
Hyu ce3a9020af fix(web): unify load error states and retry actions 2026-10-09 21:00:27 +08:00
Hyu cdc4086dea fix(lark): identify bots automatically and support standard events 2026-10-09 21:00:27 +08:00
Hyu 396b09ecce fix(acceptance): repair official account replies and processor navigation 2026-10-09 20:13:51 +08:00
Hyu fea35e8b3f fix(acceptance): improve execution monitoring and processor navigation 2026-10-09 18:54:32 +08:00
Hyu c5c3ec0b2c feat(models): add workspace starred model and processor defaults 2026-10-09 18:34:29 +08:00
Hyu 4c70977a1d fix(acceptance): refine processor setup and dashboard monitoring 2026-10-09 18:19:08 +08:00
Hyu e22bea7f1e fix(acceptance): improve bot setup and execution log presentation 2026-10-09 17:03:15 +08:00
Hyu 113bb0b773 fix(web): refresh assistant model state and refine model actions 2026-10-09 00:46:51 +08:00
Hyu fe324fac81 fix(web): improve assistant setup and model login guidance 2026-10-09 00:29:39 +08:00
Hyu ec3a396f1d feat(web): install event processor plugins from selector 2026-10-08 21:21:15 +08:00
RockChinQ d4458d8883 chore(release): LangBot 4.11.0-rc.1 with SDK 0.7.11rc1 (#2638) v4.11.0-rc.1 2026-10-08 16:02:31 +08:00
Hyu 6c6718d72b feat(web): persist assistant size and draggable position 2026-10-08 15:39:30 +08:00
Hyu b718c7b5dd fix(web): reduce form rerenders and stabilize assistant model labels 2026-10-08 15:21:59 +08:00
Hyu 4b370f0a92 fix(telemetry): skip unrouted events and preserve matched deliveries 2026-10-08 13:33:57 +08:00
RockChinQ 3f698bd1c9 fix(assistant): preserve auto-follow during delayed scroll events 2026-10-08 13:26:27 +08:00
RockChinQ f96f663a80 feat(assistant): add streaming background sessions and refresh workspace UI 2026-10-08 13:24:46 +08:00
Hyu d05d98fcb9 test(monitoring): scope tool call assertion to its heading 2026-10-08 12:46:58 +08:00
Hyu 40a3a941a3 fix(monitoring): unify execution records and stabilize streaming cleanup 2026-10-08 03:02:37 +08:00
Hyu 5f0ef7e48e fix(monitoring): complete translations and align frontend checks 2026-10-07 22:48:49 +08:00
Hyu 9f76037e64 feat(monitoring): unify execution views and trace tool calls 2026-10-07 22:36:10 +08:00
Hyu de886edc1b style(telemetry): apply ruff format to the telemetry manager
The single-line assignment fits the configured line length; ruff format
rejects the wrapped form.
2026-10-07 10:20:08 +08:00
Hyu 4482e8d876 feat(telemetry)!: upload one record per execution node and one closure per chain
Core no longer assembles a whole trace locally. Every workflow node is uploaded
the moment it completes as its own `execution_node` record, and each execution
closes with exactly one `execution_chain` record; all records of one execution
carry the same `event_id`, so Space groups them back into a single chain.

- every execution starts at an inbound event: event-less Pipeline lanes and
  WebUI/API debug runs synthesize their virtual inbound event at the boundary
  and are marked debug=true, so a Runner is never a trace origin
- sampling is decided once per event from a stable hash of the event id (the
  previous `int(id[:8], 16)` raised on every `platform:`-prefixed id and so
  dropped every successful inbound-event chain) and is reported on each record
  as sample{mode,denominator}; the default mode is now `all`
- the local trace buffer, the 120s TTL, the per-process trace cap and the shared
  open-node mirror are gone, which also removes the truncated-chain upload and
  the re-buffered-closed-trace leak they caused
- a broken chain is always uploaded, and its reason falls back to the first
  failed node so the chain explains itself
- flush keeps records until the sender accepts them and counts what it drops;
  telemetry health replaces the unused send-task queue
- heartbeat reports bound Agent / plugin-processor / event-binding counts
- bound Pipeline and Agent resources (plugins, MCP servers, knowledge bases,
  tools with their Host source, skills, models and the Runner schema selectors
  that picked them) are reported on the chain record
- failure text is bounded and redacted instead of passing exception text through
- the dead per-query feature counters and their call sites are removed

Wire contract: schema 2 (`execution_node` / `execution_chain`).
2026-10-07 09:41:41 +08:00
RockChinQ dcc7e17d77 fix(cloud): retain all execution records for activity counts 2026-10-03 05:03:02 +00:00
RockChinQ b205c4000f fix(runtime): isolate bounded DNS resolution from blocking SDK work 2026-10-02 16:13:25 +00:00
RockChinQ 4f1d897347 fix(cloud): retry workspace snapshots every five minutes instead of daily 2026-10-02 15:52:22 +00:00
RockChinQ 17cda1612f fix(telemetry): avoid global plugin enumeration in workspace snapshots and support model adapters 2026-10-02 15:46:28 +00:00
RockChinQ 2e5bbc8bdd feat(web): integrate ecosystem social preview images 2026-10-02 02:16:38 +00:00
RockChinQ c95b8581fc fix(plugin): upgrade SDK to 0.7.10 for legacy config compatibility (#2625) 2026-10-02 08:24:43 +08:00
RockChinQ 8732fe3607 chore(release): prepare 4.11.0-beta.6 with SDK 0.7.9 (#2624) v4.11.0-beta.6 2026-10-02 02:30:00 +08:00
RockChinQ 8549369d48 fix(ci): format pipeline extensions and plugin icon hook (#2623) 2026-10-02 02:18:07 +08:00
Hyu 1b320aefd0 chore(deps): upgrade plugin SDK to 0.7.8
Pins the 0.7.8 wheel published from the SDK release and refreshes uv.lock.
2026-10-02 01:36:11 +08:00
Hyu af9011f237 fix(web): load installed plugin icons through the authenticated route
Multi-Workspace deployments fail the public plugin icon route closed (404), so plain <img src> icons broke everywhere locally and for the runner picker in production. A shared cached hook fetches the authenticated icon for installed plugins and leaves marketplace surfaces on the cloud URL.
2026-10-02 01:34:52 +08:00
Hyu 34b5fe0202 fix(plugin): share the runtime file-transfer root and 404 uninstalled icon requests
The SDK binds one transfer root inode (mode 0700) and picks it per profile: a shared worker uses /tmp/lbp-rpc while a host without the profile env fell back to data/temp/lbp, so plugin icons and assets died with 'Invalid file transfer capability'. The host now pins the shared root, and a plugin absent from the resolved Workspace answers 404 instead of 500.
2026-10-02 01:34:47 +08:00
Hyu 38d5750785 fix(plugin): report when an installation failure happened, not when it was sampled
The connector stored only uuid/code/message, so the ops reporter stamped every entry with its own sampling time and a stale failure looked freshly broken on each report. Failures now carry failed_at and the payload publishes it.
2026-10-02 01:34:46 +08:00
RockChinQ 9186c8e43a chore(deps): upgrade plugin SDK to 0.7.7 (#2622) 2026-10-01 23:11:28 +08:00
Hyu 41820cd1a5 test(platform): follow the batched execution trace pipeline
The execution trace rewrite batches records and uploads them from
ExecutionCounters.flush(), replaced the per-trace direct send, dropped the
window counters, made the execution id the record identity and records the
inbound event stage after the routing stage. The ingress tests still asserted
the old mechanism, so they failed on every Python version.

Assert what the pipeline now emits instead: flush the buffered records and read
them back, require the trace registry to be empty afterwards, assert the
deterministic execution id, expect the route stage before the inbound stage,
and give the dispatch stubs the execution_id parameter the ingress passes.
2026-10-01 19:55:44 +08:00
Hyu 73797dfa04 style(plugin): format the runtime ops reporter with ruff 2026-10-01 19:04:43 +08:00
Hyu 4c71de5eca feat(plugin): push plugin runtime ops samples to the Space control plane
The shared Cloud deployment runs one Plugin Runtime for every Workspace, but
nothing reported its health: the instance only exposed two aggregate numbers on
its own health probe, and the per-installation failure registry, the desired
state registry and the reconcile outcome lived in memory with no reader.

Add RuntimeOpsReporter, which every 30 seconds reads the Runtime ``/healthz``
probe over HTTP (derived from ``plugin.runtime_ws_url``), merges it with the
connector's desired-state, failure and reconcile summaries, and posts one
sample to the Space control plane on the existing authenticated direction.
Delivery is best-effort and bounded: a single in-flight request, a ten second
timeout, dropped samples counted in ``runtime_ops`` on the instance health
probe, and a failed probe recorded as a drop so the dashboard shows staleness
instead of grading a stale sample as healthy.

Cloud-only: a non-cloud deployment never enables the reporter, and the channel
is independent of product telemetry so ``space.disable_telemetry`` cannot blind
the ops dashboard.
2026-10-01 19:01:16 +08:00