Commit Graph
1724 Commits
Author SHA1 Message Date
Goon 4002bb4c13 feat(usage): add event analytics dashboard 2026-06-12 17:51:12 +07:00
Duy /zuey/ b4c63e4afb Merge pull request #164 from digitopvn/codex/issue-159-skill-lifecycle-api-cli
feat(skills): add lifecycle API and CLI
2026-06-12 14:50:13 +07:00
Goon 569e946e43 fix: resolve issue 159 dev merge conflict 2026-06-12 14:42:48 +07:00
Duy /zuey/ a44a57b61a Merge pull request #163 from digitopvn/codex/issue-158-operator-traces-cli
feat(cli): add trace operator commands
2026-06-12 12:35:12 +07:00
Goon 0bf7f88054 feat(skills): add lifecycle API and CLI 2026-06-12 10:38:53 +07:00
Goon e2c0398ec9 feat(cli): add trace operator commands 2026-06-12 09:48:01 +07:00
Duy /zuey/ 95fd1f8f2d fix(providers): fallback on codex safety errors (#157) 2026-06-12 00:43:09 +07:00
Duy /zuey/ 8d664954e6 Merge pull request #156 from digitopvn/codex/issue-137-mid-flight-requests
fix(pipeline): preserve mid-flight follow-up requests
2026-06-12 00:36:28 +07:00
Goon 152b2ac0f7 fix(pipeline): preserve mid-flight follow-up requests 2026-06-12 00:28:00 +07:00
Duy /zuey/ 167b80e778 feat(traces): add search and advanced filters
Closes #152
2026-06-12 00:14:40 +07:00
Duy /zuey/ 9203782ae3 fix(tools): fail closed on github cli credentials (#154) 2026-06-11 23:57:56 +07:00
Duy /zuey/ f077d56ea7 fix(ui): add behavior setting tooltips
Add localized field-level tooltips for Agent and Channel delivery behavior settings.
2026-06-11 23:57:32 +07:00
Duy /zuey/ 50c8519f01 fix(channels): require generated delivery replies
Quick Ack and Intermediate Replies now require generated delivery text in generated modes, while fixed-template mode remains explicit. Includes provider/model resolution coverage and UI copy updates.
2026-06-10 16:29:39 +07:00
Duy /zuey/ fe705ef47f fix(ui): use provider model selectors for delivery behavior
Use shared provider/model selector UX for Delivery Behavior settings across workspace, agent, and channel configuration. Also closes disabled combobox dropdowns.
2026-06-09 23:31:44 +07:00
Duy /zuey/ bac8f511e6 Merge upstream dev fixes
Merged upstream nextlevelbuilder/goclaw dev fixes plus review fix enforcing team access on vault document updates.
2026-06-09 23:12:34 +07:00
Goon 94d7bbc28a fix(vault): enforce team access on document updates 2026-06-09 23:04:59 +07:00
Goon 59a1773a18 Merge remote-tracking branch 'origin/dev' into codex/merge-nextlevelbuilder-goclaw 2026-06-09 22:49:30 +07:00
Goon a63080714a Merge remote-tracking branch 'upstream/dev' into codex/merge-nextlevelbuilder-goclaw
# Conflicts:
#	internal/pipeline/think_stage.go
#	internal/pipeline/tool_stage.go
#	tests/integration/git_adapter_ssh_test.go
2026-06-09 22:38:32 +07:00
Duy /zuey/ fdba1c2138 feat(channels): add sidecar delivery behavior overrides
Closes #144.

- Retire user-facing Tool Status Messages and deterministic tool-status channel text.
- Add sidecar-generated Quick Acknowledgement and Intermediate Replies with provider/model/timeout/token/char caps.
- Resolve delivery behavior as Channel > Agent > Workspace with agent overrides in other_config.delivery_behavior.
- Preserve legacy block_reply defaults for Intermediate Replies.
2026-06-09 22:24:24 +07:00
Duy /zuey/ 23b18fa6cd fix(channels): rely on generated intermediate progress (#143)
* fix(channels): add reasoning delivery modes

* fix(telegram): show tool status without placeholder

* docs(plans): mark issue 67 behavior plan complete

* feat(config): add behavior setting purpose tooltips

* fix(channels): rely on generated intermediate progress
2026-06-09 09:12:23 +07:00
Thành Nguyễn 7484d0ec74 fix: cannot import if file is over 1MB (#1184) 2026-06-07 17:27:26 +07:00
90552531fb Fix/pipeline compaction pending loss (#1182)
* fix(pipeline): preserve pending messages during compaction

When PruneStage or ThinkStage triggers mid-loop compaction,
ReplaceHistory() clears the pending buffer. If the current
iteration's assistant(tool_calls) message is in pending, it gets
discarded. The next iteration then sends tool-result messages
without a preceding tool_calls message, causing DeepSeek/OpenAI
to reject the request with HTTP 400:

  Messages with role 'tool' must be a response to a preceding
  message with 'tool_calls'

Fix: save pending before ReplaceHistory and restore it after.

Reproduction:
- Agent with 64K context window
- 4-5 consecutive tool calls (e.g. read_file) in one session
- Token count exceeds soft budget during ToolStage
- PruneStage compaction clears pending including assistant(tool_calls)
- Next iteration fails with HTTP 400

* test(pipeline): regression guards for pending preservation during compaction

Add focused unit tests covering both ReplaceHistory call sites that previously
dropped the pending buffer:

- PruneStage mid-loop compaction must preserve the in-flight
  assistant(tool_calls) message so tool_calls -> tool_result pairing survives,
  preventing the OpenAI/DeepSeek 400 on the next provider call.
- ThinkStage emergency overflow compaction must preserve already-staged pending
  messages (e.g. iteration-budget nudges) across the retry.

Both tests fail without the preservation fix and pass with it.

Co-authored-by: ollielin <2137816+ollielin@users.noreply.github.com>

---------

Co-authored-by: Duy /zuey/ <duy@wearetopgroup.com>
Co-authored-by: ollielin <ollielin@tencent.com>
Co-authored-by: Thieu Nguyen <thieunguyen.tech@gmail.com>
Co-authored-by: ollielin <2137816+ollielin@users.noreply.github.com>
2026-06-07 10:16:15 +07:00
Duy /zuey/ ed1327db16 feat(config): add behavior setting purpose tooltips (#140) 2026-06-06 07:55:55 +07:00
Duy /zuey/ 391b6c686a fix(telegram): show tool status without placeholder (#139)
* fix(channels): add reasoning delivery modes

* fix(telegram): show tool status without placeholder
2026-06-05 17:29:17 +07:00
Ojus M SaveandOjus Save 8abc16ee88 fix(providers): omit temperature for Claude Opus/Sonnet 4.6+ (#1180)
Anthropic returns HTTP 400 when temperature is sent to claude-opus-4-6,
claude-sonnet-4-6, and newer 4.x models. Agent summoning and chat both
hardcode temperature; skip the field for affected model IDs.

Co-authored-by: Ojus Save <ojusave@users.noreply.github.com>
2026-06-05 01:18:07 +07:00
43837afca3 fix(security): consolidate & enhance batched security fixes (#1155, #967, #972, #974, #989, #973) (#1185)
* fix(sandbox): avoid shell in FsBridge writes

Replace sh -c with interpolated path by shell-free 'tee -- <path>' argv form,
piping content via stdin. Prevents command injection through filenames
containing shell metacharacters inside the sandbox container.

Co-authored-by: evgyur <evgyur@gmail.com>

* fix(security): fail-closed on pairing DB errors across channels

On IsPaired lookup error, deny instead of granting access. Covers the shared
CheckDMPolicy/CheckGroupPolicy helpers (Slack/Discord/Feishu/WhatsApp/Zalo) and
the four inline Telegram pairing checks.

Co-authored-by: Srini <srinis.k@gmail.com>

* fix(security): harden provider URL validation against SSRF

Enforce scheme check for all provider types; restrict local types (ollama,
claude_cli, acp) to an explicit localhost allowlist instead of skipping checks;
resolve remote hostnames and reject any IP in a private/reserved range via the
shared security.IsBlocked CIDR list (covers loopback, link-local, metadata,
multicast, and unspecified 0.0.0.0/::). Closes the wildcard-DNS bypass and the
local-type escape hatch. Operator opt-in via GOCLAW_ALLOW_PRIVATE_PROVIDER_URLS.

Exports security.IsBlocked as the single source of truth for blocked ranges.

Co-authored-by: Linh Vo Van <linh.vo@e-cq.net>

* feat(pipeline): add fail-closed tool call authorization gate

Gate tool execution against the server-side AllowedTools allowlist built from the
RBAC/tenant-aware filtered tool set. Resolve the tool-call prefix before the
allowlist lookup so prefixed agents are not wrongly blocked, re-check deny on lazy
MCP activation, and expand IsDenied to cover aliased tool names.

Co-authored-by: Huy Doan <tui@pm.me>

* fix(security): expand file-serve deny-list defense-in-depth

Add absolute-path deny prefixes (/home, /Users, /srv, /var/lib, /var/www, /opt)
and an explicit fail-closed log when no file-serving boundary is configured.

Co-authored-by: Linh Vo Van <linh.vo@e-cq.net>

* fix(providers): allow claude cli executable paths

Refs: #1185

---------

Co-authored-by: evgyur <evgyur@gmail.com>
Co-authored-by: Srini <srinis.k@gmail.com>
Co-authored-by: Linh Vo Van <linh.vo@e-cq.net>
Co-authored-by: Huy Doan <tui@pm.me>
2026-06-05 00:48:38 +07:00
viettranx d85bf17171 ci(release): build docker images directly for stable tags 2026-06-03 21:42:24 +07:00
viettranx 3d8bba8b88 ci(release): publish docker digests to both registries 2026-06-03 21:29:03 +07:00
viettranx e05eec55e8 test(git): isolate ssh tmpfile mismatch check 2026-06-03 21:23:06 +07:00
viettranx 20f7dac7a9 Merge remote-tracking branch 'origin/main' into dev 2026-06-03 20:53:09 +07:00
viettranx f8f910e540 fix(mcp): keep grant checker cache invalidation active 2026-06-03 20:52:47 +07:00
viettranx dfc7d71b5c chore: ignore local agent config directories 2026-06-03 18:16:04 +07:00
Duy /zuey/ 53ef912441 fix(channels): add reasoning delivery modes (#135) 2026-06-03 11:01:14 +07:00
Duy /zuey/ 3e7876a4b4 fix(ci): avoid zuey release asset race (#129) 2026-05-31 22:37:08 +07:00
Goon 8fb3149142 fix(release): address official ship blockers 2026-05-31 22:05:59 +07:00
Goon 87c48b8f5e Merge remote-tracking branch 'origin/main' into dev 2026-05-31 21:52:33 +07:00
Duy /zuey/ 64c02ea5a6 ci: speed up zuey beta deploy (#127)
* ci: speed up zuey beta deploy

* ci: mark issue 88 plan complete
2026-05-31 21:47:28 +07:00
Duy /zuey/ 94cbaa9f0f fix(pipeline): recover truncated codex runs (#126)
* fix(pipeline): recover empty truncated codex responses

* fix(providers): continue fallback after content policy errors
2026-05-31 21:07:48 +07:00
Duy /zuey/ 131f29dff8 test: stabilize git ssh temp file check (#125) 2026-05-31 19:56:18 +07:00
Duy /zuey/ c4b628207e fix: stabilize agent git access
Merge PR #124 after CI passed.
2026-05-31 19:50:36 +07:00
Goon 02d7b6f3de fix: stabilize agent git access 2026-05-31 19:42:05 +07:00
Duy /zuey/ a15c9b0fc7 Merge pull request #123 from digitopvn/codex/fix-tool-call-announcements
fix(channels): announce tools before execution
2026-05-31 19:38:48 +07:00
Goon a8afed2a81 fix(channels): announce tools before execution 2026-05-31 19:29:49 +07:00
Duy /zuey/ 0e980ffc76 Merge pull request #121 from digitopvn/codex/fix-intermediate-replies-behavior
fix(channels): gate initial intermediate replies
2026-05-31 18:19:33 +07:00
Goon 1f40047583 fix(channels): gate initial intermediate replies 2026-05-31 18:10:12 +07:00
Duy /zuey/ 10e663f21d Merge pull request #120 from digitopvn/codex/issue-117-agent-scoped-git-credentials-plan
feat(cli-credentials): add agent-scoped git credentials
2026-05-31 17:40:50 +07:00
Goon 6f676d1bd4 fix(cron): wait for job goroutines on stop 2026-05-31 17:01:35 +07:00
Duy /zuey/ 0b5f64e130 Merge pull request #119 from digitopvn/codex/issue-118-llm-generated-progress-messages
feat(channels): use generated quick ack progress
2026-05-31 16:57:01 +07:00
Goon 994acfe3a4 feat(cli-credentials): add agent-scoped git credentials 2026-05-31 16:49:23 +07:00
Goon e69e4b3884 fix(channels): preserve inherited quick ack mode 2026-05-31 16:26:11 +07:00