@codmir/sdk
v0.1.2
Published
Official Codmir SDK - TypeScript/JavaScript library for the Codmir API
Maintainers
Readme
@codmir/sdk
Official TypeScript/JavaScript SDK for the Codmir platform.
Features
- 🔍 Error Tracking - Capture and track errors with full context
- 🎬 Session Replay - Record and replay user sessions
- 📊 Performance Monitoring - Track Core Web Vitals
- 🤖 AI Agent API - Run automated tasks and workflows
- 📝 Ticket Management - Create and manage project tickets
Installation
npm install @codmir/sdkPlatform-Specific Imports
| Platform | Import |
|----------|--------|
| Next.js | @codmir/sdk/nextjs |
| React Native | @codmir/sdk/react-native |
| Browser (vanilla) | @codmir/sdk/browser |
| Node.js/Server | @codmir/sdk/overseer |
| API Client | @codmir/sdk or @codmir/sdk/client |
Quick Start - Error Tracking
Next.js
// instrumentation-client.ts
import * as Codmir from '@codmir/sdk/nextjs';
Codmir.init({
dsn: process.env.NEXT_PUBLIC_OVERSEER_DSN,
environment: process.env.NODE_ENV,
release: process.env.NEXT_PUBLIC_APP_VERSION,
});React Native
// App.tsx
import * as Codmir from '@codmir/sdk/react-native';
Codmir.init({
dsn: 'https://your-project.codmir.com/api/overseer',
});
// Track screen views
Codmir.trackScreenView('HomeScreen');Browser (Vanilla JS)
import { init, captureException } from '@codmir/sdk/browser';
init({
dsn: 'https://your-project.codmir.com/api/overseer',
trackClicks: true,
trackRequests: true,
});Quick Start - API Client
import { CodmirClient } from '@codmir/sdk';
const client = new CodmirClient({
apiKey: process.env.CODMIR_API_KEY,
});
// List projects
const projects = await client.listProjects();
// Create a ticket
const ticket = await client.createTicket({
title: 'Fix login bug',
description: 'Users cannot login with SSO',
type: 'bug',
priority: 'high',
projectId: 'project-123',
});
// Use AI chat
const response = await client.chat('How do I implement OAuth2?');
console.log(response);Configuration
const client = new CodmirClient({
apiKey: 'your-api-key', // Or set CODMIR_API_KEY env var
baseUrl: 'https://codmir.com/api', // Optional, defaults to production
timeout: 30000, // Request timeout in ms
headers: { // Custom headers
'X-Custom-Header': 'value',
},
});API Reference
Authentication
// Get current user
const user = await client.whoami();Projects
// List all projects
const projects = await client.listProjects();
// Get a specific project
const project = await client.getProject('project-id');
// Create a project
const newProject = await client.createProject({
name: 'My Project',
organizationId: 'org-id',
});Tickets
// List tickets
const tickets = await client.listTickets('project-id', {
page: 1,
pageSize: 20,
status: 'open',
});
// Get a ticket
const ticket = await client.getTicket('project-id', 'ticket-id');
// Create a ticket
const ticket = await client.createTicket({
title: 'Bug report',
description: 'Something is broken',
type: 'bug',
priority: 'high',
projectId: 'project-id',
});
// Update a ticket
const updated = await client.updateTicket('project-id', 'ticket-id', {
status: 'in_progress',
});
// Delete a ticket
await client.deleteTicket('project-id', 'ticket-id');Test Cases
// List test cases
const testCases = await client.listTestCases('project-id');
// Create a test case
const testCase = await client.createTestCase({
title: 'Login flow',
projectId: 'project-id',
steps: [
{ order: 1, action: 'Open login page', expectedResult: 'Login form displayed' },
{ order: 2, action: 'Enter credentials', expectedResult: 'Fields populated' },
{ order: 3, action: 'Click submit', expectedResult: 'User logged in' },
],
});AI Agent Tasks
// Create an agent task
const task = await client.createAgentTask({
type: 'code_review',
prompt: 'Review this pull request for security issues',
projectId: 'project-id',
});
// Run the task
const execution = await client.runAgentTask({
taskId: task.id,
options: {
model: 'gpt-4-turbo',
},
});
// Get task status
const status = await client.getAgentTask(task.id);AI Chat
// Simple chat
const response = await client.chat('Explain dependency injection');
// Chat with project context
const response = await client.chat('How is auth implemented?', {
projectId: 'project-id',
});
// Streaming chat
const fullResponse = await client.streamChat('Write a function to...', {
onChunk: (chunk) => process.stdout.write(chunk),
});Error Handling
import { CodmirClient, CodmirApiError } from '@codmir/sdk';
try {
const ticket = await client.getTicket('project-id', 'invalid-id');
} catch (error) {
if (error instanceof CodmirApiError) {
console.error(`API Error: ${error.code} - ${error.message}`);
console.error(`Status: ${error.statusCode}`);
}
}TypeScript Support
Full TypeScript support with exported types:
import type {
Ticket,
CreateTicketInput,
TicketStatus,
TicketPriority,
AgentTask,
AgentTaskType,
} from '@codmir/sdk';Related Packages
codmir- CLI tool for terminal usage@codmir/types- Shared type definitions
License
MIT
