MACP

Getting Started

Prerequisites

  • Node.js 18+ (ES2022 target)
  • A running MACP Rust runtime (default at 127.0.0.1:50051)

Install

npm install macp-sdk-typescript

Connect to the Runtime

import { Auth, MacpClient } from 'macp-sdk-typescript';

const client = new MacpClient({
  address: '127.0.0.1:50051',
  secure: false,                    // true for TLS in production
  auth: Auth.devAgent('my-agent'),  // default auth for all operations
});

// Handshake — negotiates protocol version and capabilities
const init = await client.initialize();
console.log(init.selectedProtocolVersion); // '1.0'
console.log(init.runtimeInfo?.name);       // runtime name
console.log(init.supportedModes);          // available modes

Run Your First Decision

import { DecisionSession } from 'macp-sdk-typescript';

const session = new DecisionSession(client);

// 1. Start a session
await session.start({
  intent: 'choose a deployment strategy',
  participants: ['alice', 'bob'],
  ttlMs: 60_000, // 1 minute
});

// 2. Submit a proposal
await session.propose({
  proposalId: 'p1',
  option: 'canary-deploy',
  rationale: 'gradual rollout with monitoring',
});

// 3. Evaluate (as another agent)
await session.evaluate({
  proposalId: 'p1',
  recommendation: 'approve',
  confidence: 0.92,
  reason: 'risk assessment favorable',
  sender: 'alice',
  auth: Auth.devAgent('alice'),
});

// 4. Vote
await session.vote({
  proposalId: 'p1',
  vote: 'approve',
  reason: 'team consensus',
  sender: 'bob',
  auth: Auth.devAgent('bob'),
});

// 5. Check projection state
console.log(session.projection.voteTotals());    // { p1: 1 }
console.log(session.projection.majorityWinner()); // 'p1'

// 6. Commit the decision
await session.commit({
  action: 'deployment.approved',
  authorityScope: 'release-management',
  reason: 'unanimous approval for canary deploy',
});

// 7. Verify
const meta = await session.metadata();
console.log(meta.metadata.state); // 'SESSION_STATE_RESOLVED'

client.close();

Client Options

OptionTypeDefaultDescription
addressstringgRPC server address (host:port)
securebooleanfalseUse TLS credentials
authAuthConfigDefault authentication for all operations
rootCertificatesBufferTLS root CA certificates
defaultDeadlineMsnumberDefault RPC deadline in milliseconds
clientNamestring'macp-sdk-typescript'Client name sent during Initialize
clientVersionstring'0.1.0'Client version sent during Initialize
protoDirstring<pkg>/protoPath to protobuf definitions

Session Options

All session constructors accept the same base options:

OptionTypeDefaultDescription
sessionIdstringauto-generated UUIDv4Session identifier
modeVersionstring'1.0.0'Semantic version of the mode
configurationVersionstring'config.default'Configuration profile version
policyVersionstring'policy.default'Policy profile version
authAuthConfigOverride default client auth

Next Steps