@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.
- package/README.md +489 -0
- package/dist/aggregator/index.d.ts +59 -0
- package/dist/aggregator/index.d.ts.map +1 -0
- package/dist/aggregator/index.js +171 -0
- package/dist/aggregator/index.js.map +1 -0
- package/dist/callback/index.d.ts +98 -0
- package/dist/callback/index.d.ts.map +1 -0
- package/dist/callback/index.js +136 -0
- package/dist/callback/index.js.map +1 -0
- package/dist/client-sessions.d.ts +82 -0
- package/dist/client-sessions.d.ts.map +1 -0
- package/dist/client-sessions.js +174 -0
- package/dist/client-sessions.js.map +1 -0
- package/dist/controllers/definitions.controller.d.ts +4 -0
- package/dist/controllers/definitions.controller.d.ts.map +1 -0
- package/dist/controllers/definitions.controller.js +11 -0
- package/dist/controllers/definitions.controller.js.map +1 -0
- package/dist/controllers/execute.controller.d.ts +18 -0
- package/dist/controllers/execute.controller.d.ts.map +1 -0
- package/dist/controllers/execute.controller.js +122 -0
- package/dist/controllers/execute.controller.js.map +1 -0
- package/dist/controllers/info.controller.d.ts +3 -0
- package/dist/controllers/info.controller.d.ts.map +1 -0
- package/dist/controllers/info.controller.js +13 -0
- package/dist/controllers/info.controller.js.map +1 -0
- package/dist/controllers/resume.controller.d.ts +11 -0
- package/dist/controllers/resume.controller.d.ts.map +1 -0
- package/dist/controllers/resume.controller.js +61 -0
- package/dist/controllers/resume.controller.js.map +1 -0
- package/dist/controllers/search.controller.d.ts +4 -0
- package/dist/controllers/search.controller.d.ts.map +1 -0
- package/dist/controllers/search.controller.js +7 -0
- package/dist/controllers/search.controller.js.map +1 -0
- package/dist/controllers/stream.controller.d.ts +19 -0
- package/dist/controllers/stream.controller.d.ts.map +1 -0
- package/dist/controllers/stream.controller.js +141 -0
- package/dist/controllers/stream.controller.js.map +1 -0
- package/dist/core/config.d.ts +161 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +7 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/http.d.ts +4 -0
- package/dist/core/http.d.ts.map +1 -0
- package/dist/core/http.js +17 -0
- package/dist/core/http.js.map +1 -0
- package/dist/create-server.d.ts +120 -0
- package/dist/create-server.d.ts.map +1 -0
- package/dist/create-server.js +423 -0
- package/dist/create-server.js.map +1 -0
- package/dist/execution-state/index.d.ts +95 -0
- package/dist/execution-state/index.d.ts.map +1 -0
- package/dist/execution-state/index.js +128 -0
- package/dist/execution-state/index.js.map +1 -0
- package/dist/executor/ast-provenance-bridge.d.ts +12 -0
- package/dist/executor/ast-provenance-bridge.d.ts.map +1 -0
- package/dist/executor/ast-provenance-bridge.js +66 -0
- package/dist/executor/ast-provenance-bridge.js.map +1 -0
- package/dist/executor/ast-tracking-runtime.d.ts +7 -0
- package/dist/executor/ast-tracking-runtime.d.ts.map +1 -0
- package/dist/executor/ast-tracking-runtime.js +559 -0
- package/dist/executor/ast-tracking-runtime.js.map +1 -0
- package/dist/executor/bootstrap-generated.d.ts +32 -0
- package/dist/executor/bootstrap-generated.d.ts.map +1 -0
- package/dist/executor/bootstrap-generated.js +90 -0
- package/dist/executor/bootstrap-generated.js.map +1 -0
- package/dist/executor/compiler-config.d.ts +32 -0
- package/dist/executor/compiler-config.d.ts.map +1 -0
- package/dist/executor/compiler-config.js +99 -0
- package/dist/executor/compiler-config.js.map +1 -0
- package/dist/executor/constants.d.ts +4 -0
- package/dist/executor/constants.d.ts.map +1 -0
- package/dist/executor/constants.js +4 -0
- package/dist/executor/constants.js.map +1 -0
- package/dist/executor/error-handler.d.ts +9 -0
- package/dist/executor/error-handler.d.ts.map +1 -0
- package/dist/executor/error-handler.js +95 -0
- package/dist/executor/error-handler.js.map +1 -0
- package/dist/executor/execution-error-handler.d.ts +7 -0
- package/dist/executor/execution-error-handler.d.ts.map +1 -0
- package/dist/executor/execution-error-handler.js +136 -0
- package/dist/executor/execution-error-handler.js.map +1 -0
- package/dist/executor/executor.d.ts +20 -0
- package/dist/executor/executor.d.ts.map +1 -0
- package/dist/executor/executor.js +452 -0
- package/dist/executor/executor.js.map +1 -0
- package/dist/executor/index.d.ts +4 -0
- package/dist/executor/index.d.ts.map +1 -0
- package/dist/executor/index.js +3 -0
- package/dist/executor/index.js.map +1 -0
- package/dist/executor/resume-handler.d.ts +9 -0
- package/dist/executor/resume-handler.d.ts.map +1 -0
- package/dist/executor/resume-handler.js +22 -0
- package/dist/executor/resume-handler.js.map +1 -0
- package/dist/executor/sandbox-builder.d.ts +29 -0
- package/dist/executor/sandbox-builder.d.ts.map +1 -0
- package/dist/executor/sandbox-builder.js +538 -0
- package/dist/executor/sandbox-builder.js.map +1 -0
- package/dist/executor/sandbox-injector.d.ts +7 -0
- package/dist/executor/sandbox-injector.d.ts.map +1 -0
- package/dist/executor/sandbox-injector.js +293 -0
- package/dist/executor/sandbox-injector.js.map +1 -0
- package/dist/executor/types.d.ts +21 -0
- package/dist/executor/types.d.ts.map +1 -0
- package/dist/executor/types.js +2 -0
- package/dist/executor/types.js.map +1 -0
- package/dist/explorer/index.d.ts +69 -0
- package/dist/explorer/index.d.ts.map +1 -0
- package/dist/explorer/index.js +228 -0
- package/dist/explorer/index.js.map +1 -0
- package/dist/handlers/definitions.handler.d.ts +3 -0
- package/dist/handlers/definitions.handler.d.ts.map +1 -0
- package/dist/handlers/definitions.handler.js +11 -0
- package/dist/handlers/definitions.handler.js.map +1 -0
- package/dist/handlers/execute.handler.d.ts +7 -0
- package/dist/handlers/execute.handler.d.ts.map +1 -0
- package/dist/handlers/execute.handler.js +225 -0
- package/dist/handlers/execute.handler.js.map +1 -0
- package/dist/handlers/explorer.handler.d.ts +4 -0
- package/dist/handlers/explorer.handler.d.ts.map +1 -0
- package/dist/handlers/explorer.handler.js +10 -0
- package/dist/handlers/explorer.handler.js.map +1 -0
- package/dist/handlers/init.handler.d.ts +5 -0
- package/dist/handlers/init.handler.d.ts.map +1 -0
- package/dist/handlers/init.handler.js +41 -0
- package/dist/handlers/init.handler.js.map +1 -0
- package/dist/handlers/resume.handler.d.ts +6 -0
- package/dist/handlers/resume.handler.d.ts.map +1 -0
- package/dist/handlers/resume.handler.js +256 -0
- package/dist/handlers/resume.handler.js.map +1 -0
- package/dist/handlers/search.handler.d.ts +5 -0
- package/dist/handlers/search.handler.d.ts.map +1 -0
- package/dist/handlers/search.handler.js +11 -0
- package/dist/handlers/search.handler.js.map +1 -0
- package/dist/http/request-handler.d.ts +15 -0
- package/dist/http/request-handler.d.ts.map +1 -0
- package/dist/http/request-handler.js +94 -0
- package/dist/http/request-handler.js.map +1 -0
- package/dist/http/router.d.ts +4 -0
- package/dist/http/router.d.ts.map +1 -0
- package/dist/http/router.js +32 -0
- package/dist/http/router.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/instrumentation/index.d.ts +5 -0
- package/dist/instrumentation/index.d.ts.map +1 -0
- package/dist/instrumentation/index.js +5 -0
- package/dist/instrumentation/index.js.map +1 -0
- package/dist/instrumentation/serializer.d.ts +61 -0
- package/dist/instrumentation/serializer.d.ts.map +1 -0
- package/dist/instrumentation/serializer.js +334 -0
- package/dist/instrumentation/serializer.js.map +1 -0
- package/dist/instrumentation/state-manager.d.ts +61 -0
- package/dist/instrumentation/state-manager.d.ts.map +1 -0
- package/dist/instrumentation/state-manager.js +205 -0
- package/dist/instrumentation/state-manager.js.map +1 -0
- package/dist/instrumentation/transformer.d.ts +9 -0
- package/dist/instrumentation/transformer.d.ts.map +1 -0
- package/dist/instrumentation/transformer.js +70 -0
- package/dist/instrumentation/transformer.js.map +1 -0
- package/dist/instrumentation/types.d.ts +59 -0
- package/dist/instrumentation/types.d.ts.map +1 -0
- package/dist/instrumentation/types.js +5 -0
- package/dist/instrumentation/types.js.map +1 -0
- package/dist/middleware/audit.d.ts +18 -0
- package/dist/middleware/audit.d.ts.map +1 -0
- package/dist/middleware/audit.js +76 -0
- package/dist/middleware/audit.js.map +1 -0
- package/dist/openapi/index.d.ts +133 -0
- package/dist/openapi/index.d.ts.map +1 -0
- package/dist/openapi/index.js +235 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/openapi-loader.d.ts +87 -0
- package/dist/openapi-loader.d.ts.map +1 -0
- package/dist/openapi-loader.js +491 -0
- package/dist/openapi-loader.js.map +1 -0
- package/dist/routes/index.d.ts +21 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +47 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/search/index.d.ts +48 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +156 -0
- package/dist/search/index.js.map +1 -0
- package/dist/security/index.d.ts +2 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +2 -0
- package/dist/security/index.js.map +1 -0
- package/dist/shutdown.d.ts +19 -0
- package/dist/shutdown.d.ts.map +1 -0
- package/dist/shutdown.js +87 -0
- package/dist/shutdown.js.map +1 -0
- package/dist/utils/banner.d.ts +12 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +18 -0
- package/dist/utils/banner.js.map +1 -0
- package/dist/utils/context.d.ts +16 -0
- package/dist/utils/context.d.ts.map +1 -0
- package/dist/utils/context.js +44 -0
- package/dist/utils/context.js.map +1 -0
- package/dist/utils/error.d.ts +8 -0
- package/dist/utils/error.d.ts.map +1 -0
- package/dist/utils/error.js +17 -0
- package/dist/utils/error.js.map +1 -0
- package/dist/utils/hint-based-instrumentation.d.ts +14 -0
- package/dist/utils/hint-based-instrumentation.d.ts.map +1 -0
- package/dist/utils/hint-based-instrumentation.js +84 -0
- package/dist/utils/hint-based-instrumentation.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/info.d.ts +20 -0
- package/dist/utils/info.d.ts.map +1 -0
- package/dist/utils/info.js +15 -0
- package/dist/utils/info.js.map +1 -0
- package/dist/utils/provenance-reattachment.d.ts +32 -0
- package/dist/utils/provenance-reattachment.d.ts.map +1 -0
- package/dist/utils/provenance-reattachment.js +115 -0
- package/dist/utils/provenance-reattachment.js.map +1 -0
- package/dist/utils/request.d.ts +21 -0
- package/dist/utils/request.d.ts.map +1 -0
- package/dist/utils/request.js +44 -0
- package/dist/utils/request.js.map +1 -0
- package/dist/utils/response.d.ts +30 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +53 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/utils/runtime-types.d.ts +6 -0
- package/dist/utils/runtime-types.d.ts.map +1 -0
- package/dist/utils/runtime-types.js +14 -0
- package/dist/utils/runtime-types.js.map +1 -0
- package/dist/utils/schema.d.ts +9 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +13 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/token-emitter.d.ts +21 -0
- package/dist/utils/token-emitter.d.ts.map +1 -0
- package/dist/utils/token-emitter.js +129 -0
- package/dist/utils/token-emitter.js.map +1 -0
- package/dist/validator/index.d.ts +36 -0
- package/dist/validator/index.d.ts.map +1 -0
- package/dist/validator/index.js +224 -0
- package/dist/validator/index.js.map +1 -0
- package/package.json +68 -0
- package/src/aggregator/index.ts +207 -0
- package/src/callback/index.ts +191 -0
- package/src/client-sessions.ts +234 -0
- package/src/controllers/definitions.controller.ts +19 -0
- package/src/controllers/execute.controller.ts +166 -0
- package/src/controllers/info.controller.ts +14 -0
- package/src/controllers/resume.controller.ts +92 -0
- package/src/controllers/search.controller.ts +16 -0
- package/src/controllers/stream.controller.ts +190 -0
- package/src/core/config.ts +180 -0
- package/src/core/http.ts +21 -0
- package/src/create-server.ts +536 -0
- package/src/execution-state/index.ts +204 -0
- package/src/executor/ast-provenance-bridge.ts +80 -0
- package/src/executor/ast-tracking-runtime.ts +558 -0
- package/src/executor/bootstrap-generated.ts +90 -0
- package/src/executor/compiler-config.ts +146 -0
- package/src/executor/constants.ts +5 -0
- package/src/executor/error-handler.ts +118 -0
- package/src/executor/execution-error-handler.ts +178 -0
- package/src/executor/executor.ts +631 -0
- package/src/executor/index.ts +3 -0
- package/src/executor/resume-handler.ts +39 -0
- package/src/executor/sandbox-builder.ts +684 -0
- package/src/executor/sandbox-injector.ts +345 -0
- package/src/executor/types.ts +22 -0
- package/src/explorer/index.ts +297 -0
- package/src/handlers/definitions.handler.ts +13 -0
- package/src/handlers/execute.handler.ts +286 -0
- package/src/handlers/explorer.handler.ts +18 -0
- package/src/handlers/init.handler.ts +53 -0
- package/src/handlers/resume.handler.ts +316 -0
- package/src/handlers/search.handler.ts +32 -0
- package/src/http/request-handler.ts +117 -0
- package/src/http/router.ts +29 -0
- package/src/index.ts +60 -0
- package/src/instrumentation/index.ts +4 -0
- package/src/instrumentation/serializer.ts +421 -0
- package/src/instrumentation/state-manager.ts +237 -0
- package/src/instrumentation/transformer.ts +84 -0
- package/src/instrumentation/types.ts +76 -0
- package/src/middleware/audit.ts +101 -0
- package/src/openapi/index.ts +378 -0
- package/src/openapi-loader.ts +744 -0
- package/src/routes/index.ts +93 -0
- package/src/search/index.ts +216 -0
- package/src/security/index.ts +1 -0
- package/src/shutdown.ts +108 -0
- package/src/utils/banner.ts +25 -0
- package/src/utils/context.ts +58 -0
- package/src/utils/error.ts +25 -0
- package/src/utils/hint-based-instrumentation.ts +99 -0
- package/src/utils/index.ts +15 -0
- package/src/utils/info.ts +31 -0
- package/src/utils/provenance-reattachment.ts +144 -0
- package/src/utils/request.ts +53 -0
- package/src/utils/response.ts +69 -0
- package/src/utils/runtime-types.ts +14 -0
- package/src/utils/schema.ts +18 -0
- package/src/utils/token-emitter.ts +182 -0
- 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":"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"}
|
|
@@ -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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"}
|