@mondaydotcomorg/atp-server 0.17.14

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.
Files changed (307) hide show
  1. package/README.md +489 -0
  2. package/dist/aggregator/index.d.ts +59 -0
  3. package/dist/aggregator/index.d.ts.map +1 -0
  4. package/dist/aggregator/index.js +171 -0
  5. package/dist/aggregator/index.js.map +1 -0
  6. package/dist/callback/index.d.ts +98 -0
  7. package/dist/callback/index.d.ts.map +1 -0
  8. package/dist/callback/index.js +136 -0
  9. package/dist/callback/index.js.map +1 -0
  10. package/dist/client-sessions.d.ts +82 -0
  11. package/dist/client-sessions.d.ts.map +1 -0
  12. package/dist/client-sessions.js +174 -0
  13. package/dist/client-sessions.js.map +1 -0
  14. package/dist/controllers/definitions.controller.d.ts +4 -0
  15. package/dist/controllers/definitions.controller.d.ts.map +1 -0
  16. package/dist/controllers/definitions.controller.js +11 -0
  17. package/dist/controllers/definitions.controller.js.map +1 -0
  18. package/dist/controllers/execute.controller.d.ts +18 -0
  19. package/dist/controllers/execute.controller.d.ts.map +1 -0
  20. package/dist/controllers/execute.controller.js +122 -0
  21. package/dist/controllers/execute.controller.js.map +1 -0
  22. package/dist/controllers/info.controller.d.ts +3 -0
  23. package/dist/controllers/info.controller.d.ts.map +1 -0
  24. package/dist/controllers/info.controller.js +13 -0
  25. package/dist/controllers/info.controller.js.map +1 -0
  26. package/dist/controllers/resume.controller.d.ts +11 -0
  27. package/dist/controllers/resume.controller.d.ts.map +1 -0
  28. package/dist/controllers/resume.controller.js +61 -0
  29. package/dist/controllers/resume.controller.js.map +1 -0
  30. package/dist/controllers/search.controller.d.ts +4 -0
  31. package/dist/controllers/search.controller.d.ts.map +1 -0
  32. package/dist/controllers/search.controller.js +7 -0
  33. package/dist/controllers/search.controller.js.map +1 -0
  34. package/dist/controllers/stream.controller.d.ts +19 -0
  35. package/dist/controllers/stream.controller.d.ts.map +1 -0
  36. package/dist/controllers/stream.controller.js +141 -0
  37. package/dist/controllers/stream.controller.js.map +1 -0
  38. package/dist/core/config.d.ts +161 -0
  39. package/dist/core/config.d.ts.map +1 -0
  40. package/dist/core/config.js +7 -0
  41. package/dist/core/config.js.map +1 -0
  42. package/dist/core/http.d.ts +4 -0
  43. package/dist/core/http.d.ts.map +1 -0
  44. package/dist/core/http.js +17 -0
  45. package/dist/core/http.js.map +1 -0
  46. package/dist/create-server.d.ts +120 -0
  47. package/dist/create-server.d.ts.map +1 -0
  48. package/dist/create-server.js +423 -0
  49. package/dist/create-server.js.map +1 -0
  50. package/dist/execution-state/index.d.ts +95 -0
  51. package/dist/execution-state/index.d.ts.map +1 -0
  52. package/dist/execution-state/index.js +128 -0
  53. package/dist/execution-state/index.js.map +1 -0
  54. package/dist/executor/ast-provenance-bridge.d.ts +12 -0
  55. package/dist/executor/ast-provenance-bridge.d.ts.map +1 -0
  56. package/dist/executor/ast-provenance-bridge.js +66 -0
  57. package/dist/executor/ast-provenance-bridge.js.map +1 -0
  58. package/dist/executor/ast-tracking-runtime.d.ts +7 -0
  59. package/dist/executor/ast-tracking-runtime.d.ts.map +1 -0
  60. package/dist/executor/ast-tracking-runtime.js +559 -0
  61. package/dist/executor/ast-tracking-runtime.js.map +1 -0
  62. package/dist/executor/bootstrap-generated.d.ts +32 -0
  63. package/dist/executor/bootstrap-generated.d.ts.map +1 -0
  64. package/dist/executor/bootstrap-generated.js +90 -0
  65. package/dist/executor/bootstrap-generated.js.map +1 -0
  66. package/dist/executor/compiler-config.d.ts +32 -0
  67. package/dist/executor/compiler-config.d.ts.map +1 -0
  68. package/dist/executor/compiler-config.js +99 -0
  69. package/dist/executor/compiler-config.js.map +1 -0
  70. package/dist/executor/constants.d.ts +4 -0
  71. package/dist/executor/constants.d.ts.map +1 -0
  72. package/dist/executor/constants.js +4 -0
  73. package/dist/executor/constants.js.map +1 -0
  74. package/dist/executor/error-handler.d.ts +9 -0
  75. package/dist/executor/error-handler.d.ts.map +1 -0
  76. package/dist/executor/error-handler.js +95 -0
  77. package/dist/executor/error-handler.js.map +1 -0
  78. package/dist/executor/execution-error-handler.d.ts +7 -0
  79. package/dist/executor/execution-error-handler.d.ts.map +1 -0
  80. package/dist/executor/execution-error-handler.js +136 -0
  81. package/dist/executor/execution-error-handler.js.map +1 -0
  82. package/dist/executor/executor.d.ts +20 -0
  83. package/dist/executor/executor.d.ts.map +1 -0
  84. package/dist/executor/executor.js +452 -0
  85. package/dist/executor/executor.js.map +1 -0
  86. package/dist/executor/index.d.ts +4 -0
  87. package/dist/executor/index.d.ts.map +1 -0
  88. package/dist/executor/index.js +3 -0
  89. package/dist/executor/index.js.map +1 -0
  90. package/dist/executor/resume-handler.d.ts +9 -0
  91. package/dist/executor/resume-handler.d.ts.map +1 -0
  92. package/dist/executor/resume-handler.js +22 -0
  93. package/dist/executor/resume-handler.js.map +1 -0
  94. package/dist/executor/sandbox-builder.d.ts +29 -0
  95. package/dist/executor/sandbox-builder.d.ts.map +1 -0
  96. package/dist/executor/sandbox-builder.js +538 -0
  97. package/dist/executor/sandbox-builder.js.map +1 -0
  98. package/dist/executor/sandbox-injector.d.ts +7 -0
  99. package/dist/executor/sandbox-injector.d.ts.map +1 -0
  100. package/dist/executor/sandbox-injector.js +293 -0
  101. package/dist/executor/sandbox-injector.js.map +1 -0
  102. package/dist/executor/types.d.ts +21 -0
  103. package/dist/executor/types.d.ts.map +1 -0
  104. package/dist/executor/types.js +2 -0
  105. package/dist/executor/types.js.map +1 -0
  106. package/dist/explorer/index.d.ts +69 -0
  107. package/dist/explorer/index.d.ts.map +1 -0
  108. package/dist/explorer/index.js +228 -0
  109. package/dist/explorer/index.js.map +1 -0
  110. package/dist/handlers/definitions.handler.d.ts +3 -0
  111. package/dist/handlers/definitions.handler.d.ts.map +1 -0
  112. package/dist/handlers/definitions.handler.js +11 -0
  113. package/dist/handlers/definitions.handler.js.map +1 -0
  114. package/dist/handlers/execute.handler.d.ts +7 -0
  115. package/dist/handlers/execute.handler.d.ts.map +1 -0
  116. package/dist/handlers/execute.handler.js +225 -0
  117. package/dist/handlers/execute.handler.js.map +1 -0
  118. package/dist/handlers/explorer.handler.d.ts +4 -0
  119. package/dist/handlers/explorer.handler.d.ts.map +1 -0
  120. package/dist/handlers/explorer.handler.js +10 -0
  121. package/dist/handlers/explorer.handler.js.map +1 -0
  122. package/dist/handlers/init.handler.d.ts +5 -0
  123. package/dist/handlers/init.handler.d.ts.map +1 -0
  124. package/dist/handlers/init.handler.js +41 -0
  125. package/dist/handlers/init.handler.js.map +1 -0
  126. package/dist/handlers/resume.handler.d.ts +6 -0
  127. package/dist/handlers/resume.handler.d.ts.map +1 -0
  128. package/dist/handlers/resume.handler.js +256 -0
  129. package/dist/handlers/resume.handler.js.map +1 -0
  130. package/dist/handlers/search.handler.d.ts +5 -0
  131. package/dist/handlers/search.handler.d.ts.map +1 -0
  132. package/dist/handlers/search.handler.js +11 -0
  133. package/dist/handlers/search.handler.js.map +1 -0
  134. package/dist/http/request-handler.d.ts +15 -0
  135. package/dist/http/request-handler.d.ts.map +1 -0
  136. package/dist/http/request-handler.js +94 -0
  137. package/dist/http/request-handler.js.map +1 -0
  138. package/dist/http/router.d.ts +4 -0
  139. package/dist/http/router.d.ts.map +1 -0
  140. package/dist/http/router.js +32 -0
  141. package/dist/http/router.js.map +1 -0
  142. package/dist/index.d.ts +10 -0
  143. package/dist/index.d.ts.map +1 -0
  144. package/dist/index.js +8 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/instrumentation/index.d.ts +5 -0
  147. package/dist/instrumentation/index.d.ts.map +1 -0
  148. package/dist/instrumentation/index.js +5 -0
  149. package/dist/instrumentation/index.js.map +1 -0
  150. package/dist/instrumentation/serializer.d.ts +61 -0
  151. package/dist/instrumentation/serializer.d.ts.map +1 -0
  152. package/dist/instrumentation/serializer.js +334 -0
  153. package/dist/instrumentation/serializer.js.map +1 -0
  154. package/dist/instrumentation/state-manager.d.ts +61 -0
  155. package/dist/instrumentation/state-manager.d.ts.map +1 -0
  156. package/dist/instrumentation/state-manager.js +205 -0
  157. package/dist/instrumentation/state-manager.js.map +1 -0
  158. package/dist/instrumentation/transformer.d.ts +9 -0
  159. package/dist/instrumentation/transformer.d.ts.map +1 -0
  160. package/dist/instrumentation/transformer.js +70 -0
  161. package/dist/instrumentation/transformer.js.map +1 -0
  162. package/dist/instrumentation/types.d.ts +59 -0
  163. package/dist/instrumentation/types.d.ts.map +1 -0
  164. package/dist/instrumentation/types.js +5 -0
  165. package/dist/instrumentation/types.js.map +1 -0
  166. package/dist/middleware/audit.d.ts +18 -0
  167. package/dist/middleware/audit.d.ts.map +1 -0
  168. package/dist/middleware/audit.js +76 -0
  169. package/dist/middleware/audit.js.map +1 -0
  170. package/dist/openapi/index.d.ts +133 -0
  171. package/dist/openapi/index.d.ts.map +1 -0
  172. package/dist/openapi/index.js +235 -0
  173. package/dist/openapi/index.js.map +1 -0
  174. package/dist/openapi-loader.d.ts +87 -0
  175. package/dist/openapi-loader.d.ts.map +1 -0
  176. package/dist/openapi-loader.js +491 -0
  177. package/dist/openapi-loader.js.map +1 -0
  178. package/dist/routes/index.d.ts +21 -0
  179. package/dist/routes/index.d.ts.map +1 -0
  180. package/dist/routes/index.js +47 -0
  181. package/dist/routes/index.js.map +1 -0
  182. package/dist/search/index.d.ts +48 -0
  183. package/dist/search/index.d.ts.map +1 -0
  184. package/dist/search/index.js +156 -0
  185. package/dist/search/index.js.map +1 -0
  186. package/dist/security/index.d.ts +2 -0
  187. package/dist/security/index.d.ts.map +1 -0
  188. package/dist/security/index.js +2 -0
  189. package/dist/security/index.js.map +1 -0
  190. package/dist/shutdown.d.ts +19 -0
  191. package/dist/shutdown.d.ts.map +1 -0
  192. package/dist/shutdown.js +87 -0
  193. package/dist/shutdown.js.map +1 -0
  194. package/dist/utils/banner.d.ts +12 -0
  195. package/dist/utils/banner.d.ts.map +1 -0
  196. package/dist/utils/banner.js +18 -0
  197. package/dist/utils/banner.js.map +1 -0
  198. package/dist/utils/context.d.ts +16 -0
  199. package/dist/utils/context.d.ts.map +1 -0
  200. package/dist/utils/context.js +44 -0
  201. package/dist/utils/context.js.map +1 -0
  202. package/dist/utils/error.d.ts +8 -0
  203. package/dist/utils/error.d.ts.map +1 -0
  204. package/dist/utils/error.js +17 -0
  205. package/dist/utils/error.js.map +1 -0
  206. package/dist/utils/hint-based-instrumentation.d.ts +14 -0
  207. package/dist/utils/hint-based-instrumentation.d.ts.map +1 -0
  208. package/dist/utils/hint-based-instrumentation.js +84 -0
  209. package/dist/utils/hint-based-instrumentation.js.map +1 -0
  210. package/dist/utils/index.d.ts +8 -0
  211. package/dist/utils/index.d.ts.map +1 -0
  212. package/dist/utils/index.js +8 -0
  213. package/dist/utils/index.js.map +1 -0
  214. package/dist/utils/info.d.ts +20 -0
  215. package/dist/utils/info.d.ts.map +1 -0
  216. package/dist/utils/info.js +15 -0
  217. package/dist/utils/info.js.map +1 -0
  218. package/dist/utils/provenance-reattachment.d.ts +32 -0
  219. package/dist/utils/provenance-reattachment.d.ts.map +1 -0
  220. package/dist/utils/provenance-reattachment.js +115 -0
  221. package/dist/utils/provenance-reattachment.js.map +1 -0
  222. package/dist/utils/request.d.ts +21 -0
  223. package/dist/utils/request.d.ts.map +1 -0
  224. package/dist/utils/request.js +44 -0
  225. package/dist/utils/request.js.map +1 -0
  226. package/dist/utils/response.d.ts +30 -0
  227. package/dist/utils/response.d.ts.map +1 -0
  228. package/dist/utils/response.js +53 -0
  229. package/dist/utils/response.js.map +1 -0
  230. package/dist/utils/runtime-types.d.ts +6 -0
  231. package/dist/utils/runtime-types.d.ts.map +1 -0
  232. package/dist/utils/runtime-types.js +14 -0
  233. package/dist/utils/runtime-types.js.map +1 -0
  234. package/dist/utils/schema.d.ts +9 -0
  235. package/dist/utils/schema.d.ts.map +1 -0
  236. package/dist/utils/schema.js +13 -0
  237. package/dist/utils/schema.js.map +1 -0
  238. package/dist/utils/token-emitter.d.ts +21 -0
  239. package/dist/utils/token-emitter.d.ts.map +1 -0
  240. package/dist/utils/token-emitter.js +129 -0
  241. package/dist/utils/token-emitter.js.map +1 -0
  242. package/dist/validator/index.d.ts +36 -0
  243. package/dist/validator/index.d.ts.map +1 -0
  244. package/dist/validator/index.js +224 -0
  245. package/dist/validator/index.js.map +1 -0
  246. package/package.json +68 -0
  247. package/src/aggregator/index.ts +207 -0
  248. package/src/callback/index.ts +191 -0
  249. package/src/client-sessions.ts +234 -0
  250. package/src/controllers/definitions.controller.ts +19 -0
  251. package/src/controllers/execute.controller.ts +166 -0
  252. package/src/controllers/info.controller.ts +14 -0
  253. package/src/controllers/resume.controller.ts +92 -0
  254. package/src/controllers/search.controller.ts +16 -0
  255. package/src/controllers/stream.controller.ts +190 -0
  256. package/src/core/config.ts +180 -0
  257. package/src/core/http.ts +21 -0
  258. package/src/create-server.ts +536 -0
  259. package/src/execution-state/index.ts +204 -0
  260. package/src/executor/ast-provenance-bridge.ts +80 -0
  261. package/src/executor/ast-tracking-runtime.ts +558 -0
  262. package/src/executor/bootstrap-generated.ts +90 -0
  263. package/src/executor/compiler-config.ts +146 -0
  264. package/src/executor/constants.ts +5 -0
  265. package/src/executor/error-handler.ts +118 -0
  266. package/src/executor/execution-error-handler.ts +178 -0
  267. package/src/executor/executor.ts +631 -0
  268. package/src/executor/index.ts +3 -0
  269. package/src/executor/resume-handler.ts +39 -0
  270. package/src/executor/sandbox-builder.ts +684 -0
  271. package/src/executor/sandbox-injector.ts +345 -0
  272. package/src/executor/types.ts +22 -0
  273. package/src/explorer/index.ts +297 -0
  274. package/src/handlers/definitions.handler.ts +13 -0
  275. package/src/handlers/execute.handler.ts +286 -0
  276. package/src/handlers/explorer.handler.ts +18 -0
  277. package/src/handlers/init.handler.ts +53 -0
  278. package/src/handlers/resume.handler.ts +316 -0
  279. package/src/handlers/search.handler.ts +32 -0
  280. package/src/http/request-handler.ts +117 -0
  281. package/src/http/router.ts +29 -0
  282. package/src/index.ts +60 -0
  283. package/src/instrumentation/index.ts +4 -0
  284. package/src/instrumentation/serializer.ts +421 -0
  285. package/src/instrumentation/state-manager.ts +237 -0
  286. package/src/instrumentation/transformer.ts +84 -0
  287. package/src/instrumentation/types.ts +76 -0
  288. package/src/middleware/audit.ts +101 -0
  289. package/src/openapi/index.ts +378 -0
  290. package/src/openapi-loader.ts +744 -0
  291. package/src/routes/index.ts +93 -0
  292. package/src/search/index.ts +216 -0
  293. package/src/security/index.ts +1 -0
  294. package/src/shutdown.ts +108 -0
  295. package/src/utils/banner.ts +25 -0
  296. package/src/utils/context.ts +58 -0
  297. package/src/utils/error.ts +25 -0
  298. package/src/utils/hint-based-instrumentation.ts +99 -0
  299. package/src/utils/index.ts +15 -0
  300. package/src/utils/info.ts +31 -0
  301. package/src/utils/provenance-reattachment.ts +144 -0
  302. package/src/utils/request.ts +53 -0
  303. package/src/utils/response.ts +69 -0
  304. package/src/utils/runtime-types.ts +14 -0
  305. package/src/utils/schema.ts +18 -0
  306. package/src/utils/token-emitter.ts +182 -0
  307. package/src/validator/index.ts +253 -0
@@ -0,0 +1,17 @@
1
+ import { readJsonBody } from '../utils/request.js';
2
+ export function parseBody(req) {
3
+ return readJsonBody(req);
4
+ }
5
+ export function parseQuery(url) {
6
+ const queryIndex = url.indexOf('?');
7
+ if (queryIndex === -1)
8
+ return {};
9
+ const queryString = url.substring(queryIndex + 1);
10
+ const params = new URLSearchParams(queryString);
11
+ const result = {};
12
+ for (const [key, value] of params) {
13
+ result[key] = value;
14
+ }
15
+ return result;
16
+ }
17
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,UAAU,SAAS,CAAC,GAAoB;IAC7C,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,GAAW;IACrC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAEjC,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,WAAW,CAAC,CAAC;IAChD,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,120 @@
1
+ import { IncomingMessage, ServerResponse } from 'node:http';
2
+ import type { CacheProvider, AuthProvider, AuditSink, APIGroupConfig, ToolMetadata } from '@mondaydotcomorg/atp-protocol';
3
+ import type { ServerConfig, Middleware, RequestContext } from './core/config.js';
4
+ import { ClientSessionManager } from './client-sessions.js';
5
+ import { SandboxExecutor } from './executor/index.js';
6
+ import { CodeValidator } from './validator/index.js';
7
+ import { SearchEngine } from './search/index.js';
8
+ import { ExecutionStateManager } from './execution-state/index.js';
9
+ import { ExplorerService } from './explorer/index.js';
10
+ export declare class AgentToolProtocolServer {
11
+ private config;
12
+ private middleware;
13
+ private apiGroups;
14
+ private httpServer;
15
+ private responseHeaders;
16
+ private isRunning;
17
+ sessionManager?: ClientSessionManager;
18
+ executor?: SandboxExecutor;
19
+ validator?: CodeValidator;
20
+ searchEngine?: SearchEngine;
21
+ explorerService?: ExplorerService;
22
+ stateManager?: ExecutionStateManager;
23
+ approvalHandler?: (request: {
24
+ message: string;
25
+ context?: any;
26
+ }) => Promise<{
27
+ approved: boolean;
28
+ data?: any;
29
+ }>;
30
+ cacheProvider?: CacheProvider;
31
+ authProvider?: AuthProvider;
32
+ auditSink?: AuditSink;
33
+ private customLogger?;
34
+ constructor(config?: ServerConfig);
35
+ /**
36
+ * Register middleware or API groups.
37
+ * SECURITY: Cannot be called after server starts to prevent runtime injection attacks.
38
+ * @throws {Error} If called after listen() or handler()
39
+ */
40
+ use(...items: (Middleware | APIGroupConfig | APIGroupConfig[])[]): this;
41
+ /**
42
+ * Register a tool/function with optional hierarchical grouping.
43
+ * Supports hierarchical paths like 'github/readOnly' for better organization.
44
+ * All functions registered here will be exposed as api.{group}.{name}()
45
+ *
46
+ * @param name - Function name
47
+ * @param definition - Function definition including description, input schema, handler
48
+ * @param definition.group - Optional hierarchical group path (e.g., 'github/readOnly'). Defaults to 'custom'
49
+ *
50
+ * @example
51
+ * // Simple function in default 'custom' group -> api.custom.hello()
52
+ * server.tool('hello', {
53
+ * description: 'Say hello',
54
+ * input: { name: 'string' },
55
+ * handler: async (input) => ({ message: `Hello ${input.name}` })
56
+ * });
57
+ *
58
+ * // Hierarchical grouping -> api.github.readOnly.getUser()
59
+ * server.tool('getUser', {
60
+ * group: 'github/readOnly',
61
+ * description: 'Get GitHub user',
62
+ * input: { username: 'string' },
63
+ * handler: async (input) => ({ username: input.username })
64
+ * });
65
+ */
66
+ tool(name: string, definition: {
67
+ group?: string;
68
+ description: string;
69
+ input: Record<string, string>;
70
+ output?: Record<string, string>;
71
+ handler: (input: unknown) => Promise<unknown>;
72
+ metadata?: ToolMetadata;
73
+ }): this;
74
+ /**
75
+ * Configure approval handler for human-in-the-loop operations
76
+ * The handler will be called when code requests approval via atp.approval.request()
77
+ */
78
+ onApproval(handler: (request: {
79
+ message: string;
80
+ context?: any;
81
+ }) => Promise<{
82
+ approved: boolean;
83
+ data?: any;
84
+ }>): this;
85
+ listen(port: number): Promise<void>;
86
+ stop(): Promise<void>;
87
+ getInfo(): unknown;
88
+ getDefinitions(ctx?: RequestContext): Promise<unknown>;
89
+ handleInit(ctx: RequestContext): Promise<unknown>;
90
+ handleSearch(ctx: RequestContext): Promise<unknown>;
91
+ handleSearchQuery(ctx: RequestContext): Promise<unknown>;
92
+ handleExplore(ctx: RequestContext): Promise<unknown>;
93
+ handleExecute(ctx: RequestContext): Promise<unknown>;
94
+ handleResume(ctx: RequestContext, executionId: string): Promise<unknown>;
95
+ /**
96
+ * Get raw Node.js request handler for framework integration
97
+ * Use this to integrate ATP with Express, Fastify, or any Node.js framework
98
+ */
99
+ handler(): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
100
+ /**
101
+ * Get Express middleware
102
+ * @example
103
+ * const app = express();
104
+ * app.use('/atp', server.toExpress());
105
+ */
106
+ toExpress(): (req: unknown, res: unknown, next: (err?: unknown) => void) => void;
107
+ /**
108
+ * Get Fastify handler
109
+ * @example
110
+ * fastify.all('/atp/*', server.toFastify());
111
+ */
112
+ toFastify(): (request: unknown, reply: unknown) => Promise<void>;
113
+ /**
114
+ * Parse OpenTelemetry headers from environment variable format
115
+ * Format: "key1=value1,key2=value2"
116
+ */
117
+ private parseOtelHeaders;
118
+ }
119
+ export declare function createServer(config?: ServerConfig): AgentToolProtocolServer;
120
+ //# sourceMappingURL=create-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-server.d.ts","sourceRoot":"","sources":["../src/create-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,423 @@
1
+ import { createServer as createHTTPServer } from 'node:http';
2
+ import { ProvenanceMode } from '@mondaydotcomorg/atp-protocol';
3
+ import { log, initializeLogger } from '@mondaydotcomorg/atp-runtime';
4
+ import { shutdownLogger } from '@mondaydotcomorg/atp-runtime';
5
+ import { MB, HOUR, MINUTE } from './core/config.js';
6
+ import { ClientSessionManager } from './client-sessions.js';
7
+ import { SandboxExecutor } from './executor/index.js';
8
+ import { CodeValidator } from './validator/index.js';
9
+ import { SearchEngine } from './search/index.js';
10
+ import { ExecutionStateManager } from './execution-state/index.js';
11
+ import { ExplorerService } from './explorer/index.js';
12
+ import { toJSONSchema, printBanner, getServerInfo } from './utils/index.js';
13
+ import { handleHTTPRequest } from './http/request-handler.js';
14
+ import { handleRoute } from './http/router.js';
15
+ import { handleInit } from './handlers/init.handler.js';
16
+ import { handleSearch, handleSearchQuery } from './handlers/search.handler.js';
17
+ import { handleExplore } from './handlers/explorer.handler.js';
18
+ import { handleExecute } from './handlers/execute.handler.js';
19
+ import { handleResume } from './handlers/resume.handler.js';
20
+ import { getDefinitions } from './handlers/definitions.handler.js';
21
+ import { shutdownAudit } from './middleware/audit.js';
22
+ import { EnvAuthProvider, MemoryCache, OpenTelemetryAuditSink, } from '@mondaydotcomorg/atp-providers';
23
+ export class AgentToolProtocolServer {
24
+ config;
25
+ middleware = [];
26
+ apiGroups = [];
27
+ httpServer = null;
28
+ responseHeaders = new Map();
29
+ isRunning = false;
30
+ sessionManager;
31
+ executor;
32
+ validator;
33
+ searchEngine;
34
+ explorerService;
35
+ stateManager;
36
+ approvalHandler;
37
+ cacheProvider;
38
+ authProvider;
39
+ auditSink;
40
+ customLogger;
41
+ constructor(config = {}) {
42
+ this.config = {
43
+ execution: {
44
+ timeout: config.execution?.timeout ?? 30000,
45
+ memory: config.execution?.memory ?? 128 * MB,
46
+ llmCalls: config.execution?.llmCalls ?? 10,
47
+ provenanceMode: config.execution?.provenanceMode ?? ProvenanceMode.NONE,
48
+ securityPolicies: config.execution?.securityPolicies ?? [],
49
+ },
50
+ clientInit: {
51
+ tokenTTL: config.clientInit?.tokenTTL ?? HOUR,
52
+ tokenRotation: config.clientInit?.tokenRotation ?? 30 * MINUTE,
53
+ },
54
+ executionState: {
55
+ ttl: config.executionState?.ttl ?? 3600,
56
+ maxPauseDuration: config.executionState?.maxPauseDuration ?? 3600,
57
+ },
58
+ discovery: {
59
+ embeddings: config.discovery?.embeddings ?? false,
60
+ },
61
+ audit: {
62
+ enabled: config.audit?.enabled ?? false,
63
+ sinks: config.audit?.sinks,
64
+ },
65
+ otel: {
66
+ enabled: config.otel?.enabled ?? false,
67
+ serviceName: config.otel?.serviceName ?? process.env.OTEL_SERVICE_NAME ?? 'agent-tool-protocol',
68
+ serviceVersion: config.otel?.serviceVersion ?? process.env.OTEL_SERVICE_VERSION ?? '1.0.0',
69
+ traceEndpoint: config.otel?.traceEndpoint ??
70
+ process.env.OTEL_EXPORTER_OTLP_TRACES_ENDPOINT ??
71
+ (process.env.OTEL_EXPORTER_OTLP_ENDPOINT
72
+ ? `${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/traces`
73
+ : 'http://localhost:4318/v1/traces'),
74
+ metricsEndpoint: config.otel?.metricsEndpoint ??
75
+ process.env.OTEL_EXPORTER_OTLP_METRICS_ENDPOINT ??
76
+ (process.env.OTEL_EXPORTER_OTLP_ENDPOINT
77
+ ? `${process.env.OTEL_EXPORTER_OTLP_ENDPOINT}/v1/metrics`
78
+ : 'http://localhost:4318/v1/metrics'),
79
+ headers: config.otel?.headers ?? this.parseOtelHeaders(process.env.OTEL_EXPORTER_OTLP_HEADERS),
80
+ metricsInterval: config.otel?.metricsInterval ?? 60000,
81
+ resourceAttributes: config.otel?.resourceAttributes ?? {},
82
+ },
83
+ logger: config.logger ?? 'info',
84
+ };
85
+ if (config.providers) {
86
+ if (config.providers.cache) {
87
+ this.cacheProvider = config.providers.cache;
88
+ log.info('Cache provider configured', { provider: config.providers.cache.name });
89
+ }
90
+ if (config.providers.auth) {
91
+ this.authProvider = config.providers.auth;
92
+ log.info('Token store configured', { provider: config.providers.auth.name });
93
+ }
94
+ }
95
+ if (!this.cacheProvider) {
96
+ this.cacheProvider = new MemoryCache({ maxKeys: 1000, defaultTTL: 3600 });
97
+ log.info('Cache provider configured (default)', { provider: 'memory' });
98
+ }
99
+ if (!this.authProvider) {
100
+ this.authProvider = new EnvAuthProvider();
101
+ log.info('Token store configured (default)', { provider: 'env' });
102
+ }
103
+ if (this.config.otel.enabled && !this.config.audit.sinks) {
104
+ this.config.audit.enabled = true;
105
+ this.config.audit.sinks = [new OpenTelemetryAuditSink()];
106
+ log.info('Auto-configured OpenTelemetry audit sink from otel config');
107
+ }
108
+ if (this.config.audit.enabled && this.config.audit.sinks) {
109
+ const auditSinks = Array.isArray(this.config.audit.sinks)
110
+ ? this.config.audit.sinks
111
+ : [this.config.audit.sinks];
112
+ if (auditSinks.length > 1) {
113
+ this.auditSink = {
114
+ name: 'multi',
115
+ async write(event) {
116
+ await Promise.all(auditSinks.map((s) => s.write(event)));
117
+ },
118
+ async writeBatch(events) {
119
+ await Promise.all(auditSinks.map((s) => s.writeBatch(events)));
120
+ },
121
+ };
122
+ log.info('Audit sinks configured', { count: auditSinks.length });
123
+ }
124
+ else {
125
+ this.auditSink = auditSinks[0];
126
+ log.info('Audit sink configured', { sink: auditSinks[0]?.name });
127
+ }
128
+ }
129
+ if (typeof this.config.logger === 'string') {
130
+ initializeLogger({
131
+ level: this.config.logger,
132
+ pretty: process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test',
133
+ });
134
+ }
135
+ else {
136
+ this.customLogger = this.config.logger;
137
+ }
138
+ }
139
+ /**
140
+ * Register middleware or API groups.
141
+ * SECURITY: Cannot be called after server starts to prevent runtime injection attacks.
142
+ * @throws {Error} If called after listen() or handler()
143
+ */
144
+ use(...items) {
145
+ if (this.isRunning) {
146
+ throw new Error('Cannot add middleware or API groups after server has started. ');
147
+ }
148
+ for (const item of items) {
149
+ if (Array.isArray(item)) {
150
+ this.apiGroups.push(...item);
151
+ }
152
+ else if (typeof item === 'function') {
153
+ this.middleware.push(item);
154
+ }
155
+ else if ('name' in item && 'type' in item) {
156
+ this.apiGroups.push(item);
157
+ }
158
+ }
159
+ return this;
160
+ }
161
+ /**
162
+ * Register a tool/function with optional hierarchical grouping.
163
+ * Supports hierarchical paths like 'github/readOnly' for better organization.
164
+ * All functions registered here will be exposed as api.{group}.{name}()
165
+ *
166
+ * @param name - Function name
167
+ * @param definition - Function definition including description, input schema, handler
168
+ * @param definition.group - Optional hierarchical group path (e.g., 'github/readOnly'). Defaults to 'custom'
169
+ *
170
+ * @example
171
+ * // Simple function in default 'custom' group -> api.custom.hello()
172
+ * server.tool('hello', {
173
+ * description: 'Say hello',
174
+ * input: { name: 'string' },
175
+ * handler: async (input) => ({ message: `Hello ${input.name}` })
176
+ * });
177
+ *
178
+ * // Hierarchical grouping -> api.github.readOnly.getUser()
179
+ * server.tool('getUser', {
180
+ * group: 'github/readOnly',
181
+ * description: 'Get GitHub user',
182
+ * input: { username: 'string' },
183
+ * handler: async (input) => ({ username: input.username })
184
+ * });
185
+ */
186
+ tool(name, definition) {
187
+ const groupName = definition.group || 'custom';
188
+ let targetGroup = this.apiGroups.find((g) => g.name === groupName);
189
+ if (!targetGroup) {
190
+ targetGroup = {
191
+ name: groupName,
192
+ type: 'custom',
193
+ functions: [],
194
+ };
195
+ this.apiGroups.push(targetGroup);
196
+ }
197
+ targetGroup.functions.push({
198
+ name,
199
+ description: definition.description,
200
+ inputSchema: toJSONSchema(definition.input),
201
+ outputSchema: definition.output ? toJSONSchema(definition.output) : undefined,
202
+ handler: definition.handler,
203
+ metadata: definition.metadata,
204
+ });
205
+ return this;
206
+ }
207
+ /**
208
+ * Configure approval handler for human-in-the-loop operations
209
+ * The handler will be called when code requests approval via atp.approval.request()
210
+ */
211
+ onApproval(handler) {
212
+ this.approvalHandler = handler;
213
+ log.info('Approval handler configured');
214
+ return this;
215
+ }
216
+ async listen(port) {
217
+ if (this.httpServer) {
218
+ throw new Error('Server is already running');
219
+ }
220
+ this.isRunning = true;
221
+ this.sessionManager = new ClientSessionManager({
222
+ cache: this.cacheProvider,
223
+ tokenTTL: this.config.clientInit.tokenTTL,
224
+ tokenRotation: this.config.clientInit.tokenRotation,
225
+ });
226
+ this.validator = new CodeValidator();
227
+ this.executor = new SandboxExecutor({
228
+ defaultTimeout: this.config.execution.timeout,
229
+ maxTimeout: this.config.execution.timeout * 2,
230
+ defaultMemoryLimit: this.config.execution.memory,
231
+ maxMemoryLimit: this.config.execution.memory * 2,
232
+ defaultLLMCallLimit: this.config.execution.llmCalls,
233
+ maxLLMCallLimit: this.config.execution.llmCalls * 2,
234
+ cacheProvider: this.cacheProvider,
235
+ }, this.apiGroups, this.approvalHandler, this.sessionManager);
236
+ for (const group of this.apiGroups) {
237
+ log.info(` - ${group.name}: ${group.functions?.length || 0} functions`);
238
+ }
239
+ this.searchEngine = new SearchEngine(this.apiGroups);
240
+ this.explorerService = new ExplorerService(this.apiGroups);
241
+ this.stateManager = new ExecutionStateManager(this.cacheProvider, {
242
+ ttl: this.config.executionState.ttl,
243
+ maxPauseDuration: this.config.executionState.maxPauseDuration,
244
+ keyPrefix: this.config.executionState.keyPrefix,
245
+ });
246
+ this.httpServer = createHTTPServer((req, res) => {
247
+ handleHTTPRequest(req, res, {
248
+ cacheProvider: this.cacheProvider,
249
+ authProvider: this.authProvider,
250
+ auditSink: this.auditSink,
251
+ customLogger: this.customLogger,
252
+ middleware: this.middleware,
253
+ routeHandler: (ctx) => handleRoute(ctx, this),
254
+ sessionManager: this.sessionManager,
255
+ }, this.responseHeaders).catch((error) => {
256
+ log.error('Unhandled error in HTTP request handler:', error);
257
+ try {
258
+ if (!res.headersSent) {
259
+ res.writeHead(500, { 'Content-Type': 'application/json' });
260
+ res.end(JSON.stringify({ error: 'Internal server error' }));
261
+ }
262
+ }
263
+ catch (e) { }
264
+ });
265
+ });
266
+ if (process.env.NODE_ENV === 'test') {
267
+ this.httpServer.keepAliveTimeout = 5000;
268
+ this.httpServer.headersTimeout = 6000;
269
+ }
270
+ return new Promise((resolve, reject) => {
271
+ this.httpServer.listen(port, () => {
272
+ printBanner({
273
+ port,
274
+ cacheProvider: this.cacheProvider,
275
+ authProvider: this.authProvider,
276
+ auditSink: this.auditSink,
277
+ });
278
+ resolve();
279
+ });
280
+ this.httpServer.on('error', reject);
281
+ });
282
+ }
283
+ async stop() {
284
+ if (!this.httpServer)
285
+ return;
286
+ this.httpServer.closeAllConnections?.();
287
+ await new Promise((resolve, reject) => {
288
+ this.httpServer.close((err) => (err ? reject(err) : resolve()));
289
+ });
290
+ shutdownAudit();
291
+ shutdownLogger();
292
+ await Promise.all([
293
+ this.cacheProvider?.disconnect?.(),
294
+ this.authProvider?.disconnect?.(),
295
+ this.auditSink?.disconnect?.(),
296
+ this.stateManager?.close(),
297
+ this.sessionManager?.cleanupAll(),
298
+ ]);
299
+ this.isRunning = false;
300
+ }
301
+ getInfo() {
302
+ return getServerInfo({
303
+ maxTimeout: this.config.execution.timeout,
304
+ maxMemory: this.config.execution.memory,
305
+ maxLLMCalls: this.config.execution.llmCalls,
306
+ });
307
+ }
308
+ async getDefinitions(ctx) {
309
+ const definitions = await getDefinitions(this.apiGroups);
310
+ if (ctx && ctx.clientId && this.sessionManager) {
311
+ const session = await this.sessionManager.getSession(ctx.clientId);
312
+ if (session?.guidance) {
313
+ return {
314
+ ...definitions,
315
+ guidance: session.guidance,
316
+ };
317
+ }
318
+ }
319
+ return definitions;
320
+ }
321
+ async handleInit(ctx) {
322
+ if (!this.sessionManager)
323
+ ctx.throw(503, 'Session manager not initialized');
324
+ return await handleInit(ctx, this.sessionManager, this.auditSink);
325
+ }
326
+ async handleSearch(ctx) {
327
+ if (!this.searchEngine)
328
+ ctx.throw(503, 'Search not initialized');
329
+ return await handleSearch(ctx, this.searchEngine, this.config);
330
+ }
331
+ async handleSearchQuery(ctx) {
332
+ if (!this.searchEngine)
333
+ ctx.throw(503, 'Search not initialized');
334
+ return await handleSearchQuery(ctx, this.searchEngine, this.config);
335
+ }
336
+ async handleExplore(ctx) {
337
+ if (!this.explorerService)
338
+ ctx.throw(503, 'Explorer not initialized');
339
+ return await handleExplore(ctx, this.explorerService);
340
+ }
341
+ async handleExecute(ctx) {
342
+ if (!this.executor || !this.validator || !this.stateManager) {
343
+ ctx.throw(503, 'Execution not initialized');
344
+ }
345
+ return await handleExecute(ctx, this.executor, this.stateManager, this.config, this.auditSink, this.sessionManager);
346
+ }
347
+ async handleResume(ctx, executionId) {
348
+ if (!this.executor || !this.stateManager) {
349
+ ctx.throw(503, 'Execution not initialized');
350
+ }
351
+ return await handleResume(ctx, executionId, this.executor, this.stateManager, this.config, this.sessionManager);
352
+ }
353
+ /**
354
+ * Get raw Node.js request handler for framework integration
355
+ * Use this to integrate ATP with Express, Fastify, or any Node.js framework
356
+ */
357
+ handler() {
358
+ if (!this.executor ||
359
+ !this.validator ||
360
+ !this.stateManager ||
361
+ !this.sessionManager ||
362
+ !this.searchEngine ||
363
+ !this.explorerService) {
364
+ throw new Error('Server not initialized. Call listen() first or initialize components manually.');
365
+ }
366
+ this.isRunning = true;
367
+ return (req, res) => handleHTTPRequest(req, res, {
368
+ cacheProvider: this.cacheProvider,
369
+ authProvider: this.authProvider,
370
+ auditSink: this.auditSink,
371
+ customLogger: this.customLogger,
372
+ middleware: this.middleware,
373
+ routeHandler: (ctx) => handleRoute(ctx, this),
374
+ sessionManager: this.sessionManager,
375
+ }, this.responseHeaders);
376
+ }
377
+ /**
378
+ * Get Express middleware
379
+ * @example
380
+ * const app = express();
381
+ * app.use('/atp', server.toExpress());
382
+ */
383
+ toExpress() {
384
+ const requestHandler = this.handler();
385
+ return (req, res, next) => {
386
+ requestHandler(req, res).catch(next);
387
+ };
388
+ }
389
+ /**
390
+ * Get Fastify handler
391
+ * @example
392
+ * fastify.all('/atp/*', server.toFastify());
393
+ */
394
+ toFastify() {
395
+ const requestHandler = this.handler();
396
+ return async (request, reply) => {
397
+ const req = request.raw;
398
+ const res = reply.raw;
399
+ await requestHandler(req, res);
400
+ };
401
+ }
402
+ /**
403
+ * Parse OpenTelemetry headers from environment variable format
404
+ * Format: "key1=value1,key2=value2"
405
+ */
406
+ parseOtelHeaders(headersStr) {
407
+ if (!headersStr)
408
+ return {};
409
+ const headers = {};
410
+ const pairs = headersStr.split(',');
411
+ for (const pair of pairs) {
412
+ const [key, value] = pair.split('=');
413
+ if (key && value) {
414
+ headers[key.trim()] = value.trim();
415
+ }
416
+ }
417
+ return headers;
418
+ }
419
+ }
420
+ export function createServer(config) {
421
+ return new AgentToolProtocolServer(config);
422
+ }
423
+ //# sourceMappingURL=create-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-server.js","sourceRoot":"","sources":["../src/create-server.ts"],"names":[],"mappings":"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"}