@mondaydotcomorg/atp-client 0.19.6 → 0.19.8
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/README.md +4 -1
- package/dist/client.d.ts +23 -2
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +26 -5
- package/dist/client.js.map +1 -1
- package/dist/core/api-operations.d.ts +4 -2
- package/dist/core/api-operations.d.ts.map +1 -1
- package/dist/core/api-operations.js +25 -1
- package/dist/core/api-operations.js.map +1 -1
- package/dist/core/execution-operations.d.ts +4 -2
- package/dist/core/execution-operations.d.ts.map +1 -1
- package/dist/core/execution-operations.js +60 -40
- package/dist/core/execution-operations.js.map +1 -1
- package/dist/core/in-process-session.d.ts +96 -0
- package/dist/core/in-process-session.d.ts.map +1 -0
- package/dist/core/in-process-session.js +175 -0
- package/dist/core/in-process-session.js.map +1 -0
- package/dist/core/index.cjs +1192 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1181 -5
- package/dist/core/index.js.map +1 -1
- package/dist/core/session.d.ts +24 -1
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js.map +1 -1
- package/dist/index.cjs +1589 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1577 -6
- package/dist/index.js.map +1 -1
- package/package.json +12 -7
- package/src/client.ts +51 -7
- package/src/core/api-operations.ts +38 -3
- package/src/core/execution-operations.ts +73 -45
- package/src/core/in-process-session.ts +293 -0
- package/src/core/index.ts +1 -0
- package/src/core/session.ts +20 -1
- package/src/index.ts +2 -0
package/dist/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,YAAY,CAAC;AAE3B,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,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"],"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"],"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"]}
|
package/dist/core/session.d.ts
CHANGED
|
@@ -1,6 +1,29 @@
|
|
|
1
1
|
import type { ClientHooks } from './types.js';
|
|
2
2
|
import type { ClientToolDefinition } from '@mondaydotcomorg/atp-protocol';
|
|
3
|
-
export
|
|
3
|
+
export interface ISession {
|
|
4
|
+
init(clientInfo?: {
|
|
5
|
+
name?: string;
|
|
6
|
+
version?: string;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}, tools?: ClientToolDefinition[], services?: {
|
|
9
|
+
hasLLM: boolean;
|
|
10
|
+
hasApproval: boolean;
|
|
11
|
+
hasEmbedding: boolean;
|
|
12
|
+
hasTools: boolean;
|
|
13
|
+
}): Promise<{
|
|
14
|
+
clientId: string;
|
|
15
|
+
token: string;
|
|
16
|
+
expiresAt: number;
|
|
17
|
+
tokenRotateAt: number;
|
|
18
|
+
}>;
|
|
19
|
+
getClientId(): string;
|
|
20
|
+
ensureInitialized(): Promise<void>;
|
|
21
|
+
getHeaders(): Record<string, string>;
|
|
22
|
+
getBaseUrl(): string;
|
|
23
|
+
updateToken(response: Response): void;
|
|
24
|
+
prepareHeaders(method: string, url: string, body?: unknown): Promise<Record<string, string>>;
|
|
25
|
+
}
|
|
26
|
+
export declare class ClientSession implements ISession {
|
|
4
27
|
private baseUrl;
|
|
5
28
|
private customHeaders;
|
|
6
29
|
private clientId?;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAE1E,MAAM,WAAW,QAAQ;IACxB,IAAI,CACH,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EACxE,KAAK,CAAC,EAAE,oBAAoB,EAAE,EAC9B,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAC5F,OAAO,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,WAAW,IAAI,MAAM,CAAC;IACtB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,UAAU,IAAI,MAAM,CAAC;IACrB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtC,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAC7F;AAED,qBAAa,aAAc,YAAW,QAAQ;IAC7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAC,CAAgB;IACpC,OAAO,CAAC,KAAK,CAAC,CAAc;gBAEhB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,WAAW;IAMlF;;;;;;;OAOG;IACG,IAAI,CACT,UAAU,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,EACxE,KAAK,CAAC,EAAE,oBAAoB,EAAE,EAC9B,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,OAAO,CAAC;QAAC,YAAY,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAA;KAAE,GAC5F,OAAO,CAAC;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,aAAa,EAAE,MAAM,CAAC;KACtB,CAAC;IAmDF;;OAEG;IACH,WAAW,IAAI,MAAM;IAOrB;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxC;;OAEG;IACH,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAiBpC,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAOrC;;OAEG;IACG,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,OAAO,GACZ,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAqClC"}
|
package/dist/core/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../src/core/session.ts"],"names":[],"mappings":"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"}
|