acp-functionality
Table of Contents
functionality
Functionality supported by ACP as a protocol (ie: defining the range of interactions / capabilities)
I really would like to see support for something beyond chat. In my opinion, access via chat was great for initially delivering agentic functionality but that agents should be making progress in coming to where we are at in terms of the surfaces that exist in our daily flows - instead of creating a new surface in isolation
I think its time to transition the onus of agents to come to established existing surfaces because of how acces via distinct chat surfaces is a dying horse. We should strive to reduce context switching, chat forces this by copy and pasting context across surfaces, and we should have the capability at this point to forego this switching
source : https://agentclientprotocol.com/protocol/overview
this is organized in terms of agentic output / actions to a user interface:
- chat response : bread and butter chatgpt stuff => but strictly for an external surface
- terminal : link to an ongoing internal terminal session => similar to above, adds additional foreign surface
- notifications : signal to client that some action is complete or output is available => egress mechanism that is contrary to direction of incorporating agentic results to existing mediums
- file access : close, but missing layer in between surfacing to user to inform writes (like lsp does)
- content : this is for multimedia in the client side, but the ACP client is still separate from the language server. Can this be avoided? At any rate, the output formats (text/image/audio/links/embedded resource)
- this maybe can be used to support 'lsp response' custom type
- custom capabilities :
~this may be used to embed lsp protocol operations~not so because this is a feature to extend operations that agents themselves can request from the client (opposite to : 'analyze this line of code')
So from the above, it isn't a slam-dunk fit.
But what is the closest we can get?
- acp as a standard layer for communication with agents to create and manage sessions
- acp to expose functionality for agents to trigger lsp responses to lsp client (but not in terms of lsp making requests to the agent in the first place)
clients
part of ACP's purpose is to expand agent's reach to different surfaces. In particular there seems to be support for :-
- messaing apps (slack, discord, mastodon, wechat) : https://agentclientprotocol.com/get-started/clients
- web browsers (chrome) : https://github.com/Areo-Joe/chrome-acp
specific stories to implement
org editing as a specific client
user stories Id like to acheive in the context of editing org files as a task management system:
- when I clock into a TOOD heading in org-mode, then the agent is provided this as context, to take potential actions like updating my slack status (ie: working on task for x)
- when I mark an item as complete in org-mode (or generally change the status), then this is submitted to the agent to take action (eg: updating asana)
- when I am editing an org-mode note, acp-lsp acts as an lsp server to my editing client and acts as a client to acp agents to proxy inline responses while i edit based on either (a) profile org property in org-heading hierarchy, or default if there is none
- before I enter the office each day (nightly cadence), acp client should publish my agenda to an agent to (a) prepare artifacts (research, draft correspondence, proposed code changes in a feature-branch, etc.), (b) prepare top-level calls-to-action for me to review (eg: approvals, clarifications)
- when I am editing a document acp-lsp should help me improve the quality of the document with a custom profile
prompt editing with emacs as $EDITOR in kiro-cli
user stories to achieve in the context of /editor (docs : https://kiro.dev/docs/cli/chat/#entering-multi-line-statements)
- when i edit, then I should leverage an lsp server w/ acp client to get suggestions on improving the quality of my prompt