mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-15 20:15:48 +00:00
feat(webhooks): configurable agent run timeout (default 600s) (#1267)
Replace the hardcoded 30s webhook agent-run deadline with a configurable
timeout (default 600s, cap 3600s) for both the async worker and the
sync/test HTTP handler. Legitimate multi-step runs were dying at 30s
mid-tool-call; the same request over WebSocket completed fine.
- internal/webhooks/timeout.go: ResolveTimeoutSec helper (<=0 → 600s, cap 3600s)
- WorkerConfig.AsyncAgentTimeout (async worker) + WebhookLLMHandler.syncTimeout
(sync + admin test), wired from config
- config keys gateway.webhook_{async,sync}_timeout_sec, also settable via
GOCLAW_WEBHOOK_{ASYNC,SYNC}_TIMEOUT_SEC env (env overrides config)
- tests: timeout bounds + config file/env override
This commit is contained in:
1 parent
eaa011dae3
commit
a10464290d
11 files changed
+127
-8
No files matched your search
@@ -16,6 +16,7 @@ import (
|
||||
"github.com/nextlevelbuilder/goclaw/internal/store"
|
||||
"github.com/nextlevelbuilder/goclaw/internal/store/pg"
|
||||
"github.com/nextlevelbuilder/goclaw/internal/tools"
|
||||
"github.com/nextlevelbuilder/goclaw/internal/webhooks"
|
||||
)
|
||||
|
||||
// httpHandlers bundles the results of wireHTTP() for passing to wireHTTPHandlersOnServer.
|
||||
@@ -232,6 +233,7 @@ func (d *gatewayDeps) wireHTTPHandlersOnServer(
|
||||
d.pgStores.Webhooks,
|
||||
sharedWebhookLimiter, // K10: shared limiter
|
||||
nil, // lane: nil → internal default (4-slot); configurable in future via cfg
|
||||
webhooks.ResolveTimeoutSec(d.cfg.Gateway.WebhookSyncTimeoutSec),
|
||||
)
|
||||
llmH.SetEncKey(webhookEncKey) // K6: decrypt secret at HMAC verify time
|
||||
d.server.SetWebhookLLMHandler(llmH)
|
||||
|
||||
@@ -172,6 +172,7 @@ func (d *gatewayDeps) runLifecycle(
|
||||
webhooks.WorkerConfig{
|
||||
WorkerConcurrency: workerConcurrency,
|
||||
PerTenantConcurrency: 4,
|
||||
AsyncAgentTimeout: webhooks.ResolveTimeoutSec(d.cfg.Gateway.WebhookAsyncTimeoutSec),
|
||||
},
|
||||
)
|
||||
// K6: decrypt raw secret for outbound HMAC signing using the same key as inbound verify.
|
||||
|
||||
Reference in new issue
Block a user