6 Commits
Author SHA1 Message Date
2209cdc90f chore(deps): switch runtime packages to octop-* 1.0.0 (#1136)
Replace orcakit-harness-agent / harness-* with octop-harness, octop-gateway, octop-memory, and octop-browser, and align docs, UI copy, and generated paths.

Co-authored-by: jubaoliang <jubaoliang@tencent.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-25 06:44:24 +08:00
jubaoliang 12e5b706cc feat(teams): add expert team hosts without changing 1:1 chat (#868) 2026-09-21 10:24:09 +08:00
jubaoliang 5b6c91302c feat: expert composer defaults (KB + MCP) and per-user policies
Allow experts and skill packages to carry composer defaults so that
installed/created agents start with the author's chosen knowledge bases
and MCP servers. Defaults are persisted as agent profile columns and
validated against the installing user. Adds the per-user policy resource
table (migration 014) and wires the dashboard composer fields plus
locale strings.

- Add knowledge_base_ids and mcp_servers to the agent profile schema
- Validate KB/MCP ids on expert/skill-package install and create paths
- Persist defaults via migrate.py helper and 014_user_policy migration
- Surface composer default fields in the dashboard expert/skill UI
2026-09-11 02:00:01 +08:00
jubaoliangandjubaoliang 041628cb76 feat: per-user module permissions (RBAC) with admin bypass (#276)
* feat: add per-user module permissions (RBAC) with admin bypass

Introduce a module-level permission system so non-admin users can be
scoped to a subset of dashboard modules. Adds a `permissions` TEXT column
on the `users` table (migration 006, SQLite + PostgreSQL), a central
permission catalog in `infra/users/permissions.py`, backend ACL checks
across routers, and dashboard gating via `RequirePermission` /
`ForbiddenPage` keyed by nav module. `admin` always bypasses every gate;
read access and chat/agent use are never gated.

* fix: gate connector install-cli by connectors permission (not admin-only)

The host CLI installer is a connectors-module operation and should be
gated by the `connectors` module permission, consistent with the rest of
the connector routes, instead of being admin-only.

The earlier RBAC change demoted this route from `current_admin` but the
test `test_install_cli_forbidden_for_non_admin` still failed because the
`create_user` test helper grants `BASELINE_PERMISSIONS` (which includes
`connectors`) by default, so the "non-admin" user actually held the
permission. Gate the route with `require_permission("connectors")` and
create the test user with `permissions=[]` so it genuinely lacks the
key and is rejected with 403.

---------

Co-authored-by: jubaoliang <jubaoliang@tencent.com>
2026-08-14 14:05:37 +08:00
jubaoliangandCursor e8a824bb1e feat(knowledge): add knowledge bases with chat retrieval
Introduce document indexing, embedding (ONNX/remote), and chat/IM injection with default-open selection in the dashboard composer.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-12 18:56:23 +08:00
jubaoliangandjubaoliang 86fa910449 feat: Docker sandbox, browser HITL stream, and gateway preemption (#227)
* feat: Docker sandbox, workspace_dir, default_open, HITL and runtime knobs

WIP against local editable orcakit-harness-agent 0.9.20 (PyPI not published yet).
Includes Admin Docker storage, agent workspace_dir, connector default_open,
chat HITL resume/todos UI, and runtime limit fields.


* feat: browser HITL stream listen, gateway preempt stop/cancel

Wire the browser streaming endpoint to listen for human-in-the-loop
events, add gateway-side preemption (stop/cancel) for running agents,
and integrate chat send with the browser session state.

- Add browser stream "listen" endpoint and harness HITL wiring
- Add gateway preemption: stop/cancel handling for running agents
- Wire chat send to browser session state in the dashboard
- Bump harness-gateway to >=0.9.2 and regenerate uv.lock
- Add unit tests for browser stream listen and gateway preemption

* test: fix workspace_dir assertion on Windows

Compare path components (name == agent_id, parent == "agents") instead
of a hard-coded POSIX "/agents/{id}" string suffix, so the check passes
on Windows where Path uses backslash separators.

---------

Co-authored-by: jubaoliang <jubaoliang@tencent.com>
2026-08-11 11:37:59 +08:00