@ebowwa/crm 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 (187) hide show
  1. package/README.md +174 -0
  2. package/dist/cli/commands/activities.d.ts +11 -0
  3. package/dist/cli/commands/activities.d.ts.map +1 -0
  4. package/dist/cli/commands/activities.js +427 -0
  5. package/dist/cli/commands/activities.js.map +1 -0
  6. package/dist/cli/commands/contacts.d.ts +11 -0
  7. package/dist/cli/commands/contacts.d.ts.map +1 -0
  8. package/dist/cli/commands/contacts.js +458 -0
  9. package/dist/cli/commands/contacts.js.map +1 -0
  10. package/dist/cli/commands/deals.d.ts +11 -0
  11. package/dist/cli/commands/deals.d.ts.map +1 -0
  12. package/dist/cli/commands/deals.js +498 -0
  13. package/dist/cli/commands/deals.js.map +1 -0
  14. package/dist/cli/commands/media.d.ts +11 -0
  15. package/dist/cli/commands/media.d.ts.map +1 -0
  16. package/dist/cli/commands/media.js +417 -0
  17. package/dist/cli/commands/media.js.map +1 -0
  18. package/dist/cli/commands/search.d.ts +11 -0
  19. package/dist/cli/commands/search.d.ts.map +1 -0
  20. package/dist/cli/commands/search.js +346 -0
  21. package/dist/cli/commands/search.js.map +1 -0
  22. package/dist/cli/index.d.ts +13 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +173 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/cli/repl.d.ts +15 -0
  27. package/dist/cli/repl.d.ts.map +1 -0
  28. package/dist/cli/repl.js +318 -0
  29. package/dist/cli/repl.js.map +1 -0
  30. package/dist/cli/utils/config.d.ts +91 -0
  31. package/dist/cli/utils/config.d.ts.map +1 -0
  32. package/dist/cli/utils/config.js +212 -0
  33. package/dist/cli/utils/config.js.map +1 -0
  34. package/dist/cli/utils/output.d.ts +136 -0
  35. package/dist/cli/utils/output.d.ts.map +1 -0
  36. package/dist/cli/utils/output.js +323 -0
  37. package/dist/cli/utils/output.js.map +1 -0
  38. package/dist/cli/utils/prompt.d.ts +81 -0
  39. package/dist/cli/utils/prompt.d.ts.map +1 -0
  40. package/dist/cli/utils/prompt.js +341 -0
  41. package/dist/cli/utils/prompt.js.map +1 -0
  42. package/dist/cli.d.ts +3 -0
  43. package/dist/cli.d.ts.map +1 -0
  44. package/dist/cli.js +8 -0
  45. package/dist/cli.js.map +1 -0
  46. package/dist/core/index.d.ts +6 -0
  47. package/dist/core/index.d.ts.map +1 -0
  48. package/dist/core/index.js +32 -0
  49. package/dist/core/index.js.map +1 -0
  50. package/dist/core/schemas.d.ts +3050 -0
  51. package/dist/core/schemas.d.ts.map +1 -0
  52. package/dist/core/schemas.js +667 -0
  53. package/dist/core/schemas.js.map +1 -0
  54. package/dist/core/types.d.ts +597 -0
  55. package/dist/core/types.d.ts.map +1 -0
  56. package/dist/core/types.js +8 -0
  57. package/dist/core/types.js.map +1 -0
  58. package/dist/index.d.ts +7 -0
  59. package/dist/index.d.ts.map +1 -0
  60. package/dist/index.js +8 -0
  61. package/dist/index.js.map +1 -0
  62. package/dist/mcp/index.d.ts +14 -0
  63. package/dist/mcp/index.d.ts.map +1 -0
  64. package/dist/mcp/index.js +11 -0
  65. package/dist/mcp/index.js.map +1 -0
  66. package/dist/mcp/server.d.ts +13 -0
  67. package/dist/mcp/server.d.ts.map +1 -0
  68. package/dist/mcp/server.js +18 -0
  69. package/dist/mcp/server.js.map +1 -0
  70. package/dist/mcp/storage/client.d.ts +109 -0
  71. package/dist/mcp/storage/client.d.ts.map +1 -0
  72. package/dist/mcp/storage/client.js +355 -0
  73. package/dist/mcp/storage/client.js.map +1 -0
  74. package/dist/mcp/storage/index.d.ts +7 -0
  75. package/dist/mcp/storage/index.d.ts.map +1 -0
  76. package/dist/mcp/storage/index.js +6 -0
  77. package/dist/mcp/storage/index.js.map +1 -0
  78. package/dist/mcp/storage/types.d.ts +44 -0
  79. package/dist/mcp/storage/types.d.ts.map +1 -0
  80. package/dist/mcp/storage/types.js +35 -0
  81. package/dist/mcp/storage/types.js.map +1 -0
  82. package/dist/mcp/tools/definitions.d.ts +16 -0
  83. package/dist/mcp/tools/definitions.d.ts.map +1 -0
  84. package/dist/mcp/tools/definitions.js +914 -0
  85. package/dist/mcp/tools/definitions.js.map +1 -0
  86. package/dist/mcp/tools/handlers.d.ts +50 -0
  87. package/dist/mcp/tools/handlers.d.ts.map +1 -0
  88. package/dist/mcp/tools/handlers.js +760 -0
  89. package/dist/mcp/tools/handlers.js.map +1 -0
  90. package/dist/mcp/tools/index.d.ts +7 -0
  91. package/dist/mcp/tools/index.d.ts.map +1 -0
  92. package/dist/mcp/tools/index.js +6 -0
  93. package/dist/mcp/tools/index.js.map +1 -0
  94. package/dist/mcp/tools/types.d.ts +314 -0
  95. package/dist/mcp/tools/types.d.ts.map +1 -0
  96. package/dist/mcp/tools/types.js +5 -0
  97. package/dist/mcp/tools/types.js.map +1 -0
  98. package/dist/mcp/transports/stdio.d.ts +27 -0
  99. package/dist/mcp/transports/stdio.d.ts.map +1 -0
  100. package/dist/mcp/transports/stdio.js +237 -0
  101. package/dist/mcp/transports/stdio.js.map +1 -0
  102. package/dist/telemetry/index.d.ts +58 -0
  103. package/dist/telemetry/index.d.ts.map +1 -0
  104. package/dist/telemetry/index.js +109 -0
  105. package/dist/telemetry/index.js.map +1 -0
  106. package/dist/telemetry/logger.d.ts +116 -0
  107. package/dist/telemetry/logger.d.ts.map +1 -0
  108. package/dist/telemetry/logger.js +256 -0
  109. package/dist/telemetry/logger.js.map +1 -0
  110. package/dist/telemetry/metrics.d.ts +115 -0
  111. package/dist/telemetry/metrics.d.ts.map +1 -0
  112. package/dist/telemetry/metrics.js +292 -0
  113. package/dist/telemetry/metrics.js.map +1 -0
  114. package/dist/telemetry/tracer.d.ts +227 -0
  115. package/dist/telemetry/tracer.d.ts.map +1 -0
  116. package/dist/telemetry/tracer.js +355 -0
  117. package/dist/telemetry/tracer.js.map +1 -0
  118. package/dist/web/app.d.ts +2 -0
  119. package/dist/web/app.d.ts.map +1 -0
  120. package/dist/web/app.js +115 -0
  121. package/dist/web/app.js.map +1 -0
  122. package/dist/web/components/ContactList.d.ts +3 -0
  123. package/dist/web/components/ContactList.d.ts.map +1 -0
  124. package/dist/web/components/ContactList.js +262 -0
  125. package/dist/web/components/ContactList.js.map +1 -0
  126. package/dist/web/components/Dashboard.d.ts +3 -0
  127. package/dist/web/components/Dashboard.d.ts.map +1 -0
  128. package/dist/web/components/Dashboard.js +158 -0
  129. package/dist/web/components/Dashboard.js.map +1 -0
  130. package/dist/web/components/DealPipeline.d.ts +3 -0
  131. package/dist/web/components/DealPipeline.d.ts.map +1 -0
  132. package/dist/web/components/DealPipeline.js +306 -0
  133. package/dist/web/components/DealPipeline.js.map +1 -0
  134. package/dist/web/index.d.ts +2 -0
  135. package/dist/web/index.d.ts.map +1 -0
  136. package/dist/web/index.js +269 -0
  137. package/dist/web/index.js.map +1 -0
  138. package/dist/web/types.d.ts +75 -0
  139. package/dist/web/types.d.ts.map +1 -0
  140. package/dist/web/types.js +3 -0
  141. package/dist/web/types.js.map +1 -0
  142. package/native/index.d.ts +571 -0
  143. package/native/index.js +687 -0
  144. package/package.json +105 -0
  145. package/src/cli/commands/activities.ts +543 -0
  146. package/src/cli/commands/contacts.ts +563 -0
  147. package/src/cli/commands/deals.ts +637 -0
  148. package/src/cli/commands/media.ts +521 -0
  149. package/src/cli/commands/search.ts +426 -0
  150. package/src/cli/index.ts +203 -0
  151. package/src/cli/repl.ts +379 -0
  152. package/src/cli/utils/config.ts +299 -0
  153. package/src/cli/utils/output.ts +386 -0
  154. package/src/cli/utils/prompt.ts +444 -0
  155. package/src/cli.ts +11 -0
  156. package/src/core/index.ts +184 -0
  157. package/src/core/schemas.ts +770 -0
  158. package/src/core/types.ts +969 -0
  159. package/src/index.ts +8 -0
  160. package/src/mcp/index.ts +17 -0
  161. package/src/mcp/server.ts +26 -0
  162. package/src/mcp/storage/client.ts +408 -0
  163. package/src/mcp/storage/index.ts +7 -0
  164. package/src/mcp/storage/types.ts +72 -0
  165. package/src/mcp/tools/definitions.ts +961 -0
  166. package/src/mcp/tools/handlers.ts +805 -0
  167. package/src/mcp/tools/index.ts +7 -0
  168. package/src/mcp/tools/types.ts +390 -0
  169. package/src/mcp/transports/stdio.ts +225 -0
  170. package/src/telemetry/index.ts +131 -0
  171. package/src/telemetry/logger.ts +318 -0
  172. package/src/telemetry/metrics.ts +393 -0
  173. package/src/telemetry/tracer.ts +487 -0
  174. package/src/web/api/activities.ts +41 -0
  175. package/src/web/api/contacts.ts +114 -0
  176. package/src/web/api/deals.ts +108 -0
  177. package/src/web/api/media.ts +98 -0
  178. package/src/web/app.tsx +143 -0
  179. package/src/web/components/ActivityFeed.tsx +195 -0
  180. package/src/web/components/ContactList.tsx +340 -0
  181. package/src/web/components/Dashboard.tsx +214 -0
  182. package/src/web/components/DealPipeline.tsx +405 -0
  183. package/src/web/components/MediaGallery.tsx +334 -0
  184. package/src/web/index.html +14 -0
  185. package/src/web/index.ts +326 -0
  186. package/src/web/styles/main.css +180 -0
  187. package/src/web/types.ts +311 -0
@@ -0,0 +1,417 @@
1
+ /**
2
+ * Media Commands
3
+ *
4
+ * CLI commands for managing media files in the CRM.
5
+ */
6
+ import * as fs from 'fs';
7
+ import * as path from 'path';
8
+ import { printSuccess, printError, printWarning, printTable, printJSON, printHeader, printDivider, formatRelativeTime, formatFileSize, truncate, output, } from '../utils/output.js';
9
+ import { prompt, promptRequired, confirm, select, Spinner, } from '../utils/prompt.js';
10
+ import { CRMStorageClient } from '../../mcp/storage/client.js';
11
+ // Media type icons
12
+ const MEDIA_ICONS = {
13
+ image: '\u{1F4F7}',
14
+ video: '\u{1F3AC}',
15
+ audio: '\u{1F3B5}',
16
+ document: '\u{1F4C4}',
17
+ spreadsheet: '\u{1F4CA}',
18
+ presentation: '\u{1F4BB}',
19
+ pdf: '\u{1F4C4}',
20
+ archive: '\u{1F4E6}',
21
+ other: '\u{1F4CE}',
22
+ };
23
+ // MIME type to media type mapping
24
+ const MIME_TO_MEDIA_TYPE = {
25
+ 'image/jpeg': 'image',
26
+ 'image/png': 'image',
27
+ 'image/gif': 'image',
28
+ 'image/webp': 'image',
29
+ 'image/svg+xml': 'image',
30
+ 'video/mp4': 'video',
31
+ 'video/webm': 'video',
32
+ 'video/quicktime': 'video',
33
+ 'audio/mpeg': 'audio',
34
+ 'audio/wav': 'audio',
35
+ 'audio/ogg': 'audio',
36
+ 'application/pdf': 'pdf',
37
+ 'application/msword': 'document',
38
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'document',
39
+ 'application/vnd.ms-excel': 'spreadsheet',
40
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'spreadsheet',
41
+ 'application/vnd.ms-powerpoint': 'presentation',
42
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'presentation',
43
+ 'application/zip': 'archive',
44
+ 'application/x-rar-compressed': 'archive',
45
+ 'application/x-7z-compressed': 'archive',
46
+ };
47
+ // Storage client singleton
48
+ let _storage = null;
49
+ /**
50
+ * Get storage client (lazy initialization)
51
+ */
52
+ async function getStorage() {
53
+ if (!_storage) {
54
+ _storage = new CRMStorageClient({
55
+ path: process.env.CRM_DB_PATH || './data/crm-cli',
56
+ mapSize: 256 * 1024 * 1024, // 256MB
57
+ maxDbs: 20,
58
+ });
59
+ await _storage.initialize();
60
+ }
61
+ return _storage;
62
+ }
63
+ /**
64
+ * Get media type from MIME type
65
+ */
66
+ function getMediaType(mimeType) {
67
+ return MIME_TO_MEDIA_TYPE[mimeType] || 'other';
68
+ }
69
+ /**
70
+ * Get all media
71
+ */
72
+ async function getMedia() {
73
+ const storage = await getStorage();
74
+ return storage.list('media');
75
+ }
76
+ /**
77
+ * Get media by ID
78
+ */
79
+ async function getMediaById(id) {
80
+ const storage = await getStorage();
81
+ return storage.get('media', id);
82
+ }
83
+ /**
84
+ * Create media entry
85
+ */
86
+ async function createMedia(data) {
87
+ const storage = await getStorage();
88
+ return storage.insert('media', {
89
+ entityType: data.entityType || 'contact',
90
+ entityId: data.entityId || '',
91
+ type: data.type || 'other',
92
+ filename: data.filename || 'unknown',
93
+ mimeType: data.mimeType || 'application/octet-stream',
94
+ size: data.size || 0,
95
+ url: data.url || '',
96
+ thumbnailUrl: data.thumbnailUrl,
97
+ metadata: data.metadata || {},
98
+ altText: data.altText,
99
+ caption: data.caption,
100
+ isPublic: data.isPublic ?? false,
101
+ downloadCount: data.downloadCount || 0,
102
+ uploadedBy: data.uploadedBy,
103
+ expiresAt: data.expiresAt,
104
+ });
105
+ }
106
+ /**
107
+ * Delete media
108
+ */
109
+ async function deleteMedia(id) {
110
+ const storage = await getStorage();
111
+ const existing = await storage.get('media', id);
112
+ if (!existing)
113
+ return false;
114
+ await storage.delete('media', id);
115
+ return true;
116
+ }
117
+ /**
118
+ * Increment download count
119
+ */
120
+ async function incrementDownloadCount(id) {
121
+ const storage = await getStorage();
122
+ const media = storage.get('media', id);
123
+ if (media) {
124
+ const updates = {
125
+ downloadCount: (media.downloadCount || 0) + 1,
126
+ };
127
+ await storage.update('media', id, updates);
128
+ }
129
+ }
130
+ /**
131
+ * Filter media by contact
132
+ */
133
+ async function filterByContact(contactId) {
134
+ const media = await getMedia();
135
+ return media.filter((m) => m.entityType === 'contact' && m.entityId === contactId);
136
+ }
137
+ /**
138
+ * Filter media by deal
139
+ */
140
+ async function filterByDeal(dealId) {
141
+ const media = await getMedia();
142
+ return media.filter((m) => m.entityType === 'deal' && m.entityId === dealId);
143
+ }
144
+ /**
145
+ * Generate UUID
146
+ */
147
+ function generateId() {
148
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
149
+ const r = (Math.random() * 16) | 0;
150
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
151
+ return v.toString(16);
152
+ });
153
+ }
154
+ /**
155
+ * Register media commands
156
+ */
157
+ export function registerMediaCommands(program) {
158
+ const media = program.command('media').description('Manage media files');
159
+ // List media
160
+ media
161
+ .command('list')
162
+ .description('List media files')
163
+ .option('-c, --contact <id>', 'Filter by contact ID')
164
+ .option('-d, --deal <id>', 'Filter by deal ID')
165
+ .option('-t, --type <type>', 'Filter by media type')
166
+ .option('--json', 'Output as JSON')
167
+ .option('--limit <number>', 'Limit results', '20')
168
+ .action(async (options) => {
169
+ let mediaFiles = await getMedia();
170
+ if (options.contact) {
171
+ mediaFiles = await filterByContact(options.contact);
172
+ }
173
+ if (options.deal) {
174
+ mediaFiles = await filterByDeal(options.deal);
175
+ }
176
+ if (options.type) {
177
+ mediaFiles = mediaFiles.filter((m) => m.type.toLowerCase() === options.type.toLowerCase());
178
+ }
179
+ // Sort by date descending
180
+ mediaFiles.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());
181
+ const limit = parseInt(options.limit);
182
+ mediaFiles = mediaFiles.slice(0, limit);
183
+ if (options.json) {
184
+ printJSON(mediaFiles);
185
+ return;
186
+ }
187
+ if (mediaFiles.length === 0) {
188
+ printWarning('No media files found');
189
+ return;
190
+ }
191
+ printHeader(`Media Files (${mediaFiles.length})`);
192
+ printTable(mediaFiles, [
193
+ {
194
+ key: 'type',
195
+ header: '',
196
+ width: 2,
197
+ format: (v) => MEDIA_ICONS[v] || '\u{1F4CE}',
198
+ },
199
+ { key: 'filename', header: 'Filename', width: 30, format: (v) => truncate(String(v), 30) },
200
+ {
201
+ key: 'size',
202
+ header: 'Size',
203
+ width: 10,
204
+ format: (v) => formatFileSize(Number(v)),
205
+ },
206
+ { key: 'type', header: 'Type', width: 10 },
207
+ {
208
+ key: 'createdAt',
209
+ header: 'Uploaded',
210
+ format: (v) => formatRelativeTime(String(v)),
211
+ },
212
+ ]);
213
+ });
214
+ // Upload media
215
+ media
216
+ .command('upload <file>')
217
+ .description('Upload a media file')
218
+ .option('-c, --contact <id>', 'Associate with contact')
219
+ .option('-d, --deal <id>', 'Associate with deal')
220
+ .option('--caption <text>', 'Caption for the media')
221
+ .option('--public', 'Make media public')
222
+ .action(async (filePath, options) => {
223
+ // Check file exists
224
+ if (!fs.existsSync(filePath)) {
225
+ printError(`File not found: ${filePath}`);
226
+ process.exit(1);
227
+ }
228
+ // Get file stats
229
+ const stats = fs.statSync(filePath);
230
+ const filename = path.basename(filePath);
231
+ // Determine entity
232
+ let entityType = 'contact';
233
+ let entityId;
234
+ if (options.contact) {
235
+ entityType = 'contact';
236
+ entityId = options.contact;
237
+ }
238
+ else if (options.deal) {
239
+ entityType = 'deal';
240
+ entityId = options.deal;
241
+ }
242
+ else {
243
+ entityId = await promptRequired('Contact or Deal ID');
244
+ entityType = (await select('Entity Type', ['contact', 'deal']));
245
+ }
246
+ // Detect MIME type (simplified)
247
+ const ext = path.extname(filePath).toLowerCase();
248
+ const mimeMap = {
249
+ '.jpg': 'image/jpeg',
250
+ '.jpeg': 'image/jpeg',
251
+ '.png': 'image/png',
252
+ '.gif': 'image/gif',
253
+ '.webp': 'image/webp',
254
+ '.svg': 'image/svg+xml',
255
+ '.mp4': 'video/mp4',
256
+ '.webm': 'video/webm',
257
+ '.mov': 'video/quicktime',
258
+ '.mp3': 'audio/mpeg',
259
+ '.wav': 'audio/wav',
260
+ '.pdf': 'application/pdf',
261
+ '.doc': 'application/msword',
262
+ '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
263
+ '.xls': 'application/vnd.ms-excel',
264
+ '.xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
265
+ '.ppt': 'application/vnd.ms-powerpoint',
266
+ '.pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
267
+ '.zip': 'application/zip',
268
+ '.txt': 'text/plain',
269
+ '.csv': 'text/csv',
270
+ };
271
+ const mimeType = mimeMap[ext] || 'application/octet-stream';
272
+ const mediaType = getMediaType(mimeType);
273
+ // Caption
274
+ const caption = options.caption || (await prompt('Caption (optional)'));
275
+ // Preview
276
+ console.log();
277
+ console.log(`${MEDIA_ICONS[mediaType]} ${output.bold(filename)}`);
278
+ console.log(`${output.dim('Size:')} ${formatFileSize(stats.size)}`);
279
+ console.log(`${output.dim('Type:')} ${mediaType}`);
280
+ console.log(`${output.dim('MIME:')} ${mimeType}`);
281
+ console.log();
282
+ const confirmed = await confirm('Upload this file?');
283
+ if (!confirmed) {
284
+ printWarning('Upload cancelled');
285
+ return;
286
+ }
287
+ // Simulate upload
288
+ const spinner = new Spinner('Uploading...').start();
289
+ await new Promise((r) => setTimeout(r, 1000 + Math.random() * 1000));
290
+ const mediaEntry = await createMedia({
291
+ entityType,
292
+ entityId,
293
+ type: mediaType,
294
+ filename,
295
+ mimeType,
296
+ size: stats.size,
297
+ url: `/uploads/${generateId()}/${filename}`,
298
+ caption,
299
+ isPublic: options.public || false,
300
+ });
301
+ spinner.succeed('Upload complete');
302
+ printSuccess(`Media ID: ${mediaEntry.id}`);
303
+ console.log();
304
+ });
305
+ // Get media details
306
+ media
307
+ .command('get <id>')
308
+ .description('Get media details')
309
+ .option('--json', 'Output as JSON')
310
+ .action(async (id, options) => {
311
+ const mediaFile = await getMediaById(id);
312
+ if (!mediaFile) {
313
+ printError(`Media not found: ${id}`);
314
+ process.exit(1);
315
+ }
316
+ if (options.json) {
317
+ printJSON(mediaFile);
318
+ return;
319
+ }
320
+ const icon = MEDIA_ICONS[mediaFile.type];
321
+ printHeader(`${icon} ${mediaFile.filename}`);
322
+ console.log(`${output.dim('ID:')} ${mediaFile.id}`);
323
+ console.log(`${output.dim('Type:')} ${mediaFile.type}`);
324
+ console.log();
325
+ // File Info
326
+ console.log(output.bold('File Information'));
327
+ printDivider('-');
328
+ console.log(`${output.dim('Filename:')} ${mediaFile.filename}`);
329
+ console.log(`${output.dim('MIME Type:')} ${mediaFile.mimeType}`);
330
+ console.log(`${output.dim('Size:')} ${formatFileSize(mediaFile.size)}`);
331
+ console.log(`${output.dim('URL:')} ${mediaFile.url}`);
332
+ if (mediaFile.thumbnailUrl) {
333
+ console.log(`${output.dim('Thumbnail:')} ${mediaFile.thumbnailUrl}`);
334
+ }
335
+ console.log();
336
+ // Association
337
+ console.log(output.bold('Association'));
338
+ printDivider('-');
339
+ console.log(`${output.dim('Entity Type:')} ${mediaFile.entityType}`);
340
+ console.log(`${output.dim('Entity ID:')} ${mediaFile.entityId}`);
341
+ console.log();
342
+ // Additional Info
343
+ console.log(output.bold('Additional Info'));
344
+ printDivider('-');
345
+ console.log(`${output.dim('Public:')} ${mediaFile.isPublic ? 'Yes' : 'No'}`);
346
+ console.log(`${output.dim('Downloads:')} ${mediaFile.downloadCount}`);
347
+ if (mediaFile.caption) {
348
+ console.log(`${output.dim('Caption:')} ${mediaFile.caption}`);
349
+ }
350
+ if (mediaFile.altText) {
351
+ console.log(`${output.dim('Alt Text:')} ${mediaFile.altText}`);
352
+ }
353
+ console.log();
354
+ // Timestamps
355
+ console.log(output.bold('Timestamps'));
356
+ printDivider('-');
357
+ console.log(`${output.dim('Uploaded:')} ${new Date(mediaFile.createdAt).toLocaleString()}`);
358
+ if (mediaFile.expiresAt) {
359
+ console.log(`${output.dim('Expires:')} ${new Date(mediaFile.expiresAt).toLocaleString()}`);
360
+ }
361
+ console.log();
362
+ });
363
+ // Delete media
364
+ media
365
+ .command('delete <id>')
366
+ .description('Delete a media file')
367
+ .option('-f, --force', 'Skip confirmation')
368
+ .action(async (id, options) => {
369
+ const mediaFile = await getMediaById(id);
370
+ if (!mediaFile) {
371
+ printError(`Media not found: ${id}`);
372
+ process.exit(1);
373
+ }
374
+ if (!options.force) {
375
+ const icon = MEDIA_ICONS[mediaFile.type];
376
+ console.log(`\n${icon} ${output.bold(mediaFile.filename)}`);
377
+ console.log(`Size: ${formatFileSize(mediaFile.size)}`);
378
+ console.log(`Type: ${mediaFile.type}\n`);
379
+ const confirmed = await confirm('Are you sure you want to delete this media file?');
380
+ if (!confirmed) {
381
+ printWarning('Deletion cancelled');
382
+ return;
383
+ }
384
+ }
385
+ const spinner = new Spinner('Deleting media...').start();
386
+ await new Promise((r) => setTimeout(r, 300));
387
+ await deleteMedia(id);
388
+ spinner.succeed('Media deleted successfully');
389
+ });
390
+ // Download media
391
+ media
392
+ .command('download <id>')
393
+ .description('Download a media file')
394
+ .option('-o, --output <path>', 'Output path')
395
+ .action(async (id, options) => {
396
+ const mediaFile = await getMediaById(id);
397
+ if (!mediaFile) {
398
+ printError(`Media not found: ${id}`);
399
+ process.exit(1);
400
+ }
401
+ const outputPath = options.output || path.join(process.cwd(), mediaFile.filename);
402
+ console.log(`\n${MEDIA_ICONS[mediaFile.type]} ${mediaFile.filename}`);
403
+ console.log(`${output.dim('Source:')} ${mediaFile.url}`);
404
+ console.log(`${output.dim('Target:')} ${outputPath}\n`);
405
+ const spinner = new Spinner('Downloading...').start();
406
+ // Simulate download
407
+ await new Promise((r) => setTimeout(r, 500 + Math.random() * 1000));
408
+ // In real implementation, would actually download the file
409
+ // For now, just create a placeholder
410
+ fs.writeFileSync(outputPath, `[Placeholder for ${mediaFile.filename}]`);
411
+ // Increment download count
412
+ await incrementDownloadCount(id);
413
+ spinner.succeed('Download complete');
414
+ printSuccess(`Saved to: ${outputPath}`);
415
+ });
416
+ }
417
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/cli/commands/media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Search Commands
3
+ *
4
+ * CLI commands for searching across CRM entities.
5
+ */
6
+ import { Command } from 'commander';
7
+ /**
8
+ * Register search commands
9
+ */
10
+ export declare function registerSearchCommands(program: Command): void;
11
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/search.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyEpC;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuV7D"}