@mondaydotcomorg/atp-client 0.19.7 → 0.19.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"sources":["../src/core/session.ts","../src/core/in-process-session.ts","../src/core/api-operations.ts","../src/errors.ts","../src/core/provenance-registry.ts","../src/core/execution-operations.ts","../src/core/service-providers.ts","../src/tools/types.ts","../src/tools/search-api.ts","../src/tools/fetch-all-apis.ts","../src/tools/execute-code.ts","../src/tools/explore-api.ts","../src/client.ts","../src/generator.ts","../src/tools.ts"],"names":["ClientSession","baseUrl","customHeaders","clientId","clientToken","initPromise","hooks","constructor","headers","init","clientInfo","tools","services","token","expiresAt","tokenRotateAt","url","body","JSON","stringify","prepareHeaders","response","fetch","method","ok","Error","status","statusText","data","json","getClientId","ensureInitialized","getHeaders","getBaseUrl","updateToken","newToken","get","preRequest","result","currentHeaders","abort","abortReason","error","InProcessSession","server","initialized","start","ctx","createContext","path","handleInit","_response","_method","_url","_body","getDefinitions","options","query","apiGroups","join","getRuntimeDefinitions","apis","length","getServerInfo","getInfo","search","handleSearch","explore","handleExplore","execute","code","config","handleExecute","resume","executionId","callbackResult","handleResume","resumeWithBatchResults","batchResults","results","noopLogger","debug","info","warn","logger","responseBody","throw","message","assert","condition","set","APIOperations","session","inProcessSession","apiDefinitions","connect","typescript","serverVersion","version","capabilities","params","URLSearchParams","getTypeDefinitions","searchAPI","exploreAPI","undefined","toString","text","ClientCallbackError","name","ProvenanceTokenRegistry","cache","Map","maxSize","ttl","sequenceCounter","ttlHours","add","evictExpired","size","evictLRU","addedAt","Date","now","sequence","getRecentTokens","maxCount","expiredTokens","entries","Array","from","values","filter","entry","split","push","payload","parse","Buffer","sort","a","b","slice","delete","map","e","clear","toDelete","oldestToken","oldestSequence","Infinity","ExecutionOperations","serviceProviders","tokenRegistry","lastExecutionConfig","executeStream","onProgress","Promise","resolve","reject","fetchImpl","require","then","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","stream","lines","pop","i","line","startsWith","event","substring","trim","j","dataLine","dataStr","fraction","log","catch","hints","detectedClientServices","hasLLM","getLLM","hasApproval","getApproval","hasEmbedding","getEmbedding","hasTools","executionConfig","clientServices","provenanceHints","provenanceTokens","ExecutionStatus","PAUSED","needsCallbacks","handleBatchCallbacksAndResume","needsCallback","handlePauseAndResume","pausedResult","missingServiceIds","Set","cb","hasServiceForCallback","type","id","missingServices","has","explicitlyRequestedMissing","wasServiceExplicitlyRequested","unexpectedMissing","errorMessage","operation","existingCallbacks","existingResults","all","handleCallback","allResults","__error","find","r","String","allErrorResults","callbackCount","wasExplicitlyRequested","callbackType","CallbackType","LLM","APPROVAL","EMBEDDING","TOOL","LLMOperation","CALL","EXTRACT","CLASSIFY","EmbeddingOperation","EMBED","SEARCH","ServiceProviders","providers","toolHandlers","tool","handler","provideLLM","llm","provideApproval","approval","provideEmbedding","embedding","provideTools","getTools","getToolDefinitions","definition","hasAnyServices","calls","call","prompt","extract","schema","classify","categories","contextWithExecutionId","context","request","embed","queryEmbedding","similarity","text1","text2","ToolOperation","toolName","input","ToolNames","SEARCH_API","FETCH_ALL_APIS","EXECUTE_CODE","EXPLORE_API","searchApiInputSchema","z","object","string","describe","createSearchApiTool","client","description","inputSchema","zodToJsonSchema","zodSchema","func","success","apiGroup","functionName","signature","count","fetchAllApisInputSchema","array","optional","createFetchAllApisTool","_input","executeCodeInputSchema","timeout","number","maxMemory","createExecuteCodeTool","COMPLETED","stats","duration","memoryUsed","FAILED","stack","exploreApiInputSchema","createExploreApiTool","items","group","AgentToolProtocolClient","apiOps","execOps","toolDefinitions","getClientTools","getClientToolDefinitions","getATPTools","CodeGenerator","generateCode","intent","parameters","types","typesLength","createToolsFromATPClient"],"mappings":"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","file":"index.js","sourcesContent":["import type { ClientHooks } from './types.js';\nimport type { ClientToolDefinition } from '@mondaydotcomorg/atp-protocol';\n\nexport interface ISession {\n\tinit(\n\t\tclientInfo?: { name?: string; version?: string; [key: string]: unknown },\n\t\ttools?: ClientToolDefinition[],\n\t\tservices?: { hasLLM: boolean; hasApproval: boolean; hasEmbedding: boolean; hasTools: boolean }\n\t): Promise<{\n\t\tclientId: string;\n\t\ttoken: string;\n\t\texpiresAt: number;\n\t\ttokenRotateAt: number;\n\t}>;\n\tgetClientId(): string;\n\tensureInitialized(): Promise<void>;\n\tgetHeaders(): Record<string, string>;\n\tgetBaseUrl(): string;\n\tupdateToken(response: Response): void;\n\tprepareHeaders(method: string, url: string, body?: unknown): Promise<Record<string, string>>;\n}\n\nexport class ClientSession implements ISession {\n\tprivate baseUrl: string;\n\tprivate customHeaders: Record<string, string>;\n\tprivate clientId?: string;\n\tprivate clientToken?: string;\n\tprivate initPromise?: Promise<void>;\n\tprivate hooks?: ClientHooks;\n\n\tconstructor(baseUrl: string, headers?: Record<string, string>, hooks?: ClientHooks) {\n\t\tthis.baseUrl = baseUrl;\n\t\tthis.customHeaders = headers || {};\n\t\tthis.hooks = hooks;\n\t}\n\n\t/**\n\t * Initializes the client session with the server.\n\t * This MUST be called before any other operations.\n\t * The server generates and returns a unique client ID and token.\n\t * @param clientInfo - Optional client information\n\t * @param tools - Optional client tool definitions to register with the server\n\t * @param services - Optional client service capabilities (LLM, approval, embedding)\n\t */\n\tasync init(\n\t\tclientInfo?: { name?: string; version?: string; [key: string]: unknown },\n\t\ttools?: ClientToolDefinition[],\n\t\tservices?: { hasLLM: boolean; hasApproval: boolean; hasEmbedding: boolean; hasTools: boolean }\n\t): Promise<{\n\t\tclientId: string;\n\t\ttoken: string;\n\t\texpiresAt: number;\n\t\ttokenRotateAt: number;\n\t}> {\n\t\tif (this.initPromise) {\n\t\t\tawait this.initPromise;\n\t\t\treturn {\n\t\t\t\tclientId: this.clientId!,\n\t\t\t\ttoken: this.clientToken!,\n\t\t\t\texpiresAt: 0,\n\t\t\t\ttokenRotateAt: 0,\n\t\t\t};\n\t\t}\n\n\t\tthis.initPromise = (async () => {\n\t\t\tconst url = `${this.baseUrl}/api/init`;\n\t\t\tconst body = JSON.stringify({\n\t\t\t\tclientInfo,\n\t\t\t\ttools: tools || [],\n\t\t\t\tservices,\n\t\t\t});\n\t\t\tconst headers = await this.prepareHeaders('POST', url, body);\n\n\t\t\tconst response = await fetch(url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders,\n\t\t\t\tbody,\n\t\t\t});\n\n\t\t\tif (!response.ok) {\n\t\t\t\tthrow new Error(`Client initialization failed: ${response.status} ${response.statusText}`);\n\t\t\t}\n\n\t\t\tconst data = (await response.json()) as {\n\t\t\t\tclientId: string;\n\t\t\t\ttoken: string;\n\t\t\t\texpiresAt: number;\n\t\t\t\ttokenRotateAt: number;\n\t\t\t};\n\n\t\t\tthis.clientId = data.clientId;\n\t\t\tthis.clientToken = data.token;\n\t\t})();\n\n\t\tawait this.initPromise;\n\n\t\treturn {\n\t\t\tclientId: this.clientId!,\n\t\t\ttoken: this.clientToken!,\n\t\t\texpiresAt: 0,\n\t\t\ttokenRotateAt: 0,\n\t\t};\n\t}\n\n\t/**\n\t * Gets the unique client ID.\n\t */\n\tgetClientId(): string {\n\t\tif (!this.clientId) {\n\t\t\tthrow new Error('Client not initialized. Call init() first.');\n\t\t}\n\t\treturn this.clientId;\n\t}\n\n\t/**\n\t * Ensures the client is initialized before making requests.\n\t */\n\tasync ensureInitialized(): Promise<void> {\n\t\tif (!this.clientId) {\n\t\t\tthrow new Error('Client not initialized. Call init() first.');\n\t\t}\n\t}\n\n\t/**\n\t * Creates HTTP headers for requests.\n\t */\n\tgetHeaders(): Record<string, string> {\n\t\tconst headers: Record<string, string> = {\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...this.customHeaders,\n\t\t};\n\n\t\tif (this.clientId) {\n\t\t\theaders['X-Client-ID'] = this.clientId;\n\t\t}\n\n\t\tif (this.clientToken) {\n\t\t\theaders['Authorization'] = `Bearer ${this.clientToken}`;\n\t\t}\n\n\t\treturn headers;\n\t}\n\n\tgetBaseUrl(): string {\n\t\treturn this.baseUrl;\n\t}\n\n\t/**\n\t * Updates the client token from response headers (token refresh).\n\t */\n\tupdateToken(response: Response): void {\n\t\tconst newToken = response.headers.get('X-ATP-Token');\n\t\tif (newToken) {\n\t\t\tthis.clientToken = newToken;\n\t\t}\n\t}\n\n\t/**\n\t * Prepares headers for a request, calling preRequest hook if configured\n\t */\n\tasync prepareHeaders(\n\t\tmethod: string,\n\t\turl: string,\n\t\tbody?: unknown\n\t): Promise<Record<string, string>> {\n\t\tlet headers: Record<string, string> = {\n\t\t\t'Content-Type': 'application/json',\n\t\t\t...this.customHeaders,\n\t\t};\n\n\t\tif (this.clientId) {\n\t\t\theaders['X-Client-ID'] = this.clientId;\n\t\t}\n\n\t\tif (this.clientToken) {\n\t\t\theaders['Authorization'] = `Bearer ${this.clientToken}`;\n\t\t}\n\n\t\tif (this.hooks?.preRequest) {\n\t\t\ttry {\n\t\t\t\tconst result = await this.hooks.preRequest({\n\t\t\t\t\turl,\n\t\t\t\t\tmethod,\n\t\t\t\t\tcurrentHeaders: headers,\n\t\t\t\t\tbody,\n\t\t\t\t});\n\n\t\t\t\tif (result.abort) {\n\t\t\t\t\tthrow new Error(result.abortReason || 'Request aborted by preRequest hook');\n\t\t\t\t}\n\n\t\t\t\tif (result.headers) {\n\t\t\t\t\theaders = result.headers;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\treturn headers;\n\t}\n}\n","import type { ClientToolDefinition } from '@mondaydotcomorg/atp-protocol';\nimport type { ISession } from './session.js';\n\ninterface InProcessServer {\n\tstart(): Promise<void>;\n\thandleInit(ctx: InProcessRequestContext): Promise<unknown>;\n\tgetDefinitions(ctx?: InProcessRequestContext): Promise<unknown>;\n\tgetRuntimeDefinitions(ctx?: InProcessRequestContext): Promise<string>;\n\tgetInfo(): unknown;\n\thandleSearch(ctx: InProcessRequestContext): Promise<unknown>;\n\thandleExplore(ctx: InProcessRequestContext): Promise<unknown>;\n\thandleExecute(ctx: InProcessRequestContext): Promise<unknown>;\n\thandleResume(ctx: InProcessRequestContext, executionId: string): Promise<unknown>;\n}\n\ninterface InProcessRequestContext {\n\tmethod: string;\n\tpath: string;\n\tquery: Record<string, string>;\n\theaders: Record<string, string>;\n\tbody: unknown;\n\tclientId?: string;\n\tclientToken?: string;\n\tuserId?: string;\n\tuser?: unknown;\n\texecutionId?: string;\n\tcode?: string;\n\tvalidation?: unknown;\n\tresult?: unknown;\n\terror?: Error;\n\tlogger: { debug: () => void; info: () => void; warn: () => void; error: () => void };\n\tstatus: number;\n\tresponseBody: unknown;\n\tthrow(status: number, message: string): never;\n\tassert(condition: boolean, message: string): asserts condition;\n\tset(header: string, value: string): void;\n}\n\nexport class InProcessSession implements ISession {\n\tprivate server: InProcessServer;\n\tprivate clientId?: string;\n\tprivate clientToken?: string;\n\tprivate initialized: boolean = false;\n\tprivate initPromise?: Promise<void>;\n\n\tconstructor(server: InProcessServer) {\n\t\tthis.server = server;\n\t}\n\n\tasync init(\n\t\tclientInfo?: { name?: string; version?: string; [key: string]: unknown },\n\t\ttools?: ClientToolDefinition[],\n\t\tservices?: { hasLLM: boolean; hasApproval: boolean; hasEmbedding: boolean; hasTools: boolean }\n\t): Promise<{\n\t\tclientId: string;\n\t\ttoken: string;\n\t\texpiresAt: number;\n\t\ttokenRotateAt: number;\n\t}> {\n\t\tif (this.initPromise) {\n\t\t\tawait this.initPromise;\n\t\t\treturn {\n\t\t\t\tclientId: this.clientId!,\n\t\t\t\ttoken: this.clientToken!,\n\t\t\t\texpiresAt: 0,\n\t\t\t\ttokenRotateAt: 0,\n\t\t\t};\n\t\t}\n\n\t\tthis.initPromise = (async () => {\n\t\t\tawait this.server.start();\n\n\t\t\tconst ctx = this.createContext({\n\t\t\t\tmethod: 'POST',\n\t\t\t\tpath: '/api/init',\n\t\t\t\tbody: {\n\t\t\t\t\tclientInfo,\n\t\t\t\t\ttools: tools || [],\n\t\t\t\t\tservices,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tconst result = (await this.server.handleInit(ctx)) as {\n\t\t\t\tclientId: string;\n\t\t\t\ttoken: string;\n\t\t\t\texpiresAt: number;\n\t\t\t\ttokenRotateAt: number;\n\t\t\t};\n\n\t\t\tthis.clientId = result.clientId;\n\t\t\tthis.clientToken = result.token;\n\t\t\tthis.initialized = true;\n\t\t})();\n\n\t\tawait this.initPromise;\n\n\t\treturn {\n\t\t\tclientId: this.clientId!,\n\t\t\ttoken: this.clientToken!,\n\t\t\texpiresAt: 0,\n\t\t\ttokenRotateAt: 0,\n\t\t};\n\t}\n\n\tgetClientId(): string {\n\t\tif (!this.clientId) {\n\t\t\tthrow new Error('Client not initialized. Call init() first.');\n\t\t}\n\t\treturn this.clientId;\n\t}\n\n\tasync ensureInitialized(): Promise<void> {\n\t\tif (!this.initialized) {\n\t\t\tthrow new Error('Client not initialized. Call init() first.');\n\t\t}\n\t}\n\n\tgetHeaders(): Record<string, string> {\n\t\tconst headers: Record<string, string> = {\n\t\t\t'content-type': 'application/json',\n\t\t};\n\n\t\tif (this.clientId) {\n\t\t\theaders['x-client-id'] = this.clientId;\n\t\t}\n\n\t\tif (this.clientToken) {\n\t\t\theaders['authorization'] = `Bearer ${this.clientToken}`;\n\t\t}\n\n\t\treturn headers;\n\t}\n\n\tgetBaseUrl(): string {\n\t\treturn '';\n\t}\n\n\tupdateToken(_response: Response): void {\n\t\t// No-op for in-process - tokens are managed directly\n\t}\n\n\tasync prepareHeaders(\n\t\t_method: string,\n\t\t_url: string,\n\t\t_body?: unknown\n\t): Promise<Record<string, string>> {\n\t\treturn this.getHeaders();\n\t}\n\n\tasync getDefinitions(options?: { apiGroups?: string[] }): Promise<{\n\t\ttypescript: string;\n\t\tversion: string;\n\t\tapiGroups: string[];\n\t}> {\n\t\tawait this.ensureInitialized();\n\n\t\tconst ctx = this.createContext({\n\t\t\tmethod: 'GET',\n\t\t\tpath: '/api/definitions',\n\t\t\tquery: options?.apiGroups ? { apiGroups: options.apiGroups.join(',') } : {},\n\t\t});\n\n\t\treturn (await this.server.getDefinitions(ctx)) as {\n\t\t\ttypescript: string;\n\t\t\tversion: string;\n\t\t\tapiGroups: string[];\n\t\t};\n\t}\n\n\tasync getRuntimeDefinitions(options?: { apis?: string[] }): Promise<string> {\n\t\tawait this.ensureInitialized();\n\n\t\tconst ctx = this.createContext({\n\t\t\tmethod: 'GET',\n\t\t\tpath: '/api/runtime',\n\t\t\tquery: options?.apis?.length ? { apis: options.apis.join(',') } : {},\n\t\t});\n\n\t\treturn await this.server.getRuntimeDefinitions(ctx);\n\t}\n\n\tasync getServerInfo(): Promise<{\n\t\tversion: string;\n\t\tcapabilities: Record<string, boolean>;\n\t}> {\n\t\tawait this.ensureInitialized();\n\t\treturn this.server.getInfo() as {\n\t\t\tversion: string;\n\t\t\tcapabilities: Record<string, boolean>;\n\t\t};\n\t}\n\n\tasync search(query: string, options?: Record<string, unknown>): Promise<{ results: unknown[] }> {\n\t\tawait this.ensureInitialized();\n\n\t\tconst ctx = this.createContext({\n\t\t\tmethod: 'POST',\n\t\t\tpath: '/api/search',\n\t\t\tbody: { query, ...options },\n\t\t});\n\n\t\treturn (await this.server.handleSearch(ctx)) as { results: unknown[] };\n\t}\n\n\tasync explore(path: string): Promise<unknown> {\n\t\tawait this.ensureInitialized();\n\n\t\tconst ctx = this.createContext({\n\t\t\tmethod: 'POST',\n\t\t\tpath: '/api/explore',\n\t\t\tbody: { path },\n\t\t});\n\n\t\treturn await this.server.handleExplore(ctx);\n\t}\n\n\tasync execute(code: string, config?: Record<string, unknown>): Promise<unknown> {\n\t\tawait this.ensureInitialized();\n\n\t\tconst ctx = this.createContext({\n\t\t\tmethod: 'POST',\n\t\t\tpath: '/api/execute',\n\t\t\tbody: { code, config },\n\t\t});\n\n\t\treturn await this.server.handleExecute(ctx);\n\t}\n\n\tasync resume(executionId: string, callbackResult: unknown): Promise<unknown> {\n\t\tawait this.ensureInitialized();\n\n\t\tconst ctx = this.createContext({\n\t\t\tmethod: 'POST',\n\t\t\tpath: `/api/resume/${executionId}`,\n\t\t\tbody: { result: callbackResult },\n\t\t});\n\n\t\treturn await this.server.handleResume(ctx, executionId);\n\t}\n\n\tasync resumeWithBatchResults(\n\t\texecutionId: string,\n\t\tbatchResults: Array<{ id: string; result: unknown }>\n\t): Promise<unknown> {\n\t\tawait this.ensureInitialized();\n\n\t\tconst ctx = this.createContext({\n\t\t\tmethod: 'POST',\n\t\t\tpath: `/api/resume/${executionId}`,\n\t\t\tbody: { results: batchResults },\n\t\t});\n\n\t\treturn await this.server.handleResume(ctx, executionId);\n\t}\n\n\tprivate createContext(options: {\n\t\tmethod: string;\n\t\tpath: string;\n\t\tquery?: Record<string, string>;\n\t\tbody?: unknown;\n\t}): InProcessRequestContext {\n\t\tconst noopLogger = {\n\t\t\tdebug: () => {},\n\t\t\tinfo: () => {},\n\t\t\twarn: () => {},\n\t\t\terror: () => {},\n\t\t};\n\n\t\treturn {\n\t\t\tmethod: options.method,\n\t\t\tpath: options.path,\n\t\t\tquery: options.query || {},\n\t\t\theaders: this.getHeaders(),\n\t\t\tbody: options.body,\n\t\t\tclientId: this.clientId,\n\t\t\tclientToken: this.clientToken,\n\t\t\tlogger: noopLogger,\n\t\t\tstatus: 200,\n\t\t\tresponseBody: null,\n\t\t\tthrow: (status: number, message: string) => {\n\t\t\t\tconst error = new Error(message);\n\t\t\t\t(error as Error & { status: number }).status = status;\n\t\t\t\tthrow error;\n\t\t\t},\n\t\t\tassert: (condition: boolean, message: string) => {\n\t\t\t\tif (!condition) {\n\t\t\t\t\tthrow new Error(message);\n\t\t\t\t}\n\t\t\t},\n\t\t\tset: () => {},\n\t\t};\n\t}\n}\n","import type { SearchOptions, SearchResult, ExploreResult } from '@mondaydotcomorg/atp-protocol';\nimport type { RuntimeAPIName } from '@mondaydotcomorg/atp-runtime';\nimport type { ISession } from './session.js';\nimport type { InProcessSession } from './in-process-session.js';\n\nexport class APIOperations {\n\tprivate session: ISession;\n\tprivate inProcessSession?: InProcessSession;\n\tprivate apiDefinitions?: string;\n\n\tconstructor(session: ISession, inProcessSession?: InProcessSession) {\n\t\tthis.session = session;\n\t\tthis.inProcessSession = inProcessSession;\n\t}\n\n\t/**\n\t * Connects to the server and retrieves API definitions.\n\t */\n\tasync connect(options?: { apiGroups?: string[] }): Promise<{\n\t\tserverVersion: string;\n\t\tcapabilities: unknown;\n\t\tapiGroups: string[];\n\t}> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tif (this.inProcessSession) {\n\t\t\tconst data = await this.inProcessSession.getDefinitions(options);\n\t\t\tthis.apiDefinitions = data.typescript;\n\t\t\treturn {\n\t\t\t\tserverVersion: data.version,\n\t\t\t\tcapabilities: {},\n\t\t\t\tapiGroups: data.apiGroups,\n\t\t\t};\n\t\t}\n\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.apiGroups) {\n\t\t\tparams.set('apiGroups', options.apiGroups.join(','));\n\t\t}\n\n\t\tconst url = `${this.session.getBaseUrl()}/api/definitions?${params}`;\n\t\tconst headers = await this.session.prepareHeaders('GET', url);\n\n\t\tconst response = await fetch(url, { headers });\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Connection failed: ${response.status} ${response.statusText}`);\n\t\t}\n\n\t\tconst data = (await response.json()) as {\n\t\t\ttypescript: string;\n\t\t\tversion: string;\n\t\t\tapiGroups: string[];\n\t\t};\n\t\tthis.apiDefinitions = data.typescript;\n\n\t\treturn {\n\t\t\tserverVersion: data.version,\n\t\t\tcapabilities: {},\n\t\t\tapiGroups: data.apiGroups,\n\t\t};\n\t}\n\n\t/**\n\t * Gets the TypeScript type definitions for available APIs.\n\t */\n\tgetTypeDefinitions(): string {\n\t\tif (!this.apiDefinitions) {\n\t\t\tthrow new Error('Not connected. Call connect() first.');\n\t\t}\n\t\treturn this.apiDefinitions;\n\t}\n\n\t/**\n\t * Searches for available API functions.\n\t */\n\tasync searchAPI(query: string, options?: SearchOptions): Promise<SearchResult[]> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tif (this.inProcessSession) {\n\t\t\tconst data = await this.inProcessSession.search(\n\t\t\t\tquery,\n\t\t\t\toptions as unknown as Record<string, unknown>\n\t\t\t);\n\t\t\treturn data.results as SearchResult[];\n\t\t}\n\n\t\tconst url = `${this.session.getBaseUrl()}/api/search`;\n\t\tconst body = JSON.stringify({ query, ...options });\n\t\tconst headers = await this.session.prepareHeaders('POST', url, body);\n\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders,\n\t\t\tbody,\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Search failed: ${response.status} ${response.statusText}`);\n\t\t}\n\n\t\tconst data = (await response.json()) as { results: SearchResult[] };\n\t\treturn data.results;\n\t}\n\n\t/**\n\t * Explores the API filesystem at the given path.\n\t */\n\tasync exploreAPI(path: string): Promise<ExploreResult> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tif (this.inProcessSession) {\n\t\t\treturn (await this.inProcessSession.explore(path)) as ExploreResult;\n\t\t}\n\n\t\tconst url = `${this.session.getBaseUrl()}/api/explore`;\n\t\tconst body = JSON.stringify({ path });\n\t\tconst headers = await this.session.prepareHeaders('POST', url, body);\n\n\t\tconst response = await fetch(url, {\n\t\t\tmethod: 'POST',\n\t\t\theaders,\n\t\t\tbody,\n\t\t});\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Explore failed: ${response.status} ${response.statusText}`);\n\t\t}\n\n\t\treturn (await response.json()) as ExploreResult;\n\t}\n\n\t/**\n\t * Gets information about the server.\n\t */\n\tasync getServerInfo(): Promise<{\n\t\tversion: string;\n\t\tcapabilities: Record<string, boolean>;\n\t}> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tif (this.inProcessSession) {\n\t\t\treturn await this.inProcessSession.getServerInfo();\n\t\t}\n\n\t\tconst url = `${this.session.getBaseUrl()}/api/info`;\n\t\tconst headers = await this.session.prepareHeaders('GET', url);\n\n\t\tconst response = await fetch(url, { headers });\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to get server info: ${response.status}`);\n\t\t}\n\n\t\treturn (await response.json()) as {\n\t\t\tversion: string;\n\t\t\tcapabilities: Record<string, boolean>;\n\t\t};\n\t}\n\n\t/**\n\t * Gets ATP runtime API definitions as TypeScript declarations.\n\t * Returns the full TypeScript definitions for atp.llm.*, atp.cache.*, etc.\n\t * These are the APIs available during code execution.\n\t *\n\t * Behavior:\n\t * - No options: Returns APIs based on client capabilities (default filtering)\n\t * - apis: ['llm', 'cache']: Returns only specified APIs (intersection with client capabilities)\n\t * - apis: []: Returns all APIs regardless of client capabilities\n\t *\n\t * @param options - Optional filtering options\n\t * @param options.apis - Specific APIs to include (e.g., ['llm', 'cache', 'approval'])\n\t */\n\tasync getRuntimeDefinitions(options?: { apis?: RuntimeAPIName[] }): Promise<string> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tif (this.inProcessSession) {\n\t\t\treturn await this.inProcessSession.getRuntimeDefinitions(\n\t\t\t\toptions?.apis ? { apis: options.apis } : undefined\n\t\t\t);\n\t\t}\n\n\t\tconst params = new URLSearchParams();\n\t\tif (options?.apis && options.apis.length > 0) {\n\t\t\tparams.set('apis', options.apis.join(','));\n\t\t}\n\n\t\tconst url = `${this.session.getBaseUrl()}/api/runtime${params.toString() ? `?${params}` : ''}`;\n\t\tconst headers = await this.session.prepareHeaders('GET', url);\n\n\t\tconst response = await fetch(url, { headers });\n\n\t\tif (!response.ok) {\n\t\t\tthrow new Error(`Failed to get runtime definitions: ${response.status}`);\n\t\t}\n\n\t\treturn await response.text();\n\t}\n}\n","/**\n * Base error class for exceptions thrown by client callbacks that should\n * be propagated through the execution flow rather than being caught and\n * converted to error results.\n *\n * Use this when client-side service providers need to interrupt normal\n * execution flow (e.g., for human-in-the-loop workflows, custom control flow).\n *\n * @example\n * ```typescript\n * class CustomInterruptException extends ClientCallbackError {\n * constructor(message: string, public data: any) {\n * super(message);\n * this.name = 'CustomInterruptException';\n * }\n * }\n * ```\n */\nexport class ClientCallbackError extends Error {\n\tconstructor(message: string) {\n\t\tsuper(message);\n\t\tthis.name = 'ClientCallbackError';\n\t}\n}\n","/**\n * Provenance Token Registry for Client\n *\n * Stores and manages provenance tokens for multi-step tracking\n */\n\nexport interface TokenEntry {\n\ttoken: string;\n\taddedAt: number;\n\tsequence: number;\n}\n\nexport class ProvenanceTokenRegistry {\n\tprivate cache: Map<string, TokenEntry> = new Map();\n\tprivate maxSize: number;\n\tprivate ttl: number;\n\tprivate sequenceCounter: number = 0;\n\n\tconstructor(maxSize: number = 10000, ttlHours: number = 1) {\n\t\tthis.maxSize = maxSize;\n\t\tthis.ttl = ttlHours * 3600 * 1000;\n\t}\n\n\t/**\n\t * Add a token to the registry\n\t */\n\tadd(token: string): void {\n\t\t// Evict expired tokens first\n\t\tthis.evictExpired();\n\n\t\t// Check if at capacity and evict LRU if needed\n\t\tif (this.cache.size >= this.maxSize) {\n\t\t\tthis.evictLRU();\n\t\t}\n\n\t\t// Store token with sequence number for stable ordering\n\t\tthis.cache.set(token, {\n\t\t\ttoken,\n\t\t\taddedAt: Date.now(),\n\t\t\tsequence: this.sequenceCounter++,\n\t\t});\n\t}\n\n\t/**\n\t * Get recent tokens (non-expired, sorted by age, limited)\n\t * Returns tokens in chronological order (oldest first, most recent last)\n\t */\n\tgetRecentTokens(maxCount: number = 1000): string[] {\n\t\tif (maxCount <= 0) {\n\t\t\treturn [];\n\t\t}\n\n\t\tthis.evictExpired();\n\n\t\tconst now = Date.now();\n\t\tconst expiredTokens: string[] = [];\n\n\t\tconst entries = Array.from(this.cache.values())\n\t\t\t.filter((entry) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst [body] = entry.token.split('.');\n\t\t\t\t\tif (!body) {\n\t\t\t\t\t\texpiredTokens.push(entry.token);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tconst payload = JSON.parse(Buffer.from(body, 'base64url').toString());\n\t\t\t\t\tif (!payload.expiresAt || payload.expiresAt <= now) {\n\t\t\t\t\t\texpiredTokens.push(entry.token);\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t} catch {\n\t\t\t\t\texpiredTokens.push(entry.token);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t})\n\t\t\t.sort((a, b) => a.sequence - b.sequence)\n\t\t\t.slice(-maxCount);\n\n\t\tfor (const token of expiredTokens) {\n\t\t\tthis.cache.delete(token);\n\t\t}\n\n\t\treturn entries.map((e) => e.token);\n\t}\n\n\t/**\n\t * Clear all tokens\n\t */\n\tclear(): void {\n\t\tthis.cache.clear();\n\t}\n\n\t/**\n\t * Get registry size\n\t */\n\tsize(): number {\n\t\treturn this.cache.size;\n\t}\n\n\t/**\n\t * Evict expired tokens\n\t */\n\tprivate evictExpired(): void {\n\t\tconst now = Date.now();\n\t\tconst toDelete: string[] = [];\n\n\t\tfor (const [token, entry] of this.cache.entries()) {\n\t\t\tif (now - entry.addedAt > this.ttl) {\n\t\t\t\ttoDelete.push(token);\n\t\t\t}\n\t\t}\n\n\t\tfor (const token of toDelete) {\n\t\t\tthis.cache.delete(token);\n\t\t}\n\t}\n\n\t/**\n\t * Evict least recently used (oldest) token\n\t */\n\tprivate evictLRU(): void {\n\t\tlet oldestToken: string | null = null;\n\t\tlet oldestSequence = Infinity;\n\n\t\tfor (const [token, entry] of this.cache.entries()) {\n\t\t\tif (entry.sequence < oldestSequence) {\n\t\t\t\toldestSequence = entry.sequence;\n\t\t\t\toldestToken = token;\n\t\t\t}\n\t\t}\n\n\t\tif (oldestToken) {\n\t\t\tthis.cache.delete(oldestToken);\n\t\t}\n\t}\n}\n","import type { ExecutionResult, ExecutionConfig } from '@mondaydotcomorg/atp-protocol';\nimport { ExecutionStatus, CallbackType } from '@mondaydotcomorg/atp-protocol';\nimport { log } from '@mondaydotcomorg/atp-runtime';\nimport type { ISession } from './session.js';\nimport type { InProcessSession } from './in-process-session.js';\nimport type { ServiceProviders } from './service-providers';\nimport { ClientCallbackError } from '../errors.js';\nimport { ProvenanceTokenRegistry } from './provenance-registry.js';\n\nexport class ExecutionOperations {\n\tprivate session: ISession;\n\tprivate inProcessSession?: InProcessSession;\n\tprivate serviceProviders: ServiceProviders;\n\tprivate tokenRegistry: ProvenanceTokenRegistry;\n\tprivate lastExecutionConfig: Partial<ExecutionConfig> | null = null;\n\n\tconstructor(\n\t\tsession: ISession,\n\t\tserviceProviders: ServiceProviders,\n\t\tinProcessSession?: InProcessSession\n\t) {\n\t\tthis.session = session;\n\t\tthis.inProcessSession = inProcessSession;\n\t\tthis.serviceProviders = serviceProviders;\n\t\tthis.tokenRegistry = new ProvenanceTokenRegistry();\n\t}\n\n\t/**\n\t * Executes code on the server with real-time progress updates via SSE.\n\t */\n\tasync executeStream(\n\t\tcode: string,\n\t\tconfig?: Partial<ExecutionConfig>,\n\t\tonProgress?: (message: string, fraction: number) => void\n\t): Promise<ExecutionResult> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tconst url = `${this.session.getBaseUrl()}/api/execute/stream`;\n\t\tconst body = JSON.stringify({ code, config });\n\t\tconst headers = await this.session.prepareHeaders('POST', url, body);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst fetchImpl = typeof fetch !== 'undefined' ? fetch : require('undici').fetch;\n\n\t\t\tfetchImpl(url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders,\n\t\t\t\tbody,\n\t\t\t})\n\t\t\t\t.then(async (response: Response) => {\n\t\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\tthrow new Error(`HTTP ${response.status}: ${response.statusText}`);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst reader = response.body?.getReader();\n\t\t\t\t\tif (!reader) {\n\t\t\t\t\t\tthrow new Error('Response body is not readable');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst decoder = new TextDecoder();\n\t\t\t\t\tlet buffer = '';\n\t\t\t\t\tlet result: ExecutionResult | null = null;\n\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tconst { done, value } = await reader.read();\n\n\t\t\t\t\t\tif (done) break;\n\n\t\t\t\t\t\tbuffer += decoder.decode(value, { stream: true });\n\t\t\t\t\t\tconst lines = buffer.split('\\n');\n\t\t\t\t\t\tbuffer = lines.pop() || '';\n\n\t\t\t\t\t\tfor (let i = 0; i < lines.length; i++) {\n\t\t\t\t\t\t\tconst line = lines[i];\n\n\t\t\t\t\t\t\tif (line && line.startsWith('event:')) {\n\t\t\t\t\t\t\t\tconst event = line.substring(6).trim();\n\n\t\t\t\t\t\t\t\tfor (let j = i + 1; j < lines.length; j++) {\n\t\t\t\t\t\t\t\t\tconst dataLine = lines[j];\n\t\t\t\t\t\t\t\t\tif (dataLine && dataLine.startsWith('data:')) {\n\t\t\t\t\t\t\t\t\t\tconst dataStr = dataLine.substring(5).trim();\n\t\t\t\t\t\t\t\t\t\tif (dataStr) {\n\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tconst data = JSON.parse(dataStr);\n\n\t\t\t\t\t\t\t\t\t\t\t\tif (event === 'progress' && onProgress) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tonProgress(data.message, data.fraction);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (event === 'result') {\n\t\t\t\t\t\t\t\t\t\t\t\t\tresult = data as ExecutionResult;\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (event === 'error') {\n\t\t\t\t\t\t\t\t\t\t\t\t\treject(new Error(data.message));\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\tlog.error('Failed to parse SSE data', { dataStr, error: e });\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\treject(new Error('No result received from server'));\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.catch(reject);\n\t\t});\n\t}\n\n\t/**\n\t * Executes code on the server in a sandboxed environment.\n\t */\n\tasync execute(code: string, config?: Partial<ExecutionConfig>): Promise<ExecutionResult> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tconst hints = this.tokenRegistry.getRecentTokens(1000);\n\n\t\tconst detectedClientServices = {\n\t\t\thasLLM: !!this.serviceProviders.getLLM(),\n\t\t\thasApproval: !!this.serviceProviders.getApproval(),\n\t\t\thasEmbedding: !!this.serviceProviders.getEmbedding(),\n\t\t\thasTools: this.serviceProviders.hasTools(),\n\t\t};\n\n\t\tconst executionConfig = {\n\t\t\t...config,\n\t\t\tclientServices: {\n\t\t\t\t...detectedClientServices,\n\t\t\t\t...(config?.clientServices || {}),\n\t\t\t},\n\t\t\tprovenanceHints: hints.length > 0 ? hints : undefined,\n\t\t};\n\n\t\tthis.lastExecutionConfig = executionConfig;\n\n\t\tlet result: ExecutionResult;\n\n\t\tif (this.inProcessSession) {\n\t\t\tresult = (await this.inProcessSession.execute(code, executionConfig)) as ExecutionResult;\n\t\t} else {\n\t\t\tconst url = `${this.session.getBaseUrl()}/api/execute`;\n\t\t\tconst body = JSON.stringify({ code, config: executionConfig });\n\t\t\tconst headers = await this.session.prepareHeaders('POST', url, body);\n\n\t\t\tconst response = await fetch(url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders,\n\t\t\t\tbody,\n\t\t\t});\n\n\t\t\tthis.session.updateToken(response);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst error = (await response.json()) as { error: string };\n\t\t\t\tthrow new Error(`Execution failed: ${error.error || response.statusText}`);\n\t\t\t}\n\n\t\t\tresult = (await response.json()) as ExecutionResult;\n\t\t}\n\n\t\tif (result.provenanceTokens && result.provenanceTokens.length > 0) {\n\t\t\tfor (const { token } of result.provenanceTokens) {\n\t\t\t\tthis.tokenRegistry.add(token);\n\t\t\t}\n\t\t}\n\n\t\tif (result.status === ExecutionStatus.PAUSED && result.needsCallbacks) {\n\t\t\treturn await this.handleBatchCallbacksAndResume(result);\n\t\t}\n\n\t\tif (result.status === ExecutionStatus.PAUSED && result.needsCallback) {\n\t\t\treturn await this.handlePauseAndResume(result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Handles batch callbacks by executing them in parallel and resuming.\n\t */\n\tprivate async handleBatchCallbacksAndResume(\n\t\tpausedResult: ExecutionResult\n\t): Promise<ExecutionResult> {\n\t\tif (!pausedResult.needsCallbacks || pausedResult.needsCallbacks.length === 0) {\n\t\t\tthrow new Error('No batch callback requests in paused execution');\n\t\t}\n\n\t\tconst missingServiceIds = new Set(\n\t\t\tpausedResult.needsCallbacks\n\t\t\t\t.filter((cb) => !this.serviceProviders.hasServiceForCallback(cb.type))\n\t\t\t\t.map((cb) => cb.id)\n\t\t);\n\n\t\tif (missingServiceIds.size > 0) {\n\t\t\tconst missingServices = pausedResult.needsCallbacks.filter((cb) =>\n\t\t\t\tmissingServiceIds.has(cb.id)\n\t\t\t);\n\t\t\tconst explicitlyRequestedMissing = missingServices.filter((cb) =>\n\t\t\t\tthis.wasServiceExplicitlyRequested(cb.type)\n\t\t\t);\n\t\t\tconst unexpectedMissing = missingServices.filter(\n\t\t\t\t(cb) => !this.wasServiceExplicitlyRequested(cb.type)\n\t\t\t);\n\n\t\t\tif (explicitlyRequestedMissing.length > 0) {\n\t\t\t\treturn pausedResult;\n\t\t\t}\n\n\t\t\tconst errorMessage = `Missing service providers for callback types: ${unexpectedMissing.map((cb) => cb.type).join(', ')}`;\n\t\t\tlog.error(`Auto-handling batch paused execution without service providers: ${errorMessage}`, {\n\t\t\t\texecutionId: pausedResult.executionId,\n\t\t\t\tmissingServices: unexpectedMissing.map((cb) => ({\n\t\t\t\t\ttype: cb.type,\n\t\t\t\t\toperation: cb.operation,\n\t\t\t\t\tid: cb.id,\n\t\t\t\t})),\n\t\t\t});\n\n\t\t\tconst existingCallbacks = pausedResult.needsCallbacks.filter(\n\t\t\t\t(cb) => !missingServiceIds.has(cb.id)\n\t\t\t);\n\n\t\t\tif (existingCallbacks.length > 0) {\n\t\t\t\ttry {\n\t\t\t\t\tconst existingResults = await Promise.all(\n\t\t\t\t\t\texistingCallbacks.map(async (cb) => {\n\t\t\t\t\t\t\tconst callbackResult = await this.serviceProviders.handleCallback(cb.type, {\n\t\t\t\t\t\t\t\t...cb.payload,\n\t\t\t\t\t\t\t\toperation: cb.operation,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\treturn { id: cb.id, result: callbackResult };\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\t\tconst allResults = pausedResult.needsCallbacks.map((cb) => {\n\t\t\t\t\t\tif (missingServiceIds.has(cb.id)) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tid: cb.id,\n\t\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\t\t__error: true,\n\t\t\t\t\t\t\t\t\tmessage: `${cb.type} service not provided by client`,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn existingResults.find((r) => r.id === cb.id)!;\n\t\t\t\t\t});\n\n\t\t\t\t\treturn await this.resumeWithBatchResults(pausedResult.executionId, allResults);\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error);\n\t\t\t\t\tlog.error(`Error handling existing services in batch: ${errorMessage}`, {\n\t\t\t\t\t\texecutionId: pausedResult.executionId,\n\t\t\t\t\t});\n\t\t\t\t\tconst allErrorResults = pausedResult.needsCallbacks.map((cb) => ({\n\t\t\t\t\t\tid: cb.id,\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t__error: true,\n\t\t\t\t\t\t\tmessage: missingServiceIds.has(cb.id)\n\t\t\t\t\t\t\t\t? `${cb.type} service not provided by client`\n\t\t\t\t\t\t\t\t: errorMessage,\n\t\t\t\t\t\t},\n\t\t\t\t\t}));\n\t\t\t\t\treturn await this.resumeWithBatchResults(pausedResult.executionId, allErrorResults);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst allErrorResults = pausedResult.needsCallbacks.map((cb) => ({\n\t\t\t\t\tid: cb.id,\n\t\t\t\t\tresult: {\n\t\t\t\t\t\t__error: true,\n\t\t\t\t\t\tmessage: `${cb.type} service not provided by client`,\n\t\t\t\t\t},\n\t\t\t\t}));\n\t\t\t\treturn await this.resumeWithBatchResults(pausedResult.executionId, allErrorResults);\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst batchResults = await Promise.all(\n\t\t\t\tpausedResult.needsCallbacks.map(async (cb) => {\n\t\t\t\t\tconst callbackResult = await this.serviceProviders.handleCallback(cb.type, {\n\t\t\t\t\t\t...cb.payload,\n\t\t\t\t\t\toperation: cb.operation,\n\t\t\t\t\t});\n\t\t\t\t\treturn { id: cb.id, result: callbackResult };\n\t\t\t\t})\n\t\t\t);\n\n\t\t\treturn await this.resumeWithBatchResults(pausedResult.executionId, batchResults);\n\t\t} catch (error) {\n\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error);\n\t\t\tlog.error(`Error handling batch callbacks: ${errorMessage}`, {\n\t\t\t\texecutionId: pausedResult.executionId,\n\t\t\t\tcallbackCount: pausedResult.needsCallbacks.length,\n\t\t\t});\n\n\t\t\tconst allErrorResults = pausedResult.needsCallbacks.map((cb) => ({\n\t\t\t\tid: cb.id,\n\t\t\t\tresult: {\n\t\t\t\t\t__error: true,\n\t\t\t\t\tmessage: errorMessage,\n\t\t\t\t},\n\t\t\t}));\n\t\t\treturn await this.resumeWithBatchResults(pausedResult.executionId, allErrorResults);\n\t\t}\n\t}\n\n\t/**\n\t * Handles a paused execution by processing the callback and resuming.\n\t */\n\tprivate async handlePauseAndResume(pausedResult: ExecutionResult): Promise<ExecutionResult> {\n\t\tif (!pausedResult.needsCallback) {\n\t\t\tthrow new Error('No callback request in paused execution');\n\t\t}\n\n\t\tif (!this.serviceProviders.hasServiceForCallback(pausedResult.needsCallback.type)) {\n\t\t\tconst wasExplicitlyRequested = this.wasServiceExplicitlyRequested(\n\t\t\t\tpausedResult.needsCallback.type\n\t\t\t);\n\n\t\t\tif (wasExplicitlyRequested) {\n\t\t\t\treturn pausedResult;\n\t\t\t}\n\n\t\t\tconst errorMessage = `${pausedResult.needsCallback.type} service not provided by client`;\n\t\t\tlog.error(`Auto-handling paused execution without service provider: ${errorMessage}`, {\n\t\t\t\texecutionId: pausedResult.executionId,\n\t\t\t\tcallbackType: pausedResult.needsCallback.type,\n\t\t\t\toperation: pausedResult.needsCallback.operation,\n\t\t\t});\n\n\t\t\treturn await this.resume(pausedResult.executionId, {\n\t\t\t\t__error: true,\n\t\t\t\tmessage: errorMessage,\n\t\t\t});\n\t\t}\n\n\t\ttry {\n\t\t\tconst callbackResult = await this.serviceProviders.handleCallback(\n\t\t\t\tpausedResult.needsCallback.type,\n\t\t\t\t{\n\t\t\t\t\t...pausedResult.needsCallback.payload,\n\t\t\t\t\toperation: pausedResult.needsCallback.operation,\n\t\t\t\t\texecutionId: pausedResult.executionId,\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn await this.resume(pausedResult.executionId, callbackResult);\n\t\t} catch (error) {\n\t\t\tif (error instanceof ClientCallbackError) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\tconst errorMessage = error instanceof Error ? error.message : String(error);\n\t\t\tlog.error(`Error handling callback: ${errorMessage}`, {\n\t\t\t\texecutionId: pausedResult.executionId,\n\t\t\t\tcallbackType: pausedResult.needsCallback.type,\n\t\t\t\toperation: pausedResult.needsCallback.operation,\n\t\t\t});\n\t\t\treturn await this.resume(pausedResult.executionId, {\n\t\t\t\t__error: true,\n\t\t\t\tmessage: errorMessage,\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Check if a service was explicitly requested in clientServices config\n\t */\n\tprivate wasServiceExplicitlyRequested(callbackType: CallbackType): boolean {\n\t\tif (!this.lastExecutionConfig?.clientServices) {\n\t\t\treturn false;\n\t\t}\n\n\t\tswitch (callbackType) {\n\t\t\tcase CallbackType.LLM:\n\t\t\t\treturn this.lastExecutionConfig.clientServices.hasLLM;\n\t\t\tcase CallbackType.APPROVAL:\n\t\t\t\treturn this.lastExecutionConfig.clientServices.hasApproval;\n\t\t\tcase CallbackType.EMBEDDING:\n\t\t\t\treturn this.lastExecutionConfig.clientServices.hasEmbedding;\n\t\t\tcase CallbackType.TOOL:\n\t\t\t\treturn this.lastExecutionConfig.clientServices.hasTools;\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\t/**\n\t * Resumes a paused execution with a callback result.\n\t */\n\tasync resume(executionId: string, callbackResult: unknown): Promise<ExecutionResult> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tlet result: ExecutionResult;\n\n\t\tif (this.inProcessSession) {\n\t\t\tresult = (await this.inProcessSession.resume(executionId, callbackResult)) as ExecutionResult;\n\t\t} else {\n\t\t\tconst url = `${this.session.getBaseUrl()}/api/resume/${executionId}`;\n\t\t\tconst body = JSON.stringify({ result: callbackResult });\n\t\t\tconst headers = await this.session.prepareHeaders('POST', url, body);\n\n\t\t\tconst response = await fetch(url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders,\n\t\t\t\tbody,\n\t\t\t});\n\n\t\t\tthis.session.updateToken(response);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst error = (await response.json()) as { error: string };\n\t\t\t\tthrow new Error(`Resume failed: ${error.error || response.statusText}`);\n\t\t\t}\n\n\t\t\tresult = (await response.json()) as ExecutionResult;\n\t\t}\n\n\t\tif (result.provenanceTokens && result.provenanceTokens.length > 0) {\n\t\t\tfor (const { token } of result.provenanceTokens) {\n\t\t\t\tthis.tokenRegistry.add(token);\n\t\t\t}\n\t\t}\n\n\t\tif (result.status === ExecutionStatus.PAUSED && result.needsCallbacks) {\n\t\t\treturn await this.handleBatchCallbacksAndResume(result);\n\t\t}\n\n\t\tif (result.status === ExecutionStatus.PAUSED && result.needsCallback) {\n\t\t\treturn await this.handlePauseAndResume(result);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Resumes a paused execution with batch callback results.\n\t */\n\tprivate async resumeWithBatchResults(\n\t\texecutionId: string,\n\t\tbatchResults: Array<{ id: string; result: unknown }>\n\t): Promise<ExecutionResult> {\n\t\tawait this.session.ensureInitialized();\n\n\t\tlet result: ExecutionResult;\n\n\t\tif (this.inProcessSession) {\n\t\t\tresult = (await this.inProcessSession.resumeWithBatchResults(\n\t\t\t\texecutionId,\n\t\t\t\tbatchResults\n\t\t\t)) as ExecutionResult;\n\t\t} else {\n\t\t\tconst url = `${this.session.getBaseUrl()}/api/resume/${executionId}`;\n\t\t\tconst body = JSON.stringify({ results: batchResults });\n\t\t\tconst headers = await this.session.prepareHeaders('POST', url, body);\n\n\t\t\tconst response = await fetch(url, {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders,\n\t\t\t\tbody,\n\t\t\t});\n\n\t\t\tthis.session.updateToken(response);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst error = (await response.json()) as { error: string };\n\t\t\t\tthrow new Error(`Batch resume failed: ${error.error || response.statusText}`);\n\t\t\t}\n\n\t\t\tresult = (await response.json()) as ExecutionResult;\n\t\t}\n\n\t\tif (result.provenanceTokens && result.provenanceTokens.length > 0) {\n\t\t\tfor (const { token } of result.provenanceTokens) {\n\t\t\t\tthis.tokenRegistry.add(token);\n\t\t\t}\n\t\t}\n\n\t\tif (result.status === ExecutionStatus.PAUSED && result.needsCallbacks) {\n\t\t\treturn await this.handleBatchCallbacksAndResume(result);\n\t\t}\n\n\t\tif (result.status === ExecutionStatus.PAUSED && result.needsCallback) {\n\t\t\treturn await this.handlePauseAndResume(result);\n\t\t}\n\n\t\treturn result;\n\t}\n}\n","import { CallbackType, ToolOperation } from '@mondaydotcomorg/atp-protocol';\nimport type {\n\tClientLLMHandler,\n\tClientApprovalHandler,\n\tClientEmbeddingHandler,\n\tClientServiceProviders,\n\tClientTool,\n\tClientToolDefinition,\n\tClientToolHandler,\n} from '@mondaydotcomorg/atp-protocol';\n\nconst LLMOperation = {\n\tCALL: 'call',\n\tEXTRACT: 'extract',\n\tCLASSIFY: 'classify',\n} as const;\n\nconst EmbeddingOperation = {\n\tEMBED: 'embed',\n\tSEARCH: 'search',\n} as const;\n\nexport class ServiceProviders {\n\tprivate providers: ClientServiceProviders = {};\n\tprivate toolHandlers: Map<string, ClientToolHandler> = new Map();\n\n\tconstructor(providers?: ClientServiceProviders) {\n\t\tthis.providers = providers || {};\n\n\t\tif (providers?.tools) {\n\t\t\tfor (const tool of providers.tools) {\n\t\t\t\tthis.toolHandlers.set(tool.name, tool.handler);\n\t\t\t}\n\t\t}\n\t}\n\n\tprovideLLM(handler: ClientLLMHandler): void {\n\t\tthis.providers.llm = handler;\n\t}\n\n\tprovideApproval(handler: ClientApprovalHandler): void {\n\t\tthis.providers.approval = handler;\n\t}\n\n\tprovideEmbedding(handler: ClientEmbeddingHandler): void {\n\t\tthis.providers.embedding = handler;\n\t}\n\n\tprovideTools(tools: ClientTool[]): void {\n\t\tthis.providers.tools = tools;\n\t\tfor (const tool of tools) {\n\t\t\tthis.toolHandlers.set(tool.name, tool.handler);\n\t\t}\n\t}\n\n\tgetLLM(): ClientLLMHandler | undefined {\n\t\treturn this.providers.llm;\n\t}\n\n\tgetApproval(): ClientApprovalHandler | undefined {\n\t\treturn this.providers.approval;\n\t}\n\n\tgetEmbedding(): ClientEmbeddingHandler | undefined {\n\t\treturn this.providers.embedding;\n\t}\n\n\tgetTools(): ClientTool[] | undefined {\n\t\treturn this.providers.tools;\n\t}\n\n\t/**\n\t * Get tool definitions (without handlers) for sending to server\n\t */\n\tgetToolDefinitions(): ClientToolDefinition[] {\n\t\tif (!this.providers.tools) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn this.providers.tools.map((tool) => {\n\t\t\tconst { handler, ...definition } = tool;\n\t\t\treturn definition;\n\t\t});\n\t}\n\n\t/**\n\t * Check if client has tools\n\t */\n\thasTools(): boolean {\n\t\treturn !!(this.providers.tools && this.providers.tools.length > 0);\n\t}\n\n\t/**\n\t * Check if client has any services or tools\n\t */\n\thasAnyServices(): boolean {\n\t\treturn !!(\n\t\t\tthis.providers.llm ||\n\t\t\tthis.providers.approval ||\n\t\t\tthis.providers.embedding ||\n\t\t\tthis.hasTools()\n\t\t);\n\t}\n\n\t/**\n\t * Check if client has a service for a specific callback type\n\t */\n\thasServiceForCallback(callbackType: CallbackType): boolean {\n\t\tswitch (callbackType) {\n\t\t\tcase CallbackType.LLM:\n\t\t\t\treturn !!this.providers.llm;\n\t\t\tcase CallbackType.APPROVAL:\n\t\t\t\treturn !!this.providers.approval;\n\t\t\tcase CallbackType.EMBEDDING:\n\t\t\t\treturn !!this.providers.embedding;\n\t\t\tcase CallbackType.TOOL:\n\t\t\t\treturn this.hasTools();\n\t\t\tdefault:\n\t\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync handleCallback(callbackType: CallbackType, payload: any): Promise<any> {\n\t\tif (payload.operation === 'batch_parallel' && payload.calls) {\n\t\t\treturn await Promise.all(\n\t\t\t\tpayload.calls.map(async (call: any) => {\n\t\t\t\t\treturn await this.handleCallback(call.type, {\n\t\t\t\t\t\t...call.payload,\n\t\t\t\t\t\toperation: call.operation,\n\t\t\t\t\t});\n\t\t\t\t})\n\t\t\t);\n\t\t}\n\n\t\tswitch (callbackType) {\n\t\t\tcase CallbackType.LLM:\n\t\t\t\tif (!this.providers.llm) {\n\t\t\t\t\tthrow new Error('LLM service not provided by client');\n\t\t\t\t}\n\t\t\t\tif (payload.operation === LLMOperation.CALL) {\n\t\t\t\t\treturn await this.providers.llm.call(payload.prompt, payload.options);\n\t\t\t\t} else if (payload.operation === LLMOperation.EXTRACT && this.providers.llm.extract) {\n\t\t\t\t\treturn await this.providers.llm.extract(payload.prompt, payload.schema, payload.options);\n\t\t\t\t} else if (payload.operation === LLMOperation.CLASSIFY && this.providers.llm.classify) {\n\t\t\t\t\treturn await this.providers.llm.classify(\n\t\t\t\t\t\tpayload.text,\n\t\t\t\t\t\tpayload.categories,\n\t\t\t\t\t\tpayload.options\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Unsupported LLM operation: ${payload.operation}`);\n\n\t\t\tcase CallbackType.APPROVAL:\n\t\t\t\tif (!this.providers.approval) {\n\t\t\t\t\tthrow new Error('Approval service not provided by client');\n\t\t\t\t}\n\t\t\t\tconst contextWithExecutionId = payload.context\n\t\t\t\t\t? { ...payload.context, executionId: payload.executionId }\n\t\t\t\t\t: { executionId: payload.executionId };\n\t\t\t\treturn await this.providers.approval.request(payload.message, contextWithExecutionId);\n\n\t\t\tcase CallbackType.EMBEDDING:\n\t\t\t\tif (!this.providers.embedding) {\n\t\t\t\t\tthrow new Error('Embedding service not provided by client');\n\t\t\t\t}\n\t\t\t\tif (payload.operation === EmbeddingOperation.EMBED) {\n\t\t\t\t\treturn await this.providers.embedding.embed(payload.text);\n\t\t\t\t} else if (payload.operation === EmbeddingOperation.SEARCH) {\n\t\t\t\t\tconst queryEmbedding = await this.providers.embedding.embed(payload.query);\n\t\t\t\t\treturn queryEmbedding;\n\t\t\t\t} else if (payload.operation === 'similarity' && this.providers.embedding.similarity) {\n\t\t\t\t\treturn await this.providers.embedding.similarity(payload.text1, payload.text2);\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Unsupported embedding operation: ${payload.operation}`);\n\n\t\t\tcase CallbackType.TOOL:\n\t\t\t\tif (payload.operation === ToolOperation.CALL) {\n\t\t\t\t\tconst toolName = payload.toolName;\n\t\t\t\t\tconst handler = this.toolHandlers.get(toolName);\n\n\t\t\t\t\tif (!handler) {\n\t\t\t\t\t\tthrow new Error(`Tool '${toolName}' not found in client tools`);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst result = await handler(payload.input);\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tthrow new Error(`Unsupported tool operation: ${payload.operation}`);\n\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown callback type: ${callbackType}`);\n\t\t}\n\t}\n}\n","export const ToolNames = {\n\tSEARCH_API: 'search_api',\n\tFETCH_ALL_APIS: 'fetch_all_apis',\n\tEXECUTE_CODE: 'execute_code',\n\tEXPLORE_API: 'explore_api',\n} as const;\n\nexport type ToolName = (typeof ToolNames)[keyof typeof ToolNames];\n\n/**\n * Tool definition following MCP (Model Context Protocol) convention\n * with added execution function\n */\nexport interface Tool<TInput = any> {\n\tname: string;\n\tdescription?: string;\n\tinputSchema: {\n\t\ttype: string;\n\t\tproperties?: Record<string, unknown>;\n\t\trequired?: string[];\n\t};\n\tzodSchema?: any;\n\tfunc: (input: TInput) => Promise<string>;\n}\n","import { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport type { AgentToolProtocolClient } from '../client.js';\nimport { ToolNames, type Tool } from './types.js';\n\nconst searchApiInputSchema = z.object({\n\tquery: z.string().describe('Search query string'),\n});\n\ntype SearchApiInput = z.infer<typeof searchApiInputSchema>;\n\nexport function createSearchApiTool(client: AgentToolProtocolClient): Tool<SearchApiInput> {\n\treturn {\n\t\tname: ToolNames.SEARCH_API,\n\t\tdescription:\n\t\t\t'Search for APIs by keyword. Provide search term as string like \"add\", \"math\", \"user\", etc.',\n\t\tinputSchema: zodToJsonSchema(searchApiInputSchema) as any,\n\t\tzodSchema: searchApiInputSchema,\n\t\tfunc: async (input: SearchApiInput) => {\n\t\t\ttry {\n\t\t\t\tconst results = await client.searchAPI(input.query);\n\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\tresults: results.map((r) => ({\n\t\t\t\t\t\t\tapiGroup: r.apiGroup,\n\t\t\t\t\t\t\tfunctionName: r.functionName,\n\t\t\t\t\t\t\tdescription: r.description,\n\t\t\t\t\t\t\tsignature: r.signature,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tcount: results.length,\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2\n\t\t\t\t);\n\t\t\t} catch (error: any) {\n\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t};\n}\n","import { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport type { AgentToolProtocolClient } from '../client.js';\nimport { ToolNames, type Tool } from './types.js';\n\nconst fetchAllApisInputSchema = z.object({\n\tapiGroups: z.array(z.string()).optional().describe('Optional: Specific API groups to include'),\n});\n\ntype FetchAllApisInput = z.infer<typeof fetchAllApisInputSchema>;\n\nexport function createFetchAllApisTool(client: AgentToolProtocolClient): Tool<FetchAllApisInput> {\n\treturn {\n\t\tname: ToolNames.FETCH_ALL_APIS,\n\t\tdescription:\n\t\t\t'Get TypeScript definitions of all available APIs. Returns code showing api.add, api.getTodo, etc.',\n\t\tinputSchema: zodToJsonSchema(fetchAllApisInputSchema) as any,\n\t\tzodSchema: fetchAllApisInputSchema,\n\t\tfunc: async (_input: FetchAllApisInput) => {\n\t\t\ttry {\n\t\t\t\tconst typescript = client.getTypeDefinitions();\n\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\ttypescript,\n\t\t\t\t\t\tmessage: 'Use this TypeScript to understand available api.* functions',\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2\n\t\t\t\t);\n\t\t\t} catch (error: any) {\n\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t};\n}\n","import { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport { ExecutionStatus } from '@mondaydotcomorg/atp-protocol';\nimport type { AgentToolProtocolClient } from '../client.js';\nimport { ToolNames, type Tool } from './types.js';\n\nconst executeCodeInputSchema = z.object({\n\tcode: z.string().describe('The JavaScript/TypeScript code to execute'),\n\ttimeout: z.number().optional().describe('Execution timeout in milliseconds (default: 30000)'),\n\tmaxMemory: z.number().optional().describe('Maximum memory in bytes (default: 128MB)'),\n});\n\ntype ExecuteCodeInput = z.infer<typeof executeCodeInputSchema>;\n\nexport function createExecuteCodeTool(client: AgentToolProtocolClient): Tool<ExecuteCodeInput> {\n\treturn {\n\t\tname: ToolNames.EXECUTE_CODE,\n\t\tdescription:\n\t\t\t\"Execute JavaScript/TypeScript code to call APIs. IMPORTANT: Code MUST use 'return' statement to see results. Examples: 'return api.groupName.functionName({})' or 'const result = api.group.func({}); return result'. Use bracket notation for dynamic names: api['groupName']['functionName']({}).\",\n\t\tinputSchema: zodToJsonSchema(executeCodeInputSchema) as any,\n\t\tzodSchema: executeCodeInputSchema,\n\t\tfunc: async (input: ExecuteCodeInput) => {\n\t\t\ttry {\n\t\t\t\tconst result = await client.execute(input.code, {\n\t\t\t\t\ttimeout: input.timeout,\n\t\t\t\t\tmaxMemory: input.maxMemory,\n\t\t\t\t});\n\n\t\t\t\tif (result.status === ExecutionStatus.COMPLETED) {\n\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\tresult: result.result,\n\t\t\t\t\t\t\tstats: {\n\t\t\t\t\t\t\t\tduration: result.stats.duration,\n\t\t\t\t\t\t\t\tmemoryUsed: result.stats.memoryUsed,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t);\n\t\t\t\t} else if (result.status === ExecutionStatus.FAILED) {\n\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: result.error?.message || 'Execution failed',\n\t\t\t\t\t\t\tstack: result.error?.stack,\n\t\t\t\t\t\t\tmessage: 'Code execution failed. Check syntax and fix errors.',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\t\terror: 'Execution timed out',\n\t\t\t\t\t\t\tmessage: 'Code took too long. Simplify or optimize.',\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t\tmessage: 'Failed to execute code',\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t};\n}\n","import { z } from 'zod';\nimport { zodToJsonSchema } from 'zod-to-json-schema';\nimport type { AgentToolProtocolClient } from '../client.js';\nimport { ToolNames, type Tool } from './types.js';\n\nconst exploreApiInputSchema = z.object({\n\tpath: z\n\t\t.string()\n\t\t.describe('Path to explore (e.g., \"/\", \"/openapi/github\", \"/mcp/filesystem/read_file\")'),\n});\n\ntype ExploreApiInput = z.infer<typeof exploreApiInputSchema>;\n\nexport function createExploreApiTool(client: AgentToolProtocolClient): Tool<ExploreApiInput> {\n\treturn {\n\t\tname: ToolNames.EXPLORE_API,\n\t\tdescription:\n\t\t\t'Explore APIs using filesystem-like navigation. Navigate through directories to discover available functions. Provide path as string like \"/\", \"/openapi\", \"/openapi/github\", or \"/openapi/github/repos/createRepo\" to see functions.',\n\t\tinputSchema: zodToJsonSchema(exploreApiInputSchema) as any,\n\t\tzodSchema: exploreApiInputSchema,\n\t\tfunc: async (input: ExploreApiInput) => {\n\t\t\ttry {\n\t\t\t\tconst result = await client.exploreAPI(input.path);\n\n\t\t\t\tif (result.type === 'directory') {\n\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\ttype: 'directory',\n\t\t\t\t\t\t\tpath: result.path,\n\t\t\t\t\t\t\titems: result.items,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: true,\n\t\t\t\t\t\t\ttype: 'function',\n\t\t\t\t\t\t\tname: result.name,\n\t\t\t\t\t\t\tdescription: result.description,\n\t\t\t\t\t\t\tdefinition: result.definition,\n\t\t\t\t\t\t\tgroup: result.group,\n\t\t\t\t\t\t\tpath: result.path,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (error: any) {\n\t\t\t\treturn JSON.stringify(\n\t\t\t\t\t{\n\t\t\t\t\t\tsuccess: false,\n\t\t\t\t\t\terror: error.message,\n\t\t\t\t\t},\n\t\t\t\t\tnull,\n\t\t\t\t\t2\n\t\t\t\t);\n\t\t\t}\n\t\t},\n\t};\n}\n","import type {\n\tExecutionResult,\n\tExecutionConfig,\n\tSearchOptions,\n\tSearchResult,\n\tClientTool,\n\tClientToolDefinition,\n\tExploreResult,\n} from '@mondaydotcomorg/atp-protocol';\nimport type { RuntimeAPIName } from '@mondaydotcomorg/atp-runtime';\nimport { CallbackType } from '@mondaydotcomorg/atp-protocol';\nimport {\n\ttype ClientLLMHandler,\n\ttype ClientApprovalHandler,\n\ttype ClientEmbeddingHandler,\n\ttype ClientServiceProviders,\n\ttype ClientHooks,\n\ttype ISession,\n\tClientSession,\n\tInProcessSession,\n\tAPIOperations,\n\tExecutionOperations,\n\tServiceProviders,\n} from './core/index.js';\nimport {\n\ttype Tool,\n\tcreateSearchApiTool,\n\tcreateFetchAllApisTool,\n\tcreateExecuteCodeTool,\n\tcreateExploreApiTool,\n} from './tools/index.js';\n\ninterface InProcessServer {\n\tstart(): Promise<void>;\n\thandleInit(ctx: unknown): Promise<unknown>;\n\tgetDefinitions(ctx?: unknown): Promise<unknown>;\n\tgetRuntimeDefinitions(ctx?: unknown): Promise<string>;\n\tgetInfo(): unknown;\n\thandleSearch(ctx: unknown): Promise<unknown>;\n\thandleExplore(ctx: unknown): Promise<unknown>;\n\thandleExecute(ctx: unknown): Promise<unknown>;\n\thandleResume(ctx: unknown, executionId: string): Promise<unknown>;\n}\n\n/**\n * Options for creating an AgentToolProtocolClient\n */\nexport interface AgentToolProtocolClientOptions {\n\t/** Base URL of the Agent Tool Protocol server (HTTP mode) */\n\tbaseUrl?: string;\n\t/** Server instance for in-process mode (no HTTP, no port binding) */\n\tserver?: InProcessServer;\n\t/** Optional headers for authentication (e.g., { Authorization: 'Bearer token' }) */\n\theaders?: Record<string, string>;\n\t/** Optional client-provided services (LLM, approval, embedding) */\n\tserviceProviders?: ClientServiceProviders;\n\t/** Optional hooks for intercepting and modifying client behavior */\n\thooks?: ClientHooks;\n}\n\n/**\n * AgentToolProtocolClient provides a client interface for connecting to\n * Agent Tool Protocol servers and executing code.\n */\nexport class AgentToolProtocolClient {\n\tprivate session: ISession;\n\tprivate inProcessSession?: InProcessSession;\n\tprivate apiOps: APIOperations;\n\tprivate execOps: ExecutionOperations;\n\tprivate serviceProviders: ServiceProviders;\n\n\t/**\n\t * Creates a new client instance.\n\t *\n\t * @example\n\t * ```typescript\n\t * // HTTP mode\n\t * const client = new AgentToolProtocolClient({\n\t * baseUrl: 'http://localhost:3333',\n\t * headers: { Authorization: 'Bearer token' },\n\t * hooks: {\n\t * preRequest: async (context) => {\n\t * const token = await refreshToken();\n\t * return { headers: { ...context.currentHeaders, Authorization: `Bearer ${token}` } };\n\t * }\n\t * }\n\t * });\n\t *\n\t * // In-process mode (no port binding)\n\t * const server = createServer();\n\t * server.use(myApiGroup);\n\t * const client = new AgentToolProtocolClient({ server });\n\t * ```\n\t */\n\tconstructor(options: AgentToolProtocolClientOptions) {\n\t\tconst { baseUrl, server, headers, serviceProviders, hooks } = options;\n\n\t\tif (!baseUrl && !server) {\n\t\t\tthrow new Error('Either baseUrl or server must be provided');\n\t\t}\n\n\t\tif (baseUrl && server) {\n\t\t\tthrow new Error('Cannot provide both baseUrl and server');\n\t\t}\n\n\t\tthis.serviceProviders = new ServiceProviders(serviceProviders);\n\n\t\tif (server) {\n\t\t\tthis.inProcessSession = new InProcessSession(server);\n\t\t\tthis.session = this.inProcessSession;\n\t\t\tthis.apiOps = new APIOperations(this.session, this.inProcessSession);\n\t\t\tthis.execOps = new ExecutionOperations(\n\t\t\t\tthis.session,\n\t\t\t\tthis.serviceProviders,\n\t\t\t\tthis.inProcessSession\n\t\t\t);\n\t\t} else {\n\t\t\tthis.session = new ClientSession(baseUrl!, headers, hooks);\n\t\t\tthis.apiOps = new APIOperations(this.session);\n\t\t\tthis.execOps = new ExecutionOperations(this.session, this.serviceProviders);\n\t\t}\n\t}\n\n\t/**\n\t * Initializes the client session with the server.\n\t * Automatically registers any client-provided tools and services with the server.\n\t */\n\tasync init(clientInfo?: { name?: string; version?: string; [key: string]: unknown }): Promise<{\n\t\tclientId: string;\n\t\ttoken: string;\n\t\texpiresAt: number;\n\t\ttokenRotateAt: number;\n\t}> {\n\t\tconst toolDefinitions = this.serviceProviders.getToolDefinitions();\n\t\tconst services = {\n\t\t\thasLLM: !!this.serviceProviders.getLLM(),\n\t\t\thasApproval: !!this.serviceProviders.getApproval(),\n\t\t\thasEmbedding: !!this.serviceProviders.getEmbedding(),\n\t\t\thasTools: this.serviceProviders.hasTools(),\n\t\t};\n\t\treturn await this.session.init(clientInfo, toolDefinitions, services);\n\t}\n\n\t/**\n\t * Gets the unique client ID.\n\t */\n\tgetClientId(): string {\n\t\treturn this.session.getClientId();\n\t}\n\n\t/**\n\t * Provides an LLM implementation for server to use during execution.\n\t */\n\tprovideLLM(handler: ClientLLMHandler): void {\n\t\tthis.serviceProviders.provideLLM(handler);\n\t}\n\n\t/**\n\t * Provides an approval handler for server to request human approval.\n\t */\n\tprovideApproval(handler: ClientApprovalHandler): void {\n\t\tthis.serviceProviders.provideApproval(handler);\n\t}\n\n\t/**\n\t * Provides an embedding model for server to use.\n\t */\n\tprovideEmbedding(handler: ClientEmbeddingHandler): void {\n\t\tthis.serviceProviders.provideEmbedding(handler);\n\t}\n\n\t/**\n\t * Provides custom tools that execute on the client side.\n\t * Note: Must be called before init() or re-initialize after calling this.\n\t */\n\tprovideTools(tools: ClientTool[]): void {\n\t\tthis.serviceProviders.provideTools(tools);\n\t}\n\n\t/**\n\t * Gets all client-provided tools (registered via provideTools).\n\t * Returns the full tool objects including handlers.\n\t */\n\tgetClientTools(): ClientTool[] {\n\t\treturn this.serviceProviders.getTools() || [];\n\t}\n\n\t/**\n\t * Gets client-provided tool definitions (without handlers).\n\t * Useful for sending tool metadata to servers.\n\t */\n\tgetClientToolDefinitions(): ClientToolDefinition[] {\n\t\treturn this.serviceProviders.getToolDefinitions();\n\t}\n\n\t/**\n\t * Gets the ATP tools (execute_code, explore_api, search_api, fetch_all_apis).\n\t * These are ready-to-use tools that can be exposed to MCP or other frameworks.\n\t *\n\t * @example\n\t * ```typescript\n\t * const tools = client.getATPTools();\n\t * for (const tool of tools) {\n\t * mcpServer.tool(tool.name, tool.description, tool.inputSchema, async (args) => {\n\t * const result = await tool.func(args);\n\t * return { content: [{ type: 'text', text: result }] };\n\t * });\n\t * }\n\t * ```\n\t */\n\tgetATPTools(): Tool[] {\n\t\treturn [\n\t\t\tcreateSearchApiTool(this),\n\t\t\tcreateFetchAllApisTool(this),\n\t\t\tcreateExecuteCodeTool(this),\n\t\t\tcreateExploreApiTool(this),\n\t\t];\n\t}\n\n\t/**\n\t * Connects to the server and retrieves API definitions.\n\t */\n\tasync connect(options?: { apiGroups?: string[] }): Promise<{\n\t\tserverVersion: string;\n\t\tcapabilities: unknown;\n\t\tapiGroups: string[];\n\t}> {\n\t\treturn await this.apiOps.connect(options);\n\t}\n\n\t/**\n\t * Gets the TypeScript type definitions for available APIs.\n\t */\n\tgetTypeDefinitions(): string {\n\t\treturn this.apiOps.getTypeDefinitions();\n\t}\n\n\t/**\n\t * Searches for available API functions.\n\t */\n\tasync searchAPI(query: string, options?: SearchOptions): Promise<SearchResult[]> {\n\t\treturn await this.apiOps.searchAPI(query, options);\n\t}\n\n\t/**\n\t * Explores the API filesystem at the given path.\n\t */\n\tasync exploreAPI(path: string): Promise<ExploreResult> {\n\t\treturn await this.apiOps.exploreAPI(path);\n\t}\n\n\t/**\n\t * Executes code on the server with real-time progress updates via SSE.\n\t */\n\tasync executeStream(\n\t\tcode: string,\n\t\tconfig?: Partial<ExecutionConfig>,\n\t\tonProgress?: (message: string, fraction: number) => void\n\t): Promise<ExecutionResult> {\n\t\treturn await this.execOps.executeStream(code, config, onProgress);\n\t}\n\n\t/**\n\t * Executes code on the server in a sandboxed environment.\n\t */\n\tasync execute(code: string, config?: Partial<ExecutionConfig>): Promise<ExecutionResult> {\n\t\treturn await this.execOps.execute(code, config);\n\t}\n\n\t/**\n\t * Resumes a paused execution with a callback result.\n\t */\n\tasync resume(executionId: string, callbackResult: unknown): Promise<ExecutionResult> {\n\t\treturn await this.execOps.resume(executionId, callbackResult);\n\t}\n\n\t/**\n\t * Handles a callback request from the server during execution.\n\t */\n\tasync handleCallback(callbackType: CallbackType, payload: any): Promise<any> {\n\t\treturn await this.serviceProviders.handleCallback(callbackType, payload);\n\t}\n\n\t/**\n\t * Gets information about the server.\n\t */\n\tasync getServerInfo(): Promise<{\n\t\tversion: string;\n\t\tcapabilities: Record<string, boolean>;\n\t}> {\n\t\treturn await this.apiOps.getServerInfo();\n\t}\n\n\t/**\n\t * Gets ATP runtime API definitions as TypeScript declarations.\n\t * Returns the full TypeScript definitions for atp.llm.*, atp.cache.*, etc.\n\t * These are the APIs available during code execution.\n\t *\n\t * Behavior:\n\t * - No options: Returns APIs based on client capabilities (default filtering)\n\t * - apis: ['llm', 'cache']: Returns only specified APIs (intersection with client capabilities)\n\t * - apis: []: Returns all APIs regardless of client capabilities\n\t *\n\t * @param options - Optional filtering options\n\t * @param options.apis - Specific APIs to include (e.g., ['llm', 'cache', 'approval'])\n\t */\n\tasync getRuntimeDefinitions(options?: { apis?: RuntimeAPIName[] }): Promise<string> {\n\t\treturn await this.apiOps.getRuntimeDefinitions(options);\n\t}\n}\n","import { AgentToolProtocolClient } from './client.js';\nimport { log } from '@mondaydotcomorg/atp-runtime';\n\nexport class CodeGenerator {\n\tprivate client: AgentToolProtocolClient;\n\n\tconstructor(client: AgentToolProtocolClient) {\n\t\tthis.client = client;\n\t}\n\n\tasync generateCode(intent: string, parameters?: unknown): Promise<string> {\n\t\tconst types = this.client.getTypeDefinitions();\n\t\tlog.debug('Generating code for intent', { intent, parameters, typesLength: types.length });\n\t\treturn '// Generated code';\n\t}\n}\n","import type { AgentToolProtocolClient } from './client.js';\nimport {\n\ttype Tool,\n\tcreateSearchApiTool,\n\tcreateFetchAllApisTool,\n\tcreateExecuteCodeTool,\n\tcreateExploreApiTool,\n} from './tools/index.js';\n\n/**\n * Creates MCP-compliant tool definitions with execution handlers\n * These tools work with any LLM/agent framework\n */\nexport function createToolsFromATPClient(client: AgentToolProtocolClient): Tool[] {\n\treturn [\n\t\tcreateSearchApiTool(client),\n\t\tcreateFetchAllApisTool(client),\n\t\tcreateExecuteCodeTool(client),\n\t\tcreateExploreApiTool(client),\n\t];\n}\n"]}
package/package.json CHANGED
@@ -1,18 +1,21 @@
1
1
  {
2
2
  "name": "@mondaydotcomorg/atp-client",
3
- "version": "0.19.7",
3
+ "version": "0.19.9",
4
4
  "description": "Client SDK for Agent Tool Protocol",
5
5
  "type": "module",
6
- "main": "./dist/index.js",
6
+ "main": "./dist/index.cjs",
7
+ "module": "./dist/index.js",
7
8
  "types": "./dist/index.d.ts",
8
9
  "exports": {
9
10
  ".": {
10
11
  "types": "./dist/index.d.ts",
11
- "import": "./dist/index.js"
12
+ "import": "./dist/index.js",
13
+ "require": "./dist/index.cjs"
12
14
  },
13
15
  "./core": {
14
16
  "types": "./dist/core/index.d.ts",
15
- "import": "./dist/core/index.js"
17
+ "import": "./dist/core/index.js",
18
+ "require": "./dist/core/index.cjs"
16
19
  }
17
20
  },
18
21
  "repository": {
@@ -25,7 +28,8 @@
25
28
  "src"
26
29
  ],
27
30
  "scripts": {
28
- "build": "tsc -p tsconfig.json",
31
+ "build": "npx tsc --build tsconfig.json && tsup",
32
+ "build:tsc": "tsc -p tsconfig.json",
29
33
  "dev": "tsc -p tsconfig.json --watch",
30
34
  "clean": "rm -rf dist *.tsbuildinfo",
31
35
  "test": "vitest run",
@@ -44,8 +48,8 @@
44
48
  },
45
49
  "license": "MIT",
46
50
  "dependencies": {
47
- "@mondaydotcomorg/atp-protocol": "0.19.7",
48
- "@mondaydotcomorg/atp-runtime": "0.19.7",
51
+ "@mondaydotcomorg/atp-protocol": "0.19.9",
52
+ "@mondaydotcomorg/atp-runtime": "0.19.8",
49
53
  "undici": "*",
50
54
  "zod-to-json-schema": "^3.24.6"
51
55
  },
@@ -53,6 +57,7 @@
53
57
  "zod": "^3.25.0"
54
58
  },
55
59
  "devDependencies": {
60
+ "tsup": "^8.5.1",
56
61
  "typescript": "^5.3.3",
57
62
  "vitest": "^1.2.1",
58
63
  "zod": "^3.25.0"
package/src/client.ts CHANGED
@@ -109,7 +109,11 @@ export class AgentToolProtocolClient {
109
109
  this.inProcessSession = new InProcessSession(server);
110
110
  this.session = this.inProcessSession;
111
111
  this.apiOps = new APIOperations(this.session, this.inProcessSession);
112
- this.execOps = new ExecutionOperations(this.session, this.serviceProviders, this.inProcessSession);
112
+ this.execOps = new ExecutionOperations(
113
+ this.session,
114
+ this.serviceProviders,
115
+ this.inProcessSession
116
+ );
113
117
  } else {
114
118
  this.session = new ClientSession(baseUrl!, headers, hooks);
115
119
  this.apiOps = new APIOperations(this.session);
@@ -78,7 +78,10 @@ export class APIOperations {
78
78
  await this.session.ensureInitialized();
79
79
 
80
80
  if (this.inProcessSession) {
81
- const data = await this.inProcessSession.search(query, options as unknown as Record<string, unknown>);
81
+ const data = await this.inProcessSession.search(
82
+ query,
83
+ options as unknown as Record<string, unknown>
84
+ );
82
85
  return data.results as SearchResult[];
83
86
  }
84
87
 
@@ -14,7 +14,11 @@ export class ExecutionOperations {
14
14
  private tokenRegistry: ProvenanceTokenRegistry;
15
15
  private lastExecutionConfig: Partial<ExecutionConfig> | null = null;
16
16
 
17
- constructor(session: ISession, serviceProviders: ServiceProviders, inProcessSession?: InProcessSession) {
17
+ constructor(
18
+ session: ISession,
19
+ serviceProviders: ServiceProviders,
20
+ inProcessSession?: InProcessSession
21
+ ) {
18
22
  this.session = session;
19
23
  this.inProcessSession = inProcessSession;
20
24
  this.serviceProviders = serviceProviders;
@@ -291,4 +291,3 @@ export class InProcessSession implements ISession {
291
291
  };
292
292
  }
293
293
  }
294
-