@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,133 @@
1
+ import type { APIGroupConfig } from '@mondaydotcomorg/atp-protocol';
2
+ interface OpenAPISpec {
3
+ openapi: string;
4
+ info: {
5
+ title: string;
6
+ version: string;
7
+ description?: string;
8
+ };
9
+ paths: Record<string, Record<string, OpenAPIOperation>>;
10
+ servers?: Array<{
11
+ url: string;
12
+ description?: string;
13
+ }>;
14
+ components?: {
15
+ schemas?: Record<string, unknown>;
16
+ securitySchemes?: Record<string, OpenAPISecurityScheme>;
17
+ };
18
+ security?: Array<Record<string, string[]>>;
19
+ }
20
+ interface OpenAPISecurityScheme {
21
+ type: 'apiKey' | 'http' | 'oauth2' | 'openIdConnect';
22
+ description?: string;
23
+ name?: string;
24
+ in?: 'query' | 'header' | 'cookie';
25
+ scheme?: string;
26
+ bearerFormat?: string;
27
+ flows?: {
28
+ clientCredentials?: {
29
+ tokenUrl: string;
30
+ refreshUrl?: string;
31
+ scopes?: Record<string, string>;
32
+ };
33
+ authorizationCode?: {
34
+ authorizationUrl: string;
35
+ tokenUrl: string;
36
+ refreshUrl?: string;
37
+ scopes?: Record<string, string>;
38
+ };
39
+ implicit?: {
40
+ authorizationUrl: string;
41
+ scopes?: Record<string, string>;
42
+ };
43
+ password?: {
44
+ tokenUrl: string;
45
+ refreshUrl?: string;
46
+ scopes?: Record<string, string>;
47
+ };
48
+ };
49
+ }
50
+ interface OpenAPIOperation {
51
+ summary?: string;
52
+ description?: string;
53
+ operationId?: string;
54
+ parameters?: Array<{
55
+ name: string;
56
+ in: string;
57
+ required?: boolean;
58
+ schema?: {
59
+ type?: string;
60
+ description?: string;
61
+ };
62
+ description?: string;
63
+ }>;
64
+ requestBody?: {
65
+ content?: {
66
+ 'application/json'?: {
67
+ schema?: unknown;
68
+ };
69
+ };
70
+ };
71
+ responses?: Record<string, unknown>;
72
+ /** Per-operation security requirements */
73
+ security?: Array<Record<string, string[]>>;
74
+ }
75
+ /**
76
+ * OpenAPIConverter converts OpenAPI specifications to Agent Tool Protocol API groups.
77
+ */
78
+ export declare class OpenAPIConverter {
79
+ /**
80
+ * Converts an OpenAPI specification to an API group configuration.
81
+ * @param spec - OpenAPI specification object
82
+ * @param httpClient - Function to execute HTTP requests (optional)
83
+ * @param authEnvVarPrefix - Prefix for environment variables (e.g., 'GITHUB' -> 'GITHUB_API_KEY')
84
+ * @returns APIGroupConfig object
85
+ */
86
+ static fromSpec(spec: OpenAPISpec, httpClient?: (method: string, path: string, params?: unknown) => Promise<unknown>, authEnvVarPrefix?: string): APIGroupConfig;
87
+ /**
88
+ * Converts an OpenAPI operation to a function definition.
89
+ */
90
+ private static convertOperation;
91
+ /**
92
+ * Builds JSON schema from OpenAPI operation parameters and request body.
93
+ */
94
+ private static buildInputSchema;
95
+ /**
96
+ * Generates a function name from HTTP method and path.
97
+ */
98
+ private static generateFunctionName;
99
+ /**
100
+ * Sanitizes a name for use as an API group name.
101
+ */
102
+ private static sanitizeName;
103
+ /**
104
+ * Extracts required OAuth scopes from security requirements
105
+ */
106
+ private static extractRequiredScopes;
107
+ /**
108
+ * Infers operation type from HTTP method
109
+ */
110
+ private static inferOperationType;
111
+ /**
112
+ * Parses authentication from OpenAPI security schemes
113
+ */
114
+ private static parseAuthentication;
115
+ /**
116
+ * Loads OpenAPI spec from a URL.
117
+ * @param url - URL to fetch OpenAPI spec from
118
+ * @param httpClient - Optional HTTP client function
119
+ * @param authEnvVarPrefix - Prefix for environment variables
120
+ * @returns APIGroupConfig object
121
+ */
122
+ static fromURL(url: string, httpClient?: (method: string, path: string, params?: unknown) => Promise<unknown>, authEnvVarPrefix?: string): Promise<APIGroupConfig>;
123
+ /**
124
+ * Loads OpenAPI spec from a file path.
125
+ * @param filePath - Path to OpenAPI spec file
126
+ * @param httpClient - Optional HTTP client function
127
+ * @param authEnvVarPrefix - Prefix for environment variables
128
+ * @returns APIGroupConfig object
129
+ */
130
+ static fromFile(filePath: string, httpClient?: (method: string, path: string, params?: unknown) => Promise<unknown>, authEnvVarPrefix?: string): Promise<APIGroupConfig>;
131
+ }
132
+ export {};
133
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/openapi/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,cAAc,EAGd,MAAM,+BAA+B,CAAC;AAUvC,UAAU,WAAW;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvD,UAAU,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;KACxD,CAAC;IACF,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C;AAED,UAAU,qBAAqB;IAC9B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,eAAe,CAAC;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE;QACP,iBAAiB,CAAC,EAAE;YACnB,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC,CAAC;QACF,iBAAiB,CAAC,EAAE;YACnB,gBAAgB,EAAE,MAAM,CAAC;YACzB,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC,CAAC;QACF,QAAQ,CAAC,EAAE;YACV,gBAAgB,EAAE,MAAM,CAAC;YACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC,CAAC;QACF,QAAQ,CAAC,EAAE;YACV,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAChC,CAAC;KACF,CAAC;CACF;AAED,UAAU,gBAAgB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,KAAK,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACjD,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC,CAAC;IACH,WAAW,CAAC,EAAE;QACb,OAAO,CAAC,EAAE;YACT,kBAAkB,CAAC,EAAE;gBACpB,MAAM,CAAC,EAAE,OAAO,CAAC;aACjB,CAAC;SACF,CAAC;KACF,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC5B;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,CACd,IAAI,EAAE,WAAW,EACjB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EACjF,gBAAgB,CAAC,EAAE,MAAM,GACvB,cAAc;IA4BjB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAqC/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAwC/B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAWnC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,YAAY;IAO3B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAepC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,kBAAkB;IAWjC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAwElC;;;;;;OAMG;WACU,OAAO,CACnB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EACjF,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,cAAc,CAAC;IAS1B;;;;;;OAMG;WACU,QAAQ,CACpB,QAAQ,EAAE,MAAM,EAChB,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,EACjF,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,cAAc,CAAC;CAK1B"}
@@ -0,0 +1,235 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ /**
3
+ * OpenAPIConverter converts OpenAPI specifications to Agent Tool Protocol API groups.
4
+ */
5
+ export class OpenAPIConverter {
6
+ /**
7
+ * Converts an OpenAPI specification to an API group configuration.
8
+ * @param spec - OpenAPI specification object
9
+ * @param httpClient - Function to execute HTTP requests (optional)
10
+ * @param authEnvVarPrefix - Prefix for environment variables (e.g., 'GITHUB' -> 'GITHUB_API_KEY')
11
+ * @returns APIGroupConfig object
12
+ */
13
+ static fromSpec(spec, httpClient, authEnvVarPrefix) {
14
+ const functions = [];
15
+ const baseUrl = spec.servers?.[0]?.url || '';
16
+ const globalSecurity = spec.security;
17
+ for (const [path, methods] of Object.entries(spec.paths)) {
18
+ for (const [method, operation] of Object.entries(methods)) {
19
+ const func = this.convertOperation(path, method, operation, httpClient, globalSecurity);
20
+ if (func) {
21
+ functions.push(func);
22
+ }
23
+ }
24
+ }
25
+ const auth = this.parseAuthentication(spec, authEnvVarPrefix);
26
+ return {
27
+ name: this.sanitizeName(spec.info.title),
28
+ type: 'openapi',
29
+ spec,
30
+ functions,
31
+ url: baseUrl,
32
+ auth,
33
+ };
34
+ }
35
+ /**
36
+ * Converts an OpenAPI operation to a function definition.
37
+ */
38
+ static convertOperation(path, method, operation, httpClient, globalSecurity) {
39
+ const functionName = operation.operationId || this.generateFunctionName(method, path);
40
+ const description = operation.summary || operation.description || `${method.toUpperCase()} ${path}`;
41
+ const inputSchema = this.buildInputSchema(operation);
42
+ const requiredScopes = this.extractRequiredScopes(operation.security || globalSecurity);
43
+ const operationType = this.inferOperationType(method);
44
+ const handler = httpClient
45
+ ? async (input) => {
46
+ return await httpClient(method, path, input);
47
+ }
48
+ : async (input) => {
49
+ throw new Error(`No HTTP client configured for ${functionName}`);
50
+ };
51
+ return {
52
+ name: functionName,
53
+ description,
54
+ inputSchema,
55
+ handler,
56
+ metadata: {
57
+ operationType,
58
+ ...(requiredScopes.length > 0 && { requiredScopes }),
59
+ },
60
+ };
61
+ }
62
+ /**
63
+ * Builds JSON schema from OpenAPI operation parameters and request body.
64
+ */
65
+ static buildInputSchema(operation) {
66
+ const properties = {};
67
+ const required = [];
68
+ if (operation.parameters) {
69
+ for (const param of operation.parameters) {
70
+ properties[param.name] = {
71
+ type: param.schema?.type || 'string',
72
+ description: param.description || param.schema?.description,
73
+ };
74
+ if (param.required) {
75
+ required.push(param.name);
76
+ }
77
+ }
78
+ }
79
+ if (operation.requestBody?.content?.['application/json']?.schema) {
80
+ const bodySchema = operation.requestBody.content['application/json'].schema;
81
+ if (bodySchema.properties) {
82
+ Object.assign(properties, bodySchema.properties);
83
+ }
84
+ if (bodySchema.required) {
85
+ required.push(...bodySchema.required);
86
+ }
87
+ }
88
+ return {
89
+ type: 'object',
90
+ properties,
91
+ ...(required.length > 0 && { required }),
92
+ };
93
+ }
94
+ /**
95
+ * Generates a function name from HTTP method and path.
96
+ */
97
+ static generateFunctionName(method, path) {
98
+ const cleanPath = path
99
+ .replace(/^[^a-zA-Z0-9_]+/, '')
100
+ .replace(/\{([^}]+)\}/g, 'By_$1')
101
+ .replace(/[^a-zA-Z0-9_]/g, '_')
102
+ .replace(/_+/g, '_')
103
+ .replace(/^_|_$/g, '');
104
+ return `${method}_${cleanPath}`;
105
+ }
106
+ /**
107
+ * Sanitizes a name for use as an API group name.
108
+ */
109
+ static sanitizeName(name) {
110
+ return name
111
+ .toLowerCase()
112
+ .replace(/[^a-z0-9]+/g, '_')
113
+ .replace(/^_|_$/g, '');
114
+ }
115
+ /**
116
+ * Extracts required OAuth scopes from security requirements
117
+ */
118
+ static extractRequiredScopes(security) {
119
+ if (!security || security.length === 0) {
120
+ return [];
121
+ }
122
+ const allScopes = new Set();
123
+ for (const secReq of security) {
124
+ for (const scopes of Object.values(secReq)) {
125
+ scopes.forEach((scope) => allScopes.add(scope));
126
+ }
127
+ }
128
+ return Array.from(allScopes);
129
+ }
130
+ /**
131
+ * Infers operation type from HTTP method
132
+ */
133
+ static inferOperationType(method) {
134
+ const m = method.toLowerCase();
135
+ if (m === 'get' || m === 'head' || m === 'options') {
136
+ return 'read';
137
+ }
138
+ if (m === 'delete') {
139
+ return 'destructive';
140
+ }
141
+ return 'write';
142
+ }
143
+ /**
144
+ * Parses authentication from OpenAPI security schemes
145
+ */
146
+ static parseAuthentication(spec, envVarPrefix) {
147
+ if (!spec.security || spec.security.length === 0) {
148
+ return undefined;
149
+ }
150
+ const securityReq = spec.security[0];
151
+ if (!securityReq) {
152
+ return undefined;
153
+ }
154
+ const schemeName = Object.keys(securityReq)[0];
155
+ if (!schemeName || !spec.components?.securitySchemes) {
156
+ return undefined;
157
+ }
158
+ const scheme = spec.components.securitySchemes[schemeName];
159
+ if (!scheme) {
160
+ return undefined;
161
+ }
162
+ const envPrefix = envVarPrefix || this.sanitizeName(spec.info.title).toUpperCase();
163
+ switch (scheme.type) {
164
+ case 'apiKey':
165
+ return {
166
+ scheme: 'apiKey',
167
+ in: scheme.in === 'query' ? 'query' : 'header',
168
+ name: scheme.name || 'X-API-Key',
169
+ envVar: `${envPrefix}_API_KEY`,
170
+ };
171
+ case 'http':
172
+ if (scheme.scheme === 'bearer') {
173
+ return {
174
+ scheme: 'bearer',
175
+ bearerFormat: scheme.bearerFormat,
176
+ envVar: `${envPrefix}_TOKEN`,
177
+ };
178
+ }
179
+ else if (scheme.scheme === 'basic') {
180
+ return {
181
+ scheme: 'basic',
182
+ usernameEnvVar: `${envPrefix}_USERNAME`,
183
+ passwordEnvVar: `${envPrefix}_PASSWORD`,
184
+ };
185
+ }
186
+ break;
187
+ case 'oauth2':
188
+ if (scheme.flows?.clientCredentials) {
189
+ return {
190
+ scheme: 'oauth2',
191
+ flow: 'clientCredentials',
192
+ tokenUrl: scheme.flows.clientCredentials.tokenUrl,
193
+ clientIdEnvVar: `${envPrefix}_CLIENT_ID`,
194
+ clientSecretEnvVar: `${envPrefix}_CLIENT_SECRET`,
195
+ scopes: scheme.flows.clientCredentials.scopes
196
+ ? Object.keys(scheme.flows.clientCredentials.scopes)
197
+ : undefined,
198
+ };
199
+ }
200
+ return {
201
+ scheme: 'bearer',
202
+ envVar: `${envPrefix}_TOKEN`,
203
+ };
204
+ }
205
+ return undefined;
206
+ }
207
+ /**
208
+ * Loads OpenAPI spec from a URL.
209
+ * @param url - URL to fetch OpenAPI spec from
210
+ * @param httpClient - Optional HTTP client function
211
+ * @param authEnvVarPrefix - Prefix for environment variables
212
+ * @returns APIGroupConfig object
213
+ */
214
+ static async fromURL(url, httpClient, authEnvVarPrefix) {
215
+ const response = await fetch(url);
216
+ if (!response.ok) {
217
+ throw new Error(`Failed to fetch OpenAPI spec from ${url}: ${response.statusText}`);
218
+ }
219
+ const spec = (await response.json());
220
+ return this.fromSpec(spec, httpClient, authEnvVarPrefix);
221
+ }
222
+ /**
223
+ * Loads OpenAPI spec from a file path.
224
+ * @param filePath - Path to OpenAPI spec file
225
+ * @param httpClient - Optional HTTP client function
226
+ * @param authEnvVarPrefix - Prefix for environment variables
227
+ * @returns APIGroupConfig object
228
+ */
229
+ static async fromFile(filePath, httpClient, authEnvVarPrefix) {
230
+ const content = await readFile(filePath, 'utf-8');
231
+ const spec = JSON.parse(content);
232
+ return this.fromSpec(spec, httpClient, authEnvVarPrefix);
233
+ }
234
+ }
235
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/openapi/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { APIGroupConfig, AuthProvider } from '@mondaydotcomorg/atp-protocol';
2
+ interface OpenAPIOperation {
3
+ operationId?: string;
4
+ summary?: string;
5
+ description?: string;
6
+ tags?: string[];
7
+ deprecated?: boolean;
8
+ parameters?: Array<OpenAPIParameter>;
9
+ requestBody?: OpenAPIRequestBody;
10
+ responses?: Record<string, OpenAPIResponse>;
11
+ security?: Array<Record<string, string[]>>;
12
+ 'x-destructive'?: boolean;
13
+ 'x-requires-approval'?: boolean;
14
+ 'x-risk-level'?: 'low' | 'medium' | 'high' | 'critical';
15
+ 'x-confirm-prompt'?: string;
16
+ [key: string]: unknown;
17
+ }
18
+ interface OpenAPIParameter {
19
+ name: string;
20
+ in: 'query' | 'header' | 'path' | 'cookie';
21
+ required?: boolean;
22
+ schema?: OpenAPISchema;
23
+ description?: string;
24
+ }
25
+ interface OpenAPIRequestBody {
26
+ required?: boolean;
27
+ content?: Record<string, {
28
+ schema?: OpenAPISchema;
29
+ }>;
30
+ }
31
+ interface OpenAPIResponse {
32
+ description?: string;
33
+ content?: Record<string, {
34
+ schema?: OpenAPISchema;
35
+ }>;
36
+ }
37
+ interface OpenAPISchema {
38
+ type?: string;
39
+ properties?: Record<string, OpenAPISchema>;
40
+ items?: OpenAPISchema;
41
+ required?: string[];
42
+ enum?: string[];
43
+ $ref?: string;
44
+ description?: string;
45
+ [key: string]: unknown;
46
+ }
47
+ /**
48
+ * Options for loading OpenAPI spec
49
+ */
50
+ export interface LoadOpenAPIOptions {
51
+ /** API group name */
52
+ name?: string;
53
+ /** Filter operations */
54
+ filter?: {
55
+ /** Include only these tags */
56
+ tags?: string[];
57
+ /** Include only paths matching these patterns */
58
+ paths?: string[];
59
+ /** Exclude paths matching these patterns */
60
+ exclude?: string[];
61
+ /** Include only these HTTP methods */
62
+ methods?: string[];
63
+ /** Custom filter function */
64
+ operation?: (op: OpenAPIOperation, path: string, method: string) => boolean;
65
+ };
66
+ /** Override descriptions for better LLM understanding */
67
+ descriptions?: Record<string, string>;
68
+ /** Annotation mapping */
69
+ annotations?: {
70
+ /** Map OpenAPI extensions to annotations */
71
+ fromExtensions?: Record<string, string>;
72
+ /** Global annotations for all operations */
73
+ global?: Record<string, unknown>;
74
+ /** Per-operation annotations */
75
+ operations?: Record<string, Record<string, unknown>>;
76
+ };
77
+ /** Auth provider (optional, uses server's if not provided) */
78
+ authProvider?: AuthProvider;
79
+ /** Base URL override (if different from spec servers) */
80
+ baseURL?: string;
81
+ }
82
+ /**
83
+ * Load OpenAPI specification and convert to ATP API group
84
+ */
85
+ export declare function loadOpenAPI(source: string, options?: LoadOpenAPIOptions): Promise<APIGroupConfig>;
86
+ export {};
87
+ //# sourceMappingURL=openapi-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openapi-loader.d.ts","sourceRoot":"","sources":["../src/openapi-loader.ts"],"names":[],"mappings":"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"}