SDK Reference
TypeScript SDK
Official TypeScript/JavaScript SDK for AMP.
Installation
npm install @amp-protocol/clientInitialisation
import { AMP } from '@amp-protocol/client';
const amp = new AMP({
apiKey: process.env.AMP_API_KEY,
// Optional configuration
baseUrl: 'https://api.amp-protocol.dev/v1', // Default
timeout: 5000, // Request timeout (ms)
retries: 3, // Auto-retry failed requests
debug: false // Enable debug logging
});Methods
getContext()
const context = await amp.getContext({
userId: 'user_123',
task: 'build a feature',
complexity: 'medium', // Optional
taskType: 'coding', // Optional
metadata: { /* ... */ } // Optional
});reportOutcome()
await amp.reportOutcome({
requestId: context.requestId,
started: true,
completed: true,
timeToStart: 45, // Optional
flowState: true, // Optional
satisfaction: 0.9 // Optional
});updateProfile()
const profile = await amp.updateProfile({
userId: 'user_123',
preferredFraming: 'achievement',
communicationStyle: 'brief_directive'
});TypeScript Types
import type {
GetContextParams,
MotivationContext,
OutcomeParams,
MotivationProfile,
FramingType,
CommunicationStyle
} from '@amp-protocol/client';
// Fully typed!
const context: MotivationContext = await amp.getContext({
userId: 'user_123',
task: 'test'
});Error Handling
import { AMPError } from '@amp-protocol/client';
try {
const context = await amp.getContext({ userId, task });
} catch (error) {
if (error instanceof AMPError) {
console.error({
code: error.code,
message: error.message,
statusCode: error.statusCode
});
}
}Event Listeners
// Listen to all requests
amp.on('request', (params) => {
console.log('AMP Request:', params);
});
// Listen to responses
amp.on('response', (context, duration) => {
console.log(`AMP responded in ${duration}ms`);
});
// Listen to errors
amp.on('error', (error) => {
console.error('AMP Error:', error);
});Framework Examples
Next.js
app/api/agent/route.ts
import { AMP } from '@amp-protocol/client';
import { NextRequest, NextResponse } from 'next/server';
const amp = new AMP({ apiKey: process.env.AMP_API_KEY });
export async function POST(request: NextRequest) {
const { userId, query } = await request.json();
const context = await amp.getContext({ userId, task: query });
return NextResponse.json({ context });
}Express
server.ts
import { AMP } from '@amp-protocol/client';
import express from 'express';
const amp = new AMP({ apiKey: process.env.AMP_API_KEY });
const app = express();
app.post('/api/agent', async (req, res) => {
const context = await amp.getContext({
userId: req.body.userId,
task: req.body.query
});
res.json({ context });
});💡 Tip: The SDK automatically handles retries and rate limiting. No extra configuration needed!