feat(core): expose dashboardBaseUrl and include session dashboardUrl in spawn responses (closes #717)#725
Conversation
…in spawn responses (closes ComposioHQ#717)
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
| if (!base) return null; | ||
| const trimmed = base.replace(/\/+$/, ""); | ||
| return `${trimmed}/sessions/${encodeURIComponent(sessionId)}`; | ||
| } |
There was a problem hiding this comment.
Null check is dead code due to fallback
Medium Severity
buildDashboardUrl can never return null despite its string | null return type and docstring claiming otherwise. The ?? on line 210 always provides a truthy localhost fallback when config.dashboardBaseUrl is undefined, making the if (!base) return null check on line 211 unreachable dead code. This means session.dashboardUrl is always populated, and the CLI always prints a Dashboard: line — contradicting the PR's stated goal that "if unset behavior is unchanged." If the intent was to only show a URL when dashboardBaseUrl is explicitly configured, the localhost fallback defeats that; if the intent was to always show a URL, the null guard and | null return type are misleading.
| if (session.dashboardUrl) { | ||
| console.log(` Dashboard: ${chalk.dim(session.dashboardUrl)}`); | ||
| console.log(); | ||
| } |
There was a problem hiding this comment.
Dashboard URL printed outside the session info block
Low Severity
The Dashboard: line is printed after the blank-line separator on line 138, visually orphaning it from the rest of the session info block (Worktree, Branch, PR, Attach). This produces output with two separate blocks separated by blank lines instead of one cohesive block. The Dashboard URL logically belongs with the other session details and would be better placed before the existing console.log() separator.


Expose an optional
dashboardBaseUrlconfig option and populatesession.dashboardUrlwhen spawning sessions so the CLI and plugins can surface a direct Dashboard link for each session.Files Changed
types.ts: add
dashboardBaseUrltoOrchestratorConfiganddashboardUrltoSession.config.ts: validate
dashboardBaseUrlin config schema.session-manager.ts: compute and attach
session.dashboardUrlduring spawn flows.spawn.ts: print
Dashboard: <url>when available.agent-orchestrator.yaml.example: document
dashboardBaseUrlexample.Notes:
dashboardBaseUrlis optional; if unset behavior is unchanged.session.dashboardUrlto construct links - consider updating plugins to prefer that field.Closes #717