Commit Graph
1179 Commits
Author SHA1 Message Date
Goon a76f443411 feat: add persona context to delivery messages 2026-06-12 15:17:57 +07:00
Goon 248d591f52 fix: resolve dev merge conflicts 2026-06-12 15:01:38 +07:00
Goon c320de5a87 feat: grant first setup agent gateway operator access 2026-06-12 10:40:59 +07:00
Goon 0bf7f88054 feat(skills): add lifecycle API and CLI 2026-06-12 10:38:53 +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/ 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
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
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/ 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 f8f910e540 fix(mcp): keep grant checker cache invalidation active 2026-06-03 20:52:47 +07:00
Duy /zuey/ 53ef912441 fix(channels): add reasoning delivery modes (#135) 2026-06-03 11:01:14 +07:00
Goon 8fb3149142 fix(release): address official ship blockers 2026-05-31 22:05:59 +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
Goon 02d7b6f3de fix: stabilize agent git access 2026-05-31 19:42:05 +07:00
Goon a8afed2a81 fix(channels): announce tools before execution 2026-05-31 19:29:49 +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
Goon 994acfe3a4 feat(cli-credentials): add agent-scoped git credentials 2026-05-31 16:49:23 +07:00
Goon 32273f04d3 feat(channels): use generated quick ack progress 2026-05-31 16:19:23 +07:00
Goon d78f97b9d7 feat(channel-memory): merge dev for passive extraction 2026-05-31 14:01:29 +07:00
Duy /zuey/ 2cd750ac44 feat(channels): add context capability admin surface
Squash merge PR #115 after resolving changelog and SQLite migration-map conflicts with current dev. Renumbered channel-context PostgreSQL migration to 000075 and bumped PG required schema to 75 plus SQLite schema to 44 so it follows the run timeline migration. Local checks passed: go test ./..., go build ./..., go build -tags sqliteonly ./..., go vet ./..., and pnpm -C ui/web build. PR CI run 26705617311 passed release-versioning, go, and web.
2026-05-31 13:50:31 +07:00
Duy /zuey/ 2a523e3f97 feat: add group chat context prompt
Squash merge PR #114 after resolving changelog and pipeline input conflicts with current dev. Local checks passed: go test ./internal/agent ./cmd ./internal/channels/..., go build ./..., go build -tags sqliteonly ./..., and go vet ./.... PR CI run 26705332779 passed release-versioning, go, and web.
2026-05-31 13:35:04 +07:00
Duy /zuey/ 269e2618ae feat: add archived run timeline
Squash merge PR #113 after resolving the project changelog conflict with current dev. Local checks passed: Go store/http/gateway/agent/pipeline tests, SQLite-tagged tests, both Go builds, web Vitest, and web build. PR CI run 26705098712 passed release-versioning, go, and web.
2026-05-31 13:22:07 +07:00
Duy /zuey/ 990fabf94b fix(config): persist shell deny group disables
Squash merge PR #112 after resolving the project changelog conflict with current dev. Local checks passed: config gateway tests, provider/http/tools deny-pattern tests, go build ./..., and go build -tags sqliteonly ./.... PR CI run 26704832350 passed release-versioning, go, and web.
2026-05-31 13:08:24 +07:00
Duy /zuey/ 9ab3d6dfe5 feat(tools): local-first document extraction for read_document
Squash merge PR #111 after resolving docs/changelog conflicts. Local checks covered tools/config and both Go builds; PR CI run 26704622503 passed release-versioning, go, and web.
2026-05-31 12:55:38 +07:00
Duy /zuey/ 80893a1e6c feat(skills): add selected skill downloads
Squash merge PR #110 after resolving dev changelog conflict. Local checks covered Go http/store, full web test/build; PR CI run 26704448786 passed release-versioning, go, and web.
2026-05-31 12:44:29 +07:00
Duy /zuey/ 8196680093 fix(packages): report system package record failures
Squash merge PR #108 after validation.
2026-05-31 12:33:28 +07:00
Duy /zuey/ 1d9436350d fix(discord): backfill thread history attachments
Squash merge PR #106 after resolving dev changelog conflict. PR CI run 26704244687 passed release-versioning, go, and web.
2026-05-31 12:33:15 +07:00
Duy /zuey/ df8a03df48 fix: allow skill_manage companion files
Squash merge PR #104 after validation.
2026-05-31 12:24:22 +07:00
Duy /zuey/ 484bcc7b71 fix: harden parallel tool scheduling
Squash merge PR #103 after validation.
2026-05-31 12:24:00 +07:00
Duy /zuey/ 4de94c1d7c fix(telegram): repair voice transcription routing
Squash merge PR #102 after resolving dev changelog conflict. PR CI run 26704061639 passed release-versioning, go, and web.
2026-05-31 12:23:40 +07:00
Duy /zuey/ cf66bda618 fix(rapidapi): add cron credential diagnostics
Squash merge PR #101 after resolving dev conflicts and fixing cron GetJob snapshot race. PR CI run 26703877225 passed release-versioning, go, and web.
2026-05-31 12:13:14 +07:00
Duy /zuey/ 4ed4eb9509 fix(sandbox): isolate tenant workspace mounts
Squash merge PR #100 after resolving changelog conflict with current dev. PR CI run 26703558537 passed release-versioning, go, and web.
2026-05-31 11:55:10 +07:00
Duy /zuey/ f0f39ce31f feat(channels): add human-like chat behavior
Squash merge PR #99 after resolving conflicts with current dev. PR CI run 26703381807 passed release-versioning, go, and web.
2026-05-31 11:44:56 +07:00
Duy /zuey/ 3569f8d681 fix(channels): load WhatsApp QR channel on create
Squash merge PR #98 in priority order after #97. Existing PR checks were green; branch workflow status will be tracked.
2026-05-31 11:33:41 +07:00
Duy /zuey/ 361f2abbf5 fix(packages): use writable scratch dir for github updates
Squash merge PR #97 after resolving changelog conflict with current dev. PR CI run 26703171763 passed release-versioning, go, and web.
2026-05-31 11:33:12 +07:00
Duy /zuey/ c4e0bd2be5 fix(cli-credentials): stabilize git preset creation
Squash merge PR #96 after PR #92. PR checks were green; dev beta CI will be monitored after merge.
2026-05-31 11:05:47 +07:00
Goon 8d45168b35 feat(channel-memory): run passive extraction pipeline 2026-05-29 20:48:19 +07:00
Goon e6e7aded0c feat(channel-memory): add extraction store schema 2026-05-29 20:48:12 +07:00