opentool 0.4.0 → 0.4.2

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 CHANGED
@@ -116,6 +116,22 @@ Options:
116
116
  -i, --input <dir> Input directory containing tools (default: "tools")
117
117
  ```
118
118
 
119
+ ### Generate Metadata
120
+
121
+ Generate OpenTool metadata JSON without building:
122
+
123
+ ```bash
124
+ npx opentool metadata [options]
125
+
126
+ Options:
127
+ -i, --input <dir> Input directory containing tools (default: "tools")
128
+ -o, --output <file> Output file path for metadata.json (default: "metadata.json")
129
+ --name <name> Server name (default: "opentool-server")
130
+ --version <version> Server version (default: "1.0.0")
131
+ ```
132
+
133
+ This command generates the `metadata.json` file that contains all the information needed for on-chain registration and discovery, including tool schemas, payment configurations, and discovery metadata. It's useful when you need to inspect or share the metadata without performing a full build.
134
+
119
135
  ## Tool Definition
120
136
 
121
137
  Each tool is defined by exporting three things:
@@ -0,0 +1,15 @@
1
+ import { InternalToolDefinition } from "../types";
2
+ import { Metadata } from "../types/metadata";
3
+ export interface GenerateMetadataOptions {
4
+ input: string;
5
+ output?: string;
6
+ name?: string;
7
+ version?: string;
8
+ }
9
+ export declare function generateMetadataCommand(options: GenerateMetadataOptions): Promise<void>;
10
+ export declare function generateMetadata(tools: InternalToolDefinition[], config: {
11
+ toolsDir: string;
12
+ serverName: string;
13
+ serverVersion: string;
14
+ }): Promise<Metadata>;
15
+ //# sourceMappingURL=generate-metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-metadata.d.ts","sourceRoot":"","sources":["../../src/cli/generate-metadata.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAQ,MAAM,mBAAmB,CAAC;AAGnD,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D7F;AAgBD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,sBAAsB,EAAE,EAC/B,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GACtE,OAAO,CAAC,QAAQ,CAAC,CAsOnB"}
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.generateMetadataCommand = generateMetadataCommand;
37
+ exports.generateMetadata = generateMetadata;
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const validate_1 = require("./validate");
41
+ async function generateMetadataCommand(options) {
42
+ const timestamp = new Date().toISOString().replace("T", " ").slice(0, 19);
43
+ console.log(`[${timestamp}] Generating OpenTool metadata...`);
44
+ const toolsDir = path.resolve(options.input);
45
+ const outputPath = options.output ? path.resolve(options.output) : path.join(process.cwd(), "metadata.json");
46
+ try {
47
+ // Validate tools directory exists
48
+ if (!fs.existsSync(toolsDir)) {
49
+ throw new Error(`Tools directory not found: ${toolsDir}`);
50
+ }
51
+ // Load and validate tools
52
+ console.log(`[${new Date()
53
+ .toISOString()
54
+ .replace("T", " ")
55
+ .slice(0, 19)}] 🔍 Validating tools...`);
56
+ const tools = await (0, validate_1.loadAndValidateTools)(toolsDir);
57
+ if (tools.length === 0) {
58
+ throw new Error("No valid tools found - metadata generation aborted");
59
+ }
60
+ console.log(`[${new Date().toISOString().replace("T", " ").slice(0, 19)}] ✅ Found ${tools.length} valid tools`);
61
+ // Generate metadata JSON
62
+ const metadata = await generateMetadata(tools, {
63
+ toolsDir,
64
+ serverName: options.name || "opentool-server",
65
+ serverVersion: options.version || "1.0.0",
66
+ });
67
+ // Write metadata to output file
68
+ fs.writeFileSync(outputPath, JSON.stringify(metadata, null, 2));
69
+ const endTimestamp = new Date()
70
+ .toISOString()
71
+ .replace("T", " ")
72
+ .slice(0, 19);
73
+ console.log(`[${endTimestamp}] Metadata generation completed successfully!`);
74
+ console.log(`Output file: ${outputPath}`);
75
+ console.log(`Generated metadata for ${tools.length} tools`);
76
+ }
77
+ catch (error) {
78
+ console.error(`[${new Date()
79
+ .toISOString()
80
+ .replace("T", " ")
81
+ .slice(0, 19)}] Metadata generation failed:`, error);
82
+ process.exit(1);
83
+ }
84
+ }
85
+ // Helper function to read package.json for fallback values
86
+ function readPackageJson(projectRoot) {
87
+ try {
88
+ const packagePath = path.join(projectRoot, "package.json");
89
+ if (fs.existsSync(packagePath)) {
90
+ const packageContent = fs.readFileSync(packagePath, "utf8");
91
+ return JSON.parse(packageContent);
92
+ }
93
+ }
94
+ catch (error) {
95
+ console.warn(" Failed to read package.json:", error);
96
+ }
97
+ return {};
98
+ }
99
+ async function generateMetadata(tools, config) {
100
+ console.log(`[${new Date()
101
+ .toISOString()
102
+ .replace("T", " ")
103
+ .slice(0, 19)}] Generating metadata...`);
104
+ const projectRoot = path.dirname(config.toolsDir);
105
+ // Try to load metadata from metadata.ts (or fall back to discovery.ts for backwards compatibility)
106
+ let rootMetadata = {};
107
+ const metadataTsPath = path.join(projectRoot, "metadata.ts");
108
+ const metadataJsPath = path.join(projectRoot, "metadata.js");
109
+ const discoveryPath = path.join(projectRoot, "discovery.ts"); // backwards compatibility
110
+ const discoveryJsPath = path.join(projectRoot, "discovery.js");
111
+ // Check for metadata.ts first, then discovery.ts for backwards compatibility
112
+ const metadataFilePath = fs.existsSync(metadataTsPath)
113
+ ? metadataTsPath
114
+ : fs.existsSync(discoveryPath)
115
+ ? discoveryPath
116
+ : null;
117
+ const metadataJsFilePath = fs.existsSync(metadataJsPath)
118
+ ? metadataJsPath
119
+ : fs.existsSync(discoveryJsPath)
120
+ ? discoveryJsPath
121
+ : null;
122
+ if (metadataFilePath) {
123
+ try {
124
+ // Use the same temp compilation approach as tools
125
+ const tempDir = path.join(projectRoot, ".opentool-temp");
126
+ if (!fs.existsSync(tempDir)) {
127
+ fs.mkdirSync(tempDir, { recursive: true });
128
+ }
129
+ const { exec } = require("child_process");
130
+ const { promisify } = require("util");
131
+ const execAsync = promisify(exec);
132
+ // Copy metadata file to temp directory
133
+ const tempFileName = path.basename(metadataFilePath);
134
+ const tempFilePath = path.join(tempDir, tempFileName);
135
+ fs.copyFileSync(metadataFilePath, tempFilePath);
136
+ // Compile TypeScript file
137
+ try {
138
+ await execAsync(`npx tsc --target es2020 --module commonjs --esModuleInterop --skipLibCheck --moduleResolution node --outDir ${tempDir} ${tempFilePath}`);
139
+ }
140
+ catch (tscError) {
141
+ console.warn(`TypeScript compilation failed for ${tempFileName}, trying with relaxed settings...`);
142
+ await execAsync(`npx tsc --target es2020 --module commonjs --esModuleInterop --skipLibCheck --moduleResolution node --noImplicitAny false --strict false --outDir ${tempDir} ${tempFilePath}`);
143
+ }
144
+ // Load the compiled JS file
145
+ const compiledFileName = tempFileName.replace(".ts", ".js");
146
+ const compiledPath = path.join(tempDir, compiledFileName);
147
+ if (fs.existsSync(compiledPath)) {
148
+ delete require.cache[require.resolve(compiledPath)];
149
+ const metadataModule = require(compiledPath);
150
+ // Support both 'metadata' and 'discovery' exports for backwards compatibility
151
+ rootMetadata =
152
+ metadataModule.metadata || metadataModule.discovery || {};
153
+ console.log(` Loaded metadata from ${tempFileName}`);
154
+ }
155
+ // Clean up temp directory
156
+ fs.rmSync(tempDir, { recursive: true, force: true });
157
+ }
158
+ catch (error) {
159
+ console.warn(` Failed to load ${path.basename(metadataFilePath)}:`, error);
160
+ }
161
+ }
162
+ else if (metadataJsFilePath) {
163
+ try {
164
+ // For JavaScript files, use require directly
165
+ delete require.cache[require.resolve(metadataJsFilePath)];
166
+ const metadataModule = require(metadataJsFilePath);
167
+ // Support both 'metadata' and 'discovery' exports for backwards compatibility
168
+ rootMetadata = metadataModule.metadata || metadataModule.discovery || {};
169
+ console.log(` Loaded metadata from ${path.basename(metadataJsFilePath)}`);
170
+ }
171
+ catch (error) {
172
+ console.warn(` Failed to load ${path.basename(metadataJsFilePath)}:`, error);
173
+ }
174
+ }
175
+ else {
176
+ console.log(" No metadata.ts found, using smart defaults");
177
+ }
178
+ // Read package.json for fallback values
179
+ const packageInfo = readPackageJson(projectRoot);
180
+ // Generate smart defaults from folder name and package.json
181
+ const folderName = path.basename(projectRoot);
182
+ const smartDefaults = {
183
+ name: rootMetadata.name || packageInfo.name || folderName,
184
+ displayName: rootMetadata.displayName ||
185
+ (packageInfo.name
186
+ ? packageInfo.name
187
+ .split("-")
188
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
189
+ .join(" ")
190
+ : folderName
191
+ .split("-")
192
+ .map((word) => word.charAt(0).toUpperCase() + word.slice(1))
193
+ .join(" ")),
194
+ version: rootMetadata.version || parseFloat(packageInfo.version || "1.0"),
195
+ description: rootMetadata.description ||
196
+ packageInfo.description ||
197
+ `OpenTool agent built from ${folderName}`,
198
+ author: rootMetadata.author || packageInfo.author || "Unknown",
199
+ repository: rootMetadata.repository ||
200
+ packageInfo.repository?.url ||
201
+ packageInfo.repository ||
202
+ "",
203
+ website: rootMetadata.website || packageInfo.homepage || "",
204
+ category: rootMetadata.category || rootMetadata.categories?.[0] || "utility",
205
+ termsOfService: rootMetadata.termsOfService || "Please review terms before use.",
206
+ };
207
+ // Convert tools to metadata format
208
+ const metadataTools = tools.map((tool) => {
209
+ // Use tool metadata name, fallback to filename without extension
210
+ const toolName = tool.metadata?.name || tool.filename.replace(/\.(ts|js)$/, "");
211
+ const toolDescription = tool.metadata?.description || `${toolName} tool`;
212
+ // Build metadata tool object
213
+ const metadataTool = {
214
+ name: toolName,
215
+ description: toolDescription,
216
+ inputSchema: tool.inputSchema,
217
+ };
218
+ // Add annotations if they exist
219
+ if (tool.metadata?.annotations) {
220
+ metadataTool.annotations = tool.metadata.annotations;
221
+ }
222
+ // Add payment config (tool-level overrides agent-level)
223
+ if (tool.metadata?.payment) {
224
+ metadataTool.payment = tool.metadata.payment;
225
+ }
226
+ else if (rootMetadata.payment) {
227
+ // Use agent-level payment as default
228
+ metadataTool.payment = rootMetadata.payment;
229
+ }
230
+ // Add discovery metadata if it exists
231
+ if (tool.metadata?.discovery) {
232
+ metadataTool.discovery = tool.metadata.discovery;
233
+ }
234
+ return metadataTool;
235
+ });
236
+ // Build complete metadata JSON with new structure
237
+ const metadataJson = {
238
+ // Core fields using smart defaults
239
+ name: smartDefaults.name,
240
+ displayName: smartDefaults.displayName,
241
+ version: smartDefaults.version,
242
+ description: smartDefaults.description,
243
+ author: smartDefaults.author,
244
+ repository: smartDefaults.repository,
245
+ website: smartDefaults.website,
246
+ category: smartDefaults.category,
247
+ termsOfService: smartDefaults.termsOfService,
248
+ // Tools array (always populated by build process)
249
+ tools: metadataTools,
250
+ // UI Enhancement fields
251
+ ...(rootMetadata.promptExamples && {
252
+ promptExamples: rootMetadata.promptExamples,
253
+ }),
254
+ ...(rootMetadata.iconPath && { iconPath: rootMetadata.iconPath }),
255
+ ...(rootMetadata.videoPath && { videoPath: rootMetadata.videoPath }),
256
+ // Agent-level payment defaults (create from pricing if exists)
257
+ ...(rootMetadata.pricing && {
258
+ payment: {
259
+ amountUSDC: rootMetadata.pricing.defaultAmount || 0.01,
260
+ description: rootMetadata.pricing.description || "",
261
+ x402: true,
262
+ openpondDirect: true,
263
+ acceptedMethods: ["ETH", "USDC"],
264
+ chainIds: [8453], // Base
265
+ },
266
+ }),
267
+ // Discovery section (only include if metadata has discovery fields)
268
+ ...((rootMetadata.keywords ||
269
+ rootMetadata.categories ||
270
+ rootMetadata.useCases ||
271
+ rootMetadata.capabilities ||
272
+ rootMetadata.requirements ||
273
+ rootMetadata.pricing ||
274
+ rootMetadata.compatibility ||
275
+ rootMetadata.discovery) && {
276
+ discovery: {
277
+ keywords: rootMetadata.keywords || [],
278
+ category: rootMetadata.categories?.[0] || smartDefaults.category,
279
+ useCases: rootMetadata.useCases || [],
280
+ capabilities: rootMetadata.capabilities || [],
281
+ requirements: rootMetadata.requirements || {},
282
+ pricing: rootMetadata.pricing || {},
283
+ compatibility: rootMetadata.compatibility || {},
284
+ ...(rootMetadata.discovery || {}), // Include any nested discovery fields too
285
+ },
286
+ }),
287
+ };
288
+ console.log(` Generated metadata with ${metadataTools.length} tools`);
289
+ return metadataJson;
290
+ }
291
+ //# sourceMappingURL=generate-metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-metadata.js","sourceRoot":"","sources":["../../src/cli/generate-metadata.ts"],"names":[],"mappings":"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"}
@@ -2,4 +2,5 @@
2
2
  export * from './build';
3
3
  export * from './dev';
4
4
  export * from './validate';
5
+ export * from './generate-metadata';
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAwCA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AA0DA,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,YAAY,CAAC;AAC3B,cAAc,qBAAqB,CAAC"}
package/dist/cli/index.js CHANGED
@@ -19,6 +19,7 @@ const commander_1 = require("commander");
19
19
  const build_1 = require("./build");
20
20
  const dev_1 = require("./dev");
21
21
  const validate_1 = require("./validate");
22
+ const generate_metadata_1 = require("./generate-metadata");
22
23
  commander_1.program
23
24
  .name('opentool')
24
25
  .description('OpenTool CLI for building and developing serverless MCP tools')
@@ -39,15 +40,31 @@ commander_1.program
39
40
  .option('--name <name>', 'Server name', 'opentool-server')
40
41
  .option('--version <version>', 'Server version', '1.0.0')
41
42
  .action(build_1.buildCommand);
42
- // Validate command
43
+ // Validate command (metadata only)
43
44
  commander_1.program
44
45
  .command('validate')
45
- .description('Validate tools in directory')
46
+ .description('Validate metadata for registry submission')
46
47
  .option('-i, --input <dir>', 'Input directory containing tools', 'tools')
47
48
  .action(validate_1.validateCommand);
49
+ // Full validation command (tools + metadata)
50
+ commander_1.program
51
+ .command('validate-full')
52
+ .description('Full validation of tools and metadata')
53
+ .option('-i, --input <dir>', 'Input directory containing tools', 'tools')
54
+ .action(validate_1.validateFullCommand);
55
+ // Generate metadata command
56
+ commander_1.program
57
+ .command('metadata')
58
+ .description('Generate OpenTool metadata JSON without building')
59
+ .option('-i, --input <dir>', 'Input directory containing tools', 'tools')
60
+ .option('-o, --output <file>', 'Output file path for metadata.json', 'metadata.json')
61
+ .option('--name <name>', 'Server name', 'opentool-server')
62
+ .option('--version <version>', 'Server version', '1.0.0')
63
+ .action(generate_metadata_1.generateMetadataCommand);
48
64
  // Parse arguments
49
65
  commander_1.program.parse();
50
66
  __exportStar(require("./build"), exports);
51
67
  __exportStar(require("./dev"), exports);
52
68
  __exportStar(require("./validate"), exports);
69
+ __exportStar(require("./generate-metadata"), exports);
53
70
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,mCAAuC;AACvC,+BAAmC;AACnC,yCAA6C;AAE7C,mBAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,8BAA8B;AAC9B,mBAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,SAAS,EAAE,wBAAwB,EAAE,KAAK,CAAC;KAClD,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,kCAAkC;AAClC,mBAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,EAAE,MAAM,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,iBAAiB,CAAC;KACzD,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,OAAO,CAAC;KACxD,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,mBAAmB;AACnB,mBAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,kBAAkB;AAClB,mBAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,0CAAwB;AACxB,wCAAsB;AACtB,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAEA,yCAAoC;AACpC,mCAAuC;AACvC,+BAAmC;AACnC,yCAAkE;AAClE,2DAA8D;AAE9D,mBAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,8BAA8B;AAC9B,mBAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,SAAS,EAAE,wBAAwB,EAAE,KAAK,CAAC;KAClD,MAAM,CAAC,gBAAU,CAAC,CAAC;AAEtB,kCAAkC;AAClC,mBAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,oBAAoB,EAAE,kCAAkC,EAAE,MAAM,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,iBAAiB,CAAC;KACzD,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,OAAO,CAAC;KACxD,MAAM,CAAC,oBAAY,CAAC,CAAC;AAExB,mCAAmC;AACnC,mBAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,0BAAe,CAAC,CAAC;AAE3B,6CAA6C;AAC7C,mBAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,uCAAuC,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,8BAAmB,CAAC,CAAC;AAE/B,4BAA4B;AAC5B,mBAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,OAAO,CAAC;KACxE,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,EAAE,eAAe,CAAC;KACpF,MAAM,CAAC,eAAe,EAAE,aAAa,EAAE,iBAAiB,CAAC;KACzD,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,OAAO,CAAC;KACxD,MAAM,CAAC,2CAAuB,CAAC,CAAC;AAEnC,kBAAkB;AAClB,mBAAO,CAAC,KAAK,EAAE,CAAC;AAEhB,0CAAwB;AACxB,wCAAsB;AACtB,6CAA2B;AAC3B,sDAAoC"}
@@ -3,5 +3,6 @@ export interface ValidateOptions {
3
3
  input: string;
4
4
  }
5
5
  export declare function validateCommand(options: ValidateOptions): Promise<void>;
6
+ export declare function validateFullCommand(options: ValidateOptions): Promise<void>;
6
7
  export declare function loadAndValidateTools(toolsDir: string): Promise<InternalToolDefinition[]>;
7
8
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2D7E;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA8C9F"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAmF7E;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CA2DjF;AAED,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAwI9F"}
@@ -34,11 +34,78 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.validateCommand = validateCommand;
37
+ exports.validateFullCommand = validateFullCommand;
37
38
  exports.loadAndValidateTools = loadAndValidateTools;
38
39
  const fs = __importStar(require("fs"));
39
40
  const path = __importStar(require("path"));
40
41
  async function validateCommand(options) {
41
- console.log('🔍 Validating OpenTool tools...');
42
+ console.log('🔍 Validating OpenTool metadata...');
43
+ const toolsDir = path.resolve(options.input);
44
+ const metadataPath = path.join(path.dirname(toolsDir), 'metadata.ts');
45
+ try {
46
+ // Check if metadata.ts exists
47
+ if (!fs.existsSync(metadataPath)) {
48
+ throw new Error(`metadata.ts not found at: ${metadataPath}`);
49
+ }
50
+ console.log(`📄 Found metadata.ts`);
51
+ // Read and validate metadata structure
52
+ const metadataContent = fs.readFileSync(metadataPath, 'utf-8');
53
+ // Basic syntax validation
54
+ if (!metadataContent.includes('export const metadata')) {
55
+ throw new Error('metadata.ts must export a metadata constant');
56
+ }
57
+ // Try to compile and load metadata for validation
58
+ const tempDir = path.join(path.dirname(metadataPath), '.opentool-temp');
59
+ if (fs.existsSync(tempDir)) {
60
+ fs.rmSync(tempDir, { recursive: true, force: true });
61
+ }
62
+ fs.mkdirSync(tempDir, { recursive: true });
63
+ try {
64
+ // Copy metadata to temp directory
65
+ fs.copyFileSync(metadataPath, path.join(tempDir, 'metadata.ts'));
66
+ // Compile metadata
67
+ const { exec } = require('child_process');
68
+ const { promisify } = require('util');
69
+ const execAsync = promisify(exec);
70
+ await execAsync(`npx tsc --target es2020 --module commonjs --esModuleInterop --skipLibCheck --moduleResolution node --outDir ${tempDir} ${path.join(tempDir, 'metadata.ts')}`);
71
+ // Load compiled metadata
72
+ const compiledMetadataPath = path.join(tempDir, 'metadata.js');
73
+ if (!fs.existsSync(compiledMetadataPath)) {
74
+ throw new Error('Failed to compile metadata.ts');
75
+ }
76
+ delete require.cache[require.resolve(compiledMetadataPath)];
77
+ const { metadata } = require(compiledMetadataPath);
78
+ // Validate metadata structure
79
+ console.log(`✅ Metadata compilation successful`);
80
+ validateMetadataStructure(metadata);
81
+ console.log(`\n📊 Metadata Summary:`);
82
+ console.log(` ✓ Name: ${metadata.name}`);
83
+ console.log(` ✓ Display Name: ${metadata.displayName || metadata.name}`);
84
+ console.log(` ✓ Description: ${metadata.description}`);
85
+ console.log(` ✓ Version: ${metadata.version}`);
86
+ console.log(` ✓ Category: ${metadata.category}`);
87
+ if (metadata.payment) {
88
+ console.log(` ✓ Payment: $${metadata.payment.amountUSDC} USDC`);
89
+ }
90
+ if (metadata.keywords && metadata.keywords.length > 0) {
91
+ console.log(` ✓ Keywords: ${metadata.keywords.join(', ')}`);
92
+ }
93
+ console.log('\n✅ Metadata validation passed!');
94
+ }
95
+ finally {
96
+ // Clean up temp directory
97
+ if (fs.existsSync(tempDir)) {
98
+ fs.rmSync(tempDir, { recursive: true, force: true });
99
+ }
100
+ }
101
+ }
102
+ catch (error) {
103
+ console.error('❌ Metadata validation failed:', error);
104
+ process.exit(1);
105
+ }
106
+ }
107
+ async function validateFullCommand(options) {
108
+ console.log('🔍 Running full OpenTool validation...');
42
109
  const toolsDir = path.resolve(options.input);
43
110
  let hasErrors = false;
44
111
  try {
@@ -77,7 +144,7 @@ async function validateCommand(options) {
77
144
  }
78
145
  }
79
146
  if (hasErrors) {
80
- console.log('\n❌ Validation failed with errors');
147
+ console.log('\n❌ Full validation failed with errors');
81
148
  process.exit(1);
82
149
  }
83
150
  else {
@@ -85,85 +152,171 @@ async function validateCommand(options) {
85
152
  }
86
153
  }
87
154
  catch (error) {
88
- console.error('❌ Validation failed:', error);
155
+ console.error('❌ Full validation failed:', error);
89
156
  process.exit(1);
90
157
  }
91
158
  }
92
159
  async function loadAndValidateTools(toolsDir) {
93
160
  const tools = [];
94
161
  const files = fs.readdirSync(toolsDir);
95
- for (const file of files) {
96
- if (file.endsWith('.ts') || file.endsWith('.js')) {
97
- const toolPath = path.join(toolsDir, file);
162
+ // First, compile any TypeScript files to a temp directory
163
+ const tempDir = path.join(toolsDir, ".opentool-temp");
164
+ if (fs.existsSync(tempDir)) {
165
+ fs.rmSync(tempDir, { recursive: true, force: true });
166
+ }
167
+ fs.mkdirSync(tempDir, { recursive: true });
168
+ const { exec } = require("child_process");
169
+ const { promisify } = require("util");
170
+ const execAsync = promisify(exec);
171
+ try {
172
+ // Compile TypeScript files if any exist
173
+ const tsFiles = files.filter(file => file.endsWith(".ts"));
174
+ if (tsFiles.length > 0) {
175
+ console.log(`[${new Date().toISOString().replace('T', ' ').slice(0, 19)}] Compiling ${tsFiles.length} TypeScript files...`);
176
+ // Copy all files to temp directory
177
+ for (const file of files) {
178
+ if (file.endsWith(".ts") || file.endsWith(".js")) {
179
+ fs.copyFileSync(path.join(toolsDir, file), path.join(tempDir, file));
180
+ }
181
+ }
182
+ // Compile TypeScript files
98
183
  try {
99
- const toolModule = require(toolPath);
100
- // Check for required exports (schema and TOOL function, metadata is optional)
101
- if (toolModule.TOOL && toolModule.schema) {
102
- const baseName = file.replace(/\.(ts|js)$/, '');
103
- const tool = {
104
- schema: toolModule.schema,
105
- inputSchema: { type: 'object' }, // Placeholder for validation
106
- metadata: toolModule.metadata || null,
107
- filename: baseName,
108
- handler: async (params) => {
109
- const result = await toolModule.TOOL(params);
110
- // Handle both string and object returns
111
- if (typeof result === 'string') {
112
- return {
113
- content: [{ type: 'text', text: result }],
114
- isError: false,
115
- };
116
- }
117
- return result;
184
+ await execAsync(`npx tsc --target es2020 --module commonjs --esModuleInterop --skipLibCheck --moduleResolution node --outDir ${tempDir} ${tsFiles.map(f => path.join(tempDir, f)).join(' ')}`);
185
+ }
186
+ catch (tscError) {
187
+ console.warn("TypeScript compilation failed, trying with relaxed settings...");
188
+ // Fallback with more permissive settings
189
+ await execAsync(`npx tsc --target es2020 --module commonjs --esModuleInterop --skipLibCheck --moduleResolution node --noImplicitAny false --strict false --outDir ${tempDir} ${tsFiles.map(f => path.join(tempDir, f)).join(' ')}`);
190
+ }
191
+ }
192
+ // Load tools from temp directory (compiled JS) or original directory (for JS files)
193
+ for (const file of files) {
194
+ if (file.endsWith(".ts") || file.endsWith(".js")) {
195
+ try {
196
+ let toolPath;
197
+ let toolModule;
198
+ if (file.endsWith(".ts")) {
199
+ // Use compiled JavaScript version
200
+ const jsFile = file.replace(".ts", ".js");
201
+ toolPath = path.join(tempDir, jsFile);
202
+ if (!fs.existsSync(toolPath)) {
203
+ throw new Error("TypeScript compilation failed - no output file");
204
+ }
205
+ }
206
+ else {
207
+ // Use original JavaScript file
208
+ toolPath = path.join(toolsDir, file);
209
+ }
210
+ // Clear require cache and load module
211
+ delete require.cache[require.resolve(toolPath)];
212
+ toolModule = require(toolPath);
213
+ // Check for required exports (schema and TOOL function, metadata is optional)
214
+ if (toolModule.TOOL && toolModule.schema) {
215
+ let completeMetadata = null;
216
+ const baseName = file.replace(/\.(ts|js)$/, "");
217
+ // Use metadata directly if provided
218
+ if (toolModule.metadata) {
219
+ completeMetadata = toolModule.metadata;
220
+ }
221
+ // Convert Zod schema to JSON Schema format
222
+ let inputSchema = { type: 'object' };
223
+ const toolName = completeMetadata?.name || baseName;
224
+ try {
225
+ const { zodToJsonSchema } = require('zod-to-json-schema');
226
+ inputSchema = zodToJsonSchema(toolModule.schema, {
227
+ name: `${toolName}Schema`,
228
+ target: 'jsonSchema7',
229
+ definitions: {}
230
+ });
118
231
  }
119
- };
120
- if (validateTool(tool, file)) {
232
+ catch (error) {
233
+ console.warn(`Failed to convert schema for tool ${toolName}:`, error);
234
+ // Fallback to basic object schema
235
+ inputSchema = { type: 'object' };
236
+ }
237
+ const tool = {
238
+ schema: toolModule.schema,
239
+ inputSchema,
240
+ metadata: completeMetadata,
241
+ filename: baseName,
242
+ handler: async (params) => {
243
+ const result = await toolModule.TOOL(params);
244
+ // Handle both string and object returns
245
+ if (typeof result === "string") {
246
+ return {
247
+ content: [{ type: "text", text: result }],
248
+ isError: false,
249
+ };
250
+ }
251
+ return result;
252
+ },
253
+ };
121
254
  tools.push(tool);
122
- const name = tool.metadata?.name || tool.filename;
123
- console.log(` ✓ ${file} - Valid tool: ${name}`);
255
+ const displayName = completeMetadata?.name || file.replace(/\.(ts|js)$/, "");
256
+ const toolDesc = completeMetadata?.description || `${displayName} tool`;
257
+ console.log(` ${displayName} - ${toolDesc}`);
258
+ }
259
+ else {
260
+ console.warn(` ${file} - Invalid tool format. Must export: schema and TOOL function (metadata is optional)`);
124
261
  }
125
262
  }
126
- else {
127
- console.log(` ${file} - Invalid tool format. Must export: schema and TOOL function (metadata is optional)`);
263
+ catch (error) {
264
+ console.warn(` ${file} - Failed to load: ${error}`);
128
265
  }
129
266
  }
130
- catch (error) {
131
- console.log(` ❌ ${file} - Failed to load: ${error}`);
132
- }
267
+ }
268
+ }
269
+ finally {
270
+ // Clean up temp directory
271
+ if (fs.existsSync(tempDir)) {
272
+ fs.rmSync(tempDir, { recursive: true, force: true });
133
273
  }
134
274
  }
135
275
  return tools;
136
276
  }
137
- function validateTool(tool, filename) {
138
- if (!tool || typeof tool !== 'object') {
139
- console.log(` ❌ ${filename} - Not an object`);
140
- return false;
277
+ function validateMetadataStructure(metadata) {
278
+ // Required fields
279
+ if (!metadata.name || typeof metadata.name !== 'string') {
280
+ throw new Error('metadata.name is required and must be a string');
281
+ }
282
+ if (!metadata.description || typeof metadata.description !== 'string') {
283
+ throw new Error('metadata.description is required and must be a string');
284
+ }
285
+ if (!metadata.version) {
286
+ throw new Error('metadata.version is required');
287
+ }
288
+ if (!metadata.category || typeof metadata.category !== 'string') {
289
+ throw new Error('metadata.category is required and must be a string');
290
+ }
291
+ // Optional but validated fields
292
+ if (metadata.displayName && typeof metadata.displayName !== 'string') {
293
+ throw new Error('metadata.displayName must be a string if provided');
294
+ }
295
+ if (metadata.author && typeof metadata.author !== 'string') {
296
+ throw new Error('metadata.author must be a string if provided');
297
+ }
298
+ if (metadata.keywords && !Array.isArray(metadata.keywords)) {
299
+ throw new Error('metadata.keywords must be an array if provided');
141
300
  }
142
- const t = tool;
143
- if (!t.schema) {
144
- console.log(` ❌ ${filename} - Missing schema`);
145
- return false;
301
+ if (metadata.useCases && !Array.isArray(metadata.useCases)) {
302
+ throw new Error('metadata.useCases must be an array if provided');
146
303
  }
147
- // Metadata is optional now
148
- if (t.metadata !== null && t.metadata !== undefined) {
149
- if (typeof t.metadata !== 'object') {
150
- console.log(` ❌ ${filename} - Invalid metadata (must be object or null)`);
151
- return false;
304
+ // Payment validation
305
+ if (metadata.payment) {
306
+ if (typeof metadata.payment !== 'object') {
307
+ throw new Error('metadata.payment must be an object if provided');
152
308
  }
153
- const metadata = t.metadata;
154
- if (metadata.name !== undefined && typeof metadata.name !== 'string') {
155
- console.log(` ❌ ${filename} - Invalid metadata.name (must be string)`);
156
- return false;
309
+ if (typeof metadata.payment.amountUSDC !== 'number' || metadata.payment.amountUSDC < 0) {
310
+ throw new Error('metadata.payment.amountUSDC must be a non-negative number');
157
311
  }
158
- if (metadata.description !== undefined && typeof metadata.description !== 'string') {
159
- console.log(` ❌ ${filename} - Invalid metadata.description (must be string)`);
160
- return false;
312
+ if (metadata.payment.description && typeof metadata.payment.description !== 'string') {
313
+ throw new Error('metadata.payment.description must be a string if provided');
161
314
  }
162
315
  }
163
- if (!t.handler || typeof t.handler !== 'function') {
164
- console.log(` ❌ ${filename} - Missing or invalid handler function`);
165
- return false;
316
+ // Capabilities validation
317
+ if (metadata.capabilities && !Array.isArray(metadata.capabilities)) {
318
+ throw new Error('metadata.capabilities must be an array if provided');
166
319
  }
167
- return true;
320
+ console.log(` ✅ All required fields present and valid`);
168
321
  }
169
322
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/cli/validate.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./runtime";
2
2
  export * from "./types";
3
3
  export { loadAndValidateTools, validateCommand } from "./cli/validate";
4
+ export { generateMetadata, generateMetadataCommand } from "./cli/generate-metadata";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js CHANGED
@@ -14,10 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.validateCommand = exports.loadAndValidateTools = void 0;
17
+ exports.generateMetadataCommand = exports.generateMetadata = exports.validateCommand = exports.loadAndValidateTools = void 0;
18
18
  __exportStar(require("./runtime"), exports);
19
19
  __exportStar(require("./types"), exports);
20
20
  var validate_1 = require("./cli/validate");
21
21
  Object.defineProperty(exports, "loadAndValidateTools", { enumerable: true, get: function () { return validate_1.loadAndValidateTools; } });
22
22
  Object.defineProperty(exports, "validateCommand", { enumerable: true, get: function () { return validate_1.validateCommand; } });
23
+ var generate_metadata_1 = require("./cli/generate-metadata");
24
+ Object.defineProperty(exports, "generateMetadata", { enumerable: true, get: function () { return generate_metadata_1.generateMetadata; } });
25
+ Object.defineProperty(exports, "generateMetadataCommand", { enumerable: true, get: function () { return generate_metadata_1.generateMetadataCommand; } });
23
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,0CAAwB;AAExB,2CAAuE;AAA9D,gHAAA,oBAAoB,OAAA;AAAE,2GAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,0CAAwB;AAExB,2CAAuE;AAA9D,gHAAA,oBAAoB,OAAA;AAAE,2GAAA,eAAe,OAAA;AAC9C,6DAAoF;AAA3E,qHAAA,gBAAgB,OAAA;AAAE,4HAAA,uBAAuB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opentool",
3
- "version": "0.4.0",
3
+ "version": "0.4.2",
4
4
  "description": "OpenTool framework for building serverless MCP tools",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",