Commit Graph
627 Commits
Author SHA1 Message Date
Sycun 648002b09b refactor(vulnerabilities): use compact rows with drawer actions 2026-11-13 17:24:37 +08:00
Sycun cab10bfcc4 feat(vulnerabilities): add grouped browsing and review workspace 2026-11-13 17:04:41 +08:00
Sycun 48065ad75f Merge remote-tracking branch 'origin/main' into HEAD
# Conflicts:
#	internal/app/app.go
2026-11-13 11:14:04 +08:00
公明 2a7f13b970 Merge pull request #396 from Sycun/codex/fix-long-chat-scroll
fix(chat): stabilize scrolling in long streaming conversations
2026-11-13 11:10:39 +08:00
公明 8ecd44d02d Merge pull request #392 from Sycun/codex/pi-runtime-migration
refactor(runtime): migrate the agent engine from Eino to Pi
2026-11-13 11:08:23 +08:00
Sycun 7d2465ec89 fix(update): reload after confirming the accepted update is running
(cherry picked from commit aa7a533497a6b524fbd4d7d330ca06b04414e2fb)
2026-11-13 10:07:44 +08:00
Sycun 8819d25e37 fix(chat): stabilize scrolling in long streaming conversations 2026-11-13 08:54:04 +08:00
Sycun cfaa95d7bd refactor(runtime): remove Eino and make Pi the sole agent engine
Delete the Eino model adapters, callbacks, middleware, orchestration,
summarization and single-agent runner together with their dependencies.
Chat, batch tasks, workflow Agent nodes and sub-agents now share the Pi
runtime, and dispatch is a single code path instead of an engine switch.

Configuration migrates eino_middleware/eino_skills to runtime/skills and
drops the retired callback settings while old files still load. Settings,
i18n and docs describe Pi only. Also carry the Pi follow-up fixes: empty
required lists are omitted from tool schemas, historical tool results stay
with their call batch, model proxies work over HTTP/1.1, single-query
retrieval skips query expansion, and finalization docs match Pi lifecycle
events.
2026-11-12 17:55:36 +08:00
Sycun 35508eb614 feat(pi): add the Pi agent runtime with native workflow and retrieval engines
Introduce an isolated Node worker that hosts the Pi SDK while Go keeps
business state, permissions, MCP execution, evidence and delivery checks.
The worker is published per source fingerprint, streams events back to Go
and supports tool callbacks, cancellation, session resume and per-model
transport settings.

Agent dispatch, tool search, plan/task tools and migration controls are
wired on top of it: large tool catalogs load through Pi tool_search, the
conversation task board keeps its existing tools, and legacy mode/route
values still resolve. Workflow gains a native DAG with versioned JSON
checkpoints, and knowledge retrieval moves to native documents, splitter,
HTTP embeddings, vector search and reranking.
2026-11-12 17:55:33 +08:00
Sycun c48984f91d fix(update): switch versions without interrupting sign-in
(cherry picked from commit 5d98f5d8057f788dea8299dceffb540cf67271cc)
2026-11-12 17:54:07 +08:00
Sycun 46c38a2d10 fix(update): activate new binaries without a supervisor
(cherry picked from commit 9ed4e19f5ea600e185771368c540025df80b11bf)
2026-11-12 17:51:55 +08:00
Ed1s0nZ 195540b619 fix(headers): mask private names and stabilize empty audit configuration 2026-11-02 17:22:52 +08:00
Ed1s0nZ 5feea8d3c3 fix(headers): isolate credentials across audit, redirects and probes 2026-11-02 17:18:12 +08:00
Ed1s0nZ 585c95a0e2 Merge commit '0340c07363720e356b4cd7adafe343cbee804764' into codex/pr379-header-boundaries 2026-11-02 17:13:25 +08:00
Ed1s0nZ 02b295d738 Merge main and preserve both changelog additions for #378 2026-11-02 15:38:16 +08:00
公明 d227396e74 Merge pull request #376 from muhannadalhariri/i18n/ar-SA-ui
i18n: add Arabic (ar-SA) UI locale with RTL support
2026-11-02 14:57:23 +08:00
Ed1s0nZ 6ad8d47c74 fix: restore WebShell batch probe completion 2026-10-31 02:26:46 +08:00
root d6b0aed1de feat(headers): 支持为 AI 渠道配置自定义 HTTP 请求头
部分 OpenAI 兼容供应商(如 opencode)要求私有鉴权头或会话头,
而非标准的 Authorization: Bearer,导致无法接入。

- config: OpenAIConfig / AIChannelConfig 新增 headers 字段,
  值支持 ${ENV_VAR}、${ENV_VAR:-default} 与 %session_id% 占位符
- openai: 新增 headersRoundTripper 接入 Eino ChatModel 传输链,
  同名的内置头(Authorization/User-Agent 等)可被覆盖
- openai: 内置 Client 的 4 处出站请求同样注入自定义头
- handler: 任务开始时把对话 ID 注入 ctx,供 %session_id% 替换;
  连接测试没有真实会话,使用探测值 connect-test
- web: 渠道设置页新增“自定义请求头”编辑区(每行 KEY=VALUE)
- 占位符使用 %session_id% 而非 {{session_id}},因为 index.html
  由 Go html/template 渲染,双花括号会被当作模板函数解析
2026-10-30 20:13:56 +08:00
Sycun baa1d02cd4 feat(vulnerabilities): offer Markdown and Word report downloads 2026-10-30 09:29:44 +08:00
muhannadalhaririandClaude Opus 4.8 caa7700345 i18n: add Arabic (ar-SA) UI locale with RTL support
Add Modern Standard Arabic (ar-SA) as a selectable UI language alongside
the existing zh-CN, en-US and ru-RU locales.

- web/static/i18n/ar-SA.json: new Arabic locale (4272 leaf strings,
  full key/placeholder parity with en-US). The `c2` and `webshell`
  sections are intentionally omitted and fall back to English via the
  i18next fallback chain (ar-SA -> en-US -> zh-CN).
- web/static/js/i18n.js: register ar-SA, detect `ar*` navigator language,
  preload en-US as fallback, set document dir="rtl" for Arabic, and add
  the ar-SA language label handling.
- web/static/i18n/{zh-CN,en-US,ru-RU}.json: add the `lang.arSA` label.
- web/templates/{index,api-docs}.html: add the العربية option to the
  language dropdown.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-10-29 10:42:55 +03:00
lgq 0a6dc6f872 fix: use floating pagination selects across pages for Chrome compatibility 2026-10-27 23:59:47 +08:00
lgq 0dea628e89 fix: open project pagination dropdown upward 2026-10-27 23:23:44 +08:00
lgq 816abfb841 fix: prevent external MCP stats and card controls from overlapping 2026-10-27 23:09:13 +08:00
lgq 9cb6922a88 fix: add spacing below RBAC assignment filters 2026-10-27 20:23:36 +08:00
lgq 07346ca002 fix: allow horizontal scrolling in RBAC resource filter bar 2026-10-27 20:15:57 +08:00
lgq f0f93283ee fix: contain RBAC role catalog scrolling within workspace 2026-10-27 19:15:49 +08:00
lgq 4aeb296a98 fix: prevent RBAC member list from shrinking header controls 2026-10-27 19:03:33 +08:00
lgq 6daac86e06 fix(settings): allow desktop sidebar to scroll 2026-10-27 16:55:18 +08:00
Ed1s0nZ be2c8c04e5 fix(rbac): protect built-in administrator from losing access 2026-10-19 16:44:14 +08:00
Ed1s0nZ ee5e4dd7c7 Merge remote-tracking branch 'origin/main' into codex/fix-fofa-region 2026-10-16 16:17:04 +08:00
Ed1s0nZ 0c0d4a53e8 fix: use supported FOFA region return field and preserve asset location 2026-10-16 16:14:39 +08:00
Sycun 136b62deb5 Merge remote-tracking branch 'origin/main' into codex/fix-mobile-project-ui 2026-10-16 11:12:37 +08:00
Sycun b8d65aa1e3 Merge upstream main and preserve mobile stylesheet cache version 2026-10-16 11:12:11 +08:00
Sycun 0fb5484657 Merge upstream main and resolve context memory asset conflicts 2026-10-16 11:02:49 +08:00
Sycun 268eb9e286 fix: keep mobile fact columns readable during horizontal scrolling 2026-10-15 22:27:57 +08:00
Sycun c47a8b97bb fix: allow mobile project pages to scroll to their final row 2026-10-15 22:09:19 +08:00
Sycun a773a680e9 fix: prevent mobile project headers from covering tabs 2026-10-15 21:26:37 +08:00
Sycun 16189e0b76 fix: close review findings in context memory, attack chain and blackboard
Attack chain: failure text goes to textContent, so opt out of i18next
interpolation escaping that rendered upstream errors as &#x2F;/&quot;;
give regenerate its own message key; keep the summary card expanded across
a 409 refresh; probe for a cached graph before parsing last_react_input so
polling no longer re-reads a multi-megabyte column; hide the card in the
node-details exclusive state and bound it on narrow screens; drop the dead
hardcoded Chinese title from the API payload.

Blackboard: stop mirroring note/context-* keys into the fact body links
section, which get_project_fact returns verbatim without scope filtering;
single-line category and confidence in index rows so a newline cannot inject
a fake row; make the path overview fail closed on an empty index set.

Provenance: reuse fitUserIntentLedgerText when sanitizing a ledger entry so
a single entry cannot exceed its cap by the three ellipsis runes.

The .cjs harness now escapes interpolated values like real i18next, so the
existing XSS test also pins the escapeValue opt-out.
2026-10-12 23:16:33 +08:00
Sycun 2b76b31355 fix: preserve attack-chain summary provenance and evidence access 2026-10-12 20:58:45 +08:00
Sycun c96c4666a9 fix: check HITL reviewer field in canonical database schema 2026-10-12 14:06:29 +08:00
Sycun 56d29b7054 feat: refine token analytics with interactive trends and cache breakdown 2026-10-12 00:10:37 +08:00
Sycun 4badef67c1 style: show only cache hit rate below dashboard token total 2026-10-12 00:00:26 +08:00
Sycun 5d14daf486 style: compact dashboard token usage subtitle 2026-10-11 23:58:41 +08:00
Sycun 4eda42dc10 feat: move token details to settings and show dashboard cache hit rate 2026-10-11 23:51:01 +08:00
Sycun b3d3f48c40 feat: add detailed token usage monitoring and cache write metrics 2026-10-11 22:30:30 +08:00
Ed1s0nZ 1ecbd4054c fix: reject stale concurrent interception rule saves 2026-10-10 17:18:13 +08:00
Ed1s0nZ a8321c4bff fix(vulnerability): allow standalone manual findings and validate links 2026-10-10 16:03:42 +08:00
Ed1s0nZ 132babe3a9 fix: prevent long localized dashboard labels from overflowing 2026-10-10 13:41:00 +08:00
Sycun 6a67364947 feat: add vulnerability retest branches with an isolated evidence log
Retesting a finding creates an independent conversation branch that
snapshots the source history and model trace, so verification can run
multi-turn without writing to the original session.

- POST /api/vulnerabilities/:id/retest creates the branch and persists the
  prompt, so a lost response, navigation or refresh can resume it
- new update_vulnerability_status tool closes the loop; a retest branch may
  only read and update its own finding
- {{vulnerability_id}}, {{conversation_id}} and {{source_conversation_id}}
  resolve on send, in the first turn and in follow-ups
- evidence appends to a read-only vulnerabilities.retest_log column instead
  of retest_notes: that field is operator-authored and the edit form
  rewrites it wholesale, so a routine edit used to erase the retest trail
- the retest prompt is prefilled with the operator's retest_notes, which
  already states how to verify the fix
- copied messages are re-bound as time.Time. Scanning a DATETIME column into
  a string yields RFC3339Nano while AddMessage writes the driver's
  space-separated format, and messages sort on the raw created_at text, so a
  branch rendered its new turn above the inherited history
2026-10-10 07:21:20 +08:00
Sycun e8a5392b37 fix: serialize installation updates and recover interrupted adoption and rollback 2026-10-09 10:58:12 +08:00