@opencontextprotocol/agent 0.1.0

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 (76) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +198 -0
  3. package/dist/src/agent.d.ts +112 -0
  4. package/dist/src/agent.d.ts.map +1 -0
  5. package/dist/src/agent.js +358 -0
  6. package/dist/src/agent.js.map +1 -0
  7. package/dist/src/context.d.ts +108 -0
  8. package/dist/src/context.d.ts.map +1 -0
  9. package/dist/src/context.js +196 -0
  10. package/dist/src/context.js.map +1 -0
  11. package/dist/src/errors.d.ts +40 -0
  12. package/dist/src/errors.d.ts.map +1 -0
  13. package/dist/src/errors.js +63 -0
  14. package/dist/src/errors.js.map +1 -0
  15. package/dist/src/headers.d.ts +63 -0
  16. package/dist/src/headers.d.ts.map +1 -0
  17. package/dist/src/headers.js +238 -0
  18. package/dist/src/headers.js.map +1 -0
  19. package/dist/src/http_client.d.ts +82 -0
  20. package/dist/src/http_client.d.ts.map +1 -0
  21. package/dist/src/http_client.js +181 -0
  22. package/dist/src/http_client.js.map +1 -0
  23. package/dist/src/index.d.ts +25 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +35 -0
  26. package/dist/src/index.js.map +1 -0
  27. package/dist/src/registry.d.ts +52 -0
  28. package/dist/src/registry.d.ts.map +1 -0
  29. package/dist/src/registry.js +164 -0
  30. package/dist/src/registry.js.map +1 -0
  31. package/dist/src/schema_discovery.d.ts +149 -0
  32. package/dist/src/schema_discovery.d.ts.map +1 -0
  33. package/dist/src/schema_discovery.js +707 -0
  34. package/dist/src/schema_discovery.js.map +1 -0
  35. package/dist/src/schemas/ocp-context.json +138 -0
  36. package/dist/src/storage.d.ts +110 -0
  37. package/dist/src/storage.d.ts.map +1 -0
  38. package/dist/src/storage.js +399 -0
  39. package/dist/src/storage.js.map +1 -0
  40. package/dist/src/validation.d.ts +169 -0
  41. package/dist/src/validation.d.ts.map +1 -0
  42. package/dist/src/validation.js +92 -0
  43. package/dist/src/validation.js.map +1 -0
  44. package/dist/tests/agent.test.d.ts +5 -0
  45. package/dist/tests/agent.test.d.ts.map +1 -0
  46. package/dist/tests/agent.test.js +536 -0
  47. package/dist/tests/agent.test.js.map +1 -0
  48. package/dist/tests/context.test.d.ts +5 -0
  49. package/dist/tests/context.test.d.ts.map +1 -0
  50. package/dist/tests/context.test.js +285 -0
  51. package/dist/tests/context.test.js.map +1 -0
  52. package/dist/tests/headers.test.d.ts +5 -0
  53. package/dist/tests/headers.test.d.ts.map +1 -0
  54. package/dist/tests/headers.test.js +356 -0
  55. package/dist/tests/headers.test.js.map +1 -0
  56. package/dist/tests/http_client.test.d.ts +5 -0
  57. package/dist/tests/http_client.test.d.ts.map +1 -0
  58. package/dist/tests/http_client.test.js +373 -0
  59. package/dist/tests/http_client.test.js.map +1 -0
  60. package/dist/tests/registry.test.d.ts +5 -0
  61. package/dist/tests/registry.test.d.ts.map +1 -0
  62. package/dist/tests/registry.test.js +232 -0
  63. package/dist/tests/registry.test.js.map +1 -0
  64. package/dist/tests/schema_discovery.test.d.ts +5 -0
  65. package/dist/tests/schema_discovery.test.d.ts.map +1 -0
  66. package/dist/tests/schema_discovery.test.js +1074 -0
  67. package/dist/tests/schema_discovery.test.js.map +1 -0
  68. package/dist/tests/storage.test.d.ts +5 -0
  69. package/dist/tests/storage.test.d.ts.map +1 -0
  70. package/dist/tests/storage.test.js +414 -0
  71. package/dist/tests/storage.test.js.map +1 -0
  72. package/dist/tests/validation.test.d.ts +5 -0
  73. package/dist/tests/validation.test.d.ts.map +1 -0
  74. package/dist/tests/validation.test.js +254 -0
  75. package/dist/tests/validation.test.js.map +1 -0
  76. package/package.json +51 -0
@@ -0,0 +1,164 @@
1
+ /**
2
+ * OCP Registry Client
3
+ *
4
+ * Client for accessing pre-discovered API specifications from the OCP registry.
5
+ */
6
+ import { RegistryUnavailable, APINotFound } from './errors.js';
7
+ const DEFAULT_REGISTRY_URL = 'https://opencontextprotocol.io/api/v1';
8
+ const DEFAULT_TIMEOUT = 10000;
9
+ const SEARCH_TIMEOUT = 5000;
10
+ const DEFAULT_PER_PAGE = 10;
11
+ const MAX_SUGGESTIONS = 3;
12
+ const DEFAULT_API_VERSION = '1.0.0';
13
+ /**
14
+ * OCP Registry Client
15
+ *
16
+ * Access pre-discovered API specifications from the OCP community registry.
17
+ */
18
+ export class OCPRegistry {
19
+ /**
20
+ * Initialize registry client.
21
+ *
22
+ * @param registryUrl - Registry URL (defaults to OCP_REGISTRY_URL env var or registry.ocp.dev)
23
+ */
24
+ constructor(registryUrl) {
25
+ this.registryUrl = (registryUrl || process.env.OCP_REGISTRY_URL || DEFAULT_REGISTRY_URL).replace(/\/$/, '');
26
+ // Validate URL format
27
+ if (!this.registryUrl.startsWith('http://') && !this.registryUrl.startsWith('https://')) {
28
+ throw new Error(`Invalid registry URL: ${this.registryUrl}`);
29
+ }
30
+ }
31
+ /**
32
+ * Get API specification from registry.
33
+ *
34
+ * @param name - API name in registry
35
+ * @param baseUrl - Optional override for API base URL
36
+ * @returns API specification with tools
37
+ * @throws RegistryUnavailable if registry is unreachable
38
+ * @throws APINotFound if API is not found in registry
39
+ */
40
+ async getApiSpec(name, baseUrl) {
41
+ try {
42
+ const response = await fetch(`${this.registryUrl}/registry/${name}`, {
43
+ timeout: DEFAULT_TIMEOUT
44
+ });
45
+ if (response.status === 404) {
46
+ const suggestions = await this._getSuggestions(name);
47
+ throw new APINotFound(name, suggestions);
48
+ }
49
+ if (!response.ok) {
50
+ throw new RegistryUnavailable(this.registryUrl, `${response.statusText}`);
51
+ }
52
+ const entry = await response.json();
53
+ return await this._entryToSpec(entry, baseUrl);
54
+ }
55
+ catch (error) {
56
+ if (error instanceof APINotFound || error instanceof RegistryUnavailable) {
57
+ throw error;
58
+ }
59
+ if (error instanceof TypeError && error.message.includes('fetch')) {
60
+ throw new RegistryUnavailable(this.registryUrl, `Could not connect to registry`);
61
+ }
62
+ throw new RegistryUnavailable(this.registryUrl, String(error));
63
+ }
64
+ }
65
+ /**
66
+ * Search for APIs in the registry.
67
+ *
68
+ * @param query - Search query string
69
+ * @returns List of API names matching query
70
+ */
71
+ async searchApis(query) {
72
+ try {
73
+ const params = new URLSearchParams({
74
+ q: query,
75
+ per_page: DEFAULT_PER_PAGE.toString()
76
+ });
77
+ const url = `${this.registryUrl}/search?${params.toString()}`;
78
+ const response = await fetch(url, {
79
+ timeout: SEARCH_TIMEOUT
80
+ });
81
+ if (!response.ok) {
82
+ return [];
83
+ }
84
+ const searchResults = await response.json();
85
+ return (searchResults.results || []).map(r => r.name);
86
+ }
87
+ catch {
88
+ // If search fails, return empty list (non-critical)
89
+ return [];
90
+ }
91
+ }
92
+ /**
93
+ * List all APIs in the registry.
94
+ *
95
+ * @returns List of API names
96
+ */
97
+ async listApis() {
98
+ try {
99
+ const response = await fetch(`${this.registryUrl}/registry`, {
100
+ timeout: DEFAULT_TIMEOUT
101
+ });
102
+ if (!response.ok) {
103
+ return [];
104
+ }
105
+ const apis = await response.json();
106
+ return apis.map(api => api.name);
107
+ }
108
+ catch {
109
+ // If list fails, return empty list (non-critical)
110
+ return [];
111
+ }
112
+ }
113
+ /**
114
+ * Convert registry entry to API spec.
115
+ */
116
+ async _entryToSpec(entry, baseUrlOverride) {
117
+ // Use override base_url if provided, otherwise use registry's base_url
118
+ const baseUrl = baseUrlOverride || entry.base_url || '';
119
+ // Convert tools from registry format to OCPTool objects
120
+ const tools = [];
121
+ if (entry.tools) {
122
+ for (const toolDict of entry.tools) {
123
+ const tool = {
124
+ name: toolDict.name,
125
+ description: toolDict.description,
126
+ method: toolDict.method,
127
+ path: toolDict.path,
128
+ parameters: toolDict.parameters || {},
129
+ response_schema: toolDict.response_schema || {},
130
+ operation_id: toolDict.operation_id,
131
+ tags: toolDict.tags || []
132
+ };
133
+ tools.push(tool);
134
+ }
135
+ }
136
+ // Create OCPAPISpec (matching dataclass field order)
137
+ return {
138
+ base_url: baseUrl,
139
+ title: entry.display_name || entry.name,
140
+ version: DEFAULT_API_VERSION, // Registry doesn't store version
141
+ description: entry.description || '',
142
+ tools,
143
+ raw_spec: entry // Store the original registry entry
144
+ };
145
+ }
146
+ /**
147
+ * Get API name suggestions for error messages.
148
+ */
149
+ async _getSuggestions(apiName) {
150
+ try {
151
+ // Try exact search first
152
+ let suggestions = await this.searchApis(apiName);
153
+ // If no results, try partial matches
154
+ if (suggestions.length === 0 && apiName.length > 2) {
155
+ suggestions = await this.searchApis(apiName.slice(0, 3));
156
+ }
157
+ return suggestions.slice(0, MAX_SUGGESTIONS);
158
+ }
159
+ catch {
160
+ return [];
161
+ }
162
+ }
163
+ }
164
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,149 @@
1
+ /**
2
+ * OCP Schema Discovery
3
+ *
4
+ * Automatic OpenAPI schema discovery and tool extraction for OCP agents.
5
+ */
6
+ /**
7
+ * Tool definition extracted from OpenAPI operation
8
+ */
9
+ export interface OCPTool {
10
+ name: string;
11
+ description: string;
12
+ method: string;
13
+ path: string;
14
+ parameters: Record<string, any>;
15
+ response_schema?: Record<string, any>;
16
+ operation_id?: string;
17
+ tags?: string[];
18
+ }
19
+ /**
20
+ * Complete API specification with tools
21
+ */
22
+ export interface OCPAPISpec {
23
+ base_url: string;
24
+ title: string;
25
+ version: string;
26
+ description: string;
27
+ tools: OCPTool[];
28
+ raw_spec: Record<string, any>;
29
+ name?: string;
30
+ }
31
+ /**
32
+ * OCP Schema Discovery Client
33
+ *
34
+ * Discovers and parses OpenAPI specifications to extract available tools.
35
+ */
36
+ export declare class OCPSchemaDiscovery {
37
+ private cache;
38
+ private _specVersion?;
39
+ constructor();
40
+ /**
41
+ * Discover API from OpenAPI specification.
42
+ *
43
+ * @param specPath - URL or file path to OpenAPI specification (JSON or YAML)
44
+ * @param baseUrl - Optional override for API base URL
45
+ * @param includeResources - Optional list of resource names to filter tools by (case-insensitive, first resource segment matching)
46
+ * @param pathPrefix - Optional path prefix to strip before filtering (e.g., '/v1', '/api/v2')
47
+ * @returns API specification with extracted tools
48
+ */
49
+ discoverApi(specPath: string, baseUrl?: string, includeResources?: string[], pathPrefix?: string): Promise<OCPAPISpec>;
50
+ /**
51
+ * Normalize cache key: URLs as-is, file paths to absolute.
52
+ */
53
+ private _normalizeCacheKey;
54
+ /**
55
+ * Fetch OpenAPI spec from URL or local file.
56
+ */
57
+ private _fetchSpec;
58
+ /**
59
+ * Fetch OpenAPI specification from URL without resolving $refs.
60
+ * References are resolved lazily during tool creation.
61
+ */
62
+ private _fetchFromUrl;
63
+ /**
64
+ * Load OpenAPI specification from local JSON or YAML file.
65
+ */
66
+ private _fetchFromFile;
67
+ /**
68
+ * Detect OpenAPI/Swagger version from spec.
69
+ *
70
+ * @returns Version string: 'swagger_2', 'openapi_3.0', 'openapi_3.1', 'openapi_3.2'
71
+ */
72
+ private _detectSpecVersion;
73
+ /**
74
+ * Recursively resolve $ref references in OpenAPI spec with polymorphic keyword handling.
75
+ *
76
+ * @param obj - Current object being processed (object, array, or primitive)
77
+ * @param root - Root spec document for looking up references
78
+ * @param resolutionStack - Stack of refs currently being resolved (for circular detection)
79
+ * @param memo - Memoization cache to store resolved references
80
+ * @param insidePolymorphicKeyword - True if currently inside anyOf/oneOf/allOf
81
+ * @returns Object with all resolvable $refs replaced by their definitions
82
+ */
83
+ private _resolveRefs;
84
+ /**
85
+ * Look up a reference path in the spec document.
86
+ *
87
+ * @param root - Root spec document
88
+ * @param refPath - Reference path like '#/components/schemas/User'
89
+ * @returns The referenced object, or null if not found
90
+ */
91
+ private _lookupRef;
92
+ /**
93
+ * Parse OpenAPI specification and extract tools with lazy $ref resolution.
94
+ */
95
+ private _parseOpenApiSpec;
96
+ /**
97
+ * Extract base URL from spec (version-aware).
98
+ */
99
+ private _extractBaseUrl;
100
+ /**
101
+ * Create tool definition from OpenAPI operation.
102
+ */
103
+ private _createToolFromOperation;
104
+ /**
105
+ * Normalize tool name to camelCase, removing special characters.
106
+ */
107
+ private _normalizeToolName;
108
+ /**
109
+ * Check if a normalized tool name is valid.
110
+ */
111
+ private _isValidToolName;
112
+ /**
113
+ * Parse OpenAPI parameters with lazy $ref resolution.
114
+ */
115
+ private _parseParameters;
116
+ /**
117
+ * Parse OpenAPI 3.x request body with lazy $ref resolution.
118
+ */
119
+ private _parseOpenApi3RequestBody;
120
+ /**
121
+ * Parse Swagger 2.0 body parameter into parameters.
122
+ */
123
+ private _parseSwagger2BodyParameter;
124
+ /**
125
+ * Parse OpenAPI responses with lazy $ref resolution (version-aware).
126
+ */
127
+ private _parseResponses;
128
+ /**
129
+ * Get tools filtered by tag.
130
+ */
131
+ getToolsByTag(apiSpec: OCPAPISpec, tag: string): OCPTool[];
132
+ /**
133
+ * Filter tools to only include those whose first resource segment matches includeResources.
134
+ */
135
+ private _filterToolsByResources;
136
+ /**
137
+ * Search tools by name or description.
138
+ */
139
+ searchTools(apiSpec: OCPAPISpec, query: string): OCPTool[];
140
+ /**
141
+ * Generate human-readable tool documentation.
142
+ */
143
+ generateToolDocumentation(tool: OCPTool): string;
144
+ /**
145
+ * Clear the discovery cache.
146
+ */
147
+ clearCache(): void;
148
+ }
149
+ //# sourceMappingURL=schema_discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema_discovery.d.ts","sourceRoot":"","sources":["../../src/schema_discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,YAAY,CAAC,CAAS;;IAM9B;;;;;;;;OAQG;IACG,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAsC5H;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;YACW,UAAU;IAQxB;;;OAGG;YACW,aAAa;IAiB3B;;OAEG;IACH,OAAO,CAAC,cAAc;IAuDtB;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAwB1B;;;;;;;;;OASG;IACH,OAAO,CAAC,YAAY;IAsIpB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;IAqBlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA6CzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAqBvB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8EhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAkBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwCxB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAgDjC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAyCnC;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE;IAM1D;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgC/B;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IAS1D;;OAEG;IACH,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM;IA2BhD;;OAEG;IACH,UAAU,IAAI,IAAI;CAGrB"}