npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@mondaydotcomorg/atp-client

v0.19.9

Published

Client SDK for Agent Tool Protocol

Maintainers

guykorenguykorennitzanezranitzanezrayairfeyairfesaararsaararyonaharelyonahareljoshpe-mondayjoshpe-mondayalonbehaimalonbehaimsergeyroytsergeyroytantonru92antonru92laviomrilaviomrishanibenaderetmondayshanibenaderetmondayvitalimvitalimadarmondayadarmondayaviel_mondayaviel_mondayhadaspehadasperotemtarotemtashayelmodnayshayelmodnaychristopher-nowakchristopher-nowakvladmondayvladmondayella-miella-miliorkeliorkeomermondayomermondayrutikeveshrutikeveshaf8811af8811shiraweshirawewitold-mondaywitold-mondayavihayavavihayavcsalomancsalomaneran.hubermaneran.hubermandanielabdanielabmoshikmoshikaviv_go_npmaviv_go_npmdanielb-bladepopdanielb-bladepoporibaoribaoronmelleroronmelleryglaubachyglaubachayelet-mondayayelet-mondaydanielle.ahdanielle.ahidohayidohayliran-brimer-mondayliran-brimer-mondaynavecohennavecohensaharbsaharbtombogtombogbarakbebarakbeidoyana-mondayidoyana-mondaylorin-totahlorin-totahoronmondayoronmondaynik-savchenkonik-savchenkotomerfriedmantomerfriedmanyosefwyosefwigor_budiigor_budimatanyaw2matanyaw2nirlachmannirlachmanorrgottlorrgottlsebastian-curland-mndysebastian-curland-mndyyuly-robermanyuly-robermanamirbardugoamirbardugobarcohen2barcohen2illyayuillyayutootmorantootmoranfreak4pcfreak4pcmateuszwomateuszwoamit_hanochamit_hanochdorhasondorhasongal_libermangal_libermannoamn3knoamn3kitamargolditamargoldronachmany-mondayronachmany-mondayshahafmelamedshahafmelamedyuvalbyuvalbbenpibenpidorshakeddorshakedmickael_firstmickael_firstitaycohenitaycohenmayaheilbrunmayaheilbrunventuramdventuramdudidoronudidorondoryehudadoryehudagoralthgoralthshaietshaieturi-shmueliuri-shmuelianatkatzanatkatzshalomsteinbachshalomsteinbachannasoannasoboazjboazjofirmonsingoofirmonsingoshaneeshaneeavifreegeavifreegeliorrabinliorrabinvirtservirtserarinaonmondayarinaonmondayssddnodessddnodepablo-mdcpablo-mdcamitbiranamitbiranorelhazorelhazroyna-devroyna-devsergeybrsergeybrofirc-mondayofirc-mondayavnerhaavnerhaaxelstaxelstdanielkheyfetsdanielkheyfetscarloscr.mondaycarloscr.mondaylorenzo.palorenzo.pagiuliofigiuliofiheshamgoheshamgotaniasilvataniasilvabenymondaybenymondaydanielokanindanielokaninneomi_shavitneomi_shavitshaikatzzshaikatzzarielmondayarielmondayguywaguywatomsap-mondaytomsap-mondaylukaszf-mondaylukaszf-mondayeran-coheneran-cohenliorla13liorla13maya-assayagmaya-assayagrami-mondayrami-mondayethans-mondayethans-mondaywitoldtkwitoldtkerlich75erlich75adamflooradamfloorchenbechenbelahavplahavpomernave1omernave1rankupmondayrankupmondayjeandavidjeandavidmeromcomeromcoarnonrgoarnonrgomitzafon-mondaymitzafon-mondayyoavgayoavgalueranlueranliors619liors619nirro.mondaynirro.mondaynicole_kezliknicole_kezliklaurefelaurefemichalsz-mondaymichalsz-mondaymickey_mondaymickey_mondayitamarteitamartedor-cohendor-cohenliranbinliranbinasif_mondayasif_mondaylotemkirshlotemkirshorihassid2507orihassid2507itaymndyitaymndyeyalmueyalmuamirdana115amirdana115arekze-mondayarekze-mondayibmondayibmondayvikas-mondayvikas-mondayalonmualonmulukaszfiszer-mondaylukaszfiszer-mondaymarszelun-mondaymarszelun-mondayarnonguarnonguliortalmondayliortalmondaymarekpemarekpeharelcohenharelcohenameerdoameerdokamiekamiedekelabedekelabesergeyts4sergeyts4hadascohadascoalonsadanalonsadanrama-ronrama-rongilby1gilby1galor-mondaygalor-mondayran-haveshush-mondayran-haveshush-mondaymichaelsimkinmichaelsimkinbarakbsbarakbsedenhayatedenhayatrachelikarachelikaliorfrliorfranyatchernishovanyatchernishovnadavavnadavavthierryguythierryguynirarazi.mondaynirarazi.mondayedenberdugoedenberdugoneilmonneilmonalonzialonzirongabbayrongabbayetgarmonetgarmonronniemironniemiidofinderidofindermoshe-samsonmoshe-samsonadamru-mondayadamru-mondaygauravsh-mondaygauravsh-mondayshlomiatmondayshlomiatmondayandrey-palmanandrey-palmanleonidkrleonidkrtomzohtomzohshirsharshirsharmonday-grahamlamonday-grahamlayoni-alalufyoni-alaluftomer-gillmoretomer-gillmorerobertdarobertdasaarbasaarbatalsoffertalsofferalonlealonlestasshwstasshwataliareataliareidanmondayidanmondayraneldanraneldanbarosenbarosennoarenoarerotemda10rotemda10vladislavmovladislavmoyardendvyardendvchensarchensaryuvalgryuvalgrjohhh_mondayjohhh_mondayandreihryhoryeuandreihryhoryeuinbaldginbaldgjosephsamondayjosephsamondaynoasharvitnoasharvitkubakolybaczkubakolybaczbanueldobanueldomoriatmoriatmatanlamatanlaavivgiavivgialonschatzalonschatzidanoridanorshayo-arshayo-arshaharga4shaharga4michallormichallorsrdjan-mondaysrdjan-mondayggaallggaallshanmondayshanmondaytomerzlotomerzloophirdoophirdojohnny-morjohnny-morfilip-daca-mondayfilip-daca-mondayurielwasyngurielwasyngchrisbamondaychrisbamondayamitmazor37amitmazor37jakubmojakubmoflistflistoded_by_mondayoded_by_mondaymichaljamichaljatalahmondaytalahmondayamitcoamitcogalspmondaygalspmondayorelco2orelco2eyalleeyallealexjalbaalexjalbaadva-gonshadva-gonshorcomondayorcomondayronov1ronov1shoshanyshoshanygalko_mondaygalko_mondaymaciej-mondaymaciej-mondayalonbrimeralonbrimeraviv_goaviv_gobernardpo-mondaybernardpo-mondayeviatharmeviatharmshayalshayalronavmondayronavmondaygal_finger_mondaygal_finger_mondaymichaelimasmichaelimasyoavteyoavtemarta-mondaymarta-mondayarielklarielklmichalbelmichalbeldvirpedvirpeshaharshakishaharshakitomasztarczynskitomasztarczynskishalevkeshalevkeransarusiransarusimaor-barazanimaor-barazanimarcinko-mondaymarcinko-mondaydanielga-mondaydanielga-mondayeliyapleliyaplsapir_barsapir_baryavgenypayavgenypaomergrinomergrinigorczigorczmayaismayaistim-mondaytim-mondaygil_zilbermangil_zilbermansandeepkmondaysandeepkmondayleimoniomndleimoniomndadirhadirhgrzegorzrojekgrzegorzrojekorilaorilatomhousmantomhousmantomkochtomkochromkadriaromkadriayotamhermesyotamhermesroni-ben-aharonroni-ben-aharontomnisimtomnisimmoro256moro256litalwlitalwshirazbehar2shirazbehar2cezarylacezarylanirfridnirfridvasilyklvasilykldorbidorbiaviel_hershkovitzaviel_hershkovitzmayabarkanmayabarkanmatanmamanmatanmamanbenmamondaybenmamondaydoron.brikmandoron.brikmanliorl-mondayliorl-mondaytalhararitalhararitalshetalshetomersttomersttsemachlitsemachlilotanyuranlotanyuranramhillelramhillelidangaidangapiotrdu-mondaypiotrdu-mondayephraimgrephraimgrjakubso2749jakubso2749yevgeniliyevgenilidorsimmdorsimmmichaelvamondaymichaelvamondaygioraguatmondaygioraguatmondayyahorzhyahorzhshaharzishaharzianastasiyakhanastasiyakhomrialomrialofir-efraimofir-efraimmiloszpi-mondaymiloszpi-mondaykarolszmndykarolszmndyyardengavyardengavdanielmo-mondaydanielmo-mondaytalibl.mondaytalibl.mondayamirkeamirkeantonigmantonigmashb22ashb22neyemaawneyemaawrzmndrzmndrangr-mondayrangr-mondaytomer.mondaytomer.mondayyossisaadi.mondayyossisaadi.mondayofekkiofekkijonathansejonathansetheidotheidoguyhadasguyhadasronco99ronco99olegsh_mondayolegsh_mondayjr-mondayjr-mondayomerraomerradord2dord2giladar-mondaygiladar-mondaygiladscgiladscyuliagoldbergyuliagoldbergpiotrkopiotrkoyonatanbi-mondayyonatanbi-mondayaranweb-mondayaranweb-mondayhananmahananmaeladna-mondayeladna-mondaynaorsnaorssamwisamwilukaszmichlukaszmichuziabuziabasafswasafswadmonsaadmonsatalkortalkorv0vs-mondayv0vs-mondayamitbenmoramitbenmoravivzafraniavivzafraniyoniho_myoniho_mpinizopinizovickyhivickyhitiagopi-mondaytiagopi-mondayliangcaoldnliangcaoldnidanklingeridanklingerdanielepdanielepidanmoralidanmoralorborochovichorborochovichadirmonadirmontomergatomerganegevmanegevmayosia1990yosia1990rivkaungarrivkaungarmatbec96matbec96eliyahumanymondayeliyahumanymondayadirhaziz2adirhaziz2galbenoziliomdygalbenoziliomdyori-mondayori-mondaykuzalekskuzaleksnatanrolnik_mndnatanrolnik_mndkapusjkapusjavileviavileviliranroliranroorizvidamondayorizvidamondaykamalwo-mondaykamalwo-mondayasaf472mondayasaf472mondayguygotguygotnoamco-mondaynoamco-mondaydavidgohbergdavidgohbergnurkiewicznurkiewicznoamst-mondaynoamst-mondaymichael-azimovmichael-azimovnitzanshinitzanshisaridansaridanidanpedidanpedronilaronilaitaykalitaykalmoshiko_ben_avimoshiko_ben_avimondayshpiglifymondayshpiglifynoamagoodmannoamagoodmandimaaldimaalgadshgadshrotemdurotemduroishroishcmp-mondaycmp-mondaymaxime.mondaymaxime.mondaydanielvadanielvagabriel.amramgabriel.amraminbalziinbalzitomasz-fijalkowski-mondaytomasz-fijalkowski-mondayalmogrualmogrudaniilvodaniilvomondayjohnmondayjohnrotemassa123rotemassa123bashanyebashanyetomaszlamondaytomaszlamondayeden-eitanieden-eitanitom-katztom-katzlihibmlihibmdoniawadoniawaedogr1edogr1yonatanelyonataneleladdoeladdolukasz-dudzinskilukasz-dudzinskitom_shlomitom_shlomiodedsandakodedsandakhodayaishodayaisalexandrzhalexandrzhmichalpl-mondaymichalpl-mondayiradcoiradconitzanholmes718nitzanholmes718eliasgaeliasgaidoagidoagitaysimitaysimjacksnettjacksnetteladmondayeladmondaytomasfeldertomasfelderibgudmanibgudmanalexjialexjiitcerbyitcerbybrittdabrittdashahargmndshahargmndkevinmondaykevinmondaymortzmondaymortzmondayyoniarvivyoniarvivmarcin-gabmarcin-gabalonedelmanmonday1alonedelmanmonday1mulhamhamulhamhasheenanashsheenanashmaslomonday2maslomonday2talbamatalbamakuba_niemieckuba_niemiecyoavroyoavrocoralincoralinlaver_mondaylaver_mondaysimohanounasimohanounaohad-katzavohad-katzavmeytalfremeytalfredavidbr1davidbr1awallace327awallace327romanshapromanshapzivamzivamdh94dh94adamyahidadamyahidhagaiwehagaiweyoni-mondayyoni-mondayomerfoxomerfoxrivkapelegrivkapelegjakubrohlederjakubrohledertomaszjackowiaktomaszjackowiakfabiotaatmondayfabiotaatmondayishandua-mondayishandua-mondayhadarahhadarahmatthewtomatthewtoilyamezilyamezdamianmarek-mondaydamianmarek-mondayandrewlo-mondayandrewlo-mondaymaxdv-4016maxdv-4016shanybarshanybarsefinisefinikatedubouskayakatedubouskayamaor-karomaor-karonovrosenamnnovrosenamnjohnnpmmanjohnnpmmanharveyr-mondayharveyr-mondayyuval-moshe-mndyyuval-moshe-mndyyardenliyardenlisagilinshitssagilinshitsshaygrshaygrjeremybarnejeremybarneidoziidozibarakzabarakzashamilgshamilgibukun-mondayibukun-mondaysagibarkol89sagibarkol89alonsegalalonsegalofrichenofrichenyuvallev-mondayyuvallev-mondayshannon-mondayshannon-mondayjoel-mondayjoel-mondaymichaelozmondaymichaelozmondaybenlivnibenlivniapeslinapeslinnaorsolmondaynaorsolmondaysergeytsibulnik3sergeytsibulnik3jonathanadlerjonathanadlerliatyaliatyaalonmorgenalonmorgenellaportnovellaportnovadelebeadelebemichaelarmichaelaritamarhiitamarhileahorlinleahorlinruthiedarruthiedaramirfeamirferonykrishtalronykrishtalitaypa777itaypa777reutlevyreutlevyeithanhollandermondayeithanhollandermondaybenhabenhagiladomgiladomyuriisrohyiyuriisrohyiamirnajjaramirnajjarmohamedig1mohamedig1raunaq-mondayraunaq-mondayodedgoodedgonuri-mondaynuri-mondaysreekanthjusreekanthjunavelenavelelironamlironamzivha-mondayzivha-mondayshirzashirzazvimintszvimintsasif_d_dromiasif_d_dromibroster.mondaybroster.mondayhilakislevhilakislevtommattommateran_zidkiyaeran_zidkiyastavrastavraozkamaozkamaofirstofirstcarmeldahancarmeldahandordvdordvalonadaalonadadvirshdvirshtamarshetamarshemark-watkin-mondaymark-watkin-mondayshimony-urielshimony-urieltzvico-mondaytzvico-mondayasafbashiriasafbashiriohadleshnoohadleshnoor-mondayor-mondayaviramashkenazi-monaviramashkenazi-monjihyunum-mondayjihyunum-mondaydanielkorichdanielkorichguymarushchenkoguymarushchenkobruchim_mondaybruchim_mondaytomda-mondaytomda-mondaymiroslawwomiroslawwonickday-mondaynickday-mondayyuvalpadanyuvalpadanamalpiamalpiroeiyaroeiyaiddoaliddoalshirlyrashirlyramichaldamichaldayuvalezyuvalezkerensokerensoyaarmaypazyaarmaypazroiemondayroiemondayhadarlibmanhadarlibmannetaezra1netaezra1guybe-mondayguybe-mondayamitsabag1amitsabag1lorengolorengomusayedahmusayedahamitreamitreedendoron-mondayedendoron-mondayfranekmondayfranekmondaylinoymarganlinoymargannoam-yehudanoam-yehudasergeisasergeisamatanmematanmeyoavkulayoavkularoniavroniavmonadavmonadavsofivasofivaprzemyslawbprzemyslawbadiknafoadiknafoalekseiilalekseiilandreiyuandreiyubargaldbargaldtbreuerweiltbreuerweilyanivridelyanivridelmichalbudziakmichalbudziakdananodananourasmuurasmulayanhalayanhamoshe1100moshe1100moranossmoranosssergeym-mondaysergeym-mondaylevkomondaylevkomondayyonatanc163yonatanc163matkotmatkotolegkaplunolegkaplunohad-mondayohad-mondayandreyolandreyolnetta-snetta-schezkibotwinickchezkibotwinickwitoswitosguysimaimondayguysimaimonday

Readme

@mondaydotcomorg/atp-client

Client library for connecting to Agent Tool Protocol servers and executing code.

Overview

The ATP client enables agents to connect to ATP servers, execute TypeScript code with runtime APIs, handle pauses for LLM/approval/embedding callbacks, and manage client-side tool execution.

Installation

npm install @mondaydotcomorg/atp-client

Architecture

graph TB
    Client[AgentToolProtocolClient] --> Session[ClientSession]
    Client --> API[APIOperations]
    Client --> Exec[ExecutionOperations]
    Client --> Services[ServiceProviders]

    Services --> LLM[LLM Handler]
    Services --> Approval[Approval Handler]
    Services --> Embedding[Embedding Handler]
    Services --> Tools[Client Tools]

    Exec --> Pause[Pause/Resume]
    Session --> Hooks[Pre-Request Hooks]

Quick Start

Basic Client

import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';

const client = new AgentToolProtocolClient({
	baseUrl: 'http://localhost:3333',
	headers: {
		Authorization: 'Bearer your-api-key',
	},
});

await client.init();

// Execute code
const result = await client.execute({
	code: `
    const items = ['apple', 'banana', 'cherry'];
    return items.length;
  `,
});

console.log(result.result); // 3

With LLM Support

import { ChatOpenAI } from '@langchain/openai';

const llm = new ChatOpenAI({ modelName: 'gpt-4' });

const client = new AgentToolProtocolClient({
	baseUrl: 'http://localhost:3333',
	headers: { Authorization: 'Bearer key' },
});

// Provide LLM for atp.llm.* calls
client.provideLLM({
	call: async (prompt, options) => {
		const response = await llm.invoke(prompt);
		return response.content;
	},
});

await client.init();

// Now code can use atp.llm.call()
const result = await client.execute({
	code: `
    const joke = await atp.llm.call({
      prompt: 'Tell me a programming joke',
    });
    return joke;
  `,
});

With Embeddings

import { OpenAIEmbeddings } from '@langchain/openai';

const embeddings = new OpenAIEmbeddings();

client.provideEmbedding({
	embed: async (text) => {
		const vector = await embeddings.embedQuery(text);
		// Store and return ID
		return 'embedding-id-123';
	},
	search: async (query, options) => {
		const queryVector = await embeddings.embedQuery(query);
		// Perform similarity search
		return results;
	},
});

// Code can now use atp.embedding.*
const result = await client.execute({
	code: `
    const id = await atp.embedding.embed('Important document');
    const similar = await atp.embedding.search('document', { topK: 5 });
    return similar;
  `,
});

With Approval Handler

client.provideApproval({
	request: async (message, context) => {
		// Prompt user for approval
		const approved = await askUser(message);
		return {
			approved,
			response: { reason: 'User decision' },
			timestamp: Date.now(),
		};
	},
});

// Code can use atp.approval.request()
const result = await client.execute({
	code: `
    const approval = await atp.approval.request(
      'Delete all files?',
      { critical: true }
    );
    
    if (!approval.approved) {
      return { cancelled: true };
    }
    
    return { deleted: true };
  `,
});

Client-Side Tools

Register custom tools that execute on the client:

import { createClientTool } from '@mondaydotcomorg/atp-client';

const fetchTool = createClientTool({
	name: 'fetch',
	description: 'Make HTTP requests from client',
	inputSchema: {
		type: 'object',
		properties: {
			url: { type: 'string' },
			method: { type: 'string', enum: ['GET', 'POST'] },
		},
		required: ['url'],
	},
	handler: async (input) => {
		const response = await fetch(input.url, {
			method: input.method || 'GET',
		});
		return await response.json();
	},
});

const client = new AgentToolProtocolClient({
	baseUrl: 'http://localhost:3333',
	headers: { Authorization: 'Bearer key' },
	serviceProviders: {
		tools: [fetchTool],
	},
});

await client.init(); // Registers tools with server

const tools = client.getClientTools();
console.log(
	'Available tools:',
	tools.map((t) => t.name)
);

const toolDefs = client.getClientToolDefinitions();
console.log('Tool definitions:', JSON.stringify(toolDefs, null, 2));

const result = await client.execute({
	code: `
    const data = await atp.tool.fetch({
      url: 'https://api.example.com/data',
      method: 'GET',
    });
    return data;
  `,
});

Pre-Request Hooks

Intercept and modify requests (e.g., token refresh):

const client = new AgentToolProtocolClient({
	baseUrl: 'http://localhost:3333',
	hooks: {
		preRequest: async (context) => {
			// Refresh token if needed
			if (tokenExpired()) {
				const newToken = await refreshToken();
				return {
					headers: {
						...context.currentHeaders,
						Authorization: `Bearer ${newToken}`,
					},
				};
			}
			return {};
		},
	},
});

Core Features

Execute Code

const result = await client.execute({
	code: 'return 1 + 1',
	timeout: 30000,
	pausable: true,
});

// Result structure
interface ExecutionResult {
	status: 'success' | 'error' | 'paused' | 'timeout';
	result?: unknown;
	error?: string;
	pauseReason?: string;
	executionId?: string;
}

Search APIs

const results = await client.search({
	query: 'user authentication',
	limit: 10,
});

// Search by natural language query
const searchResults = await client.searchQuery('how to create a user');

Explore APIs

const schema = await client.explore();

// Returns API structure
interface ExploreResult {
	apis: Array<{
		name: string;
		description: string;
		functions: Array<{
			name: string;
			description: string;
			parameters: unknown;
		}>;
	}>;
}

Type Definitions

const types = await client.getTypeDefinitions();
// Returns TypeScript definitions for atp.* APIs

API Reference

AgentToolProtocolClient

class AgentToolProtocolClient {
	constructor(options: AgentToolProtocolClientOptions);

	// Initialize session
	init(clientInfo?: Record<string, unknown>): Promise<{
		clientId: string;
		token: string;
		expiresAt: number;
		tokenRotateAt: number;
	}>;

	// Execute code
	execute(config: ExecutionConfig): Promise<ExecutionResult>;

	// Resume paused execution
	resume(executionId: string, resumeData: ResumeData): Promise<ExecutionResult>;

	// Provide services
	provideLLM(handler: ClientLLMHandler): void;
	provideApproval(handler: ClientApprovalHandler): void;
	provideEmbedding(handler: ClientEmbeddingHandler): void;
	provideTools(tools: ClientTool[]): void;

	// Get client tools
	getTools(): ClientTool[]; // Returns tools with handlers
	getToolDefinitions(): ClientToolDefinition[]; // Returns tools without handlers

	// API discovery
	search(options: SearchOptions): Promise<SearchResult[]>;
	searchQuery(query: string, options?: SearchOptions): Promise<SearchResult[]>;
	explore(): Promise<ExploreResult>;
	getTypeDefinitions(): Promise<string>;

	// Session info
	getClientId(): string;
}

Options

interface AgentToolProtocolClientOptions {
	baseUrl: string;
	headers?: Record<string, string>;
	serviceProviders?: {
		llm?: ClientLLMHandler;
		approval?: ClientApprovalHandler;
		embedding?: ClientEmbeddingHandler;
		tools?: ClientTool[];
	};
	hooks?: {
		preRequest?: (context: HookContext) => Promise<HookResult>;
	};
}

Flow Diagram

sequenceDiagram
    participant Agent
    participant Client
    participant Server
    participant LLM

    Agent->>Client: execute(code)
    Client->>Server: POST /execute
    Server->>Server: Run code

    alt Code calls atp.llm.call()
        Server->>Client: Pause (LLM callback)
        Client->>Agent: Request LLM
        Agent->>LLM: API call
        LLM-->>Agent: Response
        Agent->>Client: Resume with result
        Client->>Server: POST /resume
        Server->>Server: Continue execution
    end

    Server-->>Client: Execution result
    Client-->>Agent: Return result

Error Handling

import { ExecutionStatus } from '@mondaydotcomorg/atp-client';

try {
	const result = await client.execute({ code: '...' });

	if (result.status === ExecutionStatus.ERROR) {
		console.error('Execution failed:', result.error);
	} else if (result.status === ExecutionStatus.TIMEOUT) {
		console.error('Execution timed out');
	} else if (result.status === ExecutionStatus.PAUSED) {
		console.log('Execution paused:', result.pauseReason);
		// Handle pause (resume later)
	}
} catch (error) {
	console.error('Client error:', error);
}

TypeScript Support

Full TypeScript definitions with strict typing for all APIs.

License

MIT