@hasna/microservices 0.0.15 → 0.0.17

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 (296) hide show
  1. package/README.md +120 -138
  2. package/bin/index.js +703 -12728
  3. package/bin/mcp.js +250 -9726
  4. package/dist/index.js +170 -9407
  5. package/package.json +25 -25
  6. package/microservices/microservice-ads/package.json +0 -27
  7. package/microservices/microservice-ads/src/cli/index.ts +0 -605
  8. package/microservices/microservice-ads/src/db/campaigns.ts +0 -797
  9. package/microservices/microservice-ads/src/db/database.ts +0 -93
  10. package/microservices/microservice-ads/src/db/migrations.ts +0 -60
  11. package/microservices/microservice-ads/src/index.ts +0 -39
  12. package/microservices/microservice-ads/src/mcp/index.ts +0 -480
  13. package/microservices/microservice-analytics/package.json +0 -27
  14. package/microservices/microservice-analytics/src/cli/index.ts +0 -373
  15. package/microservices/microservice-analytics/src/db/analytics.ts +0 -564
  16. package/microservices/microservice-analytics/src/db/database.ts +0 -93
  17. package/microservices/microservice-analytics/src/db/migrations.ts +0 -50
  18. package/microservices/microservice-analytics/src/index.ts +0 -37
  19. package/microservices/microservice-analytics/src/mcp/index.ts +0 -334
  20. package/microservices/microservice-assets/package.json +0 -27
  21. package/microservices/microservice-assets/src/cli/index.ts +0 -375
  22. package/microservices/microservice-assets/src/db/assets.ts +0 -370
  23. package/microservices/microservice-assets/src/db/database.ts +0 -93
  24. package/microservices/microservice-assets/src/db/migrations.ts +0 -51
  25. package/microservices/microservice-assets/src/index.ts +0 -32
  26. package/microservices/microservice-assets/src/mcp/index.ts +0 -346
  27. package/microservices/microservice-bookkeeping/package.json +0 -27
  28. package/microservices/microservice-bookkeeping/src/cli/index.ts +0 -386
  29. package/microservices/microservice-bookkeeping/src/db/bookkeeping.ts +0 -591
  30. package/microservices/microservice-bookkeeping/src/db/database.ts +0 -93
  31. package/microservices/microservice-bookkeeping/src/db/migrations.ts +0 -52
  32. package/microservices/microservice-bookkeeping/src/index.ts +0 -32
  33. package/microservices/microservice-bookkeeping/src/mcp/index.ts +0 -284
  34. package/microservices/microservice-calendar/package.json +0 -27
  35. package/microservices/microservice-calendar/src/cli/index.ts +0 -287
  36. package/microservices/microservice-calendar/src/db/calendar.ts +0 -328
  37. package/microservices/microservice-calendar/src/db/database.ts +0 -82
  38. package/microservices/microservice-calendar/src/db/migrations.ts +0 -47
  39. package/microservices/microservice-calendar/src/index.ts +0 -24
  40. package/microservices/microservice-calendar/src/mcp/index.ts +0 -226
  41. package/microservices/microservice-company/package.json +0 -27
  42. package/microservices/microservice-company/src/cli/index.ts +0 -1126
  43. package/microservices/microservice-company/src/db/company.ts +0 -854
  44. package/microservices/microservice-company/src/db/database.ts +0 -93
  45. package/microservices/microservice-company/src/db/migrations.ts +0 -214
  46. package/microservices/microservice-company/src/db/workflow-migrations.ts +0 -44
  47. package/microservices/microservice-company/src/index.ts +0 -60
  48. package/microservices/microservice-company/src/lib/audit.ts +0 -168
  49. package/microservices/microservice-company/src/lib/finance.ts +0 -299
  50. package/microservices/microservice-company/src/lib/settings.ts +0 -85
  51. package/microservices/microservice-company/src/lib/workflows.ts +0 -698
  52. package/microservices/microservice-company/src/mcp/index.ts +0 -991
  53. package/microservices/microservice-compliance/package.json +0 -27
  54. package/microservices/microservice-compliance/src/cli/index.ts +0 -467
  55. package/microservices/microservice-compliance/src/db/compliance.ts +0 -633
  56. package/microservices/microservice-compliance/src/db/database.ts +0 -93
  57. package/microservices/microservice-compliance/src/db/migrations.ts +0 -63
  58. package/microservices/microservice-compliance/src/index.ts +0 -46
  59. package/microservices/microservice-compliance/src/mcp/index.ts +0 -438
  60. package/microservices/microservice-contacts/package.json +0 -27
  61. package/microservices/microservice-contacts/src/cli/index.ts +0 -393
  62. package/microservices/microservice-contacts/src/db/companies.ts +0 -167
  63. package/microservices/microservice-contacts/src/db/contacts.ts +0 -249
  64. package/microservices/microservice-contacts/src/db/database.ts +0 -93
  65. package/microservices/microservice-contacts/src/db/migrations.ts +0 -71
  66. package/microservices/microservice-contacts/src/db/relationships.ts +0 -53
  67. package/microservices/microservice-contacts/src/index.ts +0 -42
  68. package/microservices/microservice-contacts/src/mcp/index.ts +0 -303
  69. package/microservices/microservice-contracts/package.json +0 -27
  70. package/microservices/microservice-contracts/src/cli/index.ts +0 -770
  71. package/microservices/microservice-contracts/src/db/contracts.ts +0 -925
  72. package/microservices/microservice-contracts/src/db/database.ts +0 -93
  73. package/microservices/microservice-contracts/src/db/migrations.ts +0 -141
  74. package/microservices/microservice-contracts/src/index.ts +0 -43
  75. package/microservices/microservice-contracts/src/mcp/index.ts +0 -617
  76. package/microservices/microservice-crm/package.json +0 -27
  77. package/microservices/microservice-crm/src/cli/index.ts +0 -396
  78. package/microservices/microservice-crm/src/db/database.ts +0 -82
  79. package/microservices/microservice-crm/src/db/migrations.ts +0 -66
  80. package/microservices/microservice-crm/src/db/pipeline.ts +0 -397
  81. package/microservices/microservice-crm/src/index.ts +0 -34
  82. package/microservices/microservice-crm/src/mcp/index.ts +0 -294
  83. package/microservices/microservice-documents/package.json +0 -27
  84. package/microservices/microservice-documents/src/cli/index.ts +0 -246
  85. package/microservices/microservice-documents/src/db/database.ts +0 -82
  86. package/microservices/microservice-documents/src/db/documents.ts +0 -316
  87. package/microservices/microservice-documents/src/db/migrations.ts +0 -49
  88. package/microservices/microservice-documents/src/index.ts +0 -24
  89. package/microservices/microservice-documents/src/mcp/index.ts +0 -202
  90. package/microservices/microservice-domains/package.json +0 -27
  91. package/microservices/microservice-domains/src/cli/index.ts +0 -1111
  92. package/microservices/microservice-domains/src/db/database.ts +0 -93
  93. package/microservices/microservice-domains/src/db/domains.ts +0 -1164
  94. package/microservices/microservice-domains/src/db/migrations.ts +0 -60
  95. package/microservices/microservice-domains/src/index.ts +0 -65
  96. package/microservices/microservice-domains/src/lib/brandsight.ts +0 -350
  97. package/microservices/microservice-domains/src/lib/godaddy.ts +0 -338
  98. package/microservices/microservice-domains/src/lib/namecheap.ts +0 -262
  99. package/microservices/microservice-domains/src/lib/registrar.ts +0 -355
  100. package/microservices/microservice-domains/src/mcp/index.ts +0 -781
  101. package/microservices/microservice-expenses/package.json +0 -27
  102. package/microservices/microservice-expenses/src/cli/index.ts +0 -267
  103. package/microservices/microservice-expenses/src/db/database.ts +0 -82
  104. package/microservices/microservice-expenses/src/db/expenses.ts +0 -345
  105. package/microservices/microservice-expenses/src/db/migrations.ts +0 -45
  106. package/microservices/microservice-expenses/src/index.ts +0 -25
  107. package/microservices/microservice-expenses/src/mcp/index.ts +0 -196
  108. package/microservices/microservice-habits/package.json +0 -27
  109. package/microservices/microservice-habits/src/cli/index.ts +0 -315
  110. package/microservices/microservice-habits/src/db/database.ts +0 -93
  111. package/microservices/microservice-habits/src/db/habits.ts +0 -451
  112. package/microservices/microservice-habits/src/db/migrations.ts +0 -46
  113. package/microservices/microservice-habits/src/index.ts +0 -31
  114. package/microservices/microservice-habits/src/mcp/index.ts +0 -313
  115. package/microservices/microservice-health/package.json +0 -27
  116. package/microservices/microservice-health/src/cli/index.ts +0 -484
  117. package/microservices/microservice-health/src/db/database.ts +0 -93
  118. package/microservices/microservice-health/src/db/health.ts +0 -708
  119. package/microservices/microservice-health/src/db/migrations.ts +0 -70
  120. package/microservices/microservice-health/src/index.ts +0 -63
  121. package/microservices/microservice-health/src/mcp/index.ts +0 -437
  122. package/microservices/microservice-hiring/package.json +0 -27
  123. package/microservices/microservice-hiring/src/cli/index.ts +0 -741
  124. package/microservices/microservice-hiring/src/db/database.ts +0 -93
  125. package/microservices/microservice-hiring/src/db/hiring.ts +0 -1085
  126. package/microservices/microservice-hiring/src/db/migrations.ts +0 -89
  127. package/microservices/microservice-hiring/src/index.ts +0 -80
  128. package/microservices/microservice-hiring/src/lib/scoring.ts +0 -206
  129. package/microservices/microservice-hiring/src/mcp/index.ts +0 -709
  130. package/microservices/microservice-inventory/package.json +0 -27
  131. package/microservices/microservice-inventory/src/cli/index.ts +0 -365
  132. package/microservices/microservice-inventory/src/db/database.ts +0 -82
  133. package/microservices/microservice-inventory/src/db/inventory.ts +0 -393
  134. package/microservices/microservice-inventory/src/db/migrations.ts +0 -54
  135. package/microservices/microservice-inventory/src/index.ts +0 -28
  136. package/microservices/microservice-inventory/src/mcp/index.ts +0 -250
  137. package/microservices/microservice-invoices/dashboard/dist/assets/index-Bngq7FNM.css +0 -1
  138. package/microservices/microservice-invoices/dashboard/dist/assets/index-aHW4ARZR.js +0 -124
  139. package/microservices/microservice-invoices/dashboard/dist/index.html +0 -13
  140. package/microservices/microservice-invoices/dashboard/index.html +0 -12
  141. package/microservices/microservice-invoices/dashboard/package.json +0 -29
  142. package/microservices/microservice-invoices/dashboard/tsconfig.json +0 -14
  143. package/microservices/microservice-invoices/dashboard/vite.config.ts +0 -15
  144. package/microservices/microservice-invoices/package.json +0 -30
  145. package/microservices/microservice-invoices/src/cli/index.ts +0 -308
  146. package/microservices/microservice-invoices/src/db/business.ts +0 -241
  147. package/microservices/microservice-invoices/src/db/clients.ts +0 -127
  148. package/microservices/microservice-invoices/src/db/database.ts +0 -82
  149. package/microservices/microservice-invoices/src/db/invoices.ts +0 -345
  150. package/microservices/microservice-invoices/src/db/migrations.ts +0 -184
  151. package/microservices/microservice-invoices/src/index.ts +0 -56
  152. package/microservices/microservice-invoices/src/mcp/index.ts +0 -242
  153. package/microservices/microservice-invoices/src/server/index.ts +0 -162
  154. package/microservices/microservice-leads/package.json +0 -27
  155. package/microservices/microservice-leads/src/cli/index.ts +0 -596
  156. package/microservices/microservice-leads/src/db/database.ts +0 -93
  157. package/microservices/microservice-leads/src/db/leads.ts +0 -520
  158. package/microservices/microservice-leads/src/db/lists.ts +0 -151
  159. package/microservices/microservice-leads/src/db/migrations.ts +0 -93
  160. package/microservices/microservice-leads/src/index.ts +0 -65
  161. package/microservices/microservice-leads/src/lib/enrichment.ts +0 -202
  162. package/microservices/microservice-leads/src/lib/scoring.ts +0 -134
  163. package/microservices/microservice-leads/src/mcp/index.ts +0 -533
  164. package/microservices/microservice-notes/package.json +0 -27
  165. package/microservices/microservice-notes/src/cli/index.ts +0 -63
  166. package/microservices/microservice-notes/src/db/database.ts +0 -93
  167. package/microservices/microservice-notes/src/db/migrations.ts +0 -40
  168. package/microservices/microservice-notes/src/db/notes.ts +0 -114
  169. package/microservices/microservice-notes/src/index.ts +0 -2
  170. package/microservices/microservice-notes/src/mcp/index.ts +0 -37
  171. package/microservices/microservice-notifications/package.json +0 -27
  172. package/microservices/microservice-notifications/src/cli/index.ts +0 -349
  173. package/microservices/microservice-notifications/src/db/database.ts +0 -93
  174. package/microservices/microservice-notifications/src/db/migrations.ts +0 -62
  175. package/microservices/microservice-notifications/src/db/notifications.ts +0 -509
  176. package/microservices/microservice-notifications/src/index.ts +0 -41
  177. package/microservices/microservice-notifications/src/mcp/index.ts +0 -422
  178. package/microservices/microservice-payments/package.json +0 -27
  179. package/microservices/microservice-payments/src/cli/index.ts +0 -609
  180. package/microservices/microservice-payments/src/db/database.ts +0 -93
  181. package/microservices/microservice-payments/src/db/migrations.ts +0 -81
  182. package/microservices/microservice-payments/src/db/payments.ts +0 -1204
  183. package/microservices/microservice-payments/src/index.ts +0 -51
  184. package/microservices/microservice-payments/src/mcp/index.ts +0 -683
  185. package/microservices/microservice-payroll/package.json +0 -27
  186. package/microservices/microservice-payroll/src/cli/index.ts +0 -643
  187. package/microservices/microservice-payroll/src/db/database.ts +0 -93
  188. package/microservices/microservice-payroll/src/db/migrations.ts +0 -95
  189. package/microservices/microservice-payroll/src/db/payroll.ts +0 -1377
  190. package/microservices/microservice-payroll/src/index.ts +0 -48
  191. package/microservices/microservice-payroll/src/mcp/index.ts +0 -666
  192. package/microservices/microservice-products/package.json +0 -27
  193. package/microservices/microservice-products/src/cli/index.ts +0 -416
  194. package/microservices/microservice-products/src/db/categories.ts +0 -154
  195. package/microservices/microservice-products/src/db/database.ts +0 -93
  196. package/microservices/microservice-products/src/db/migrations.ts +0 -58
  197. package/microservices/microservice-products/src/db/pricing-tiers.ts +0 -66
  198. package/microservices/microservice-products/src/db/products.ts +0 -452
  199. package/microservices/microservice-products/src/index.ts +0 -53
  200. package/microservices/microservice-products/src/mcp/index.ts +0 -453
  201. package/microservices/microservice-projects/package.json +0 -27
  202. package/microservices/microservice-projects/src/cli/index.ts +0 -480
  203. package/microservices/microservice-projects/src/db/database.ts +0 -93
  204. package/microservices/microservice-projects/src/db/migrations.ts +0 -65
  205. package/microservices/microservice-projects/src/db/projects.ts +0 -715
  206. package/microservices/microservice-projects/src/index.ts +0 -57
  207. package/microservices/microservice-projects/src/mcp/index.ts +0 -501
  208. package/microservices/microservice-proposals/package.json +0 -27
  209. package/microservices/microservice-proposals/src/cli/index.ts +0 -400
  210. package/microservices/microservice-proposals/src/db/database.ts +0 -93
  211. package/microservices/microservice-proposals/src/db/migrations.ts +0 -52
  212. package/microservices/microservice-proposals/src/db/proposals.ts +0 -532
  213. package/microservices/microservice-proposals/src/index.ts +0 -37
  214. package/microservices/microservice-proposals/src/mcp/index.ts +0 -375
  215. package/microservices/microservice-reading/package.json +0 -27
  216. package/microservices/microservice-reading/src/cli/index.ts +0 -464
  217. package/microservices/microservice-reading/src/db/database.ts +0 -93
  218. package/microservices/microservice-reading/src/db/migrations.ts +0 -59
  219. package/microservices/microservice-reading/src/db/reading.ts +0 -524
  220. package/microservices/microservice-reading/src/index.ts +0 -51
  221. package/microservices/microservice-reading/src/mcp/index.ts +0 -368
  222. package/microservices/microservice-shipping/package.json +0 -27
  223. package/microservices/microservice-shipping/src/cli/index.ts +0 -606
  224. package/microservices/microservice-shipping/src/db/database.ts +0 -93
  225. package/microservices/microservice-shipping/src/db/migrations.ts +0 -69
  226. package/microservices/microservice-shipping/src/db/shipping.ts +0 -1093
  227. package/microservices/microservice-shipping/src/index.ts +0 -53
  228. package/microservices/microservice-shipping/src/mcp/index.ts +0 -533
  229. package/microservices/microservice-social/package.json +0 -28
  230. package/microservices/microservice-social/src/cli/index.ts +0 -1583
  231. package/microservices/microservice-social/src/db/database.ts +0 -93
  232. package/microservices/microservice-social/src/db/migrations.ts +0 -160
  233. package/microservices/microservice-social/src/db/social.ts +0 -1076
  234. package/microservices/microservice-social/src/index.ts +0 -46
  235. package/microservices/microservice-social/src/lib/audience.ts +0 -353
  236. package/microservices/microservice-social/src/lib/content-ai.ts +0 -278
  237. package/microservices/microservice-social/src/lib/media.ts +0 -311
  238. package/microservices/microservice-social/src/lib/mentions.ts +0 -434
  239. package/microservices/microservice-social/src/lib/metrics-sync.ts +0 -264
  240. package/microservices/microservice-social/src/lib/publisher.ts +0 -377
  241. package/microservices/microservice-social/src/lib/scheduler.ts +0 -229
  242. package/microservices/microservice-social/src/lib/sentiment.ts +0 -256
  243. package/microservices/microservice-social/src/lib/threads.ts +0 -291
  244. package/microservices/microservice-social/src/mcp/index.ts +0 -1425
  245. package/microservices/microservice-social/src/server/index.ts +0 -441
  246. package/microservices/microservice-subscriptions/package.json +0 -27
  247. package/microservices/microservice-subscriptions/src/cli/index.ts +0 -715
  248. package/microservices/microservice-subscriptions/src/db/database.ts +0 -93
  249. package/microservices/microservice-subscriptions/src/db/migrations.ts +0 -125
  250. package/microservices/microservice-subscriptions/src/db/subscriptions.ts +0 -1256
  251. package/microservices/microservice-subscriptions/src/index.ts +0 -41
  252. package/microservices/microservice-subscriptions/src/mcp/index.ts +0 -631
  253. package/microservices/microservice-timesheets/package.json +0 -27
  254. package/microservices/microservice-timesheets/src/cli/index.ts +0 -373
  255. package/microservices/microservice-timesheets/src/db/database.ts +0 -82
  256. package/microservices/microservice-timesheets/src/db/locale.ts +0 -217
  257. package/microservices/microservice-timesheets/src/db/migrations.ts +0 -74
  258. package/microservices/microservice-timesheets/src/db/timesheets.ts +0 -447
  259. package/microservices/microservice-timesheets/src/index.ts +0 -44
  260. package/microservices/microservice-timesheets/src/mcp/index.ts +0 -269
  261. package/microservices/microservice-transcriber/package.json +0 -28
  262. package/microservices/microservice-transcriber/src/cli/index.ts +0 -1593
  263. package/microservices/microservice-transcriber/src/db/annotations.ts +0 -37
  264. package/microservices/microservice-transcriber/src/db/comments.ts +0 -166
  265. package/microservices/microservice-transcriber/src/db/database.ts +0 -82
  266. package/microservices/microservice-transcriber/src/db/migrations.ts +0 -118
  267. package/microservices/microservice-transcriber/src/db/proofread.ts +0 -119
  268. package/microservices/microservice-transcriber/src/db/transcripts.ts +0 -395
  269. package/microservices/microservice-transcriber/src/index.ts +0 -43
  270. package/microservices/microservice-transcriber/src/lib/config.ts +0 -77
  271. package/microservices/microservice-transcriber/src/lib/diff.ts +0 -91
  272. package/microservices/microservice-transcriber/src/lib/downloader.ts +0 -638
  273. package/microservices/microservice-transcriber/src/lib/feeds.ts +0 -62
  274. package/microservices/microservice-transcriber/src/lib/live.ts +0 -94
  275. package/microservices/microservice-transcriber/src/lib/notion.ts +0 -129
  276. package/microservices/microservice-transcriber/src/lib/proofread.ts +0 -296
  277. package/microservices/microservice-transcriber/src/lib/providers.ts +0 -713
  278. package/microservices/microservice-transcriber/src/lib/summarizer.ts +0 -147
  279. package/microservices/microservice-transcriber/src/lib/translator.ts +0 -75
  280. package/microservices/microservice-transcriber/src/lib/webhook.ts +0 -37
  281. package/microservices/microservice-transcriber/src/mcp/index.ts +0 -1330
  282. package/microservices/microservice-transcriber/src/server/index.ts +0 -199
  283. package/microservices/microservice-travel/package.json +0 -27
  284. package/microservices/microservice-travel/src/cli/index.ts +0 -505
  285. package/microservices/microservice-travel/src/db/database.ts +0 -93
  286. package/microservices/microservice-travel/src/db/migrations.ts +0 -77
  287. package/microservices/microservice-travel/src/db/travel.ts +0 -802
  288. package/microservices/microservice-travel/src/index.ts +0 -60
  289. package/microservices/microservice-travel/src/mcp/index.ts +0 -495
  290. package/microservices/microservice-wiki/package.json +0 -27
  291. package/microservices/microservice-wiki/src/cli/index.ts +0 -345
  292. package/microservices/microservice-wiki/src/db/database.ts +0 -93
  293. package/microservices/microservice-wiki/src/db/migrations.ts +0 -55
  294. package/microservices/microservice-wiki/src/db/wiki.ts +0 -395
  295. package/microservices/microservice-wiki/src/index.ts +0 -32
  296. package/microservices/microservice-wiki/src/mcp/index.ts +0 -344
@@ -1,375 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- import { Command } from "commander";
4
- import {
5
- createAsset,
6
- getAsset,
7
- listAssets,
8
- updateAsset,
9
- deleteAsset,
10
- searchAssets,
11
- listByType,
12
- listByTag,
13
- getAssetStats,
14
- } from "../db/assets.js";
15
- import {
16
- createCollection,
17
- listCollections,
18
- addToCollection,
19
- removeFromCollection,
20
- getCollectionAssets,
21
- } from "../db/assets.js";
22
-
23
- const program = new Command();
24
-
25
- program
26
- .name("microservice-assets")
27
- .description("Digital asset management microservice")
28
- .version("0.0.1");
29
-
30
- // --- Assets ---
31
-
32
- program
33
- .command("create")
34
- .description("Create a new asset")
35
- .requiredOption("--name <name>", "Asset name")
36
- .option("--description <desc>", "Description")
37
- .option("--type <type>", "Asset type (image, video, document, audio, template, logo, font, other)")
38
- .option("--file-path <path>", "File path")
39
- .option("--file-size <size>", "File size in bytes")
40
- .option("--mime-type <mime>", "MIME type")
41
- .option("--dimensions <dims>", "Dimensions (e.g. 1920x1080)")
42
- .option("--tags <tags>", "Comma-separated tags")
43
- .option("--category <cat>", "Category")
44
- .option("--uploaded-by <user>", "Uploaded by")
45
- .option("--json", "Output as JSON", false)
46
- .action((opts) => {
47
- const asset = createAsset({
48
- name: opts.name,
49
- description: opts.description,
50
- type: opts.type,
51
- file_path: opts.filePath,
52
- file_size: opts.fileSize ? parseInt(opts.fileSize) : undefined,
53
- mime_type: opts.mimeType,
54
- dimensions: opts.dimensions,
55
- tags: opts.tags ? opts.tags.split(",").map((t: string) => t.trim()) : undefined,
56
- category: opts.category,
57
- uploaded_by: opts.uploadedBy,
58
- });
59
-
60
- if (opts.json) {
61
- console.log(JSON.stringify(asset, null, 2));
62
- } else {
63
- console.log(`Created asset: ${asset.name} (${asset.id})`);
64
- }
65
- });
66
-
67
- program
68
- .command("get")
69
- .description("Get an asset by ID")
70
- .argument("<id>", "Asset ID")
71
- .option("--json", "Output as JSON", false)
72
- .action((id, opts) => {
73
- const asset = getAsset(id);
74
- if (!asset) {
75
- console.error(`Asset '${id}' not found.`);
76
- process.exit(1);
77
- }
78
-
79
- if (opts.json) {
80
- console.log(JSON.stringify(asset, null, 2));
81
- } else {
82
- console.log(`${asset.name}`);
83
- if (asset.type) console.log(` Type: ${asset.type}`);
84
- if (asset.file_path) console.log(` Path: ${asset.file_path}`);
85
- if (asset.file_size) console.log(` Size: ${asset.file_size} bytes`);
86
- if (asset.mime_type) console.log(` MIME: ${asset.mime_type}`);
87
- if (asset.dimensions) console.log(` Dimensions: ${asset.dimensions}`);
88
- if (asset.category) console.log(` Category: ${asset.category}`);
89
- if (asset.tags.length) console.log(` Tags: ${asset.tags.join(", ")}`);
90
- if (asset.uploaded_by) console.log(` Uploaded by: ${asset.uploaded_by}`);
91
- }
92
- });
93
-
94
- program
95
- .command("list")
96
- .description("List assets")
97
- .option("--search <query>", "Search by name, description, or tags")
98
- .option("--type <type>", "Filter by type")
99
- .option("--category <cat>", "Filter by category")
100
- .option("--tag <tag>", "Filter by tag")
101
- .option("--limit <n>", "Limit results")
102
- .option("--json", "Output as JSON", false)
103
- .action((opts) => {
104
- const assets = listAssets({
105
- search: opts.search,
106
- type: opts.type,
107
- category: opts.category,
108
- tag: opts.tag,
109
- limit: opts.limit ? parseInt(opts.limit) : undefined,
110
- });
111
-
112
- if (opts.json) {
113
- console.log(JSON.stringify(assets, null, 2));
114
- } else {
115
- if (assets.length === 0) {
116
- console.log("No assets found.");
117
- return;
118
- }
119
- for (const a of assets) {
120
- const type = a.type ? ` [${a.type}]` : "";
121
- const tags = a.tags.length ? ` (${a.tags.join(", ")})` : "";
122
- console.log(` ${a.name}${type}${tags}`);
123
- }
124
- console.log(`\n${assets.length} asset(s)`);
125
- }
126
- });
127
-
128
- program
129
- .command("update")
130
- .description("Update an asset")
131
- .argument("<id>", "Asset ID")
132
- .option("--name <name>", "Name")
133
- .option("--description <desc>", "Description")
134
- .option("--type <type>", "Type")
135
- .option("--file-path <path>", "File path")
136
- .option("--file-size <size>", "File size")
137
- .option("--mime-type <mime>", "MIME type")
138
- .option("--dimensions <dims>", "Dimensions")
139
- .option("--tags <tags>", "Comma-separated tags")
140
- .option("--category <cat>", "Category")
141
- .option("--uploaded-by <user>", "Uploaded by")
142
- .option("--json", "Output as JSON", false)
143
- .action((id, opts) => {
144
- const input: Record<string, unknown> = {};
145
- if (opts.name !== undefined) input.name = opts.name;
146
- if (opts.description !== undefined) input.description = opts.description;
147
- if (opts.type !== undefined) input.type = opts.type;
148
- if (opts.filePath !== undefined) input.file_path = opts.filePath;
149
- if (opts.fileSize !== undefined) input.file_size = parseInt(opts.fileSize);
150
- if (opts.mimeType !== undefined) input.mime_type = opts.mimeType;
151
- if (opts.dimensions !== undefined) input.dimensions = opts.dimensions;
152
- if (opts.tags !== undefined) input.tags = opts.tags.split(",").map((t: string) => t.trim());
153
- if (opts.category !== undefined) input.category = opts.category;
154
- if (opts.uploadedBy !== undefined) input.uploaded_by = opts.uploadedBy;
155
-
156
- const asset = updateAsset(id, input);
157
- if (!asset) {
158
- console.error(`Asset '${id}' not found.`);
159
- process.exit(1);
160
- }
161
-
162
- if (opts.json) {
163
- console.log(JSON.stringify(asset, null, 2));
164
- } else {
165
- console.log(`Updated: ${asset.name}`);
166
- }
167
- });
168
-
169
- program
170
- .command("delete")
171
- .description("Delete an asset")
172
- .argument("<id>", "Asset ID")
173
- .action((id) => {
174
- const deleted = deleteAsset(id);
175
- if (deleted) {
176
- console.log(`Deleted asset ${id}`);
177
- } else {
178
- console.error(`Asset '${id}' not found.`);
179
- process.exit(1);
180
- }
181
- });
182
-
183
- program
184
- .command("search")
185
- .description("Search assets")
186
- .argument("<query>", "Search term")
187
- .option("--json", "Output as JSON", false)
188
- .action((query, opts) => {
189
- const results = searchAssets(query);
190
-
191
- if (opts.json) {
192
- console.log(JSON.stringify(results, null, 2));
193
- } else {
194
- if (results.length === 0) {
195
- console.log(`No assets matching "${query}".`);
196
- return;
197
- }
198
- for (const a of results) {
199
- const type = a.type ? ` [${a.type}]` : "";
200
- console.log(` ${a.name}${type}`);
201
- }
202
- }
203
- });
204
-
205
- program
206
- .command("by-type")
207
- .description("List assets by type")
208
- .argument("<type>", "Asset type")
209
- .option("--json", "Output as JSON", false)
210
- .action((type, opts) => {
211
- const assets = listByType(type);
212
-
213
- if (opts.json) {
214
- console.log(JSON.stringify(assets, null, 2));
215
- } else {
216
- if (assets.length === 0) {
217
- console.log(`No assets of type "${type}".`);
218
- return;
219
- }
220
- for (const a of assets) {
221
- console.log(` ${a.name}`);
222
- }
223
- console.log(`\n${assets.length} asset(s)`);
224
- }
225
- });
226
-
227
- program
228
- .command("by-tag")
229
- .description("List assets by tag")
230
- .argument("<tag>", "Tag")
231
- .option("--json", "Output as JSON", false)
232
- .action((tag, opts) => {
233
- const assets = listByTag(tag);
234
-
235
- if (opts.json) {
236
- console.log(JSON.stringify(assets, null, 2));
237
- } else {
238
- if (assets.length === 0) {
239
- console.log(`No assets with tag "${tag}".`);
240
- return;
241
- }
242
- for (const a of assets) {
243
- console.log(` ${a.name} (${a.tags.join(", ")})`);
244
- }
245
- console.log(`\n${assets.length} asset(s)`);
246
- }
247
- });
248
-
249
- program
250
- .command("stats")
251
- .description("Get asset statistics")
252
- .option("--json", "Output as JSON", false)
253
- .action((opts) => {
254
- const stats = getAssetStats();
255
-
256
- if (opts.json) {
257
- console.log(JSON.stringify(stats, null, 2));
258
- } else {
259
- console.log(`Total assets: ${stats.total_assets}`);
260
- console.log(`Total size: ${stats.total_size} bytes`);
261
- if (Object.keys(stats.by_type).length) {
262
- console.log("By type:");
263
- for (const [type, count] of Object.entries(stats.by_type)) {
264
- console.log(` ${type}: ${count}`);
265
- }
266
- }
267
- if (Object.keys(stats.by_category).length) {
268
- console.log("By category:");
269
- for (const [cat, count] of Object.entries(stats.by_category)) {
270
- console.log(` ${cat}: ${count}`);
271
- }
272
- }
273
- }
274
- });
275
-
276
- // --- Collections ---
277
-
278
- const collectionCmd = program
279
- .command("collection")
280
- .description("Collection management");
281
-
282
- collectionCmd
283
- .command("create")
284
- .description("Create a collection")
285
- .requiredOption("--name <name>", "Collection name")
286
- .option("--description <desc>", "Description")
287
- .option("--json", "Output as JSON", false)
288
- .action((opts) => {
289
- const collection = createCollection({
290
- name: opts.name,
291
- description: opts.description,
292
- });
293
-
294
- if (opts.json) {
295
- console.log(JSON.stringify(collection, null, 2));
296
- } else {
297
- console.log(`Created collection: ${collection.name} (${collection.id})`);
298
- }
299
- });
300
-
301
- collectionCmd
302
- .command("list")
303
- .description("List collections")
304
- .option("--json", "Output as JSON", false)
305
- .action((opts) => {
306
- const collections = listCollections();
307
-
308
- if (opts.json) {
309
- console.log(JSON.stringify(collections, null, 2));
310
- } else {
311
- if (collections.length === 0) {
312
- console.log("No collections found.");
313
- return;
314
- }
315
- for (const c of collections) {
316
- const desc = c.description ? ` — ${c.description}` : "";
317
- console.log(` ${c.name}${desc}`);
318
- }
319
- }
320
- });
321
-
322
- collectionCmd
323
- .command("add")
324
- .description("Add an asset to a collection")
325
- .requiredOption("--collection <id>", "Collection ID")
326
- .requiredOption("--asset <id>", "Asset ID")
327
- .action((opts) => {
328
- const added = addToCollection(opts.collection, opts.asset);
329
- if (added) {
330
- console.log(`Added asset ${opts.asset} to collection ${opts.collection}`);
331
- } else {
332
- console.error("Failed to add asset to collection.");
333
- process.exit(1);
334
- }
335
- });
336
-
337
- collectionCmd
338
- .command("remove")
339
- .description("Remove an asset from a collection")
340
- .requiredOption("--collection <id>", "Collection ID")
341
- .requiredOption("--asset <id>", "Asset ID")
342
- .action((opts) => {
343
- const removed = removeFromCollection(opts.collection, opts.asset);
344
- if (removed) {
345
- console.log(`Removed asset ${opts.asset} from collection ${opts.collection}`);
346
- } else {
347
- console.error("Asset not in collection or collection not found.");
348
- process.exit(1);
349
- }
350
- });
351
-
352
- collectionCmd
353
- .command("assets")
354
- .description("List assets in a collection")
355
- .argument("<collection-id>", "Collection ID")
356
- .option("--json", "Output as JSON", false)
357
- .action((collectionId, opts) => {
358
- const assets = getCollectionAssets(collectionId);
359
-
360
- if (opts.json) {
361
- console.log(JSON.stringify(assets, null, 2));
362
- } else {
363
- if (assets.length === 0) {
364
- console.log("No assets in collection.");
365
- return;
366
- }
367
- for (const a of assets) {
368
- const type = a.type ? ` [${a.type}]` : "";
369
- console.log(` ${a.name}${type}`);
370
- }
371
- console.log(`\n${assets.length} asset(s)`);
372
- }
373
- });
374
-
375
- program.parse(process.argv);