# Windsurf ACP Connector

This directory contains the ACP client connector that manages the connection
lifecycle between the Windsurf IDE and the chisel agent.

## ACP Custom Capabilities Audit

The chisel agent defines `cognition.ai/`-prefixed custom capabilities that are
negotiated during the `initialize` handshake. A comprehensive audit of these
capabilities is maintained at:

> **[`devin-webapp/apps/chisel/cognition-acp/CAPABILITIES_AUDIT.md`](https://github.com/usacognition/devin-webapp/blob/main/apps/chisel/cognition-acp/CAPABILITIES_AUDIT.md)**

When modifying the `initialize` request in `windsurfAcpConnector.ts` — in
particular the `clientCapabilities` or `clientCapabilities._meta` fields — you
**must** update the audit table.

Currently, `WindsurfAcpConnector.initialize()` sends:

- `clientCapabilities.elicitation: { form: {} }` — standard ACP elicitation support
- `clientCapabilities._meta`:
  - `cognition.ai/subagentSupport: true`
  - `cognition.ai/multiRootWorkspace: true`
  - `cognition.ai/partialContent: true` — enables partial form data in elicitation decline `_meta`
  - `cognition.ai/messageGrouping: true` — enables streaming tool call previews and `clientMessageId`-based chunk regrouping
  - `cognition.ai/otherOption: true` — enables inline "Other" freeform input for elicitation questions via `_meta` exchange
  - `cognition.ai/groupedSessionConfigOptions: true` — opts in to receiving model config options organized into `SessionConfigSelectGroup` entries (grouped by model family) instead of a flat list

Standard ACP capabilities (`terminal`, `fs`) are omitted intentionally
because Windsurf handles those through its own extension APIs.
