feat: channel-to-workspace routing control plane (rebased)#40
feat: channel-to-workspace routing control plane (rebased)#40drpedapati wants to merge 6 commits intodevelopmentfrom
Conversation
Deploying sciclaw with
|
| Latest commit: |
8da3b4d
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://4661127d.sciclaw.pages.dev |
| Branch Preview URL: | https://feature-epic30-routing-contr-lhiy.sciclaw.pages.dev |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8da3b4d69f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if err := ValidateRoutingConfig(cfg.Routing); err != nil { | ||
| return nil, err |
There was a problem hiding this comment.
Avoid hard-failing config load on transient routing paths
Calling ValidateRoutingConfig during LoadConfig makes every CLI command fail when any mapped workspace is temporarily missing or unreadable, because validation checks os.Stat/os.ReadDir for each mapping. This blocks recovery workflows too (for example, you cannot run routing remove to fix the bad entry because config loading already aborts), and it happens even when routing is disabled.
Useful? React with 👍 / 👎.
| func NewAgentLoopPool(cfg *config.Config, msgBus *bus.MessageBus, provider providers.LLMProvider) *AgentLoopPool { | ||
| return NewAgentLoopPoolWithFactory(func(workspace string) (inboundHandler, error) { | ||
| cloned, err := cloneConfigForWorkspace(cfg, workspace) | ||
| if err != nil { | ||
| return nil, err | ||
| } | ||
| return agent.NewAgentLoop(cloned, msgBus, provider), nil | ||
| }) |
There was a problem hiding this comment.
Register cron-capable loops for routed workspaces
This pool factory creates routed handlers with plain agent.NewAgentLoop only, but routed traffic is sent to these per-workspace loops instead of the primary loop in routing mode. Since setupCronTool is only wired onto the primary loop, users in mapped chats lose the cron tool behavior once routing is enabled.
Useful? React with 👍 / 👎.
Rebased continuation of #39 on latest development.\n\nIncludes the same routing feature set, now replayed cleanly on current
origin/developmentto simplify merge.\n\nVerification:\n- go test ./pkg/config ./pkg/routing ./pkg/agent ./cmd/picoclaw\n\nSupersedes #39.