feat: agent and CLI control plane for sessions, worktrees, and scheduled tasks (#2408)
Add a shared OpenChamber control service with two thin adapters — a native `openchamber` tool injected into managed OpenCode, and new CLI commands — so users can manage parallel sessions, worktrees, and scheduled tasks conversationally through agents or from the terminal. Control plane: - New openchamber-control service owning a fixed action contract: projects.list, models.list, session list/create/send/fork/status/messages, and schedule list/create/run/delete/toggle. Session and worktree deletion and project registration are deliberately not exposed. - New openchamber-sessions module owning create/worktree/prompt orchestration, Goal Mode dispatch, wait semantics (initial idle never counts as completion; timeout and cancellation are failures), and explicit partial-failure results. - Scheduled-task logic extracted into a service shared by routes, CLI, and the agent tool. Agent tool: - Managed OpenCode gets a materialized plugin registering one typed tool with a loopback-only callback, per-child ephemeral bearer (timing-safe, never persisted or logged), and abort propagation into the service. - The ~1.5k-token schema applies progressive disclosure: short descriptions, server-side validation returning actionable usage errors, and intent guardrails — created sessions/tasks are user-facing work (not age self-delegation); worktree/goal/agent/variant/wait are omit-by-default; dispatches produce no completion notification, and later result r to session.messages, which now returns the authoritative sessionStatus. - session.create without a user-named model picks from favorites/re send/fork omit the selection and the service reuses the target session's last user-message model, agent, and variant before falling back t - An "Agent control tool" setting (default on, Save + Reload to apply) disables plugin injection entirely. CLI: - New `openchamber session`, `schedule`, `projects`, and `models` commands with automatic instance targeting, --wait/--timeout/--last-assist worktree flags, and Goal Mode, preserving interactive, non-TTY, --quiet, and --json contracts. The control HTTP timeout derives from the w instead of the 4-second default. UI: - New built-in "Schedule a Task" starter (/schedule-task) running a dialogue that defines a task and offers to create it via the tool after explicit confirmation; Craft a Goal and Feature Planning gain the handoff offer, and guided starters reserve the question tool for concrete option choices. Localized in all 10 locales, migrated into custom starter lists, hidden on VS Code. - Sidebar shows CLI/agent-created sessions live via the control eve - openchamber tool calls render with per-action titles and metadata.
This commit is contained in:
committed by
GitHub
parent
484fe8bc18
commit
e908db637b
@@ -25,6 +25,22 @@ Command modules implement user-facing commands and preserve output contracts acr
|
||||
- Implements `openchamber status`.
|
||||
- Formats discovered instances and tunnel readiness/status for human, quiet, and JSON output.
|
||||
|
||||
- `commands-session.js`
|
||||
- Implements `openchamber session create`, `send`, `fork`, `list`, `status`, and `messages`.
|
||||
- Maps CLI options to shared control-service inputs and owns only human, quiet, and JSON presentation.
|
||||
- Message projection matches Export Markdown semantics: only ordered `text` parts are exposed; tool, reasoning, file, and other parts are omitted.
|
||||
- The server control service owns create/worktree/prompt orchestration, official OpenCode reads, Goal Mode, wait semantics, and partial failures.
|
||||
|
||||
- `commands-schedule.js`
|
||||
- Implements scheduled task status/list/create/run/delete/enable/disable.
|
||||
- Maps options to control-service inputs and renders results; project resolution, validation, persistence, and execution remain server-owned.
|
||||
|
||||
- `commands-models.js`
|
||||
- Prints OpenChamber default, favorite, and recent model settings.
|
||||
|
||||
- `commands-projects.js`
|
||||
- Prints configured project labels, ids, and directories for later control-plane calls.
|
||||
|
||||
- `commands-logs.js`
|
||||
- Implements `openchamber logs`.
|
||||
- Resolves log files, tails recent lines, and follows log output.
|
||||
@@ -70,6 +86,17 @@ These modules hold reusable, non-presentational logic for commands.
|
||||
|
||||
- `cli-http.js`
|
||||
- HTTP helpers for health checks, shutdown requests, JSON API calls, tunnel provider fetches, and system info fetches.
|
||||
- Owns local desktop bearer auth and managed CLI-instance UI password retry for control-plane requests.
|
||||
|
||||
- `cli-control.js`
|
||||
- Sends one typed action request to the authenticated OpenChamber control endpoint and maps HTTP failures to CLI exit behavior.
|
||||
- Must not reproduce session, scheduled-task, project-resolution, or wait orchestration.
|
||||
|
||||
- `cli-api-target.js`
|
||||
- Resolves the target OpenChamber runtime for control-plane commands, preferring desktop unless a port is explicit.
|
||||
|
||||
- `cli-goal.js`
|
||||
- Owns shared Goal Mode token-budget validation for session and schedule commands.
|
||||
|
||||
- `cli-network.js`
|
||||
- Host resolution, URL building, LAN detection, unsafe browser port validation, and UI password/network exposure checks.
|
||||
|
||||
Reference in New Issue
Block a user