Commit Graph
34 Commits
Author SHA1 Message Date
Jiahui ZhouandTRAE CLI 39ae4b796e build: allow skipping optional native artifacts (#4840)
Co-authored-by: TRAE CLI <traecli@bytedance.com>
2026-09-09 14:05:06 +08:00
Hao Zheandzhiheng.liu 4237c66031 fix(bot): harden scheduling, sessions, sandbox, and packaging (#3549)
* fix(bot): make SRT sandbox constructible and surface startup failures

Sweep findings: C-02, C-04. Read SRT settings from the correct config and never cache failed startups.

(cherry picked from commit 0d3798399a)

* fix(bot): reject unschedulable cron jobs and honest manual runs

Sweep findings: C-07, C-08. Reject impossible schedules and fail no-op manual execution.

(cherry picked from commit 47413fdffe)

* build: ship VikingBot workspace and bridge assets in wheels

Sweep findings: F-07. Copy required bot assets into the package and resolve installed workspace templates correctly.

(cherry picked from commit 85e9ff2d06)

* fix(bot): OpenAPI channel concurrency, session deletion, and context handling

Sweep findings: C-09, C-10, C-11. Reject ambiguous requests and make session deletion durable.

(cherry picked from commit 68fd70c5be)

* docs(bot): correct channel setup config paths and license metadata

Sweep findings: C-13, C-15. Point channel setup at ov.conf and align package metadata with MIT.

(cherry picked from commit b15c241037)

* fix(review): align bot license metadata

Addresses blocking review finding on #3426.

(cherry picked from commit 001e0fa7ed)

* fix(bot): preserve cron scheduler liveness

Record callback-less scheduled runs as job errors so recurring timers persist and rearm, while manual runs still fail without mutating state. Document the OpenAPI context rejection and same-session concurrency contract.

* fix(ragfs): use stable Windows file identity APIs

---------

Co-authored-by: zhiheng.liu <zhiheng.liu@bytedance.com>
2026-07-31 15:57:43 +08:00
t0saki 75d7d65b2d fix(build): bundle web-studio in pip/pipx installs so /studio works without Docker (#2238)
Previously /studio was only accessible in Docker builds because the
Dockerfile had a dedicated Node.js stage that built the SPA and copied
it into the Python package. pip/pipx/uv installs from source skipped
this step entirely, leaving openviking/web_studio/dist/ empty and
/studio unmounted at runtime.

Add a setuptools build_py hook (_build_web_studio) that automatically
runs `npm ci && npm run build` during package installation when Node.js
is available. The same function is reused by a new `make build-studio`
target and by the Dockerfile (which now gets Node.js via multi-stage
COPY from node:24-trixie-slim instead of a separate builder stage).

- setup.py: OpenVikingBuildPy overrides build_py to call _build_web_studio()
- Makefile: add build-studio target, wire it into `build` dependency
- Dockerfile: remove web-studio-builder stage, unify via build_py hook
- .gitignore: exclude openviking/web_studio/dist/ (build artifact)
2026-05-26 14:06:23 +08:00
Zayn Jarvis d6a024efa5 feat(docker)!: drop legacy console (keep BFF + Caddy), ship web-studio in pip, fix favicons (#2160)
The OpenViking docker image still launched the legacy `openviking/console`
standalone service on port 8020. Now that web-studio is bundled into the OV
server itself at /studio (see #2156), that process is redundant and the
port is just a confusing artefact.

This change retires the old console (python package + 8020 + console-frontend
favicons) but **keeps the in-compose Caddy as a stable single-ingress on
port 1934**, just simplified to one upstream now that there's no 8020. The
server-side BFF at `openviking/server/routers/console.py` (under
`/api/v1/console/*`) is also kept — web-studio uses the same endpoints.

**The OAuth authorize page (`openviking/server/oauth/router.py`) is
deliberately untouched in this PR** — the console-link button and Quick
authorize same-origin panel will be re-pointed at web-studio in a focused
follow-up.

BREAKING CHANGES:
- Port 8020 is gone from the docker image and docker-compose.yml; Caddy at
  1934 now forwards everything to 1933 (web-studio lives at /studio there).
  Anything bookmarked at `http://host:8020/...` must migrate to
  `http://host:1933/studio/`.
- `python -m openviking.console.bootstrap` no longer exists; the python
  package `openviking.console` has been removed.

Pip packaging:
- web-studio dist is now shipped inside the wheel under
  `openviking/web_studio/dist/` (mirroring the old `openviking/console/static/`
  layout). The dockerfile copies `--from=web-studio-builder /web-studio/dist`
  into the source tree before `uv sync`, so the wheel produced by the
  default docker build always carries the SPA. Building the wheel without
  running `npm run build` first leaves the directory empty, which gracefully
  degrades /studio to a 404 without breaking server startup.
- Favicon assets (`favicon.ico` / `favicon-32.png` / `apple-touch-icon.png`,
  ~11 KB total) are duplicated into `openviking/server/static/` and shipped
  via package-data so `/favicon.*` and `/mcp/favicon.*` routes are always
  registered, regardless of whether the web-studio dist is bundled.
- `pyproject.toml` and `setup.py` `package-data` drop `console/static/**`
  and add `server/static/**` + `web_studio/dist/**`.
- New favicons (the 16/32/180 set in both `openviking/server/static/` and
  `web-studio/public/`) are downscaled from the canonical
  `web-studio/public/openviking-icon.png`, so the small-icon family matches
  the SPA's high-res rel="icon" target — the studio tab icon now stays
  consistent whether the browser uses the HTML link tag or falls back to
  auto-fetching `/favicon.ico`.

Server:
- `openviking/server/app.py` now reads `/studio` from
  `Path(__file__).parent.parent / 'web_studio' / 'dist'` by default;
  `OPENVIKING_WEB_STUDIO_DIR` still wins for dev mode pointing at a
  repo-local build. Favicon routes are unconditionally registered and
  load from `openviking/server/static/`.
- `openviking/observability/usage_audit/projection.py` drops the legacy
  `/console/*` skip prefix (the BFF prefix `/api/v1/console/*` remains).

Docker:
- `web-studio-builder` stage moved earlier (Stage 2) so its dist can flow
  into `py-builder` before `uv sync` runs.
- Runtime stage no longer separately copies the dist or sets
  `OPENVIKING_WEB_STUDIO_DIR`; the in-package path is the default.
- Entrypoint renamed `openviking-console-entrypoint.sh` -> `openviking-entrypoint.sh`
  and stripped of the `python -m openviking.console.bootstrap` launch.
- `EXPOSE 1933 8020` -> `EXPOSE 1933`.
- `docker-compose.yml` drops the openviking service's 8020 port mapping;
  the caddy service stays but no longer needs port 8020 exposed.
- `Caddyfile` simplified to a single `:1934 { reverse_proxy openviking:1933 }`
  — the legacy `/console/*` route to :8020 is gone.

Docs:
- en/zh quickstart updated to drop the 8020 mapping and explain that the
  API server now also serves `/studio`.
- Other guides (`12-public-access.md`, `11-oauth.md`, `05-observability.md`,
  `04-setup-for-agent.md`, `03-deployment.md`) are intentionally left for a
  focused follow-up PR alongside the OAuth quick-authorize reintroduction.

Tests:
- Deleted `tests/misc/test_console_{proxy,static_assets}.py` (covered the
  removed console package). `tests/observability/test_console_router.py`
  stays — it covers the BFF, which remains.
2026-05-21 16:41:29 +08:00
Qin Haojie 964998daca fix(ragfs): load Windows abi3 pyd artifact (#1801) 2026-04-29 20:10:07 +08:00
Qin Haojieanddingben.db@bytedance.com <dingben.db@bytedance.com@bytedance.com> 6aa62c1b87 fix(ragfs): 仅加载 abi3 binding 产物 (#1756)
* feat(agfs): support overriding queuefs db_path via config

Add a new optional `storage.agfs.queue_db_path` field to AGFSConfig so
the queuefs sqlite database can be relocated outside the workspace via
config. This helps when the workspace volume does not support sqlite
(e.g. some network filesystems returning disk I/O errors on PRAGMA/WAL),
allowing the queue db to be placed on a local path like `/tmp/queue.db`.

When not set, the default path `{storage.workspace}/_system/queue/queue.db`
is preserved, keeping backwards compatibility.

* fix(ragfs): load only abi3 binding artifacts

Avoid stale cpython-specific ragfs_python artifacts shadowing rebuilt abi3 extensions so queuefs sqlite persistence uses the current Rust binding.

---------

Co-authored-by: dingben.db@bytedance.com <dingben.db@bytedance.com@bytedance.com>
2026-04-27 21:30:44 +08:00
yepperand“myysy” a9b664876b fix(build): sanitize Rust native build env (#1610)
Co-authored-by: “myysy” <“yangsymy@gmail.com”>
2026-04-21 13:58:10 +08:00
MaojiaShengandopenviking 21ba377a9c fix: use abi3 for rust package (#1517)
* fix: use abi3 for rust package

* fix: modify list scope

---------

Co-authored-by: openviking <openviking@example.com>
2026-04-17 13:58:23 +08:00
Qin Haojie 0fd0594b13 fix(release): fail wheel builds without ragfs bindings (#1466)
* fix(release): fail wheel builds without ragfs bindings

Fail wheel packaging closed when ragfs_python cannot be built, and smoke test Linux and macOS wheels so broken native bindings never reach PyPI.

* fix: deprecated agfs config
2026-04-15 14:33:38 +08:00
chuanbao666 fc230cf9c2 fix(agfs): enable agfs s3 plugin default (#1408) 2026-04-13 21:06:39 +08:00
MaojiaShengandopenviking a7e5417ef2 reorg: remove golang depends (#1339)
* docs: fix docker deployment

* reorg: remove third_party/agfs

* feat(s3fs): add disable_batch_delete option for OSS compatibility

Port of PR #1333 from Go version to Rust:

- Add disable_batch_delete config option to S3Client
- When enabled, use sequential single-object deletes instead of DeleteObjects
- This is for S3-compatible services like Alibaba Cloud OSS that require
  Content-MD5 for DeleteObjects but AWS SDK v2 does not send it by default
- Add documentation and config example for OSS

* fix(s3fs): pass disable_batch_delete config from Python to Rust

Add disable_batch_delete to the s3_plugin_config dict in _generate_plugin_config
so that the Python config can properly control the Rust S3FS plugin's behavior.

* reorg: remove third_party/agfs

* reorg: remove third_party/agfs

* change some docs

* change some docs

---------

Co-authored-by: openviking <openviking@example.com>
2026-04-10 15:16:29 +08:00
Jiahui Zhou b174deb410 Fix ci (#1307)
* fix(ci): fix build ci

* build: move ragfs-python packaging into setup.py
2026-04-09 00:05:18 +08:00
MaojiaShengandopenviking dc052ce3e3 reorg: Rewrite agfs to ragfs with rust (#1221)
* reorg: rewrite agfs with rust, and named with ragfs, keep License

* reorg: rewrite agfs with rust, and named with ragfs, keep License

* reorg: rewrite agfs with rust, and named with ragfs, keep License

* reorg: rewrite agfs with rust, and named with ragfs, keep License

* reorg: rewrite agfs with rust, and named with ragfs, keep License

* reorg: rewrite agfs with rust, and named with ragfs, keep License

* reorg: rewrite agfs with rust, and named with ragfs, keep License

* reorg: rewrite agfs with rust, and named with ragfs, keep License

* fix: grep level limit

* fix: grep root

* fix: import error

* fix: rust code optimazation

* fix: CI error

* fix: CI go mod cache

* fix: grep level limit

* fix: CI

---------

Co-authored-by: openviking <openviking@example.com>
2026-04-05 21:17:45 +08:00
Jiahui Zhou 72394dd604 feat(docker) add vikingbot and console (#1134)
* docker: default to server plus console startup

* docker: bundle and default-enable vikingbot

* docs: document docker console and bot defaults
2026-03-31 21:28:08 +08:00
Jiahui Zhou 84d2cf8900 Fix Windows engine wheel runtime packaging (#993) 2026-03-26 13:17:44 +08:00
Jiahui Zhou 033826f028 Migrate vectordb engine to abi3 packaging (#897)
chore: remove pybind11 remnants after abi3 migration

fix: scope linux abi3 wheel smoke test to engine loader
2026-03-23 19:11:07 +08:00
Jiahui Zhou 1e26203429 fix(build): sync ov cli version with openviking (#869) 2026-03-22 19:15:37 +08:00
zhoujiahui 758ccd8986 feat: split vectordb engine by cpu variant (#656) 2026-03-16 17:49:59 +08:00
zhoujiahui ae4c64175b refactor: quit setup when fail (#504) 2026-03-10 09:30:30 +08:00
chuanbao666 13a3b74188 fix(agfs): fix agfs binding-client import error (#458)
* fix(agfs): fix agfs binding-client import error

* fix: agfs-client默认使用binding-client
2026-03-06 14:55:16 +08:00
chuanbao666 8c740fd565 chore: 编译子命令失败报错, golang版本最低要求1.22+ (#444)
* chore: 编译子命令失败报错, golang版本最低要求1.22+

* fix: agfs默认启用binding-client相关改造
2026-03-05 20:52:38 +08:00
jayandTrae AI cc274daad8 feat: add index control to add_resource and refactor embedding logic (#401)
Co-authored-by: Trae AI <trae@bytedance.com>
2026-03-04 11:33:21 +08:00
zhoujiahui 539d14c90f fix: fix release (#396) 2026-03-03 17:12:15 +08:00
chuanbao666 913bc75fb7 fix(agfs): 预编译agfs所依赖的lib/bin,无需安装时构建 (#388)
* fix(agfs): 预编译agfs所依赖的lib/bin,无需安装时构建

* docs: 更新openviking安装说明
2026-03-03 12:15:04 +08:00
chuanbao666 ac17311b55 fix(agfs): agfs sdk默认安装从本地安装 (#355) 2026-02-28 17:58:05 +08:00
chuanbao666 e418870220 fix(agfs): 修复agfs binding-client安装问题, 清理agfs lib文件 (#337)
* fix(agfs): 修复agfs binding-client安装问题, 清理agfs lib文件

* fix(agfs): 暂时去掉文档说明
2026-02-27 23:32:55 +08:00
MaojiaShengandopenviking 7ae7bfb5dd feat: wrapper ov command (#325)
Co-authored-by: openviking <openviking@example.com>
2026-02-27 15:07:29 +08:00
chuanbao666 4c9340fc10 feat(agfs): agfs新增binding client (#304)
* feat(agfs): agfs新增binding client

fix: viking_fs适配binding client, 简化agfs相关参数

* feat(agfs): agfs binding-client支持windows

* docs: 补充agfs binding-client用法

* fix(agfs): 默认带上agfs binding-client依赖库; setup.py支持编译该库

* fix(agfs): add agfs binding-client linux so

* fix(agfs): code format
2026-02-26 20:27:00 +08:00
kkkwjx 5cf378dc00 fix(vectordb): default x86 build to AVX2 and disable AVX512 (#291) 2026-02-25 22:21:19 +08:00
kkkwjx c727807a98 Fix ci action (#57)
* fix: fix build ci action

* fix: update ci action
2026-02-05 12:09:24 +08:00
kkkwjx a30cb2e7b9 Lint code (#25)
* feat: pre-commit-config

* style: ruff code
2026-02-02 18:56:15 +08:00
kkkwjx 3acc6884fa Remove agfs (#13)
* feat: add github workflow ignore

* feat: remove agfs-server binary
2026-01-30 12:19:40 +08:00
kkkwjx ee5cfd0181 fix: fix_build (#6) 2026-01-30 11:17:08 +08:00
qin-ctx f98dc0ed1c first commit 2026-01-29 20:29:19 +08:00