flutter_acp 0.1.0 copy "flutter_acp: ^0.1.0" to clipboard
flutter_acp: ^0.1.0 copied to clipboard

A Flutter/Dart implementation of the Agent Client Protocol (ACP). Supports both Client and Agent roles for building AI coding assistants.

example/flutter_acp_example.dart

/// Example usage of Flutter ACP library.
///
/// This example demonstrates how to use the ACP client and agent.
library;

import 'package:flutter_acp/flutter_acp.dart';

void main() async {
  // Create an in-process transport for testing
  final transport = InProcessTransport();

  // Create and start an agent
  final agent = AcpAgent(
    handler: ExampleAgentHandler(),
  );
  await agent.start(transport: transport);

  // Create a client
  final client = AcpClient(transport: transport);

  try {
    // Connect the client
    await client.connect();

    // Initialize the protocol
    final initResult = await client.initialize(
      protocolVersion: 1,
      capabilities: ClientCapabilities(
        fs: FsCapabilities(
          readTextFile: true,
          writeTextFile: true,
        ),
        terminal: true,
      ),
      clientInfo: ClientInfo(
        name: 'example_client',
        version: '1.0.0',
      ),
    );

    print('Connected to agent: ${initResult.agentInfo.name}');
    print('Agent version: ${initResult.agentInfo.version}');
    print('Protocol version: ${initResult.protocolVersion}');

    // Create a session
    final session = await client.createSession(
      config: SessionConfig(cwd: '/path/to/project'),
    );
    print('Created session: ${session.sessionId}');

    // Send a prompt
    final result = await client.sendPrompt(
      sessionId: session.sessionId,
      contents: [
        PromptContent.text('Hello, Agent!'),
      ],
    );
    print('Prompt status: ${result.status}');
    print('Messages: ${result.messages}');

    // Close the session
    await client.closeSession(session.sessionId);
  } finally {
    // Clean up
    await client.disconnect();
    await agent.stop();
  }
}

/// Example agent handler implementation.
class ExampleAgentHandler implements AgentHandler {
  @override
  Future<InitializeResult> onInitialize(InitializeParams params) async {
    return InitializeResult(
      protocolVersion: params.protocolVersion,
      agentCapabilities: AgentCapabilities(
        loadSession: true,
        promptCapabilities: PromptCapabilities(
          image: true,
          audio: false,
        ),
      ),
      agentInfo: AgentInfo(
        name: 'example_agent',
        version: '1.0.0',
      ),
    );
  }

  @override
  Future<AuthenticateResult>? onAuthenticate(AuthenticateParams params) {
    return null; // Authentication not supported
  }

  @override
  Future<Session> onCreateSession(SessionConfig? config) async {
    return Session(
      sessionId: 'session-${DateTime.now().millisecondsSinceEpoch}',
      state: SessionState.active,
      config: config,
    );
  }

  @override
  Future<Session>? onLoadSession(String sessionId) {
    return null; // Session loading not supported
  }

  @override
  Future<PromptResult> onPrompt(PromptParams params) async {
    // Simple echo response
    return PromptResult(
      sessionId: params.sessionId,
      status: PromptStatus.completed,
      messages: [
        {
          'role': 'assistant',
          'content': 'You said: ${params.contents.first.text}',
        },
      ],
    );
  }

  @override
  void onCancel(String sessionId) {
    print('Session cancelled: $sessionId');
  }
}
0
likes
160
points
25
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Flutter/Dart implementation of the Agent Client Protocol (ACP). Supports both Client and Agent roles for building AI coding assistants.

Homepage
Repository (GitHub)
View/report issues

Topics

#ai #agent #protocol #llm #coding-assistant

License

MIT (license)

Dependencies

async, http, meta, stream_transform, uuid

More

Packages that depend on flutter_acp