@hasna/microservices 0.0.16 → 0.0.18

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 (293) hide show
  1. package/README.md +143 -23
  2. package/bin/index.js +784 -13987
  3. package/bin/mcp.js +298 -10973
  4. package/dist/index.js +251 -10056
  5. package/package.json +36 -26
  6. package/microservices/microservice-ads/package.json +0 -28
  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 -91
  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 -28
  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 -91
  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 -28
  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 -91
  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 -28
  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 -91
  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 -28
  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 -91
  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 -28
  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 -91
  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 -28
  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 -91
  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 -28
  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 -91
  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 -28
  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 -91
  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 -28
  77. package/microservices/microservice-crm/src/cli/index.ts +0 -396
  78. package/microservices/microservice-crm/src/db/database.ts +0 -91
  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 -28
  84. package/microservices/microservice-documents/src/cli/index.ts +0 -246
  85. package/microservices/microservice-documents/src/db/database.ts +0 -91
  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 -28
  91. package/microservices/microservice-domains/src/cli/index.ts +0 -1111
  92. package/microservices/microservice-domains/src/db/database.ts +0 -91
  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 -28
  102. package/microservices/microservice-expenses/src/cli/index.ts +0 -267
  103. package/microservices/microservice-expenses/src/db/database.ts +0 -91
  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 -28
  109. package/microservices/microservice-habits/src/cli/index.ts +0 -315
  110. package/microservices/microservice-habits/src/db/database.ts +0 -91
  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 -28
  116. package/microservices/microservice-health/src/cli/index.ts +0 -484
  117. package/microservices/microservice-health/src/db/database.ts +0 -91
  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 -28
  123. package/microservices/microservice-hiring/src/cli/index.ts +0 -741
  124. package/microservices/microservice-hiring/src/db/database.ts +0 -91
  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 -28
  131. package/microservices/microservice-inventory/src/cli/index.ts +0 -365
  132. package/microservices/microservice-inventory/src/db/database.ts +0 -91
  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/index.html +0 -12
  138. package/microservices/microservice-invoices/dashboard/package.json +0 -29
  139. package/microservices/microservice-invoices/dashboard/tsconfig.json +0 -14
  140. package/microservices/microservice-invoices/dashboard/vite.config.ts +0 -15
  141. package/microservices/microservice-invoices/package.json +0 -31
  142. package/microservices/microservice-invoices/src/cli/index.ts +0 -308
  143. package/microservices/microservice-invoices/src/db/business.ts +0 -241
  144. package/microservices/microservice-invoices/src/db/clients.ts +0 -127
  145. package/microservices/microservice-invoices/src/db/database.ts +0 -91
  146. package/microservices/microservice-invoices/src/db/invoices.ts +0 -345
  147. package/microservices/microservice-invoices/src/db/migrations.ts +0 -184
  148. package/microservices/microservice-invoices/src/index.ts +0 -56
  149. package/microservices/microservice-invoices/src/mcp/index.ts +0 -242
  150. package/microservices/microservice-invoices/src/server/index.ts +0 -162
  151. package/microservices/microservice-leads/package.json +0 -28
  152. package/microservices/microservice-leads/src/cli/index.ts +0 -596
  153. package/microservices/microservice-leads/src/db/database.ts +0 -91
  154. package/microservices/microservice-leads/src/db/leads.ts +0 -520
  155. package/microservices/microservice-leads/src/db/lists.ts +0 -151
  156. package/microservices/microservice-leads/src/db/migrations.ts +0 -93
  157. package/microservices/microservice-leads/src/index.ts +0 -65
  158. package/microservices/microservice-leads/src/lib/enrichment.ts +0 -202
  159. package/microservices/microservice-leads/src/lib/scoring.ts +0 -134
  160. package/microservices/microservice-leads/src/mcp/index.ts +0 -533
  161. package/microservices/microservice-notes/package.json +0 -28
  162. package/microservices/microservice-notes/src/cli/index.ts +0 -63
  163. package/microservices/microservice-notes/src/db/database.ts +0 -91
  164. package/microservices/microservice-notes/src/db/migrations.ts +0 -40
  165. package/microservices/microservice-notes/src/db/notes.ts +0 -114
  166. package/microservices/microservice-notes/src/index.ts +0 -2
  167. package/microservices/microservice-notes/src/mcp/index.ts +0 -37
  168. package/microservices/microservice-notifications/package.json +0 -28
  169. package/microservices/microservice-notifications/src/cli/index.ts +0 -349
  170. package/microservices/microservice-notifications/src/db/database.ts +0 -91
  171. package/microservices/microservice-notifications/src/db/migrations.ts +0 -62
  172. package/microservices/microservice-notifications/src/db/notifications.ts +0 -509
  173. package/microservices/microservice-notifications/src/index.ts +0 -41
  174. package/microservices/microservice-notifications/src/mcp/index.ts +0 -422
  175. package/microservices/microservice-payments/package.json +0 -28
  176. package/microservices/microservice-payments/src/cli/index.ts +0 -609
  177. package/microservices/microservice-payments/src/db/database.ts +0 -91
  178. package/microservices/microservice-payments/src/db/migrations.ts +0 -81
  179. package/microservices/microservice-payments/src/db/payments.ts +0 -1204
  180. package/microservices/microservice-payments/src/index.ts +0 -51
  181. package/microservices/microservice-payments/src/mcp/index.ts +0 -683
  182. package/microservices/microservice-payroll/package.json +0 -28
  183. package/microservices/microservice-payroll/src/cli/index.ts +0 -643
  184. package/microservices/microservice-payroll/src/db/database.ts +0 -91
  185. package/microservices/microservice-payroll/src/db/migrations.ts +0 -95
  186. package/microservices/microservice-payroll/src/db/payroll.ts +0 -1377
  187. package/microservices/microservice-payroll/src/index.ts +0 -48
  188. package/microservices/microservice-payroll/src/mcp/index.ts +0 -666
  189. package/microservices/microservice-products/package.json +0 -28
  190. package/microservices/microservice-products/src/cli/index.ts +0 -416
  191. package/microservices/microservice-products/src/db/categories.ts +0 -154
  192. package/microservices/microservice-products/src/db/database.ts +0 -91
  193. package/microservices/microservice-products/src/db/migrations.ts +0 -58
  194. package/microservices/microservice-products/src/db/pricing-tiers.ts +0 -66
  195. package/microservices/microservice-products/src/db/products.ts +0 -452
  196. package/microservices/microservice-products/src/index.ts +0 -53
  197. package/microservices/microservice-products/src/mcp/index.ts +0 -453
  198. package/microservices/microservice-projects/package.json +0 -28
  199. package/microservices/microservice-projects/src/cli/index.ts +0 -480
  200. package/microservices/microservice-projects/src/db/database.ts +0 -91
  201. package/microservices/microservice-projects/src/db/migrations.ts +0 -65
  202. package/microservices/microservice-projects/src/db/projects.ts +0 -715
  203. package/microservices/microservice-projects/src/index.ts +0 -57
  204. package/microservices/microservice-projects/src/mcp/index.ts +0 -501
  205. package/microservices/microservice-proposals/package.json +0 -28
  206. package/microservices/microservice-proposals/src/cli/index.ts +0 -400
  207. package/microservices/microservice-proposals/src/db/database.ts +0 -91
  208. package/microservices/microservice-proposals/src/db/migrations.ts +0 -52
  209. package/microservices/microservice-proposals/src/db/proposals.ts +0 -532
  210. package/microservices/microservice-proposals/src/index.ts +0 -37
  211. package/microservices/microservice-proposals/src/mcp/index.ts +0 -375
  212. package/microservices/microservice-reading/package.json +0 -28
  213. package/microservices/microservice-reading/src/cli/index.ts +0 -464
  214. package/microservices/microservice-reading/src/db/database.ts +0 -91
  215. package/microservices/microservice-reading/src/db/migrations.ts +0 -59
  216. package/microservices/microservice-reading/src/db/reading.ts +0 -524
  217. package/microservices/microservice-reading/src/index.ts +0 -51
  218. package/microservices/microservice-reading/src/mcp/index.ts +0 -368
  219. package/microservices/microservice-shipping/package.json +0 -28
  220. package/microservices/microservice-shipping/src/cli/index.ts +0 -606
  221. package/microservices/microservice-shipping/src/db/database.ts +0 -91
  222. package/microservices/microservice-shipping/src/db/migrations.ts +0 -69
  223. package/microservices/microservice-shipping/src/db/shipping.ts +0 -1093
  224. package/microservices/microservice-shipping/src/index.ts +0 -53
  225. package/microservices/microservice-shipping/src/mcp/index.ts +0 -533
  226. package/microservices/microservice-social/package.json +0 -29
  227. package/microservices/microservice-social/src/cli/index.ts +0 -1583
  228. package/microservices/microservice-social/src/db/database.ts +0 -91
  229. package/microservices/microservice-social/src/db/migrations.ts +0 -160
  230. package/microservices/microservice-social/src/db/social.ts +0 -1076
  231. package/microservices/microservice-social/src/index.ts +0 -46
  232. package/microservices/microservice-social/src/lib/audience.ts +0 -353
  233. package/microservices/microservice-social/src/lib/content-ai.ts +0 -278
  234. package/microservices/microservice-social/src/lib/media.ts +0 -311
  235. package/microservices/microservice-social/src/lib/mentions.ts +0 -434
  236. package/microservices/microservice-social/src/lib/metrics-sync.ts +0 -264
  237. package/microservices/microservice-social/src/lib/publisher.ts +0 -377
  238. package/microservices/microservice-social/src/lib/scheduler.ts +0 -229
  239. package/microservices/microservice-social/src/lib/sentiment.ts +0 -256
  240. package/microservices/microservice-social/src/lib/threads.ts +0 -291
  241. package/microservices/microservice-social/src/mcp/index.ts +0 -1425
  242. package/microservices/microservice-social/src/server/index.ts +0 -441
  243. package/microservices/microservice-subscriptions/package.json +0 -28
  244. package/microservices/microservice-subscriptions/src/cli/index.ts +0 -715
  245. package/microservices/microservice-subscriptions/src/db/database.ts +0 -91
  246. package/microservices/microservice-subscriptions/src/db/migrations.ts +0 -125
  247. package/microservices/microservice-subscriptions/src/db/subscriptions.ts +0 -1256
  248. package/microservices/microservice-subscriptions/src/index.ts +0 -41
  249. package/microservices/microservice-subscriptions/src/mcp/index.ts +0 -631
  250. package/microservices/microservice-timesheets/package.json +0 -28
  251. package/microservices/microservice-timesheets/src/cli/index.ts +0 -373
  252. package/microservices/microservice-timesheets/src/db/database.ts +0 -91
  253. package/microservices/microservice-timesheets/src/db/locale.ts +0 -217
  254. package/microservices/microservice-timesheets/src/db/migrations.ts +0 -74
  255. package/microservices/microservice-timesheets/src/db/timesheets.ts +0 -447
  256. package/microservices/microservice-timesheets/src/index.ts +0 -44
  257. package/microservices/microservice-timesheets/src/mcp/index.ts +0 -269
  258. package/microservices/microservice-transcriber/package.json +0 -29
  259. package/microservices/microservice-transcriber/src/cli/index.ts +0 -1593
  260. package/microservices/microservice-transcriber/src/db/annotations.ts +0 -37
  261. package/microservices/microservice-transcriber/src/db/comments.ts +0 -166
  262. package/microservices/microservice-transcriber/src/db/database.ts +0 -91
  263. package/microservices/microservice-transcriber/src/db/migrations.ts +0 -118
  264. package/microservices/microservice-transcriber/src/db/proofread.ts +0 -119
  265. package/microservices/microservice-transcriber/src/db/transcripts.ts +0 -395
  266. package/microservices/microservice-transcriber/src/index.ts +0 -43
  267. package/microservices/microservice-transcriber/src/lib/config.ts +0 -77
  268. package/microservices/microservice-transcriber/src/lib/diff.ts +0 -91
  269. package/microservices/microservice-transcriber/src/lib/downloader.ts +0 -638
  270. package/microservices/microservice-transcriber/src/lib/feeds.ts +0 -62
  271. package/microservices/microservice-transcriber/src/lib/live.ts +0 -94
  272. package/microservices/microservice-transcriber/src/lib/notion.ts +0 -129
  273. package/microservices/microservice-transcriber/src/lib/proofread.ts +0 -296
  274. package/microservices/microservice-transcriber/src/lib/providers.ts +0 -713
  275. package/microservices/microservice-transcriber/src/lib/summarizer.ts +0 -147
  276. package/microservices/microservice-transcriber/src/lib/translator.ts +0 -75
  277. package/microservices/microservice-transcriber/src/lib/webhook.ts +0 -37
  278. package/microservices/microservice-transcriber/src/mcp/index.ts +0 -1330
  279. package/microservices/microservice-transcriber/src/server/index.ts +0 -199
  280. package/microservices/microservice-travel/package.json +0 -28
  281. package/microservices/microservice-travel/src/cli/index.ts +0 -505
  282. package/microservices/microservice-travel/src/db/database.ts +0 -91
  283. package/microservices/microservice-travel/src/db/migrations.ts +0 -77
  284. package/microservices/microservice-travel/src/db/travel.ts +0 -802
  285. package/microservices/microservice-travel/src/index.ts +0 -60
  286. package/microservices/microservice-travel/src/mcp/index.ts +0 -495
  287. package/microservices/microservice-wiki/package.json +0 -28
  288. package/microservices/microservice-wiki/src/cli/index.ts +0 -345
  289. package/microservices/microservice-wiki/src/db/database.ts +0 -91
  290. package/microservices/microservice-wiki/src/db/migrations.ts +0 -55
  291. package/microservices/microservice-wiki/src/db/wiki.ts +0 -395
  292. package/microservices/microservice-wiki/src/index.ts +0 -32
  293. package/microservices/microservice-wiki/src/mcp/index.ts +0 -344
@@ -1,373 +0,0 @@
1
- #!/usr/bin/env bun
2
-
3
- import { Command } from "commander";
4
- import {
5
- recordKpi,
6
- getKpi,
7
- getKpiTrend,
8
- listKpis,
9
- getLatestKpis,
10
- createDashboard,
11
- getDashboard,
12
- listDashboards,
13
- updateDashboard,
14
- deleteDashboard,
15
- generateReport,
16
- getReport,
17
- listReports,
18
- getBusinessHealth,
19
- generateExecutiveSummary,
20
- } from "../db/analytics.js";
21
-
22
- const program = new Command();
23
-
24
- program
25
- .name("microservice-analytics")
26
- .description("Business analytics microservice")
27
- .version("0.0.1");
28
-
29
- // --- KPIs ---
30
-
31
- const kpiCmd = program
32
- .command("kpi")
33
- .description("KPI management");
34
-
35
- kpiCmd
36
- .command("record")
37
- .description("Record a KPI value")
38
- .requiredOption("--name <name>", "KPI name")
39
- .requiredOption("--value <value>", "KPI value")
40
- .option("--category <category>", "Category")
41
- .option("--source <service>", "Source service")
42
- .option("--period <period>", "Period (e.g. 2024-Q1)")
43
- .option("--json", "Output as JSON", false)
44
- .action((opts) => {
45
- const kpi = recordKpi({
46
- name: opts.name,
47
- value: parseFloat(opts.value),
48
- category: opts.category,
49
- source_service: opts.source,
50
- period: opts.period,
51
- });
52
-
53
- if (opts.json) {
54
- console.log(JSON.stringify(kpi, null, 2));
55
- } else {
56
- console.log(`Recorded KPI: ${kpi.name} = ${kpi.value} (${kpi.id})`);
57
- }
58
- });
59
-
60
- kpiCmd
61
- .command("get")
62
- .description("Get the latest value for a KPI")
63
- .argument("<name>", "KPI name")
64
- .option("--period <period>", "Filter by period")
65
- .option("--json", "Output as JSON", false)
66
- .action((name, opts) => {
67
- const kpi = getKpi(name, opts.period);
68
- if (!kpi) {
69
- console.error(`KPI '${name}' not found.`);
70
- process.exit(1);
71
- }
72
-
73
- if (opts.json) {
74
- console.log(JSON.stringify(kpi, null, 2));
75
- } else {
76
- console.log(`${kpi.name}: ${kpi.value}`);
77
- if (kpi.category) console.log(` Category: ${kpi.category}`);
78
- if (kpi.period) console.log(` Period: ${kpi.period}`);
79
- if (kpi.source_service) console.log(` Source: ${kpi.source_service}`);
80
- console.log(` Recorded: ${kpi.recorded_at}`);
81
- }
82
- });
83
-
84
- kpiCmd
85
- .command("trend")
86
- .description("Get KPI trend over time")
87
- .argument("<name>", "KPI name")
88
- .option("--days <n>", "Number of days to look back", "30")
89
- .option("--json", "Output as JSON", false)
90
- .action((name, opts) => {
91
- const trend = getKpiTrend(name, parseInt(opts.days));
92
-
93
- if (opts.json) {
94
- console.log(JSON.stringify(trend, null, 2));
95
- } else {
96
- if (trend.length === 0) {
97
- console.log(`No trend data for '${name}' in the last ${opts.days} days.`);
98
- return;
99
- }
100
- console.log(`Trend for ${name} (last ${opts.days} days):`);
101
- for (const kpi of trend) {
102
- console.log(` ${kpi.recorded_at}: ${kpi.value}`);
103
- }
104
- }
105
- });
106
-
107
- kpiCmd
108
- .command("list")
109
- .description("List KPIs")
110
- .option("--category <category>", "Filter by category")
111
- .option("--source <service>", "Filter by source service")
112
- .option("--limit <n>", "Limit results")
113
- .option("--latest", "Show only latest value per KPI", false)
114
- .option("--json", "Output as JSON", false)
115
- .action((opts) => {
116
- const kpis = opts.latest
117
- ? getLatestKpis()
118
- : listKpis({
119
- category: opts.category,
120
- source_service: opts.source,
121
- limit: opts.limit ? parseInt(opts.limit) : undefined,
122
- });
123
-
124
- if (opts.json) {
125
- console.log(JSON.stringify(kpis, null, 2));
126
- } else {
127
- if (kpis.length === 0) {
128
- console.log("No KPIs found.");
129
- return;
130
- }
131
- for (const kpi of kpis) {
132
- const cat = kpi.category ? ` [${kpi.category}]` : "";
133
- console.log(` ${kpi.name}: ${kpi.value}${cat}`);
134
- }
135
- console.log(`\n${kpis.length} KPI(s)`);
136
- }
137
- });
138
-
139
- // --- Dashboards ---
140
-
141
- const dashCmd = program
142
- .command("dashboard")
143
- .description("Dashboard management");
144
-
145
- dashCmd
146
- .command("create")
147
- .description("Create a dashboard")
148
- .requiredOption("--name <name>", "Dashboard name")
149
- .option("--description <desc>", "Description")
150
- .option("--json", "Output as JSON", false)
151
- .action((opts) => {
152
- const dashboard = createDashboard({
153
- name: opts.name,
154
- description: opts.description,
155
- });
156
-
157
- if (opts.json) {
158
- console.log(JSON.stringify(dashboard, null, 2));
159
- } else {
160
- console.log(`Created dashboard: ${dashboard.name} (${dashboard.id})`);
161
- }
162
- });
163
-
164
- dashCmd
165
- .command("list")
166
- .description("List dashboards")
167
- .option("--json", "Output as JSON", false)
168
- .action((opts) => {
169
- const dashboards = listDashboards();
170
-
171
- if (opts.json) {
172
- console.log(JSON.stringify(dashboards, null, 2));
173
- } else {
174
- if (dashboards.length === 0) {
175
- console.log("No dashboards found.");
176
- return;
177
- }
178
- for (const d of dashboards) {
179
- const desc = d.description ? ` — ${d.description}` : "";
180
- console.log(` ${d.name}${desc} (${d.widgets.length} widgets)`);
181
- }
182
- console.log(`\n${dashboards.length} dashboard(s)`);
183
- }
184
- });
185
-
186
- dashCmd
187
- .command("get")
188
- .description("Get a dashboard")
189
- .argument("<id>", "Dashboard ID")
190
- .option("--json", "Output as JSON", false)
191
- .action((id, opts) => {
192
- const dashboard = getDashboard(id);
193
- if (!dashboard) {
194
- console.error(`Dashboard '${id}' not found.`);
195
- process.exit(1);
196
- }
197
-
198
- if (opts.json) {
199
- console.log(JSON.stringify(dashboard, null, 2));
200
- } else {
201
- console.log(`${dashboard.name}`);
202
- if (dashboard.description) console.log(` Description: ${dashboard.description}`);
203
- console.log(` Widgets: ${dashboard.widgets.length}`);
204
- console.log(` Created: ${dashboard.created_at}`);
205
- }
206
- });
207
-
208
- dashCmd
209
- .command("update")
210
- .description("Update a dashboard")
211
- .argument("<id>", "Dashboard ID")
212
- .option("--name <name>", "Name")
213
- .option("--description <desc>", "Description")
214
- .option("--json", "Output as JSON", false)
215
- .action((id, opts) => {
216
- const input: Record<string, unknown> = {};
217
- if (opts.name !== undefined) input.name = opts.name;
218
- if (opts.description !== undefined) input.description = opts.description;
219
-
220
- const dashboard = updateDashboard(id, input);
221
- if (!dashboard) {
222
- console.error(`Dashboard '${id}' not found.`);
223
- process.exit(1);
224
- }
225
-
226
- if (opts.json) {
227
- console.log(JSON.stringify(dashboard, null, 2));
228
- } else {
229
- console.log(`Updated: ${dashboard.name}`);
230
- }
231
- });
232
-
233
- dashCmd
234
- .command("delete")
235
- .description("Delete a dashboard")
236
- .argument("<id>", "Dashboard ID")
237
- .action((id) => {
238
- const deleted = deleteDashboard(id);
239
- if (deleted) {
240
- console.log(`Deleted dashboard ${id}`);
241
- } else {
242
- console.error(`Dashboard '${id}' not found.`);
243
- process.exit(1);
244
- }
245
- });
246
-
247
- // --- Reports ---
248
-
249
- const reportCmd = program
250
- .command("report")
251
- .description("Report management");
252
-
253
- reportCmd
254
- .command("generate")
255
- .description("Generate a report")
256
- .requiredOption("--name <name>", "Report name")
257
- .requiredOption("--type <type>", "Report type (daily|weekly|monthly|quarterly|annual|custom)")
258
- .option("--period <period>", "Period (e.g. 2024-Q1)")
259
- .option("--json", "Output as JSON", false)
260
- .action((opts) => {
261
- const report = generateReport({
262
- name: opts.name,
263
- type: opts.type,
264
- period: opts.period,
265
- });
266
-
267
- if (opts.json) {
268
- console.log(JSON.stringify(report, null, 2));
269
- } else {
270
- console.log(`Generated report: ${report.name} (${report.id})`);
271
- console.log(`Type: ${report.type}`);
272
- if (report.period) console.log(`Period: ${report.period}`);
273
- console.log(`\n${report.content}`);
274
- }
275
- });
276
-
277
- reportCmd
278
- .command("list")
279
- .description("List reports")
280
- .option("--type <type>", "Filter by type")
281
- .option("--limit <n>", "Limit results")
282
- .option("--json", "Output as JSON", false)
283
- .action((opts) => {
284
- const reports = listReports({
285
- type: opts.type,
286
- limit: opts.limit ? parseInt(opts.limit) : undefined,
287
- });
288
-
289
- if (opts.json) {
290
- console.log(JSON.stringify(reports, null, 2));
291
- } else {
292
- if (reports.length === 0) {
293
- console.log("No reports found.");
294
- return;
295
- }
296
- for (const r of reports) {
297
- const period = r.period ? ` (${r.period})` : "";
298
- console.log(` [${r.type}] ${r.name}${period} — ${r.generated_at}`);
299
- }
300
- console.log(`\n${reports.length} report(s)`);
301
- }
302
- });
303
-
304
- reportCmd
305
- .command("get")
306
- .description("Get a report")
307
- .argument("<id>", "Report ID")
308
- .option("--json", "Output as JSON", false)
309
- .action((id, opts) => {
310
- const report = getReport(id);
311
- if (!report) {
312
- console.error(`Report '${id}' not found.`);
313
- process.exit(1);
314
- }
315
-
316
- if (opts.json) {
317
- console.log(JSON.stringify(report, null, 2));
318
- } else {
319
- console.log(`${report.name} [${report.type}]`);
320
- if (report.period) console.log(`Period: ${report.period}`);
321
- console.log(`Generated: ${report.generated_at}`);
322
- console.log(`\n${report.content}`);
323
- }
324
- });
325
-
326
- // --- Health & Summary ---
327
-
328
- program
329
- .command("health")
330
- .description("Get overall business health summary")
331
- .option("--json", "Output as JSON", false)
332
- .action((opts) => {
333
- const health = getBusinessHealth();
334
-
335
- if (opts.json) {
336
- console.log(JSON.stringify(health, null, 2));
337
- } else {
338
- console.log("=== Business Health ===");
339
- console.log(` Unique KPIs: ${health.total_kpis}`);
340
- console.log(` Reports: ${health.report_count}`);
341
- console.log(` Dashboards: ${health.dashboard_count}`);
342
-
343
- if (health.categories.length > 0) {
344
- console.log("\n Categories:");
345
- for (const cat of health.categories) {
346
- console.log(` ${cat.category}: ${cat.count} KPI(s), latest value: ${cat.latest_value}`);
347
- }
348
- }
349
-
350
- if (health.latest_kpis.length > 0) {
351
- console.log("\n Latest KPIs:");
352
- for (const kpi of health.latest_kpis) {
353
- console.log(` ${kpi.name}: ${kpi.value}`);
354
- }
355
- }
356
- }
357
- });
358
-
359
- program
360
- .command("summary")
361
- .description("Generate an AI-powered executive summary")
362
- .option("--json", "Output as JSON", false)
363
- .action(async (opts) => {
364
- const summary = await generateExecutiveSummary();
365
-
366
- if (opts.json) {
367
- console.log(JSON.stringify({ summary }, null, 2));
368
- } else {
369
- console.log(summary);
370
- }
371
- });
372
-
373
- program.parse(process.argv);