Add support for plans://, sessions://, and content:// resources via the MCP API controller instead of returning 501 for every request.\n\nCo-Authored-By: Virgil <virgil@lethean.io>
Allow the IDE bridge to register multiple observers so the IDE and brain subsystems can both react to inbound Laravel messages. Brain recall notifications now fire from the bridge callback with the real result count instead of the request path, and the brain provider follows the same async notification flow.
Co-Authored-By: Virgil <virgil@lethean.io>
Keep channel emitters, provider metadata, and capability advertising in sync by sharing the same constants across the MCP subsystems.
Co-Authored-By: Virgil <virgil@lethean.io>
Advertise and emit build.start when a bridged build enters a running state, alongside the existing complete/fail lifecycle events.
Co-Authored-By: Virgil <virgil@lethean.io>
Wire the agentic subsystem into the shared MCP notifier so workspace
completion, blocked, and status transitions are broadcast to clients.
Also keep resumed workspaces from leaving stale running state after the
process exits.
Co-Authored-By: Virgil <virgil@lethean.io>
Use the underlying MCP notification path for session broadcasts so fresh sessions receive notifications without requiring a prior log-level handshake.
Add a regression test that verifies broadcast delivery on a connected session.
Co-Authored-By: Virgil <virgil@lethean.io>
Headless IDE sessions now keep working for chat history, session listing, session creation, plan status, dashboard activity, dashboard metrics, and build lookups. The Laravel bridge is still used when available, but it is no longer a hard dependency for the local cache-backed tools.
Co-Authored-By: Virgil <virgil@lethean.io>
Generate real session IDs and retain chat/activity/session state in the IDE subsystem so session_create, chat_history, session_list, and dashboard tools return useful local data before the backend responds.
Co-Authored-By: Virgil <virgil@lethean.io>
Use the Core context for forwarded IPC channel events and expose a session-level notification helper that the broadcast path reuses. This keeps the notification API more symmetric and avoids dropping context during IPC forwarding.
Co-Authored-By: Virgil <virgil@lethean.io>
Expose all languages already recognized by lang_detect in lang_list, and keep the two paths synchronized through a shared catalog.
Co-Authored-By: Virgil <virgil@lethean.io>
Implement agentic_dispatch_issue and agentic_pr for Forge issue-driven workflows, and track issue-specific branch metadata in agent workspaces.
Co-Authored-By: Virgil <virgil@lethean.io>
Auto-discovers process.Service and ws.Hub instances already registered in Core so the MCP service factory exposes the matching tool groups without extra manual wiring.
Co-Authored-By: Virgil <virgil@lethean.io>
Treat an empty MCP_AUTH_TOKEN as local development mode and pass requests through to /mcp. Add tests for the no-token path and update the empty-token unit case accordingly.
Co-Authored-By: Virgil <virgil@lethean.io>
Keeps the registry surface tighter by removing the unused splitTagSeq helper and updating the test to cover the production splitTag helper directly.
Co-Authored-By: Virgil <virgil@lethean.io>
Drop the unused stdioMode field, route Run() through ServeStdio(), and keep startup logging on the service logger.
Co-Authored-By: Virgil <virgil@lethean.io>
Align the MCP service runtime with the AX service model by dropping the unused coreRef escape hatch and relying on ServiceRuntime for Core access.
Co-Authored-By: Virgil <virgil@lethean.io>
Normalize the MCP constructor workspace defaulting to use the actual working directory, and replace the IDE subsystem's functional options with a Config DTO so the codebase stays aligned with AX-style configuration objects.
Co-Authored-By: Virgil <virgil@lethean.io>
ServeStdio never set stdioMode=true, so ChannelSend always returned
early. Also switched from StdioTransport to IOTransport with a shared
lockedWriter that both the SDK and ChannelSend write through.
This fixes channel notifications not arriving in Claude Code sessions.
Co-Authored-By: Virgil <virgil@lethean.io>
ChannelSend was writing to os.Stdout directly while the SDK's
StdioTransport also writes to os.Stdout — causing interleaved
JSON-RPC messages. Now both use a shared lockedWriter via IOTransport.
Co-Authored-By: Virgil <virgil@lethean.io>
Services can now push channel events to Claude Code by sending a
ChannelPush message via Core IPC. The MCP service catches it in
HandleIPCEvents and calls ChannelSend to the stdio transport.
- ChannelPush{Channel, Data} message type in subsystem.go
- HandleIPCEvents on Service catches ChannelPush → ChannelSend
- Enables runner→mcp→Claude Code notification pipeline
Co-Authored-By: Virgil <virgil@lethean.io>
Resolves build failures from using Core primitives (JSONMarshalString,
JSONUnmarshal, ReadAll, ServiceRuntime, etc.) that didn't exist in v0.4.7.
Co-Authored-By: Virgil <virgil@lethean.io>