Commit Graph
156 Commits
Author SHA1 Message Date
huanghuoguoguo 23f4abb65b fix(api): preserve scoped writes, streaming readiness and audit contracts 2026-10-29 15:48:15 +08:00
huanghuoguoguo 82486225a6 refactor(api): route management and runtime consumers through application APIs 2026-10-29 15:48:15 +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 7295639423 feat(api): provide Workspace and execution API foundations 2026-10-29 12:45:02 +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
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 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 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 01789e498a LANG-145: bind WebAuthn to server config and make passkeys OSS-only (#2744)
* LANG-145: bind WebAuthn to server config and make passkeys OSS-only

Two problems in the passkey implementation:

1. The RP ID and expected origin came from the request: a JSON 'origin' field,
   then the Origin/Referer headers, then the request URL. WebAuthn's
   anti-phishing guarantee depends on values the server chose; trusting the
   request lets a sibling host under the same registrable domain obtain a valid
   assertion for a victim's credential. Resolution now follows the same rule the
   OAuth and invitation links already use: api.webui_url, then
   api.webhook_prefix, then the configured port on loopback.

2. Passkeys are now an OSS-only feature. Cloud deployments authenticate through
   their own account service, so every passkey route (register options/verify,
   auth options/verify, list, rename, delete) refuses with
   edition_unsupported, and /account-info advertises neither passkey_login_enabled
   nor passkey_supported. Both cloud flavours are covered: system.edition ==
   'cloud' and deployment.mode == 'cloud'.

Tests:
- New unit suite for the edition matrix and for origin resolution (including
  that client-supplied origin/Origin/Referer are ignored).
- The three 'reverse proxy scenario' tests asserted the old, unsafe behaviour
  (server trusting the request). They now assert the server-config contract.
- test_smoke cloud capabilities expectation updated to passkey_* = false.

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

* style(api): drop the typing import left unused by the WebAuthn origin change

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

---------

Co-authored-by: multica-agent <[email protected]>
2026-10-22 20:39:21 +08:00
BiFangKNT 3b1ea56f4f fix(monitoring): avoid historical payload reads in execution filters
- Add covering indexes through migration 0040
- Preserve PostgreSQL FORCE RLS state when marking historical summaries
- Add query-plan and migration regression tests to CI
2026-10-20 10:45:44 +08:00
BiFangKNT 17aa5a75ac test(persistence): align migration fixtures with startup bootstrap 2026-10-20 06:50:07 +08:00
BiFangKNT 810d053df9 fix(monitoring): persist session summaries to avoid history scans
- Maintain counts and display snapshots in source transactions with replay-safe deduplication.
- Read session lists exclusively from summaries and remove execution-only filters.
- Automatically initialize historical summaries in bounded, resumable batches during OSS startup.
- Add behavioral contracts covering accounting, retention, query cost and PostgreSQL concurrency.

Verified with the required session_summary suite and real container upgrade startup.
2026-10-20 06:12:00 +08:00
BiFangKNT 57077740bd chore(merge): sync master and preserve monitoring test coverage 2026-10-18 12:43:44 +08:00
BiFangKNT b73f66a234 feat(persistence): enforce image reference storage contract
- Reject structured inline images on ORM and Core writes
- Route plugin run results through the media-aware journal
- Redact legacy inline images before merging run metadata
- Cover storage contracts and regressions on SQLite and PostgreSQL
2026-10-18 12:26:09 +08:00
BiFangKNT 80b8358d8d test(monitoring): add status column to monitoring messages table 2026-10-18 11:10:35 +08:00
huanghuoguoguo 13b8edeace Merge pull request #2705 from langbot-app/test/required-contract-suites
test(ci): decouple required suites from test names and counts
2026-10-17 23:12:59 +08:00
huanghuoguoguo 407e352e5d Merge pull request #2695 from langbot-app/test/quality-migration-oracles-20261017
test(migrations): reuse historical data contracts and measure startup peaks
2026-10-17 20:12:34 +08:00
huanghuoguoguo fc877f73df Merge pull request #2693 from langbot-app/test/quality-box-platform-oracles-20261017
test(runtime): verify sandbox and platform behavior contracts
2026-10-17 20:12:22 +08:00
huanghuoguoguo c9f886a203 Merge pull request #2692 from langbot-app/test/quality-valkey-search-oracles-20261017
test(vector): verify real Valkey search and deletion results
2026-10-17 20:12:15 +08:00
huanghuoguoguo 64cdb7095d Merge pull request #2691 from langbot-app/test/quality-bot-api-oracles-20261017
test(api): verify bot response and service delegation contracts
2026-10-17 20:12:09 +08:00
huanghuoguoguo da4c987976 Merge pull request #2687 from langbot-app/test/quality-persistence-core-oracles-20261017
test: strengthen startup and persistence boundary oracles
2026-10-17 20:11:42 +08:00
huanghuoguoguo 1d9e551908 Merge pull request #2681 from langbot-app/test/quality-auth-boundary-oracles-20261017
test(auth): verify revocation and authorization ordering
2026-10-17 20:11:06 +08:00
huanghuoguoguo 98cc2ec2d6 Merge pull request #2680 from langbot-app/fix/auth-invalid-json-contract-20261017
fix(auth): reject malformed credential payloads before authentication
2026-10-17 20:11:01 +08:00
huanghuoguoguo 0b0201a3f5 Merge pull request #2679 from langbot-app/test/quality-api-observability-20261017
test(api): verify monitoring payloads and embed side effects
2026-10-17 20:10:55 +08:00
huanghuoguoguo ecea4c3d41 Merge pull request #2675 from langbot-app/test/quality-self-duplicates-20261017
test: remove redundant backend checks and migration aliases
2026-10-17 20:10:30 +08:00
huanghuoguoguo 567ce3a841 Merge pull request #2674 from langbot-app/test/quality-api-response-contracts-20261017
test(api): verify resource payloads and scoped service arguments
2026-10-17 20:10:20 +08:00
huanghuoguoguo 0f522e5286 test(persistence): verify migration data and startup task bounds 2026-10-17 16:08:08 +08:00
huanghuoguoguo 9b350132f4 test(api): cover send delegation and reuse the prior list contract 2026-10-17 15:57:35 +08:00
huanghuoguoguo c03f33d855 test(runtime): verify sandbox and platform contracts 2026-10-17 15:57:15 +08:00
huanghuoguoguo 4a2780b841 test(vector): verify real Valkey search and deletion results 2026-10-17 15:53:26 +08:00
huanghuoguoguo cbc049400c test(api): verify bot response and service delegation contracts 2026-10-17 15:53:00 +08:00
huanghuoguoguo 1c0fd7d0ba test: strengthen startup and persistence boundary oracles 2026-10-17 15:45:09 +08:00
huanghuoguoguo efe1e4a758 test(auth): verify revocation and authorization ordering 2026-10-17 15:29:39 +08:00
huanghuoguoguo 569dd07024 fix(auth): reject malformed credential payloads before authentication 2026-10-17 15:25:16 +08:00
huanghuoguoguo d25c1e0f0c test(api): verify monitoring payloads and embed side effects 2026-10-17 15:16:26 +08:00
huanghuoguoguo 4afd86c1f6 test: consolidate duplicate backend contracts and strengthen stage checks 2026-10-17 15:03:50 +08:00
huanghuoguoguo 8bad1a14fe test(api): verify resource payloads and scoped service arguments 2026-10-17 15:02:41 +08:00
huanghuoguoguo 24300adc72 test(runtime): assert filter and message delivery semantics 2026-10-17 15:01:09 +08:00
huanghuoguoguo 3f2d52e557 Merge pull request #2512 from langbot-app/feat/2410-sdk-skill-store
feat(skill): decouple read-only skills from Box execution
2026-10-17 10:13:26 +08:00
huanghuoguoguo d54e533985 fix(skill): pin revisions per run and preserve shared Box state 2026-10-17 09:32:41 +08:00
huanghuoguoguo 2b79b04d36 Merge pull request #2635 from langbot-app/test/core-contract-coverage-gaps
test(core): verify runtime behavior and close PostgreSQL coverage gaps
2026-10-17 09:13:07 +08:00
RockChinQandClaude Opus 5.5 16cfb6f8bd feat(cloud): show purchased plan revision alongside the latest revision
- Expose the workspace's purchased plan revision from the entitlement
  snapshot.
- Stack the purchased revision card in front of the latest revision in
  the plan comparison dialog; both cards share the same layout, and the
  purchased card's copy and prices come from the Space revision endpoint
  while benefits stay on the entitlement snapshot.
- Add a cancel-first tooltip for subscribing to the newer revision.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-17 00:25:41 +08:00
RockChinQ 338b856eec fix(monitoring): restore Cloud in-flight snapshots and collapsed dock 2026-10-15 16:42:24 +08:00
RockChinQ 625ee67113 fix(ci): align workspace fixtures and constrain mobile tours 2026-10-15 05:31:04 +00:00
Hyu e29fd27f02 feat(i18n): localize backend messages by workspace language 2026-10-15 05:31:04 +00:00
RockChinQ b6c4e2c395 feat(cloud): enforce signed workspace subscription resource limits 2026-10-15 05:30:36 +00:00
RockChinQ 0ed2a513f9 test(persistence): verify tagged 4.10.11 upgrades on sqlite and postgres 2026-10-13 13:28:03 +00:00
RockChinQ 48c6a1f536 fix(sqlite): enable WAL for concurrent plugin callback commits 2026-10-13 11:40:55 +00:00
Hyu 3ff849d243 test: align processor fixtures with current creation and startup behavior 2026-10-11 01:03:31 +08:00