openpets 1.0.4 → 1.0.6

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 (96) hide show
  1. package/dist/data/api.json +3172 -0
  2. package/dist/src/core/ai-client-base/index.d.ts +47 -0
  3. package/dist/src/core/ai-client-base/index.d.ts.map +1 -0
  4. package/dist/src/core/ai-client-base/index.js +168 -0
  5. package/dist/src/core/ai-client-base/index.js.map +1 -0
  6. package/dist/src/core/browser.d.ts +10 -0
  7. package/dist/src/core/browser.d.ts.map +1 -0
  8. package/{browser.ts → dist/src/core/browser.js} +4 -4
  9. package/dist/src/core/browser.js.map +1 -0
  10. package/dist/src/core/build-pet.d.ts +2 -0
  11. package/dist/src/core/build-pet.d.ts.map +1 -0
  12. package/dist/src/core/build-pet.js +364 -0
  13. package/dist/src/core/build-pet.js.map +1 -0
  14. package/dist/src/core/cli.d.ts +3 -0
  15. package/dist/src/core/cli.d.ts.map +1 -0
  16. package/dist/src/core/cli.js +244 -0
  17. package/dist/src/core/cli.js.map +1 -0
  18. package/dist/src/core/config-manager.d.ts +13 -0
  19. package/dist/src/core/config-manager.d.ts.map +1 -0
  20. package/dist/src/core/config-manager.js +59 -0
  21. package/dist/src/core/config-manager.js.map +1 -0
  22. package/dist/src/core/deploy-pet.d.ts +2 -0
  23. package/dist/src/core/deploy-pet.d.ts.map +1 -0
  24. package/dist/src/core/deploy-pet.js +66 -0
  25. package/dist/src/core/deploy-pet.js.map +1 -0
  26. package/dist/src/core/index.d.ts +11 -0
  27. package/dist/src/core/index.d.ts.map +1 -0
  28. package/dist/src/core/index.js +11 -0
  29. package/dist/src/core/index.js.map +1 -0
  30. package/dist/src/core/local-cache.d.ts +69 -0
  31. package/dist/src/core/local-cache.d.ts.map +1 -0
  32. package/dist/src/core/local-cache.js +212 -0
  33. package/dist/src/core/local-cache.js.map +1 -0
  34. package/dist/src/core/logger.d.ts.map +1 -0
  35. package/{logger.js → dist/src/core/logger.js} +8 -9
  36. package/dist/src/core/logger.js.map +1 -0
  37. package/dist/src/core/mcp-factory.d.ts +12 -0
  38. package/dist/src/core/mcp-factory.d.ts.map +1 -0
  39. package/dist/src/core/mcp-factory.js +143 -0
  40. package/dist/src/core/mcp-factory.js.map +1 -0
  41. package/dist/src/core/mcp-server.d.ts +3 -0
  42. package/dist/src/core/mcp-server.d.ts.map +1 -0
  43. package/dist/src/core/mcp-server.js +55 -0
  44. package/dist/src/core/mcp-server.js.map +1 -0
  45. package/dist/src/core/migrate-plugin.d.ts +15 -0
  46. package/dist/src/core/migrate-plugin.d.ts.map +1 -0
  47. package/dist/src/core/migrate-plugin.js +181 -0
  48. package/dist/src/core/migrate-plugin.js.map +1 -0
  49. package/dist/src/core/pets-registry.d.ts +47 -0
  50. package/dist/src/core/pets-registry.d.ts.map +1 -0
  51. package/dist/src/core/pets-registry.js +109 -0
  52. package/dist/src/core/pets-registry.js.map +1 -0
  53. package/dist/src/core/plugin-factory.d.ts +58 -0
  54. package/dist/src/core/plugin-factory.d.ts.map +1 -0
  55. package/dist/src/core/plugin-factory.js +212 -0
  56. package/dist/src/core/plugin-factory.js.map +1 -0
  57. package/dist/src/core/prompt-utils.d.ts +14 -0
  58. package/dist/src/core/prompt-utils.d.ts.map +1 -0
  59. package/dist/src/core/prompt-utils.js +106 -0
  60. package/dist/src/core/prompt-utils.js.map +1 -0
  61. package/dist/src/core/schema-helpers.d.ts +33 -0
  62. package/dist/src/core/schema-helpers.d.ts.map +1 -0
  63. package/dist/src/core/schema-helpers.js +46 -0
  64. package/dist/src/core/schema-helpers.js.map +1 -0
  65. package/dist/src/core/search-pets.d.ts +29 -0
  66. package/dist/src/core/search-pets.d.ts.map +1 -0
  67. package/dist/src/core/search-pets.js +196 -0
  68. package/dist/src/core/search-pets.js.map +1 -0
  69. package/dist/src/core/types.d.ts +63 -0
  70. package/dist/src/core/types.d.ts.map +1 -0
  71. package/dist/src/core/types.js +2 -0
  72. package/dist/src/core/types.js.map +1 -0
  73. package/dist/src/core/validate-pet.d.ts +40 -0
  74. package/dist/src/core/validate-pet.d.ts.map +1 -0
  75. package/dist/src/core/validate-pet.js +650 -0
  76. package/dist/src/core/validate-pet.js.map +1 -0
  77. package/package.json +7 -11
  78. package/ai-client-base/index.ts +0 -117
  79. package/build-pet.ts +0 -429
  80. package/cli.ts +0 -179
  81. package/config-manager.ts +0 -82
  82. package/deploy-pet.ts +0 -91
  83. package/index.ts +0 -10
  84. package/local-cache.ts +0 -280
  85. package/logger.ts +0 -143
  86. package/mcp-factory.ts +0 -180
  87. package/mcp-server.ts +0 -69
  88. package/migrate-plugin.ts +0 -220
  89. package/pets-registry.ts +0 -160
  90. package/plugin-factory.ts +0 -309
  91. package/prompt-utils.ts +0 -130
  92. package/schema-helpers.ts +0 -59
  93. package/search-pets.ts +0 -267
  94. package/types.ts +0 -68
  95. package/validate-pet.ts +0 -594
  96. /package/{logger.d.ts → dist/src/core/logger.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-pet.js","sourceRoot":"","sources":["../../../validate-pet.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,21 +1,17 @@
1
1
  {
2
2
  "name": "openpets",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "type": "module",
5
5
  "description": "Core package for OpenPets - AI plugin infrastructure and shared utilities",
6
- "main": "index.ts",
7
- "types": "index.ts",
6
+ "main": "./dist/src/core/index.js",
7
+ "types": "./dist/src/core/index.d.ts",
8
8
  "bin": {
9
- "pets": "./cli.ts",
10
- "pets-mcp": "./mcp-server.ts"
9
+ "pets": "./dist/src/core/cli.js",
10
+ "pets-mcp": "./dist/src/core/mcp-server.js"
11
11
  },
12
12
  "files": [
13
- "*.ts",
14
- "*.js",
15
- "*.d.ts",
16
- "ai-client-base/**/*",
17
- "!**/*.test.ts",
18
- "!**/*.test.js"
13
+ "dist/**/*",
14
+ "!dist/**/*.test.*"
19
15
  ],
20
16
  "keywords": [
21
17
  "ai",
@@ -1,117 +0,0 @@
1
- import { createLogger } from "../logger"
2
- import * as fs from "fs"
3
- import * as path from "path"
4
- import { exec } from "child_process"
5
- import { promisify } from "util"
6
-
7
- const execAsync = promisify(exec)
8
- const logger = createLogger("base-ai-client")
9
-
10
- export interface AIImageResult {
11
- success: boolean
12
- images?: Array<{ url: string; width?: number; height?: number }>
13
- error?: string
14
- metadata?: Record<string, any>
15
- requestId?: string
16
- credits?: Record<string, any>
17
- }
18
-
19
- export interface AIVideoResult {
20
- success: boolean
21
- videos?: Array<{ url: string; duration?: number; width?: number; height?: number }>
22
- error?: string
23
- metadata?: Record<string, any>
24
- requestId?: string
25
- credits?: Record<string, any>
26
- }
27
-
28
- export interface BaseAIClientConfig {
29
- apiKey: string
30
- baseUrl?: string
31
- debug?: boolean
32
- }
33
-
34
- export abstract class BaseAIClient {
35
- protected apiKey: string
36
- protected baseUrl?: string
37
- protected debug: boolean
38
-
39
- constructor(config: BaseAIClientConfig) {
40
- this.apiKey = config.apiKey
41
- this.baseUrl = config.baseUrl
42
- this.debug = config.debug || false
43
- }
44
-
45
- abstract get providerName(): string
46
-
47
- protected ensureApiKey(envVarName: string): void {
48
- if (!this.apiKey || this.apiKey.trim() === "") {
49
- throw new Error(`${envVarName} environment variable is required but not set`)
50
- }
51
- }
52
-
53
- protected async downloadMedia(url: string, outputDir: string, prefix: string): Promise<string> {
54
- try {
55
- if (!fs.existsSync(outputDir)) {
56
- fs.mkdirSync(outputDir, { recursive: true })
57
- }
58
-
59
- const timestamp = Date.now()
60
- const extension = url.includes('.mp4') || url.includes('video') ? 'mp4' : 'png'
61
- const filename = `${prefix}-${timestamp}.${extension}`
62
- const filepath = path.join(outputDir, filename)
63
-
64
- logger.info(`Downloading media from ${url}`)
65
-
66
- const response = await fetch(url)
67
- if (!response.ok) {
68
- throw new Error(`Failed to download: ${response.statusText}`)
69
- }
70
-
71
- const buffer = await response.arrayBuffer()
72
- fs.writeFileSync(filepath, Buffer.from(buffer))
73
-
74
- logger.info(`Media saved to ${filepath}`)
75
- return filepath
76
- } catch (error: any) {
77
- logger.error(`Failed to download media: ${error.message}`)
78
- throw error
79
- }
80
- }
81
-
82
- protected async openInDefaultViewer(filepath: string): Promise<void> {
83
- try {
84
- const platform = process.platform
85
- let command: string
86
-
87
- if (platform === "darwin") {
88
- command = `open "${filepath}"`
89
- } else if (platform === "win32") {
90
- command = `start "" "${filepath}"`
91
- } else {
92
- command = `xdg-open "${filepath}"`
93
- }
94
-
95
- await execAsync(command)
96
- logger.info(`Opened ${filepath} in default viewer`)
97
- } catch (error: any) {
98
- logger.warn(`Failed to open in viewer: ${error.message}`)
99
- }
100
- }
101
-
102
- protected getMimeType(filename: string): string {
103
- const ext = path.extname(filename).toLowerCase()
104
- const mimeTypes: Record<string, string> = {
105
- '.jpg': 'image/jpeg',
106
- '.jpeg': 'image/jpeg',
107
- '.png': 'image/png',
108
- '.gif': 'image/gif',
109
- '.webp': 'image/webp',
110
- '.mp4': 'video/mp4',
111
- '.mov': 'video/quicktime',
112
- '.avi': 'video/x-msvideo',
113
- '.webm': 'video/webm'
114
- }
115
- return mimeTypes[ext] || 'application/octet-stream'
116
- }
117
- }
package/build-pet.ts DELETED
@@ -1,429 +0,0 @@
1
- import { join, dirname } from 'path'
2
- import { fileURLToPath } from 'url'
3
- import { existsSync, readdirSync, readFileSync, statSync, writeFileSync } from 'fs'
4
- import { pathToFileURL } from 'url'
5
- import { PluginValidator } from './validate-pet.js'
6
-
7
- const __filename = fileURLToPath(import.meta.url)
8
- const __dirname = dirname(__filename)
9
- const projectRoot = dirname(dirname(__dirname))
10
-
11
- const DEBUG = process.env.PETS_DEBUG === 'true'
12
-
13
- function debug(...msgs: any[]) {
14
- if (DEBUG) {
15
- console.log('[BUILD-PET]', ...msgs)
16
- }
17
- }
18
-
19
- interface ToolDefinition {
20
- name: string
21
- description: string
22
- schema: any
23
- }
24
-
25
- async function extractToolsFromIndexFile(indexPath: string): Promise<ToolDefinition[]> {
26
- debug('=== EXTRACTING TOOLS FROM INDEX FILE ===')
27
- debug('Index path:', indexPath)
28
- debug('File exists:', existsSync(indexPath))
29
-
30
- try {
31
- const indexUrl = pathToFileURL(indexPath).href
32
- debug('Index URL:', indexUrl)
33
-
34
- debug('Attempting dynamic import...')
35
- const indexModule = await import(/* @vite-ignore */ indexUrl)
36
- debug('Import successful')
37
- debug('Module keys:', Object.keys(indexModule))
38
-
39
- if (indexModule.toolsMetadata && Array.isArray(indexModule.toolsMetadata)) {
40
- console.log(` Found ${indexModule.toolsMetadata.length} tools from exported toolsMetadata`)
41
- debug('Tools metadata:', JSON.stringify(indexModule.toolsMetadata, null, 2))
42
- return indexModule.toolsMetadata
43
- } else {
44
- debug('toolsMetadata not found or not an array')
45
- debug('indexModule.toolsMetadata:', indexModule.toolsMetadata)
46
- }
47
- } catch (error) {
48
- console.warn(` ⚠️ Could not import toolsMetadata, falling back to file parsing`)
49
- console.warn(` Error: ${error instanceof Error ? error.message : String(error)}`)
50
- debug('Import error details:', {
51
- name: error instanceof Error ? error.name : 'Unknown',
52
- message: error instanceof Error ? error.message : String(error),
53
- stack: error instanceof Error ? error.stack : 'No stack trace'
54
- })
55
- }
56
-
57
- debug('Falling back to file parsing')
58
- return extractToolsFromIndexFileByParsing(indexPath)
59
- }
60
-
61
- function extractToolsFromIndexFileByParsing(indexPath: string): ToolDefinition[] {
62
- const content = readFileSync(indexPath, 'utf8')
63
-
64
- const toolsMatch = content.match(/const\s+tools:\s*ToolDefinition\[\]\s*=\s*\[([\s\S]*?)\n\s*\]/m)
65
- if (!toolsMatch) {
66
- console.warn('⚠️ Could not find tools array in index.ts')
67
- return []
68
- }
69
-
70
- const toolsArray = toolsMatch[1]
71
- const toolNames: ToolDefinition[] = []
72
-
73
- const toolsSeparated = toolsArray.split(/\n\s*\{/).filter(part => part.includes('name:'))
74
- const toolBlocks = toolsSeparated.map((part, idx) => {
75
- if (idx === 0) return part
76
- return '{' + part
77
- })
78
-
79
- for (const block of toolBlocks) {
80
- const nameMatch = block.match(/name:\s*["']([^"']+)["']/)
81
- const descMatch = block.match(/description:\s*["']([^"']+)["']/)
82
-
83
- const schemaMatch = block.match(/schema:\s*z\.object\(\{([\s\S]*?)\}\),?\s*(?:async\s+execute|$)/)
84
-
85
- if (nameMatch && descMatch) {
86
- let schemaProperties: any = {}
87
-
88
- if (schemaMatch) {
89
- const schemaContent = schemaMatch[1]
90
-
91
- const lines = schemaContent.split('\n').filter(l => l.trim() && !l.trim().startsWith('//'))
92
-
93
- for (const line of lines) {
94
- const propMatch = line.match(/^\s*(\w+):\s*z\.(.+?),?\s*$/)
95
- if (!propMatch) continue
96
-
97
- const [, propName, zodDef] = propMatch
98
- let propSchema: any = {}
99
-
100
- if (zodDef.includes('string(')) {
101
- propSchema.type = 'string'
102
- } else if (zodDef.includes('number(')) {
103
- propSchema.type = 'number'
104
- const minMatch = zodDef.match(/\.min\((\d+)\)/)
105
- const maxMatch = zodDef.match(/\.max\((\d+)\)/)
106
- if (minMatch) propSchema.minimum = parseInt(minMatch[1])
107
- if (maxMatch) propSchema.maximum = parseInt(maxMatch[1])
108
- } else if (zodDef.includes('boolean(')) {
109
- propSchema.type = 'boolean'
110
- } else if (zodDef.includes('enum(')) {
111
- propSchema.type = 'string'
112
- const enumMatch = zodDef.match(/enum\(\[([^\]]+)\]\)/)
113
- if (enumMatch) {
114
- const enumValues = enumMatch[1].match(/["']([^"']+)["']/g)?.map(v => v.replace(/["']/g, ''))
115
- if (enumValues) propSchema.enum = enumValues
116
- }
117
- } else if (zodDef.includes('array(')) {
118
- propSchema.type = 'array'
119
- const arrayTypeMatch = zodDef.match(/array\(z\.(\w+)\(\)\)/)
120
- if (arrayTypeMatch) {
121
- propSchema.items = { type: arrayTypeMatch[1].toLowerCase() }
122
- }
123
- }
124
-
125
- if (zodDef.includes('.optional()')) {
126
- propSchema.optional = true
127
- }
128
-
129
- const descMatch = zodDef.match(/\.describe\(["']([^"']+)["']\)/)
130
- if (descMatch) {
131
- propSchema.description = descMatch[1]
132
- }
133
-
134
- schemaProperties[propName] = propSchema
135
- }
136
- }
137
-
138
- toolNames.push({
139
- name: nameMatch[1],
140
- description: descMatch[1],
141
- schema: {
142
- type: 'object',
143
- properties: schemaProperties
144
- }
145
- })
146
- }
147
- }
148
-
149
- console.log(` Found ${toolNames.length} tools in index.ts`)
150
- return toolNames
151
- }
152
-
153
- function formatZodSchema(schema: any, depth: number = 0): any {
154
- if (!schema || !schema._def) {
155
- return { type: 'object', properties: {} }
156
- }
157
-
158
- const def = schema._def
159
- const zodType = def.typeName || def.type || schema.constructor?.name || 'unknown'
160
-
161
- if (zodType === 'ZodObject' || zodType === 'object') {
162
- const properties: any = {}
163
- const shapeObj = typeof def.shape === 'function' ? def.shape() : def.shape || {}
164
-
165
- for (const [key, value] of Object.entries(shapeObj)) {
166
- properties[key] = formatZodSchema(value, depth + 1)
167
- }
168
-
169
- return {
170
- type: 'object',
171
- properties
172
- }
173
- }
174
-
175
- if (zodType === 'ZodString' || zodType === 'string') {
176
- return { type: 'string' }
177
- }
178
-
179
- if (zodType === 'ZodNumber' || zodType === 'number') {
180
- const result: any = { type: 'number' }
181
- if (def.checks) {
182
- for (const check of def.checks) {
183
- if (check.kind === 'min') result.minimum = check.value
184
- if (check.kind === 'max') result.maximum = check.value
185
- }
186
- }
187
- return result
188
- }
189
-
190
- if (zodType === 'ZodBoolean' || zodType === 'boolean') {
191
- return { type: 'boolean' }
192
- }
193
-
194
- if (zodType === 'ZodArray' || zodType === 'array') {
195
- return {
196
- type: 'array',
197
- items: formatZodSchema(def.type, depth + 1)
198
- }
199
- }
200
-
201
- if (zodType === 'ZodEnum' || zodType === 'enum') {
202
- let values = def.values
203
- if (!values && schema._def?.values) {
204
- values = schema._def.values
205
- }
206
- if (!values && schema.options) {
207
- values = schema.options
208
- }
209
-
210
- const enumArray = Array.isArray(values) ? values : Object.values(values || {})
211
- return {
212
- type: 'string',
213
- enum: enumArray
214
- }
215
- }
216
-
217
- if (zodType === 'ZodOptional' || zodType === 'optional') {
218
- return {
219
- ...formatZodSchema(def.innerType, depth + 1),
220
- optional: true
221
- }
222
- }
223
-
224
- return { type: zodType }
225
- }
226
-
227
- function generateToolsMetadata(tools: ToolDefinition[]): Array<{ name: string; description: string; schema: any }> {
228
- return tools.map(tool => ({
229
- name: tool.name,
230
- description: tool.description,
231
- schema: tool.schema._def ? formatZodSchema(tool.schema) : tool.schema
232
- }))
233
- }
234
-
235
- function generateScriptsFromTools(tools: ToolDefinition[], petName: string): Record<string, string> {
236
- const scripts: Record<string, string> = {
237
- build: 'pets build',
238
- 'build:tsc': 'tsc',
239
- quickstart: `opencode run "list available ${petName} commands"`,
240
- }
241
-
242
- for (const tool of tools) {
243
- let scriptName = tool.name
244
-
245
- if (scriptName.startsWith(`${petName}-`)) {
246
- scriptName = scriptName.replace(new RegExp(`^${petName}-`), 'test:')
247
- } else {
248
- scriptName = `test:${scriptName}`
249
- }
250
-
251
- const command = `opencode run "${tool.description}"`
252
- scripts[scriptName] = command
253
- }
254
-
255
- scripts['test:all'] = 'echo "Run individual test scripts to test specific tools"'
256
-
257
- return scripts
258
- }
259
-
260
- export async function buildPet(petName?: string): Promise<void> {
261
- debug('=== BUILD PET STARTING ===')
262
- debug('Initial petName:', petName)
263
- debug('CWD:', process.cwd())
264
- debug('Project root:', projectRoot)
265
-
266
- if (!petName) {
267
- const cwd = process.cwd()
268
- const petsDir = join(projectRoot, 'pets')
269
-
270
- debug('Auto-detecting pet from CWD:', cwd)
271
- debug('Pets directory:', petsDir)
272
-
273
- if (cwd.includes('/pets/')) {
274
- petName = cwd.split('/pets/')[1].split('/')[0]
275
- console.log(`📦 Auto-detected pet: ${petName}`)
276
- debug('Auto-detected pet:', petName)
277
- }
278
-
279
- if (!petName) {
280
- console.error('Usage: pets build <pet-name>')
281
- console.error('Example: pets build postgres')
282
- console.error('')
283
- console.error('Available pets:')
284
- if (existsSync(petsDir)) {
285
- const pets = readdirSync(petsDir).filter(dir => {
286
- const petPath = join(petsDir, dir)
287
- return statSync(petPath).isDirectory() && dir !== '_TEMPLATE_'
288
- })
289
- pets.forEach(pet => console.error(` - ${pet}`))
290
- debug('Available pets:', pets)
291
- } else {
292
- debug('Pets directory does not exist:', petsDir)
293
- }
294
- process.exit(1)
295
- }
296
- }
297
-
298
- const petDir = join(projectRoot, 'pets', petName)
299
- const packageJsonPath = join(petDir, 'package.json')
300
- const indexPath = join(petDir, 'index.ts')
301
-
302
- debug('Pet directory:', petDir)
303
- debug('Package.json path:', packageJsonPath)
304
- debug('Index.ts path:', indexPath)
305
-
306
- if (!existsSync(petDir)) {
307
- console.error(`❌ Pet '${petName}' not found in pets/ directory`)
308
- debug('Pet directory does not exist:', petDir)
309
- process.exit(1)
310
- }
311
-
312
- if (!existsSync(packageJsonPath)) {
313
- console.error(`❌ package.json not found for pet '${petName}'`)
314
- debug('Package.json does not exist:', packageJsonPath)
315
- process.exit(1)
316
- }
317
-
318
- if (!existsSync(indexPath)) {
319
- console.error(`❌ index.ts not found for pet '${petName}'`)
320
- debug('Index.ts does not exist:', indexPath)
321
- process.exit(1)
322
- }
323
-
324
- console.log(`🔨 Building ${petName}...`)
325
- debug('All required files found, proceeding with build')
326
-
327
- const packageJsonContent = readFileSync(packageJsonPath, 'utf8')
328
- debug('Package.json content length:', packageJsonContent.length)
329
- const packageJson = JSON.parse(packageJsonContent)
330
- debug('Package.json parsed successfully')
331
- debug('Package name:', packageJson.name)
332
- debug('Package version:', packageJson.version)
333
-
334
- // Auto-generate repository field if missing
335
- if (!packageJson.repository) {
336
- packageJson.repository = {
337
- type: 'git',
338
- url: `https://github.com/raggle-ai/pets/pets/${petName}`
339
- }
340
- debug('Auto-generated repository field:', packageJson.repository.url)
341
- }
342
-
343
- console.log(` Name: ${packageJson.name}`)
344
- console.log(` Version: ${packageJson.version}`)
345
- console.log(` Description: ${packageJson.description || 'No description'}`)
346
-
347
- console.log(`\n🔍 Validating plugin structure...`)
348
- const validator = new PluginValidator()
349
- const validation = validator.validatePlugin(petDir)
350
-
351
- if (validation.result.errors.length > 0) {
352
- console.log(`\n❌ Validation failed with ${validation.result.errors.length} error(s):`)
353
- validation.result.errors.forEach(error => {
354
- console.log(` ❌ ${error}`)
355
- })
356
- console.log(`\n💥 Build aborted due to validation errors.`)
357
- process.exit(1)
358
- }
359
-
360
- if (validation.result.warnings.length > 0) {
361
- console.log(`\n⚠️ Found ${validation.result.warnings.length} warning(s):`)
362
- validation.result.warnings.forEach(warning => {
363
- console.log(` ⚠️ ${warning}`)
364
- })
365
- }
366
-
367
- if (validation.result.codePatternWarnings && validation.result.codePatternWarnings.length > 0) {
368
- console.log(`\n📋 Code pattern analysis:`)
369
- validation.result.codePatternWarnings.forEach(warning => {
370
- console.log(` ${warning}`)
371
- })
372
- }
373
-
374
- if (validation.result.errors.length === 0 && validation.result.warnings.length === 0 && (!validation.result.codePatternWarnings || validation.result.codePatternWarnings.length === 0)) {
375
- console.log(` ✓ All validation checks passed`)
376
- }
377
-
378
- debug('Extracting tools from index file...')
379
- const tools = await extractToolsFromIndexFile(indexPath)
380
- debug(`Extracted ${tools.length} tools`)
381
-
382
- if (tools.length > 0) {
383
- console.log(`\n📝 Generating scripts and metadata for ${tools.length} tools...`)
384
- debug('Tools extracted:', tools.map(t => t.name))
385
-
386
- const scripts = generateScriptsFromTools(tools, petName)
387
- debug('Generated scripts:', Object.keys(scripts))
388
-
389
- const toolsMetadata = generateToolsMetadata(tools)
390
- debug('Generated tools metadata count:', toolsMetadata.length)
391
-
392
- packageJson.scripts = scripts
393
- delete packageJson.tools
394
-
395
- const commandsJsonPath = join(petDir, 'commands.json')
396
- debug('Commands.json path:', commandsJsonPath)
397
-
398
- const commandsData = {
399
- name: packageJson.name,
400
- version: packageJson.version,
401
- description: packageJson.description,
402
- tools: toolsMetadata,
403
- generatedAt: new Date().toISOString()
404
- }
405
-
406
- debug('Writing package.json...')
407
- writeFileSync(packageJsonPath, JSON.stringify(packageJson, null, 2) + '\n', 'utf8')
408
- debug('Package.json written successfully')
409
-
410
- debug('Writing commands.json...')
411
- writeFileSync(commandsJsonPath, JSON.stringify(commandsData, null, 2) + '\n', 'utf8')
412
- debug('Commands.json written successfully')
413
-
414
- console.log(` ✓ Updated package.json with ${Object.keys(scripts).length} scripts`)
415
- console.log(` ✓ Generated commands.json with ${tools.length} tools`)
416
-
417
- console.log(`\n🔧 Generated test scripts:`)
418
- Object.entries(scripts).forEach(([name, cmd]) => {
419
- if (name.startsWith('test:')) {
420
- console.log(` - npm run ${name}`)
421
- }
422
- })
423
- } else {
424
- debug('No tools found in index file')
425
- }
426
-
427
- console.log(`\n✅ ${petName} built successfully!`)
428
- debug('=== BUILD COMPLETE ===')
429
- }