You've already forked agentic-coding-workflow
feat(jobs): wire mcp_tokens_purge runner into jobs.Module
- Config.MCPTokensPurge + scheduleEntry branch - app.go constructs runner with mcpTokensPurgeAdapter - Registered as 'mcp_tokens_purge' in RunnerFns map Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -404,6 +404,8 @@ func New(ctx context.Context, cfg *config.Config, dist embed.FS) (*App, error) {
|
|||||||
jobPurgeRunner := runners.NewJobPurge(jobsRepo, cfg.Jobs.JobPurge.CompletedRetention, log)
|
jobPurgeRunner := runners.NewJobPurge(jobsRepo, cfg.Jobs.JobPurge.CompletedRetention, log)
|
||||||
acpEventsPurgeRunner := runners.NewAcpEventsPurge(
|
acpEventsPurgeRunner := runners.NewAcpEventsPurge(
|
||||||
acpEventsPurgeAdapter{repo: acpRepo}, cfg.Jobs.AcpEventsPurge.Retention, log)
|
acpEventsPurgeAdapter{repo: acpRepo}, cfg.Jobs.AcpEventsPurge.Retention, log)
|
||||||
|
mcpTokensPurgeRunner := runners.NewMCPTokensPurge(
|
||||||
|
mcpTokensPurgeAdapter{repo: mcpRepo}, cfg.Jobs.MCPTokensPurge.Retention, log)
|
||||||
|
|
||||||
deadLetterFn := func(ctx context.Context, job jobs.Job, herr error) {
|
deadLetterFn := func(ctx context.Context, job jobs.Job, herr error) {
|
||||||
errMsg := herr.Error()
|
errMsg := herr.Error()
|
||||||
@@ -479,6 +481,11 @@ func New(ctx context.Context, cfg *config.Config, dist embed.FS) (*App, error) {
|
|||||||
Interval: cfg.Jobs.AcpEventsPurge.Interval,
|
Interval: cfg.Jobs.AcpEventsPurge.Interval,
|
||||||
Retention: cfg.Jobs.AcpEventsPurge.Retention,
|
Retention: cfg.Jobs.AcpEventsPurge.Retention,
|
||||||
},
|
},
|
||||||
|
MCPTokensPurge: jobs.MCPTokensPurgeConfig{
|
||||||
|
Enabled: cfg.Jobs.MCPTokensPurge.Enabled,
|
||||||
|
Interval: cfg.Jobs.MCPTokensPurge.Interval,
|
||||||
|
Retention: cfg.Jobs.MCPTokensPurge.Retention,
|
||||||
|
},
|
||||||
}, jobs.ModuleDeps{
|
}, jobs.ModuleDeps{
|
||||||
Repo: jobsRepo,
|
Repo: jobsRepo,
|
||||||
Handlers: map[jobs.JobType]jobs.Handler{
|
Handlers: map[jobs.JobType]jobs.Handler{
|
||||||
@@ -491,6 +498,7 @@ func New(ctx context.Context, cfg *config.Config, dist embed.FS) (*App, error) {
|
|||||||
"job_reaper": jobReaperRunner.Run,
|
"job_reaper": jobReaperRunner.Run,
|
||||||
"job_purge": jobPurgeRunner.Run,
|
"job_purge": jobPurgeRunner.Run,
|
||||||
"acp_events_purge": acpEventsPurgeRunner.Run,
|
"acp_events_purge": acpEventsPurgeRunner.Run,
|
||||||
|
"mcp_tokens_purge": mcpTokensPurgeRunner.Run,
|
||||||
},
|
},
|
||||||
Clock: clock.Real(),
|
Clock: clock.Real(),
|
||||||
Log: log,
|
Log: log,
|
||||||
@@ -848,3 +856,11 @@ type acpEventsPurgeAdapter struct{ repo acp.Repository }
|
|||||||
func (a acpEventsPurgeAdapter) PurgeEventsBefore(ctx context.Context, before time.Time) (int64, error) {
|
func (a acpEventsPurgeAdapter) PurgeEventsBefore(ctx context.Context, before time.Time) (int64, error) {
|
||||||
return a.repo.PurgeEventsBefore(ctx, before)
|
return a.repo.PurgeEventsBefore(ctx, before)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// mcpTokensPurgeAdapter exposes mcp.Repository.PurgeExpired as the narrow
|
||||||
|
// interface required by runners.MCPTokensPurge.
|
||||||
|
type mcpTokensPurgeAdapter struct{ repo mcp.Repository }
|
||||||
|
|
||||||
|
func (a mcpTokensPurgeAdapter) PurgeExpired(ctx context.Context, before time.Time) (int64, error) {
|
||||||
|
return a.repo.PurgeExpired(ctx, before)
|
||||||
|
}
|
||||||
|
|||||||
@@ -127,6 +127,13 @@ type AcpEventsPurgeConfig struct {
|
|||||||
Retention time.Duration
|
Retention time.Duration
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MCPTokensPurgeConfig extends RunnerConfig with mcp_tokens retention.
|
||||||
|
type MCPTokensPurgeConfig struct {
|
||||||
|
Enabled bool
|
||||||
|
Interval time.Duration
|
||||||
|
Retention time.Duration
|
||||||
|
}
|
||||||
|
|
||||||
// Config is the full jobs.Module configuration.
|
// Config is the full jobs.Module configuration.
|
||||||
type Config struct {
|
type Config struct {
|
||||||
Enabled bool
|
Enabled bool
|
||||||
@@ -138,4 +145,5 @@ type Config struct {
|
|||||||
JobReaper JobReaperConfig
|
JobReaper JobReaperConfig
|
||||||
JobPurge JobPurgeConfig
|
JobPurge JobPurgeConfig
|
||||||
AcpEventsPurge AcpEventsPurgeConfig
|
AcpEventsPurge AcpEventsPurgeConfig
|
||||||
|
MCPTokensPurge MCPTokensPurgeConfig
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,6 +131,8 @@ func scheduleEntry(cfg Config, name string) (schedEntry, bool) {
|
|||||||
return schedEntry{cfg.JobPurge.Interval, cfg.JobPurge.Enabled}, true
|
return schedEntry{cfg.JobPurge.Interval, cfg.JobPurge.Enabled}, true
|
||||||
case "acp_events_purge":
|
case "acp_events_purge":
|
||||||
return schedEntry{cfg.AcpEventsPurge.Interval, cfg.AcpEventsPurge.Enabled}, true
|
return schedEntry{cfg.AcpEventsPurge.Interval, cfg.AcpEventsPurge.Enabled}, true
|
||||||
|
case "mcp_tokens_purge":
|
||||||
|
return schedEntry{cfg.MCPTokensPurge.Interval, cfg.MCPTokensPurge.Enabled}, true
|
||||||
}
|
}
|
||||||
return schedEntry{0, false}, false
|
return schedEntry{0, false}, false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user