@tpmjs/cli 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 (97) hide show
  1. package/README.md +127 -0
  2. package/bin/run.js +5 -0
  3. package/dist/commands/agent/chat.d.ts +23 -0
  4. package/dist/commands/agent/chat.js +608 -0
  5. package/dist/commands/agent/chat.js.map +1 -0
  6. package/dist/commands/agent/create.d.ts +22 -0
  7. package/dist/commands/agent/create.js +549 -0
  8. package/dist/commands/agent/create.js.map +1 -0
  9. package/dist/commands/agent/delete.d.ts +19 -0
  10. package/dist/commands/agent/delete.js +529 -0
  11. package/dist/commands/agent/delete.js.map +1 -0
  12. package/dist/commands/agent/list.d.ts +16 -0
  13. package/dist/commands/agent/list.js +535 -0
  14. package/dist/commands/agent/list.js.map +1 -0
  15. package/dist/commands/agent/update.d.ts +25 -0
  16. package/dist/commands/agent/update.js +547 -0
  17. package/dist/commands/agent/update.js.map +1 -0
  18. package/dist/commands/auth/login.d.ts +21 -0
  19. package/dist/commands/auth/login.js +603 -0
  20. package/dist/commands/auth/login.js.map +1 -0
  21. package/dist/commands/auth/logout.d.ts +13 -0
  22. package/dist/commands/auth/logout.js +227 -0
  23. package/dist/commands/auth/logout.js.map +1 -0
  24. package/dist/commands/auth/status.d.ts +14 -0
  25. package/dist/commands/auth/status.js +542 -0
  26. package/dist/commands/auth/status.js.map +1 -0
  27. package/dist/commands/auth/whoami.d.ts +14 -0
  28. package/dist/commands/auth/whoami.js +500 -0
  29. package/dist/commands/auth/whoami.js.map +1 -0
  30. package/dist/commands/collection/add.d.ts +18 -0
  31. package/dist/commands/collection/add.js +509 -0
  32. package/dist/commands/collection/add.js.map +1 -0
  33. package/dist/commands/collection/create.d.ts +17 -0
  34. package/dist/commands/collection/create.js +521 -0
  35. package/dist/commands/collection/create.js.map +1 -0
  36. package/dist/commands/collection/delete.d.ts +19 -0
  37. package/dist/commands/collection/delete.js +531 -0
  38. package/dist/commands/collection/delete.js.map +1 -0
  39. package/dist/commands/collection/import.d.ts +18 -0
  40. package/dist/commands/collection/import.js +546 -0
  41. package/dist/commands/collection/import.js.map +1 -0
  42. package/dist/commands/collection/list.d.ts +16 -0
  43. package/dist/commands/collection/list.js +531 -0
  44. package/dist/commands/collection/list.js.map +1 -0
  45. package/dist/commands/collection/remove.d.ts +18 -0
  46. package/dist/commands/collection/remove.js +501 -0
  47. package/dist/commands/collection/remove.js.map +1 -0
  48. package/dist/commands/collection/update.d.ts +20 -0
  49. package/dist/commands/collection/update.js +522 -0
  50. package/dist/commands/collection/update.js.map +1 -0
  51. package/dist/commands/doctor.d.ts +14 -0
  52. package/dist/commands/doctor.js +592 -0
  53. package/dist/commands/doctor.js.map +1 -0
  54. package/dist/commands/mcp/config.d.ts +19 -0
  55. package/dist/commands/mcp/config.js +265 -0
  56. package/dist/commands/mcp/config.js.map +1 -0
  57. package/dist/commands/mcp/serve.d.ts +23 -0
  58. package/dist/commands/mcp/serve.js +689 -0
  59. package/dist/commands/mcp/serve.js.map +1 -0
  60. package/dist/commands/playground.d.ts +23 -0
  61. package/dist/commands/playground.js +666 -0
  62. package/dist/commands/playground.js.map +1 -0
  63. package/dist/commands/publish/check.d.ts +17 -0
  64. package/dist/commands/publish/check.js +544 -0
  65. package/dist/commands/publish/check.js.map +1 -0
  66. package/dist/commands/publish/preview.d.ts +19 -0
  67. package/dist/commands/publish/preview.js +291 -0
  68. package/dist/commands/publish/preview.js.map +1 -0
  69. package/dist/commands/tool/execute.d.ts +21 -0
  70. package/dist/commands/tool/execute.js +574 -0
  71. package/dist/commands/tool/execute.js.map +1 -0
  72. package/dist/commands/tool/info.d.ts +18 -0
  73. package/dist/commands/tool/info.js +537 -0
  74. package/dist/commands/tool/info.js.map +1 -0
  75. package/dist/commands/tool/init.d.ts +24 -0
  76. package/dist/commands/tool/init.js +461 -0
  77. package/dist/commands/tool/init.js.map +1 -0
  78. package/dist/commands/tool/search.d.ts +20 -0
  79. package/dist/commands/tool/search.js +566 -0
  80. package/dist/commands/tool/search.js.map +1 -0
  81. package/dist/commands/tool/trending.d.ts +15 -0
  82. package/dist/commands/tool/trending.js +523 -0
  83. package/dist/commands/tool/trending.js.map +1 -0
  84. package/dist/commands/tool/validate.d.ts +15 -0
  85. package/dist/commands/tool/validate.js +555 -0
  86. package/dist/commands/tool/validate.js.map +1 -0
  87. package/dist/commands/update.d.ts +15 -0
  88. package/dist/commands/update.js +228 -0
  89. package/dist/commands/update.js.map +1 -0
  90. package/dist/hooks/init.d.ts +5 -0
  91. package/dist/hooks/init.js +8 -0
  92. package/dist/hooks/init.js.map +1 -0
  93. package/dist/index.d.ts +262 -0
  94. package/dist/index.js +473 -0
  95. package/dist/index.js.map +1 -0
  96. package/oclif.manifest.json +1699 -0
  97. package/package.json +104 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/lib/config.ts","../../../src/lib/api-client.ts","../../../src/lib/output.ts","../../../src/commands/agent/chat.ts"],"names":[],"mappings":"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","file":"chat.js","sourcesContent":["import Conf from 'conf';\nimport * as fs from 'node:fs';\nimport * as os from 'node:os';\nimport * as path from 'node:path';\n\nexport interface TpmConfig {\n apiUrl?: string;\n defaultOutput?: 'human' | 'json';\n verbose?: boolean;\n analytics?: boolean;\n env?: Record<string, string>;\n}\n\nexport interface TpmCredentials {\n apiKey?: string;\n refreshToken?: string;\n expiresAt?: string;\n}\n\nconst CONFIG_DIR = path.join(os.homedir(), '.tpmjs');\nconst CREDENTIALS_FILE = path.join(CONFIG_DIR, 'credentials.json');\nconst HISTORY_DIR = path.join(CONFIG_DIR, 'history');\n\n// Ensure config directory exists\nfunction ensureConfigDir(): void {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n }\n}\n\n// Config store using Conf\nconst configStore = new Conf<TpmConfig>({\n projectName: 'tpmjs',\n cwd: CONFIG_DIR,\n configName: 'config',\n defaults: {\n apiUrl: 'https://tpmjs.com/api',\n defaultOutput: 'human',\n verbose: false,\n analytics: false,\n },\n});\n\nexport function getConfig(): TpmConfig {\n return configStore.store;\n}\n\nexport function setConfig(config: Partial<TpmConfig>): void {\n for (const [key, value] of Object.entries(config)) {\n if (value !== undefined) {\n configStore.set(key, value);\n }\n }\n}\n\nexport function getConfigValue<K extends keyof TpmConfig>(key: K): TpmConfig[K] {\n return configStore.get(key);\n}\n\nexport function setConfigValue<K extends keyof TpmConfig>(\n key: K,\n value: TpmConfig[K]\n): void {\n configStore.set(key, value);\n}\n\nexport function resetConfig(): void {\n configStore.clear();\n}\n\n// Credentials management with secure file permissions\nexport function loadCredentials(): TpmCredentials | null {\n ensureConfigDir();\n\n if (!fs.existsSync(CREDENTIALS_FILE)) {\n return null;\n }\n\n try {\n const content = fs.readFileSync(CREDENTIALS_FILE, 'utf-8');\n return JSON.parse(content) as TpmCredentials;\n } catch {\n return null;\n }\n}\n\nexport function saveCredentials(credentials: TpmCredentials): void {\n ensureConfigDir();\n\n const content = JSON.stringify(credentials, null, 2);\n fs.writeFileSync(CREDENTIALS_FILE, content, { mode: 0o600 });\n}\n\nexport function deleteCredentials(): void {\n if (fs.existsSync(CREDENTIALS_FILE)) {\n fs.unlinkSync(CREDENTIALS_FILE);\n }\n}\n\nexport function hasCredentials(): boolean {\n const creds = loadCredentials();\n return creds !== null && !!creds.apiKey;\n}\n\n// Get API key from multiple sources (priority order)\nexport function getApiKey(): string | undefined {\n // 1. Environment variable\n if (process.env.TPMJS_API_KEY) {\n return process.env.TPMJS_API_KEY;\n }\n\n // 2. Credentials file\n const creds = loadCredentials();\n if (creds?.apiKey) {\n return creds.apiKey;\n }\n\n return undefined;\n}\n\n// Get API URL\nexport function getApiUrl(): string {\n return process.env.TPMJS_API_URL ?? getConfigValue('apiUrl') ?? 'https://tpmjs.com/api';\n}\n\n// History directory for conversation caching\nexport function getHistoryDir(): string {\n if (!fs.existsSync(HISTORY_DIR)) {\n fs.mkdirSync(HISTORY_DIR, { recursive: true, mode: 0o700 });\n }\n return HISTORY_DIR;\n}\n\n// Config directory path\nexport function getConfigDir(): string {\n ensureConfigDir();\n return CONFIG_DIR;\n}\n","import { getApiKey, getApiUrl } from './config.js';\n\nexport interface TpmClientOptions {\n baseUrl?: string;\n apiKey?: string;\n timeout?: number;\n}\n\nexport interface ApiResponse<T> {\n success: boolean;\n data?: T;\n error?: string;\n message?: string;\n}\n\nexport interface PaginationOptions {\n limit?: number;\n offset?: number;\n}\n\nexport interface PaginatedResponse<T> {\n data: T[];\n pagination: {\n limit: number;\n offset: number;\n hasMore: boolean;\n };\n}\n\n// Tool types\nexport interface Tool {\n id: string;\n name: string;\n slug: string;\n description: string;\n category: string;\n tier: string;\n qualityScore: number | null;\n importHealth: string;\n executionHealth: string;\n likeCount: number;\n npmPackageName: string;\n npmVersion: string;\n npmDownloadsLastMonth: number;\n isOfficial: boolean;\n inputSchema?: Record<string, unknown>;\n outputSchema?: Record<string, unknown>;\n tools?: { name: string; description?: string }[];\n package?: {\n npmPackageName: string;\n category: string;\n npmDownloadsLastMonth: number;\n isOfficial: boolean;\n };\n}\n\nexport interface ToolSearchOptions extends PaginationOptions {\n category?: string;\n query?: string;\n}\n\n// Agent types\nexport interface Agent {\n id: string;\n uid: string;\n name: string;\n description: string | null;\n provider: string;\n modelId: string;\n systemPrompt: string | null;\n temperature: number;\n isPublic: boolean;\n likeCount: number;\n _count?: {\n tools: number;\n collections: number;\n };\n}\n\nexport interface CreateAgentInput {\n name: string;\n uid?: string;\n description?: string;\n provider: string;\n modelId: string;\n systemPrompt?: string;\n temperature?: number;\n isPublic?: boolean;\n collectionIds?: string[];\n toolIds?: string[];\n}\n\nexport interface UpdateAgentInput {\n name?: string;\n uid?: string;\n description?: string;\n provider?: string;\n modelId?: string;\n systemPrompt?: string;\n temperature?: number;\n isPublic?: boolean;\n maxToolCallsPerTurn?: number;\n maxMessagesInContext?: number;\n}\n\n// Collection types\nexport interface Collection {\n id: string;\n name: string;\n slug: string | null;\n description: string | null;\n isPublic: boolean;\n likeCount: number;\n _count?: {\n tools: number;\n };\n}\n\nexport interface CreateCollectionInput {\n name: string;\n description?: string;\n isPublic: boolean;\n}\n\nexport interface UpdateCollectionInput {\n name?: string;\n description?: string;\n isPublic?: boolean;\n}\n\n// User types\nexport interface User {\n id: string;\n name: string | null;\n username: string | null;\n email: string;\n image: string | null;\n}\n\n// API Key types\nexport interface ApiKey {\n id: string;\n name: string;\n keyPrefix: string;\n scopes: string[];\n isActive: boolean;\n lastUsedAt: string | null;\n expiresAt: string | null;\n createdAt: string;\n}\n\n// Stats types\nexport interface Stats {\n tools: {\n total: number;\n official: number;\n healthyImport: number;\n healthyExecution: number;\n };\n packages: {\n total: number;\n official: number;\n };\n categories: { name: string; count: number }[];\n}\n\nexport class TpmClient {\n private baseUrl: string;\n private apiKey: string | undefined;\n private timeout: number;\n\n constructor(options: TpmClientOptions = {}) {\n this.baseUrl = options.baseUrl ?? getApiUrl();\n this.apiKey = options.apiKey ?? getApiKey();\n this.timeout = options.timeout ?? 30000;\n }\n\n private async request<T>(\n endpoint: string,\n options: RequestInit = {}\n ): Promise<T> {\n const url = `${this.baseUrl}${endpoint}`;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...(options.headers as Record<string, string>),\n };\n\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`;\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.timeout);\n\n try {\n const response = await fetch(url, {\n ...options,\n headers,\n signal: controller.signal,\n });\n\n const data = await response.json() as T & { message?: string; error?: string };\n\n if (!response.ok) {\n throw new ApiError(\n data.message || data.error || `HTTP ${response.status}`,\n response.status,\n data\n );\n }\n\n return data as T;\n } finally {\n clearTimeout(timeoutId);\n }\n }\n\n // Health check\n async health(): Promise<{ status: string; timestamp: string }> {\n return this.request('/health');\n }\n\n // Stats\n async getStats(): Promise<ApiResponse<Stats>> {\n return this.request('/stats');\n }\n\n // Tools\n async searchTools(options: ToolSearchOptions = {}): Promise<PaginatedResponse<Tool>> {\n const params = new URLSearchParams();\n if (options.query) params.set('q', options.query);\n if (options.category) params.set('category', options.category);\n if (options.limit) params.set('limit', String(options.limit));\n if (options.offset) params.set('offset', String(options.offset));\n\n const queryString = params.toString();\n const endpoint = queryString ? `/tools?${queryString}` : '/tools';\n\n return this.request<PaginatedResponse<Tool>>(endpoint);\n }\n\n async getTool(packageName: string, toolName: string): Promise<ApiResponse<Tool>> {\n return this.request(`/tools/${encodeURIComponent(packageName)}/${encodeURIComponent(toolName)}`);\n }\n\n async getToolBySlug(slug: string): Promise<ApiResponse<Tool>> {\n // Search for the tool by slug\n const searchResult = await this.searchTools({ query: slug, limit: 1 });\n if (searchResult.data && searchResult.data.length > 0) {\n const tool = searchResult.data.find(t => t.slug === slug) || searchResult.data[0];\n return { success: true, data: tool };\n }\n return { success: false, error: 'Tool not found' };\n }\n\n async getTrendingTools(options: PaginationOptions = {}): Promise<PaginatedResponse<Tool>> {\n const params = new URLSearchParams();\n if (options.limit) params.set('limit', String(options.limit));\n if (options.offset) params.set('offset', String(options.offset));\n\n const queryString = params.toString();\n const endpoint = queryString ? `/tools/trending?${queryString}` : '/tools/trending';\n\n return this.request<PaginatedResponse<Tool>>(endpoint);\n }\n\n async validateTpmjsField(field: unknown): Promise<ApiResponse<{ valid: boolean; tier: string | null; errors?: unknown[] }>> {\n return this.request('/tools/validate', {\n method: 'POST',\n body: JSON.stringify(field),\n });\n }\n\n async executeTool(slug: string, params: Record<string, unknown>): Promise<unknown> {\n return this.request(`/tools/${encodeURIComponent(slug)}/execute`, {\n method: 'POST',\n body: JSON.stringify(params),\n });\n }\n\n async *executeToolStream(\n slug: string,\n params: Record<string, unknown>\n ): AsyncGenerator<{ type: string; data: string }> {\n const url = `${this.baseUrl}/tools/${encodeURIComponent(slug)}/execute`;\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'Accept': 'text/event-stream',\n };\n\n if (this.apiKey) {\n headers['Authorization'] = `Bearer ${this.apiKey}`;\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify({ ...params, stream: true }),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n throw new ApiError(errorText || `HTTP ${response.status}`, response.status);\n }\n\n if (!response.body) {\n throw new ApiError('No response body', 0);\n }\n\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n yield { type: 'done', data: '' };\n break;\n }\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() ?? '';\n\n for (const line of lines) {\n if (line.startsWith('data: ')) {\n const data = line.slice(6);\n if (data === '[DONE]') {\n yield { type: 'done', data: '' };\n return;\n }\n try {\n const parsed = JSON.parse(data);\n yield { type: parsed.type || 'text', data: parsed.content || parsed.data || data };\n } catch {\n yield { type: 'text', data };\n }\n }\n }\n }\n } finally {\n reader.releaseLock();\n }\n }\n\n // Agents\n async listAgents(options: PaginationOptions = {}): Promise<PaginatedResponse<Agent>> {\n const params = new URLSearchParams();\n if (options.limit) params.set('limit', String(options.limit));\n if (options.offset) params.set('offset', String(options.offset));\n\n const queryString = params.toString();\n const endpoint = queryString ? `/agents?${queryString}` : '/agents';\n\n return this.request<PaginatedResponse<Agent>>(endpoint);\n }\n\n async getAgent(id: string): Promise<ApiResponse<Agent>> {\n return this.request(`/agents/${id}`);\n }\n\n async createAgent(input: CreateAgentInput): Promise<ApiResponse<Agent>> {\n return this.request('/agents', {\n method: 'POST',\n body: JSON.stringify(input),\n });\n }\n\n async updateAgent(id: string, input: UpdateAgentInput): Promise<ApiResponse<Agent>> {\n return this.request(`/agents/${id}`, {\n method: 'PATCH',\n body: JSON.stringify(input),\n });\n }\n\n async deleteAgent(id: string): Promise<ApiResponse<void>> {\n return this.request(`/agents/${id}`, {\n method: 'DELETE',\n });\n }\n\n // Collections\n async listCollections(options: PaginationOptions = {}): Promise<PaginatedResponse<Collection>> {\n const params = new URLSearchParams();\n if (options.limit) params.set('limit', String(options.limit));\n if (options.offset) params.set('offset', String(options.offset));\n\n const queryString = params.toString();\n const endpoint = queryString ? `/collections?${queryString}` : '/collections';\n\n return this.request<PaginatedResponse<Collection>>(endpoint);\n }\n\n async getCollection(id: string): Promise<ApiResponse<Collection>> {\n return this.request(`/collections/${id}`);\n }\n\n async createCollection(input: CreateCollectionInput): Promise<ApiResponse<Collection>> {\n return this.request('/collections', {\n method: 'POST',\n body: JSON.stringify(input),\n });\n }\n\n async updateCollection(id: string, input: UpdateCollectionInput): Promise<ApiResponse<Collection>> {\n return this.request(`/collections/${id}`, {\n method: 'PATCH',\n body: JSON.stringify(input),\n });\n }\n\n async deleteCollection(id: string): Promise<ApiResponse<void>> {\n return this.request(`/collections/${id}`, {\n method: 'DELETE',\n });\n }\n\n async addToolsToCollection(id: string, toolIds: string[]): Promise<ApiResponse<void>> {\n // Add tools one by one (API doesn't support bulk)\n for (const toolId of toolIds) {\n await this.request(`/collections/${id}/tools/${toolId}`, {\n method: 'POST',\n });\n }\n return { success: true };\n }\n\n async removeToolFromCollection(id: string, toolId: string): Promise<ApiResponse<void>> {\n return this.request(`/collections/${id}/tools/${toolId}`, {\n method: 'DELETE',\n });\n }\n\n // User\n async whoami(): Promise<ApiResponse<User>> {\n return this.request('/user/profile');\n }\n\n async listApiKeys(): Promise<ApiResponse<ApiKey[]>> {\n return this.request('/user/tpmjs-api-keys');\n }\n\n // Check if authenticated\n isAuthenticated(): boolean {\n return !!this.apiKey;\n }\n}\n\n// Custom error class for API errors\nexport class ApiError extends Error {\n constructor(\n message: string,\n public statusCode: number,\n public data?: unknown\n ) {\n super(message);\n this.name = 'ApiError';\n }\n}\n\n// Singleton instance\nlet clientInstance: TpmClient | null = null;\n\nexport function getClient(options?: TpmClientOptions): TpmClient {\n if (!clientInstance || options) {\n clientInstance = new TpmClient(options);\n }\n return clientInstance;\n}\n","import Table from 'cli-table3';\nimport ora, { type Ora } from 'ora';\nimport pc from 'picocolors';\n\nexport interface OutputOptions {\n json?: boolean;\n verbose?: boolean;\n noColor?: boolean;\n}\n\nexport class OutputFormatter {\n private options: OutputOptions;\n\n constructor(options: OutputOptions = {}) {\n this.options = options;\n }\n\n // Output as JSON\n json(data: unknown): void {\n console.log(JSON.stringify(data, null, 2));\n }\n\n // Output a table\n table<T extends Record<string, unknown>>(\n data: T[],\n columns: { key: keyof T; header: string; width?: number }[]\n ): void {\n if (this.options.json) {\n this.json(data);\n return;\n }\n\n const table = new Table({\n head: columns.map((col) => pc.bold(col.header)),\n colWidths: columns.map((col) => col.width ?? null),\n style: {\n head: [],\n border: [],\n },\n });\n\n for (const row of data) {\n table.push(columns.map((col) => String(row[col.key] ?? '')));\n }\n\n console.log(table.toString());\n }\n\n // Success message\n success(message: string): void {\n if (this.options.json) return;\n console.log(pc.green('✓'), message);\n }\n\n // Error message\n error(message: string, details?: string): void {\n if (this.options.json) {\n this.json({ error: message, details });\n return;\n }\n console.error(pc.red('✗'), message);\n if (details && this.options.verbose) {\n console.error(pc.dim(details));\n }\n }\n\n // Warning message\n warning(message: string): void {\n if (this.options.json) return;\n console.log(pc.yellow('⚠'), message);\n }\n\n // Info message\n info(message: string): void {\n if (this.options.json) return;\n console.log(pc.blue('ℹ'), message);\n }\n\n // Debug message (only in verbose mode)\n debug(message: string): void {\n if (this.options.json) return;\n if (this.options.verbose) {\n console.log(pc.dim(`[debug] ${message}`));\n }\n }\n\n // Plain text output\n text(message: string): void {\n if (this.options.json) return;\n console.log(message);\n }\n\n // Heading\n heading(text: string): void {\n if (this.options.json) return;\n console.log();\n console.log(pc.bold(pc.underline(text)));\n console.log();\n }\n\n // Subheading\n subheading(text: string): void {\n if (this.options.json) return;\n console.log(pc.bold(text));\n }\n\n // Key-value pair\n keyValue(key: string, value: string | number | boolean | undefined): void {\n if (this.options.json) return;\n console.log(`${pc.dim(key + ':')} ${value ?? pc.dim('(not set)')}`);\n }\n\n // List item\n listItem(text: string, indent = 0): void {\n if (this.options.json) return;\n const prefix = ' '.repeat(indent) + '•';\n console.log(`${prefix} ${text}`);\n }\n\n // Spinner\n spinner(message: string): Ora {\n return ora({\n text: message,\n isSilent: this.options.json,\n }).start();\n }\n\n // Blank line\n newLine(): void {\n if (this.options.json) return;\n console.log();\n }\n\n // Horizontal rule\n hr(): void {\n if (this.options.json) return;\n console.log(pc.dim('─'.repeat(50)));\n }\n\n // Alias for hr\n divider(): void {\n this.hr();\n }\n\n // Code block\n code(text: string, language?: string): void {\n if (this.options.json) {\n this.json({ code: text, language });\n return;\n }\n console.log(pc.dim('```' + (language ?? '')));\n console.log(text);\n console.log(pc.dim('```'));\n }\n\n // Highlight text\n highlight(text: string): string {\n return pc.cyan(text);\n }\n\n // Dim text\n dim(text: string): string {\n return pc.dim(text);\n }\n\n // Bold text\n bold(text: string): string {\n return pc.bold(text);\n }\n\n // Link (just returns text in terminal)\n link(text: string, url: string): string {\n // OSC 8 hyperlink support for modern terminals\n return `\\x1b]8;;${url}\\x07${pc.underline(pc.blue(text))}\\x1b]8;;\\x07`;\n }\n}\n\n// Convenience function to create formatter from command flags\nexport function createOutput(flags: { json?: boolean; verbose?: boolean }): OutputFormatter {\n return new OutputFormatter({\n json: flags.json,\n verbose: flags.verbose,\n });\n}\n","import { Args, Command, Flags } from '@oclif/core';\nimport * as readline from 'node:readline';\nimport { getClient } from '../../lib/api-client.js';\nimport { createOutput } from '../../lib/output.js';\nimport { getApiKey, getApiUrl } from '../../lib/config.js';\n\nexport default class AgentChat extends Command {\n static description = 'Chat with an agent';\n\n static examples = [\n '<%= config.bin %> <%= command.id %> my-agent \"Hello!\"',\n '<%= config.bin %> <%= command.id %> my-agent --interactive',\n '<%= config.bin %> <%= command.id %> my-agent -i',\n ];\n\n static flags = {\n interactive: Flags.boolean({\n char: 'i',\n description: 'Enter interactive chat mode (REPL)',\n default: false,\n }),\n conversation: Flags.string({\n char: 'c',\n description: 'Continue existing conversation by ID',\n }),\n json: Flags.boolean({\n description: 'Output in JSON format',\n default: false,\n }),\n verbose: Flags.boolean({\n char: 'v',\n description: 'Show verbose output',\n default: false,\n }),\n };\n\n static args = {\n agent: Args.string({\n description: 'Agent ID or UID',\n required: true,\n }),\n message: Args.string({\n description: 'Message to send (required unless --interactive)',\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(AgentChat);\n const output = createOutput(flags);\n const client = getClient();\n\n if (!client.isAuthenticated()) {\n output.error('Not authenticated. Run `tpm auth login` first.');\n return;\n }\n\n // Verify agent exists\n const agentResponse = await client.getAgent(args.agent);\n if (!agentResponse.success || !agentResponse.data) {\n output.error('Agent not found');\n return;\n }\n\n const agent = agentResponse.data;\n\n if (flags.interactive) {\n await this.interactiveChat(agent, flags, output);\n } else if (args.message) {\n await this.singleMessage(agent, args.message, flags, output);\n } else {\n output.error('Please provide a message or use --interactive flag');\n output.text('Examples:');\n output.listItem(`tpm agent chat ${args.agent} \"Hello!\"`);\n output.listItem(`tpm agent chat ${args.agent} --interactive`);\n }\n }\n\n private async singleMessage(\n agent: { id: string; name: string },\n message: string,\n flags: { json?: boolean; verbose?: boolean; conversation?: string },\n output: ReturnType<typeof createOutput>\n ): Promise<void> {\n const spinner = output.spinner('Sending message...');\n\n try {\n const response = await this.sendChatMessage(agent.id, message, flags.conversation);\n\n spinner.stop();\n\n if (flags.json) {\n output.json(response);\n return;\n }\n\n if (response.content) {\n output.text(response.content);\n }\n\n if (response.toolCalls && response.toolCalls.length > 0) {\n output.newLine();\n output.subheading('Tool Calls:');\n for (const call of response.toolCalls) {\n output.listItem(`${call.name}: ${JSON.stringify(call.result)}`);\n }\n }\n } catch (error) {\n spinner.fail('Failed to send message');\n output.error(\n error instanceof Error ? error.message : 'Unknown error',\n flags.verbose ? String(error) : undefined\n );\n }\n }\n\n private async interactiveChat(\n agent: { id: string; name: string; uid: string },\n flags: { json?: boolean; verbose?: boolean; conversation?: string },\n output: ReturnType<typeof createOutput>\n ): Promise<void> {\n output.heading(`Chat with ${agent.name}`);\n output.text(output.dim('Type \"exit\" or Ctrl+C to quit'));\n output.hr();\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n const conversationId = flags.conversation;\n\n const prompt = () => {\n rl.question('\\n> ', async (message) => {\n if (message.toLowerCase() === 'exit' || message.toLowerCase() === 'quit') {\n output.info('Goodbye!');\n rl.close();\n return;\n }\n\n if (!message.trim()) {\n prompt();\n return;\n }\n\n try {\n process.stdout.write('\\n');\n const response = await this.sendChatMessage(agent.id, message, conversationId);\n\n if (response.content) {\n output.text(response.content);\n }\n\n if (response.toolCalls && response.toolCalls.length > 0) {\n output.newLine();\n output.text(output.dim('Tool calls:'));\n for (const call of response.toolCalls) {\n output.text(output.dim(` • ${call.name}`));\n }\n }\n } catch (error) {\n output.error(error instanceof Error ? error.message : 'Failed to send message');\n }\n\n prompt();\n });\n };\n\n prompt();\n\n // Handle Ctrl+C\n rl.on('SIGINT', () => {\n output.newLine();\n output.info('Goodbye!');\n rl.close();\n process.exit(0);\n });\n }\n\n private async sendChatMessage(\n agentId: string,\n message: string,\n conversationId?: string\n ): Promise<{\n content: string;\n conversationId: string;\n toolCalls?: { name: string; result: unknown }[];\n }> {\n const apiKey = getApiKey();\n const apiUrl = getApiUrl();\n\n const url = `${apiUrl}/agents/${agentId}/chat`;\n const response = await fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(apiKey && { Authorization: `Bearer ${apiKey}` }),\n },\n body: JSON.stringify({\n message,\n conversationId,\n }),\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({})) as { message?: string };\n throw new Error(errorData.message || `HTTP ${response.status}`);\n }\n\n const data = await response.json() as {\n content: string;\n conversationId: string;\n toolCalls?: { name: string; result: unknown }[];\n };\n return data;\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import * as _oclif_core_interfaces from '@oclif/core/interfaces';
2
+ import { Command } from '@oclif/core';
3
+
4
+ declare class AgentCreate extends Command {
5
+ static description: string;
6
+ static examples: string[];
7
+ static flags: {
8
+ name: _oclif_core_interfaces.OptionFlag<string, _oclif_core_interfaces.CustomOptions>;
9
+ uid: _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
10
+ description: _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
11
+ provider: _oclif_core_interfaces.OptionFlag<string, _oclif_core_interfaces.CustomOptions>;
12
+ model: _oclif_core_interfaces.OptionFlag<string, _oclif_core_interfaces.CustomOptions>;
13
+ 'system-prompt': _oclif_core_interfaces.OptionFlag<string | undefined, _oclif_core_interfaces.CustomOptions>;
14
+ temperature: _oclif_core_interfaces.OptionFlag<string, _oclif_core_interfaces.CustomOptions>;
15
+ public: _oclif_core_interfaces.BooleanFlag<boolean>;
16
+ json: _oclif_core_interfaces.BooleanFlag<boolean>;
17
+ verbose: _oclif_core_interfaces.BooleanFlag<boolean>;
18
+ };
19
+ run(): Promise<void>;
20
+ }
21
+
22
+ export { AgentCreate as default };
@@ -0,0 +1,549 @@
1
+ import { Command, Flags } from '@oclif/core';
2
+ import Conf from 'conf';
3
+ import * as fs from 'fs';
4
+ import * as os from 'os';
5
+ import * as path from 'path';
6
+ import Table from 'cli-table3';
7
+ import ora from 'ora';
8
+ import pc from 'picocolors';
9
+
10
+ // src/commands/agent/create.ts
11
+ var CONFIG_DIR = path.join(os.homedir(), ".tpmjs");
12
+ var CREDENTIALS_FILE = path.join(CONFIG_DIR, "credentials.json");
13
+ path.join(CONFIG_DIR, "history");
14
+ function ensureConfigDir() {
15
+ if (!fs.existsSync(CONFIG_DIR)) {
16
+ fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 448 });
17
+ }
18
+ }
19
+ var configStore = new Conf({
20
+ projectName: "tpmjs",
21
+ cwd: CONFIG_DIR,
22
+ configName: "config",
23
+ defaults: {
24
+ apiUrl: "https://tpmjs.com/api",
25
+ defaultOutput: "human",
26
+ verbose: false,
27
+ analytics: false
28
+ }
29
+ });
30
+ function getConfigValue(key) {
31
+ return configStore.get(key);
32
+ }
33
+ function loadCredentials() {
34
+ ensureConfigDir();
35
+ if (!fs.existsSync(CREDENTIALS_FILE)) {
36
+ return null;
37
+ }
38
+ try {
39
+ const content = fs.readFileSync(CREDENTIALS_FILE, "utf-8");
40
+ return JSON.parse(content);
41
+ } catch {
42
+ return null;
43
+ }
44
+ }
45
+ function getApiKey() {
46
+ if (process.env.TPMJS_API_KEY) {
47
+ return process.env.TPMJS_API_KEY;
48
+ }
49
+ const creds = loadCredentials();
50
+ if (creds?.apiKey) {
51
+ return creds.apiKey;
52
+ }
53
+ return void 0;
54
+ }
55
+ function getApiUrl() {
56
+ return process.env.TPMJS_API_URL ?? getConfigValue("apiUrl") ?? "https://tpmjs.com/api";
57
+ }
58
+
59
+ // src/lib/api-client.ts
60
+ var TpmClient = class {
61
+ baseUrl;
62
+ apiKey;
63
+ timeout;
64
+ constructor(options = {}) {
65
+ this.baseUrl = options.baseUrl ?? getApiUrl();
66
+ this.apiKey = options.apiKey ?? getApiKey();
67
+ this.timeout = options.timeout ?? 3e4;
68
+ }
69
+ async request(endpoint, options = {}) {
70
+ const url = `${this.baseUrl}${endpoint}`;
71
+ const headers = {
72
+ "Content-Type": "application/json",
73
+ ...options.headers
74
+ };
75
+ if (this.apiKey) {
76
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
77
+ }
78
+ const controller = new AbortController();
79
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
80
+ try {
81
+ const response = await fetch(url, {
82
+ ...options,
83
+ headers,
84
+ signal: controller.signal
85
+ });
86
+ const data = await response.json();
87
+ if (!response.ok) {
88
+ throw new ApiError(
89
+ data.message || data.error || `HTTP ${response.status}`,
90
+ response.status,
91
+ data
92
+ );
93
+ }
94
+ return data;
95
+ } finally {
96
+ clearTimeout(timeoutId);
97
+ }
98
+ }
99
+ // Health check
100
+ async health() {
101
+ return this.request("/health");
102
+ }
103
+ // Stats
104
+ async getStats() {
105
+ return this.request("/stats");
106
+ }
107
+ // Tools
108
+ async searchTools(options = {}) {
109
+ const params = new URLSearchParams();
110
+ if (options.query) params.set("q", options.query);
111
+ if (options.category) params.set("category", options.category);
112
+ if (options.limit) params.set("limit", String(options.limit));
113
+ if (options.offset) params.set("offset", String(options.offset));
114
+ const queryString = params.toString();
115
+ const endpoint = queryString ? `/tools?${queryString}` : "/tools";
116
+ return this.request(endpoint);
117
+ }
118
+ async getTool(packageName, toolName) {
119
+ return this.request(`/tools/${encodeURIComponent(packageName)}/${encodeURIComponent(toolName)}`);
120
+ }
121
+ async getToolBySlug(slug) {
122
+ const searchResult = await this.searchTools({ query: slug, limit: 1 });
123
+ if (searchResult.data && searchResult.data.length > 0) {
124
+ const tool = searchResult.data.find((t) => t.slug === slug) || searchResult.data[0];
125
+ return { success: true, data: tool };
126
+ }
127
+ return { success: false, error: "Tool not found" };
128
+ }
129
+ async getTrendingTools(options = {}) {
130
+ const params = new URLSearchParams();
131
+ if (options.limit) params.set("limit", String(options.limit));
132
+ if (options.offset) params.set("offset", String(options.offset));
133
+ const queryString = params.toString();
134
+ const endpoint = queryString ? `/tools/trending?${queryString}` : "/tools/trending";
135
+ return this.request(endpoint);
136
+ }
137
+ async validateTpmjsField(field) {
138
+ return this.request("/tools/validate", {
139
+ method: "POST",
140
+ body: JSON.stringify(field)
141
+ });
142
+ }
143
+ async executeTool(slug, params) {
144
+ return this.request(`/tools/${encodeURIComponent(slug)}/execute`, {
145
+ method: "POST",
146
+ body: JSON.stringify(params)
147
+ });
148
+ }
149
+ async *executeToolStream(slug, params) {
150
+ const url = `${this.baseUrl}/tools/${encodeURIComponent(slug)}/execute`;
151
+ const headers = {
152
+ "Content-Type": "application/json",
153
+ "Accept": "text/event-stream"
154
+ };
155
+ if (this.apiKey) {
156
+ headers["Authorization"] = `Bearer ${this.apiKey}`;
157
+ }
158
+ const response = await fetch(url, {
159
+ method: "POST",
160
+ headers,
161
+ body: JSON.stringify({ ...params, stream: true })
162
+ });
163
+ if (!response.ok) {
164
+ const errorText = await response.text();
165
+ throw new ApiError(errorText || `HTTP ${response.status}`, response.status);
166
+ }
167
+ if (!response.body) {
168
+ throw new ApiError("No response body", 0);
169
+ }
170
+ const reader = response.body.getReader();
171
+ const decoder = new TextDecoder();
172
+ let buffer = "";
173
+ try {
174
+ while (true) {
175
+ const { done, value } = await reader.read();
176
+ if (done) {
177
+ yield { type: "done", data: "" };
178
+ break;
179
+ }
180
+ buffer += decoder.decode(value, { stream: true });
181
+ const lines = buffer.split("\n");
182
+ buffer = lines.pop() ?? "";
183
+ for (const line of lines) {
184
+ if (line.startsWith("data: ")) {
185
+ const data = line.slice(6);
186
+ if (data === "[DONE]") {
187
+ yield { type: "done", data: "" };
188
+ return;
189
+ }
190
+ try {
191
+ const parsed = JSON.parse(data);
192
+ yield { type: parsed.type || "text", data: parsed.content || parsed.data || data };
193
+ } catch {
194
+ yield { type: "text", data };
195
+ }
196
+ }
197
+ }
198
+ }
199
+ } finally {
200
+ reader.releaseLock();
201
+ }
202
+ }
203
+ // Agents
204
+ async listAgents(options = {}) {
205
+ const params = new URLSearchParams();
206
+ if (options.limit) params.set("limit", String(options.limit));
207
+ if (options.offset) params.set("offset", String(options.offset));
208
+ const queryString = params.toString();
209
+ const endpoint = queryString ? `/agents?${queryString}` : "/agents";
210
+ return this.request(endpoint);
211
+ }
212
+ async getAgent(id) {
213
+ return this.request(`/agents/${id}`);
214
+ }
215
+ async createAgent(input) {
216
+ return this.request("/agents", {
217
+ method: "POST",
218
+ body: JSON.stringify(input)
219
+ });
220
+ }
221
+ async updateAgent(id, input) {
222
+ return this.request(`/agents/${id}`, {
223
+ method: "PATCH",
224
+ body: JSON.stringify(input)
225
+ });
226
+ }
227
+ async deleteAgent(id) {
228
+ return this.request(`/agents/${id}`, {
229
+ method: "DELETE"
230
+ });
231
+ }
232
+ // Collections
233
+ async listCollections(options = {}) {
234
+ const params = new URLSearchParams();
235
+ if (options.limit) params.set("limit", String(options.limit));
236
+ if (options.offset) params.set("offset", String(options.offset));
237
+ const queryString = params.toString();
238
+ const endpoint = queryString ? `/collections?${queryString}` : "/collections";
239
+ return this.request(endpoint);
240
+ }
241
+ async getCollection(id) {
242
+ return this.request(`/collections/${id}`);
243
+ }
244
+ async createCollection(input) {
245
+ return this.request("/collections", {
246
+ method: "POST",
247
+ body: JSON.stringify(input)
248
+ });
249
+ }
250
+ async updateCollection(id, input) {
251
+ return this.request(`/collections/${id}`, {
252
+ method: "PATCH",
253
+ body: JSON.stringify(input)
254
+ });
255
+ }
256
+ async deleteCollection(id) {
257
+ return this.request(`/collections/${id}`, {
258
+ method: "DELETE"
259
+ });
260
+ }
261
+ async addToolsToCollection(id, toolIds) {
262
+ for (const toolId of toolIds) {
263
+ await this.request(`/collections/${id}/tools/${toolId}`, {
264
+ method: "POST"
265
+ });
266
+ }
267
+ return { success: true };
268
+ }
269
+ async removeToolFromCollection(id, toolId) {
270
+ return this.request(`/collections/${id}/tools/${toolId}`, {
271
+ method: "DELETE"
272
+ });
273
+ }
274
+ // User
275
+ async whoami() {
276
+ return this.request("/user/profile");
277
+ }
278
+ async listApiKeys() {
279
+ return this.request("/user/tpmjs-api-keys");
280
+ }
281
+ // Check if authenticated
282
+ isAuthenticated() {
283
+ return !!this.apiKey;
284
+ }
285
+ };
286
+ var ApiError = class extends Error {
287
+ constructor(message, statusCode, data) {
288
+ super(message);
289
+ this.statusCode = statusCode;
290
+ this.data = data;
291
+ this.name = "ApiError";
292
+ }
293
+ };
294
+ var clientInstance = null;
295
+ function getClient(options) {
296
+ if (!clientInstance || options) {
297
+ clientInstance = new TpmClient(options);
298
+ }
299
+ return clientInstance;
300
+ }
301
+ var OutputFormatter = class {
302
+ options;
303
+ constructor(options = {}) {
304
+ this.options = options;
305
+ }
306
+ // Output as JSON
307
+ json(data) {
308
+ console.log(JSON.stringify(data, null, 2));
309
+ }
310
+ // Output a table
311
+ table(data, columns) {
312
+ if (this.options.json) {
313
+ this.json(data);
314
+ return;
315
+ }
316
+ const table = new Table({
317
+ head: columns.map((col) => pc.bold(col.header)),
318
+ colWidths: columns.map((col) => col.width ?? null),
319
+ style: {
320
+ head: [],
321
+ border: []
322
+ }
323
+ });
324
+ for (const row of data) {
325
+ table.push(columns.map((col) => String(row[col.key] ?? "")));
326
+ }
327
+ console.log(table.toString());
328
+ }
329
+ // Success message
330
+ success(message) {
331
+ if (this.options.json) return;
332
+ console.log(pc.green("\u2713"), message);
333
+ }
334
+ // Error message
335
+ error(message, details) {
336
+ if (this.options.json) {
337
+ this.json({ error: message, details });
338
+ return;
339
+ }
340
+ console.error(pc.red("\u2717"), message);
341
+ if (details && this.options.verbose) {
342
+ console.error(pc.dim(details));
343
+ }
344
+ }
345
+ // Warning message
346
+ warning(message) {
347
+ if (this.options.json) return;
348
+ console.log(pc.yellow("\u26A0"), message);
349
+ }
350
+ // Info message
351
+ info(message) {
352
+ if (this.options.json) return;
353
+ console.log(pc.blue("\u2139"), message);
354
+ }
355
+ // Debug message (only in verbose mode)
356
+ debug(message) {
357
+ if (this.options.json) return;
358
+ if (this.options.verbose) {
359
+ console.log(pc.dim(`[debug] ${message}`));
360
+ }
361
+ }
362
+ // Plain text output
363
+ text(message) {
364
+ if (this.options.json) return;
365
+ console.log(message);
366
+ }
367
+ // Heading
368
+ heading(text) {
369
+ if (this.options.json) return;
370
+ console.log();
371
+ console.log(pc.bold(pc.underline(text)));
372
+ console.log();
373
+ }
374
+ // Subheading
375
+ subheading(text) {
376
+ if (this.options.json) return;
377
+ console.log(pc.bold(text));
378
+ }
379
+ // Key-value pair
380
+ keyValue(key, value) {
381
+ if (this.options.json) return;
382
+ console.log(`${pc.dim(key + ":")} ${value ?? pc.dim("(not set)")}`);
383
+ }
384
+ // List item
385
+ listItem(text, indent = 0) {
386
+ if (this.options.json) return;
387
+ const prefix = " ".repeat(indent) + "\u2022";
388
+ console.log(`${prefix} ${text}`);
389
+ }
390
+ // Spinner
391
+ spinner(message) {
392
+ return ora({
393
+ text: message,
394
+ isSilent: this.options.json
395
+ }).start();
396
+ }
397
+ // Blank line
398
+ newLine() {
399
+ if (this.options.json) return;
400
+ console.log();
401
+ }
402
+ // Horizontal rule
403
+ hr() {
404
+ if (this.options.json) return;
405
+ console.log(pc.dim("\u2500".repeat(50)));
406
+ }
407
+ // Alias for hr
408
+ divider() {
409
+ this.hr();
410
+ }
411
+ // Code block
412
+ code(text, language) {
413
+ if (this.options.json) {
414
+ this.json({ code: text, language });
415
+ return;
416
+ }
417
+ console.log(pc.dim("```" + (language ?? "")));
418
+ console.log(text);
419
+ console.log(pc.dim("```"));
420
+ }
421
+ // Highlight text
422
+ highlight(text) {
423
+ return pc.cyan(text);
424
+ }
425
+ // Dim text
426
+ dim(text) {
427
+ return pc.dim(text);
428
+ }
429
+ // Bold text
430
+ bold(text) {
431
+ return pc.bold(text);
432
+ }
433
+ // Link (just returns text in terminal)
434
+ link(text, url) {
435
+ return `\x1B]8;;${url}\x07${pc.underline(pc.blue(text))}\x1B]8;;\x07`;
436
+ }
437
+ };
438
+ function createOutput(flags) {
439
+ return new OutputFormatter({
440
+ json: flags.json,
441
+ verbose: flags.verbose
442
+ });
443
+ }
444
+
445
+ // src/commands/agent/create.ts
446
+ var AgentCreate = class _AgentCreate extends Command {
447
+ static description = "Create a new agent";
448
+ static examples = [
449
+ '<%= config.bin %> <%= command.id %> --name "My Agent" --provider ANTHROPIC --model claude-3-5-sonnet-20241022',
450
+ '<%= config.bin %> <%= command.id %> --name "GPT Agent" --provider OPENAI --model gpt-4o --public'
451
+ ];
452
+ static flags = {
453
+ name: Flags.string({
454
+ char: "n",
455
+ description: "Agent name",
456
+ required: true
457
+ }),
458
+ uid: Flags.string({
459
+ description: "Unique identifier (URL-friendly)"
460
+ }),
461
+ description: Flags.string({
462
+ char: "d",
463
+ description: "Agent description"
464
+ }),
465
+ provider: Flags.string({
466
+ char: "p",
467
+ description: "AI provider (ANTHROPIC, OPENAI, GOOGLE, GROQ, MISTRAL)",
468
+ required: true,
469
+ options: ["ANTHROPIC", "OPENAI", "GOOGLE", "GROQ", "MISTRAL"]
470
+ }),
471
+ model: Flags.string({
472
+ char: "m",
473
+ description: "Model ID",
474
+ required: true
475
+ }),
476
+ "system-prompt": Flags.string({
477
+ char: "s",
478
+ description: "System prompt"
479
+ }),
480
+ temperature: Flags.string({
481
+ char: "t",
482
+ description: "Temperature (0-2)",
483
+ default: "0.7"
484
+ }),
485
+ public: Flags.boolean({
486
+ description: "Make agent public",
487
+ default: true
488
+ }),
489
+ json: Flags.boolean({
490
+ description: "Output in JSON format",
491
+ default: false
492
+ }),
493
+ verbose: Flags.boolean({
494
+ char: "v",
495
+ description: "Show verbose output",
496
+ default: false
497
+ })
498
+ };
499
+ async run() {
500
+ const { flags } = await this.parse(_AgentCreate);
501
+ const output = createOutput(flags);
502
+ const client = getClient();
503
+ if (!client.isAuthenticated()) {
504
+ output.error("Not authenticated. Run `tpm auth login` first.");
505
+ return;
506
+ }
507
+ const spinner = output.spinner("Creating agent...");
508
+ try {
509
+ const response = await client.createAgent({
510
+ name: flags.name,
511
+ uid: flags.uid,
512
+ description: flags.description,
513
+ provider: flags.provider,
514
+ modelId: flags.model,
515
+ systemPrompt: flags["system-prompt"],
516
+ temperature: parseFloat(flags.temperature),
517
+ isPublic: flags.public
518
+ });
519
+ spinner.stop();
520
+ if (!response.success || !response.data) {
521
+ output.error(response.message || "Failed to create agent");
522
+ return;
523
+ }
524
+ if (flags.json) {
525
+ output.json(response.data);
526
+ return;
527
+ }
528
+ output.success(`Agent "${response.data.name}" created successfully`);
529
+ output.newLine();
530
+ output.keyValue("ID", response.data.id);
531
+ output.keyValue("UID", response.data.uid);
532
+ output.keyValue("Provider", response.data.provider);
533
+ output.keyValue("Model", response.data.modelId);
534
+ output.keyValue("Public", response.data.isPublic ? "Yes" : "No");
535
+ output.newLine();
536
+ output.text(`Chat with it: tpm agent chat ${response.data.uid}`);
537
+ } catch (error) {
538
+ spinner.fail("Failed to create agent");
539
+ output.error(
540
+ error instanceof Error ? error.message : "Unknown error",
541
+ flags.verbose ? String(error) : void 0
542
+ );
543
+ }
544
+ }
545
+ };
546
+
547
+ export { AgentCreate as default };
548
+ //# sourceMappingURL=create.js.map
549
+ //# sourceMappingURL=create.js.map