vestberry-cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +186 -0
  3. package/dist/api/client.d.ts +8 -0
  4. package/dist/api/client.js +57 -0
  5. package/dist/api/client.js.map +1 -0
  6. package/dist/api/endpoints/auth.d.ts +6 -0
  7. package/dist/api/endpoints/auth.js +9 -0
  8. package/dist/api/endpoints/auth.js.map +1 -0
  9. package/dist/api/endpoints/companies.d.ts +8 -0
  10. package/dist/api/endpoints/companies.js +34 -0
  11. package/dist/api/endpoints/companies.js.map +1 -0
  12. package/dist/api/endpoints/funds.d.ts +10 -0
  13. package/dist/api/endpoints/funds.js +293 -0
  14. package/dist/api/endpoints/funds.js.map +1 -0
  15. package/dist/api/endpoints/meta.d.ts +4 -0
  16. package/dist/api/endpoints/meta.js +48 -0
  17. package/dist/api/endpoints/meta.js.map +1 -0
  18. package/dist/api/endpoints/metrics.d.ts +33 -0
  19. package/dist/api/endpoints/metrics.js +306 -0
  20. package/dist/api/endpoints/metrics.js.map +1 -0
  21. package/dist/api/endpoints/notes.d.ts +10 -0
  22. package/dist/api/endpoints/notes.js +63 -0
  23. package/dist/api/endpoints/notes.js.map +1 -0
  24. package/dist/api/endpoints/portco-dashboard.d.ts +6 -0
  25. package/dist/api/endpoints/portco-dashboard.js +123 -0
  26. package/dist/api/endpoints/portco-dashboard.js.map +1 -0
  27. package/dist/api/endpoints/raw.d.ts +3 -0
  28. package/dist/api/endpoints/raw.js +22 -0
  29. package/dist/api/endpoints/raw.js.map +1 -0
  30. package/dist/api/endpoints/reports.d.ts +5 -0
  31. package/dist/api/endpoints/reports.js +104 -0
  32. package/dist/api/endpoints/reports.js.map +1 -0
  33. package/dist/api/graphql.d.ts +7 -0
  34. package/dist/api/graphql.js +32 -0
  35. package/dist/api/graphql.js.map +1 -0
  36. package/dist/api/introspection.d.ts +2 -0
  37. package/dist/api/introspection.js +62 -0
  38. package/dist/api/introspection.js.map +1 -0
  39. package/dist/api/types.d.ts +32 -0
  40. package/dist/api/types.js +18 -0
  41. package/dist/api/types.js.map +1 -0
  42. package/dist/cli.d.ts +3 -0
  43. package/dist/cli.js +57 -0
  44. package/dist/cli.js.map +1 -0
  45. package/dist/commands/auth.d.ts +2 -0
  46. package/dist/commands/auth.js +27 -0
  47. package/dist/commands/auth.js.map +1 -0
  48. package/dist/commands/captable-event.d.ts +2 -0
  49. package/dist/commands/captable-event.js +31 -0
  50. package/dist/commands/captable-event.js.map +1 -0
  51. package/dist/commands/common.d.ts +17 -0
  52. package/dist/commands/common.js +46 -0
  53. package/dist/commands/common.js.map +1 -0
  54. package/dist/commands/fund.d.ts +2 -0
  55. package/dist/commands/fund.js +87 -0
  56. package/dist/commands/fund.js.map +1 -0
  57. package/dist/commands/intent/index.d.ts +2 -0
  58. package/dist/commands/intent/index.js +286 -0
  59. package/dist/commands/intent/index.js.map +1 -0
  60. package/dist/commands/investment.d.ts +2 -0
  61. package/dist/commands/investment.js +51 -0
  62. package/dist/commands/investment.js.map +1 -0
  63. package/dist/commands/kpi.d.ts +2 -0
  64. package/dist/commands/kpi.js +113 -0
  65. package/dist/commands/kpi.js.map +1 -0
  66. package/dist/commands/meta.d.ts +2 -0
  67. package/dist/commands/meta.js +64 -0
  68. package/dist/commands/meta.js.map +1 -0
  69. package/dist/commands/note.d.ts +2 -0
  70. package/dist/commands/note.js +113 -0
  71. package/dist/commands/note.js.map +1 -0
  72. package/dist/commands/portco.d.ts +2 -0
  73. package/dist/commands/portco.js +26 -0
  74. package/dist/commands/portco.js.map +1 -0
  75. package/dist/commands/portfolio-company.d.ts +2 -0
  76. package/dist/commands/portfolio-company.js +48 -0
  77. package/dist/commands/portfolio-company.js.map +1 -0
  78. package/dist/commands/portfolio-summary.d.ts +18 -0
  79. package/dist/commands/portfolio-summary.js +334 -0
  80. package/dist/commands/portfolio-summary.js.map +1 -0
  81. package/dist/commands/raw.d.ts +2 -0
  82. package/dist/commands/raw.js +57 -0
  83. package/dist/commands/raw.js.map +1 -0
  84. package/dist/commands/round.d.ts +2 -0
  85. package/dist/commands/round.js +68 -0
  86. package/dist/commands/round.js.map +1 -0
  87. package/dist/commands/schema.d.ts +2 -0
  88. package/dist/commands/schema.js +27 -0
  89. package/dist/commands/schema.js.map +1 -0
  90. package/dist/commands/stakeholder.d.ts +2 -0
  91. package/dist/commands/stakeholder.js +50 -0
  92. package/dist/commands/stakeholder.js.map +1 -0
  93. package/dist/formatters/csv.d.ts +1 -0
  94. package/dist/formatters/csv.js +16 -0
  95. package/dist/formatters/csv.js.map +1 -0
  96. package/dist/formatters/json.d.ts +1 -0
  97. package/dist/formatters/json.js +7 -0
  98. package/dist/formatters/json.js.map +1 -0
  99. package/dist/formatters/table.d.ts +1 -0
  100. package/dist/formatters/table.js +31 -0
  101. package/dist/formatters/table.js.map +1 -0
  102. package/dist/resolvers/company.d.ts +7 -0
  103. package/dist/resolvers/company.js +22 -0
  104. package/dist/resolvers/company.js.map +1 -0
  105. package/dist/resolvers/fund.d.ts +7 -0
  106. package/dist/resolvers/fund.js +22 -0
  107. package/dist/resolvers/fund.js.map +1 -0
  108. package/dist/resolvers/round.d.ts +8 -0
  109. package/dist/resolvers/round.js +25 -0
  110. package/dist/resolvers/round.js.map +1 -0
  111. package/dist/resolvers/search.d.ts +6 -0
  112. package/dist/resolvers/search.js +57 -0
  113. package/dist/resolvers/search.js.map +1 -0
  114. package/dist/resolvers/stakeholder.d.ts +7 -0
  115. package/dist/resolvers/stakeholder.js +22 -0
  116. package/dist/resolvers/stakeholder.js.map +1 -0
  117. package/dist/utils/cache.d.ts +7 -0
  118. package/dist/utils/cache.js +18 -0
  119. package/dist/utils/cache.js.map +1 -0
  120. package/dist/utils/config.d.ts +16 -0
  121. package/dist/utils/config.js +25 -0
  122. package/dist/utils/config.js.map +1 -0
  123. package/dist/utils/errors.d.ts +12 -0
  124. package/dist/utils/errors.js +24 -0
  125. package/dist/utils/errors.js.map +1 -0
  126. package/dist/utils/flatten.d.ts +3 -0
  127. package/dist/utils/flatten.js +77 -0
  128. package/dist/utils/flatten.js.map +1 -0
  129. package/dist/utils/json-export.d.ts +10 -0
  130. package/dist/utils/json-export.js +53 -0
  131. package/dist/utils/json-export.js.map +1 -0
  132. package/dist/utils/output.d.ts +4 -0
  133. package/dist/utils/output.js +63 -0
  134. package/dist/utils/output.js.map +1 -0
  135. package/dist/utils/pagination.d.ts +12 -0
  136. package/dist/utils/pagination.js +46 -0
  137. package/dist/utils/pagination.js.map +1 -0
  138. package/dist/utils/parse-json.d.ts +2 -0
  139. package/dist/utils/parse-json.js +34 -0
  140. package/dist/utils/parse-json.js.map +1 -0
  141. package/dist/utils/portfolio-overview.d.ts +25 -0
  142. package/dist/utils/portfolio-overview.js +115 -0
  143. package/dist/utils/portfolio-overview.js.map +1 -0
  144. package/dist/utils/run-log.d.ts +1 -0
  145. package/dist/utils/run-log.js +17 -0
  146. package/dist/utils/run-log.js.map +1 -0
  147. package/package.json +70 -0
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerIntentCommands = registerIntentCommands;
4
+ const metrics_1 = require("../../api/endpoints/metrics");
5
+ const companies_1 = require("../../api/endpoints/companies");
6
+ const reports_1 = require("../../api/endpoints/reports");
7
+ const metrics_2 = require("../../api/endpoints/metrics");
8
+ const fund_1 = require("../../resolvers/fund");
9
+ const company_1 = require("../../resolvers/company");
10
+ const funds_1 = require("../../api/endpoints/funds");
11
+ const pagination_1 = require("../../utils/pagination");
12
+ const output_1 = require("../../utils/output");
13
+ const common_1 = require("../common");
14
+ const parse_json_1 = require("../../utils/parse-json");
15
+ const json_export_1 = require("../../utils/json-export");
16
+ const portfolio_overview_1 = require("../../utils/portfolio-overview");
17
+ function ensureDependencies(deps) {
18
+ for (const [name, value] of Object.entries(deps)) {
19
+ if (typeof value !== 'function') {
20
+ throw new Error(`Dependency missing: ${name}`);
21
+ }
22
+ }
23
+ }
24
+ function lastQuarterRange(now = new Date()) {
25
+ const quarter = Math.floor(now.getUTCMonth() / 3);
26
+ const lastQuarter = (quarter + 3) % 4;
27
+ const year = quarter === 0 ? now.getUTCFullYear() - 1 : now.getUTCFullYear();
28
+ const startMonth = lastQuarter * 3;
29
+ const start = new Date(Date.UTC(year, startMonth, 1));
30
+ const end = new Date(Date.UTC(year, startMonth + 3, 0));
31
+ return {
32
+ start: start.toISOString().slice(0, 10),
33
+ end: end.toISOString().slice(0, 10),
34
+ };
35
+ }
36
+ function resolveCutOffDate(input) {
37
+ if (!input) {
38
+ return new Date().toISOString().slice(0, 10);
39
+ }
40
+ if (!/^\d{4}-\d{2}-\d{2}$/.test(input)) {
41
+ throw new Error('Invalid --cut-off-date format. Expected YYYY-MM-DD.');
42
+ }
43
+ const parsed = new Date(`${input}T00:00:00.000Z`);
44
+ if (Number.isNaN(parsed.getTime())) {
45
+ throw new Error('Invalid --cut-off-date value. Expected a valid calendar date.');
46
+ }
47
+ const normalized = parsed.toISOString().slice(0, 10);
48
+ if (normalized !== input) {
49
+ throw new Error('Invalid --cut-off-date value. Expected a valid calendar date.');
50
+ }
51
+ return input;
52
+ }
53
+ function registerIntentCommands(program) {
54
+ const portfolio = program.command('portfolio').description('Portfolio intent commands');
55
+ portfolio
56
+ .command('overview')
57
+ .requiredOption('--fund-id <id>', 'Fund ID')
58
+ .option('--cut-off-date <date>', 'Cut-off date YYYY-MM-DD (default: today UTC)')
59
+ .option('--export-json [path]', 'Export overview payload to JSON file')
60
+ .description('Compose fund management + portfolio summary metrics')
61
+ .addHelpText('after', `
62
+ Examples:
63
+ $ vestberry portfolio overview --fund-id abc123
64
+ $ vestberry portfolio overview --fund-id abc123 --cut-off-date 2025-12-31
65
+ $ vestberry portfolio overview --fund-id abc123 --format table
66
+ $ vestberry portfolio overview --fund-id abc123 --export-json`)
67
+ .action(async function action(options) {
68
+ try {
69
+ ensureDependencies({ getFundManagement: metrics_1.getFundManagement, listPortfolioSummary: metrics_1.listPortfolioSummary, getFund: funds_1.getFund });
70
+ const { client, config } = (0, common_1.getCommandContext)(this);
71
+ const cutOffDate = resolveCutOffDate(options.cutOffDate);
72
+ const [fundManagement, summary, fund] = await Promise.all([
73
+ (0, metrics_1.getFundManagement)(client, options.fundId, cutOffDate, config.verbose),
74
+ (0, metrics_1.listPortfolioSummary)(client, { fundId: options.fundId, until: cutOffDate, detailed: true }, config.verbose),
75
+ (0, funds_1.getFund)(client, options.fundId, config.verbose),
76
+ ]);
77
+ const payload = (0, portfolio_overview_1.buildPortfolioOverviewPayload)({
78
+ fundId: options.fundId,
79
+ fundName: fund.displayName,
80
+ cutOffDate,
81
+ fundManagement,
82
+ summary,
83
+ });
84
+ if (options.exportJson) {
85
+ const defaultPath = (0, json_export_1.buildDefaultJsonExportPath)({
86
+ type: 'portfolio-overview',
87
+ idLabel: 'fund-id',
88
+ id: options.fundId,
89
+ });
90
+ const requestedPath = typeof options.exportJson === 'string' ? options.exportJson : undefined;
91
+ const filePath = await (0, json_export_1.resolveJsonExportPath)(requestedPath, defaultPath);
92
+ await (0, json_export_1.writeJsonExportFile)(filePath, payload);
93
+ process.stdout.write(`Saved portfolio overview JSON to ${filePath}\n`);
94
+ return;
95
+ }
96
+ (0, output_1.printData)(payload, config);
97
+ }
98
+ catch (error) {
99
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
100
+ }
101
+ });
102
+ portfolio
103
+ .command('companies')
104
+ .requiredOption('--fund-id <id>', 'Fund ID')
105
+ .description('List portfolio companies for fund')
106
+ .addHelpText('after', `
107
+ Examples:
108
+ $ vestberry portfolio companies --fund-id abc123
109
+ $ vestberry portfolio companies --fund-id abc123 --format table`)
110
+ .action(async function action(options) {
111
+ try {
112
+ ensureDependencies({ listPortfolioCompanies: companies_1.listPortfolioCompanies });
113
+ const { client, config } = (0, common_1.getCommandContext)(this);
114
+ const companies = await (0, companies_1.listPortfolioCompanies)(client, options.fundId, config.verbose);
115
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(companies), config);
116
+ }
117
+ catch (error) {
118
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
119
+ }
120
+ });
121
+ program
122
+ .command('company')
123
+ .description('Company intent commands')
124
+ .command('dossier')
125
+ .requiredOption('--company-id <id>', 'Portfolio company ID')
126
+ .option('--fund-id <id>', 'Fund ID (optional if unique from investments)')
127
+ .option('--full', 'Include full fan-out details', false)
128
+ .description('Compose company profile with summary, rounds, cap table and stakeholders')
129
+ .addHelpText('after', `
130
+ Examples:
131
+ $ vestberry company dossier --company-id xyz789 --fund-id abc123
132
+ $ vestberry company dossier --company-id xyz789 --full
133
+ $ vestberry company dossier --company-id xyz789 --fund-id abc123 --full --format json`)
134
+ .action(async function action(options) {
135
+ try {
136
+ ensureDependencies({
137
+ listPortfolioSummary: metrics_1.listPortfolioSummary,
138
+ listRounds: reports_1.listRounds,
139
+ listCaptableEvents: reports_1.listCaptableEvents,
140
+ listStakeholders: reports_1.listStakeholders,
141
+ });
142
+ const { client, config } = (0, common_1.getCommandContext)(this);
143
+ let fundId = options.fundId;
144
+ if (!fundId) {
145
+ const investments = await (0, metrics_2.listInvestments)(client, config.verbose);
146
+ const matches = investments.filter((row) => row.portfolioCompany?.id === options.companyId &&
147
+ Boolean(row.fund?.id));
148
+ const uniqueFundIds = [
149
+ ...new Set(matches.map((row) => row.fund?.id)),
150
+ ].filter((id) => Boolean(id));
151
+ if (uniqueFundIds.length !== 1) {
152
+ throw new Error('Unable to infer unique fund for company. Pass --fund-id explicitly.');
153
+ }
154
+ [fundId] = uniqueFundIds;
155
+ }
156
+ const resolvedFundId = fundId;
157
+ const until = new Date().toISOString().slice(0, 10);
158
+ const [summary, rounds, captable, stakeholders] = await Promise.all([
159
+ (0, metrics_1.listPortfolioSummary)(client, { fundId: resolvedFundId, companyId: options.companyId, until, detailed: true }, config.verbose),
160
+ (0, reports_1.listRounds)(client, options.companyId, until, config.verbose),
161
+ (0, reports_1.listCaptableEvents)(client, options.companyId, config.verbose),
162
+ (0, reports_1.listStakeholders)(client, options.companyId, config.verbose),
163
+ ]);
164
+ let roundDetails = [];
165
+ if (options.full) {
166
+ roundDetails = await Promise.all(rounds
167
+ .map((r) => String(r.id ?? ''))
168
+ .filter((id) => id.length > 0)
169
+ .map((id) => (0, reports_1.getRoundDetail)(client, id, config.verbose)));
170
+ }
171
+ (0, output_1.printData)({
172
+ fundId: resolvedFundId,
173
+ companyId: options.companyId,
174
+ until,
175
+ summary,
176
+ rounds,
177
+ captable,
178
+ stakeholders,
179
+ roundDetails,
180
+ }, config);
181
+ }
182
+ catch (error) {
183
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
184
+ }
185
+ });
186
+ const rounds = program.command('rounds').description('Rounds intent commands');
187
+ rounds
188
+ .command('last-quarter')
189
+ .requiredOption('--fund-id <id>', 'Fund ID')
190
+ .description('List financing rounds in last quarter for fund companies')
191
+ .addHelpText('after', `
192
+ Examples:
193
+ $ vestberry rounds last-quarter --fund-id abc123
194
+ $ vestberry rounds last-quarter --fund-id abc123 --format table`)
195
+ .action(async function action(options) {
196
+ try {
197
+ ensureDependencies({ listPortfolioCompanies: companies_1.listPortfolioCompanies, listRounds: reports_1.listRounds });
198
+ const { client, config } = (0, common_1.getCommandContext)(this);
199
+ const window = lastQuarterRange();
200
+ const companies = await (0, companies_1.listPortfolioCompanies)(client, options.fundId, config.verbose);
201
+ const roundsByCompany = await Promise.all(companies.map(async (company) => ({
202
+ company,
203
+ rounds: await (0, reports_1.listRounds)(client, company.id, window.end, config.verbose),
204
+ })));
205
+ const results = roundsByCompany.flatMap(({ company, rounds: companyRounds }) => companyRounds
206
+ .filter((round) => {
207
+ const date = String(round.eventDate ?? '');
208
+ return date >= window.start && date <= window.end;
209
+ })
210
+ .map((round) => ({
211
+ companyId: company.id,
212
+ companyName: company.displayName,
213
+ ...round,
214
+ })));
215
+ (0, output_1.printData)({ window, count: results.length, rounds: results }, config);
216
+ }
217
+ catch (error) {
218
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
219
+ }
220
+ });
221
+ const invested = program.command('invested').description('Investment intent commands');
222
+ invested
223
+ .command('total')
224
+ .requiredOption('--company <name>', 'Company name')
225
+ .requiredOption('--fund <name>', 'Fund name')
226
+ .option('--select-first', 'Select top search match when ambiguous', false)
227
+ .description('Compute total invested amount in company')
228
+ .addHelpText('after', `
229
+ Examples:
230
+ $ vestberry invested total --company "Tech Corp" --fund "Growth Fund"
231
+ $ vestberry invested total --company "AI Startup" --fund "Seed Fund" --select-first
232
+ $ vestberry invested total --company "Company" --fund "Fund" --format json`)
233
+ .action(async function action(options) {
234
+ try {
235
+ ensureDependencies({ resolveFundId: fund_1.resolveFundId, resolveCompanyId: company_1.resolveCompanyId, listPortfolioSummary: metrics_1.listPortfolioSummary });
236
+ const { client, config } = (0, common_1.getCommandContext)(this);
237
+ const fundId = await (0, fund_1.resolveFundId)(client, options.fund, Boolean(options.selectFirst), config.verbose);
238
+ const companyId = await (0, company_1.resolveCompanyId)(client, fundId, options.company, Boolean(options.selectFirst), config.verbose);
239
+ const until = new Date().toISOString().slice(0, 10);
240
+ const summary = await (0, metrics_1.listPortfolioSummary)(client, { fundId, companyId, until, detailed: true }, config.verbose);
241
+ const primary = summary.find((row) => row.portfolioCompany?.id === companyId) ?? summary[0];
242
+ (0, output_1.printData)({
243
+ fundId,
244
+ companyId,
245
+ until,
246
+ totalOriginalCost: primary?.dashboardDetails?.['totalOriginalCost'] ?? null,
247
+ investedEquity: primary?.dashboardDetails?.['investedEquity'] ?? null,
248
+ investedDebt: primary?.dashboardDetails?.['investedDebt'] ?? null,
249
+ investedFunds: primary?.dashboardDetails?.['investedFunds'] ?? null,
250
+ source: primary,
251
+ }, config);
252
+ }
253
+ catch (error) {
254
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
255
+ }
256
+ });
257
+ const ingest = program.command('ingest').description('Ingestion intent commands');
258
+ ingest
259
+ .command('legal-docs')
260
+ .requiredOption('--file <path|@file>', 'Path to legal docs text/summary')
261
+ .option('--apply', 'Execute writes (not implemented yet)', false)
262
+ .description('Build staged dry-run ingestion plan for legal docs')
263
+ .addHelpText('after', `
264
+ Examples:
265
+ $ vestberry ingest legal-docs --file @legal-summary.txt
266
+ $ vestberry ingest legal-docs --file @docs.json`)
267
+ .action(async function action(options) {
268
+ try {
269
+ const { config } = (0, common_1.getCommandContext)(this);
270
+ const content = await (0, parse_json_1.parseTextInput)(options.file.startsWith('@') ? options.file : `@${options.file}`);
271
+ if (options.apply) {
272
+ throw new Error('Write execution for legal-docs is not implemented yet. Use dry-run planning only.');
273
+ }
274
+ (0, output_1.printData)({
275
+ dryRun: true,
276
+ stages: ['extract', 'validate', 'diff', 'apply', 'verify'],
277
+ extractedPreview: content.slice(0, 1000),
278
+ note: 'This command currently generates a plan only. Apply phase is deferred.',
279
+ }, config);
280
+ }
281
+ catch (error) {
282
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
283
+ }
284
+ });
285
+ }
286
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/intent/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerInvestmentCommand(program: Command): void;
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerInvestmentCommand = registerInvestmentCommand;
4
+ const metrics_1 = require("../api/endpoints/metrics");
5
+ const search_1 = require("../resolvers/search");
6
+ const pagination_1 = require("../utils/pagination");
7
+ const output_1 = require("../utils/output");
8
+ const common_1 = require("./common");
9
+ function registerInvestmentCommand(program) {
10
+ const cmd = program.command('investment').description('Investment commands');
11
+ cmd
12
+ .command('list')
13
+ .description('List investments')
14
+ .addHelpText('after', `
15
+ Examples:
16
+ $ vestberry investment list
17
+ $ vestberry investment list --format table`)
18
+ .action(async function action() {
19
+ try {
20
+ const { client, config } = (0, common_1.getCommandContext)(this);
21
+ const rows = await (0, metrics_1.listInvestments)(client, config.verbose);
22
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(rows), config);
23
+ }
24
+ catch (error) {
25
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
26
+ }
27
+ });
28
+ cmd
29
+ .command('search')
30
+ .requiredOption('--query <text>', 'Search query')
31
+ .description('Search investments by company or fund name')
32
+ .addHelpText('after', `
33
+ Examples:
34
+ $ vestberry investment search --query "Tech Corp"
35
+ $ vestberry investment search --query "Growth Fund" --format table`)
36
+ .action(async function action(options) {
37
+ try {
38
+ const { client, config } = (0, common_1.getCommandContext)(this);
39
+ const rows = await (0, metrics_1.listInvestments)(client, config.verbose);
40
+ const ranked = (0, search_1.rankByQuery)(options.query, rows, (item) => String(item.portfolioCompany?.displayName ??
41
+ item.portfolioFund?.displayName ??
42
+ ''));
43
+ const result = ranked.map((entry) => ({ score: entry.score, ...entry.item }));
44
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(result), config);
45
+ }
46
+ catch (error) {
47
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
48
+ }
49
+ });
50
+ }
51
+ //# sourceMappingURL=investment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"investment.js","sourceRoot":"","sources":["../../src/commands/investment.ts"],"names":[],"mappings":";;AAOA,8DAoDC;AA1DD,sDAA2D;AAC3D,gDAAkD;AAClD,oDAAyD;AACzD,4CAAoD;AACpD,qCAA6D;AAE7D,SAAgB,yBAAyB,CAAC,OAAgB;IACxD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAE7E,GAAG;SACA,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,kBAAkB,CAAC;SAC/B,WAAW,CACV,OAAO,EACP;;;6CAGuC,CACxC;SACA,MAAM,CAAC,KAAK,UAAU,MAAM;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,0BAAiB,EAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAe,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAA,0BAAiB,EAAC,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,OAAO,CAAE,IAAI,CAAC,eAAe,EAA4B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,cAAc,CAAC,gBAAgB,EAAE,cAAc,CAAC;SAChD,WAAW,CAAC,4CAA4C,CAAC;SACzD,WAAW,CACV,OAAO,EACP;;;qEAG+D,CAChE;SACA,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA0B;QACtD,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,0BAAiB,EAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAA,yBAAe,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CACvD,MAAM,CACH,IAAI,CAAC,gBAAoD,EAAE,WAAW;gBACpE,IAAI,CAAC,aAAiD,EAAE,WAAW;gBACpE,EAAE,CACL,CACF,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAA,0BAAiB,EAAC,IAAA,+BAAkB,EAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,OAAO,CAAE,IAAI,CAAC,eAAe,EAA4B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerKpiCommand(program: Command): void;
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerKpiCommand = registerKpiCommand;
4
+ const metrics_1 = require("../api/endpoints/metrics");
5
+ const pagination_1 = require("../utils/pagination");
6
+ const output_1 = require("../utils/output");
7
+ const common_1 = require("./common");
8
+ function registerKpiCommand(program) {
9
+ const cmd = program.command('kpi').description('KPI and report commands');
10
+ cmd
11
+ .command('overview')
12
+ .requiredOption('--fund-id <id>', 'Fund ID')
13
+ .description('Get KPI overview for fund')
14
+ .addHelpText('after', `
15
+ Examples:
16
+ $ vestberry kpi overview --fund-id abc123
17
+ $ vestberry kpi overview --fund-id abc123 --format table`)
18
+ .action(async function action(options) {
19
+ try {
20
+ const { client, config } = (0, common_1.getCommandContext)(this);
21
+ const rows = await (0, metrics_1.getKpiOverview)(client, options.fundId, config.verbose);
22
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(rows), config);
23
+ }
24
+ catch (error) {
25
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
26
+ }
27
+ });
28
+ cmd
29
+ .command('definitions')
30
+ .requiredOption('--company-id <id>', 'Portfolio company ID')
31
+ .description('Get KPI definitions for company')
32
+ .addHelpText('after', `
33
+ Examples:
34
+ $ vestberry kpi definitions --company-id xyz789
35
+ $ vestberry kpi definitions --company-id xyz789 --format table`)
36
+ .action(async function action(options) {
37
+ try {
38
+ const { client, config } = (0, common_1.getCommandContext)(this);
39
+ const rows = await (0, metrics_1.getKpiDefinitions)(client, options.companyId, config.verbose);
40
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(rows), config);
41
+ }
42
+ catch (error) {
43
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
44
+ }
45
+ });
46
+ cmd
47
+ .command('reports')
48
+ .requiredOption('--company-id <id>', 'Portfolio company ID')
49
+ .option('--limit <n>', 'Limit', '20')
50
+ .option('--offset <n>', 'Offset', '0')
51
+ .option('--all', 'Auto-page all rows', false)
52
+ .description('List KPI reports for company')
53
+ .addHelpText('after', `
54
+ Examples:
55
+ $ vestberry kpi reports --company-id xyz789
56
+ $ vestberry kpi reports --company-id xyz789 --limit 50
57
+ $ vestberry kpi reports --company-id xyz789 --all
58
+ $ vestberry kpi reports --company-id xyz789 --offset 20 --limit 10`)
59
+ .action(async function action(options) {
60
+ try {
61
+ const { client, config } = (0, common_1.getCommandContext)(this);
62
+ const limit = Number(options.limit);
63
+ const offset = Number(options.offset);
64
+ if (options.all) {
65
+ const envelope = await (0, pagination_1.collectAllOffset)(async (pageOffset) => {
66
+ const pageRows = await (0, metrics_1.getKpiReports)(client, options.companyId, limit, pageOffset, config.verbose);
67
+ return (0, pagination_1.createListEnvelope)(pageRows, {
68
+ mode: 'offset',
69
+ limit,
70
+ offset: pageOffset,
71
+ count: pageRows.length,
72
+ hasNextPage: pageRows.length >= limit,
73
+ });
74
+ }, limit);
75
+ (0, output_1.printListEnvelope)(envelope, config);
76
+ return;
77
+ }
78
+ const rows = await (0, metrics_1.getKpiReports)(client, options.companyId, limit, offset, config.verbose);
79
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(rows, {
80
+ mode: 'offset',
81
+ limit,
82
+ offset,
83
+ count: rows.length,
84
+ hasNextPage: rows.length >= limit,
85
+ }), config);
86
+ }
87
+ catch (error) {
88
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
89
+ }
90
+ });
91
+ cmd
92
+ .command('values')
93
+ .requiredOption('--company-id <id>', 'Portfolio company ID')
94
+ .option('--include-empty', 'Include empty KPIs', false)
95
+ .option('--include-draft', 'Include draft values', false)
96
+ .description('List KPI values for company')
97
+ .addHelpText('after', `
98
+ Examples:
99
+ $ vestberry kpi values --company-id xyz789
100
+ $ vestberry kpi values --company-id xyz789 --include-empty
101
+ $ vestberry kpi values --company-id xyz789 --include-draft --format table`)
102
+ .action(async function action(options) {
103
+ try {
104
+ const { client, config } = (0, common_1.getCommandContext)(this);
105
+ const rows = await (0, metrics_1.getKpiValues)(client, options.companyId, Boolean(options.includeEmpty), Boolean(options.includeDraft), config.verbose);
106
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(rows), config);
107
+ }
108
+ catch (error) {
109
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
110
+ }
111
+ });
112
+ }
113
+ //# sourceMappingURL=kpi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kpi.js","sourceRoot":"","sources":["../../src/commands/kpi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerMetaCommand(program: Command): void;
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.registerMetaCommand = registerMetaCommand;
4
+ const meta_1 = require("../api/endpoints/meta");
5
+ const pagination_1 = require("../utils/pagination");
6
+ const output_1 = require("../utils/output");
7
+ const common_1 = require("./common");
8
+ function registerMetaCommand(program) {
9
+ const cmd = program.command('meta').description('Metadata commands');
10
+ cmd
11
+ .command('countries')
12
+ .description('List countries')
13
+ .addHelpText('after', `
14
+ Examples:
15
+ $ vestberry meta countries
16
+ $ vestberry meta countries --format table`)
17
+ .action(async function action() {
18
+ try {
19
+ const { client, config } = (0, common_1.getCommandContext)(this);
20
+ const rows = await (0, meta_1.listCountries)(client, config.verbose);
21
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(rows), config);
22
+ }
23
+ catch (error) {
24
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
25
+ }
26
+ });
27
+ cmd
28
+ .command('currencies')
29
+ .description('List currencies')
30
+ .addHelpText('after', `
31
+ Examples:
32
+ $ vestberry meta currencies
33
+ $ vestberry meta currencies --format table`)
34
+ .action(async function action() {
35
+ try {
36
+ const { client, config } = (0, common_1.getCommandContext)(this);
37
+ const rows = await (0, meta_1.listCurrencies)(client, config.verbose);
38
+ (0, output_1.printListEnvelope)((0, pagination_1.createListEnvelope)(rows), config);
39
+ }
40
+ catch (error) {
41
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
42
+ }
43
+ });
44
+ cmd
45
+ .command('fx-rates')
46
+ .requiredOption('--fund-id <id>', 'Fund ID')
47
+ .option('--limit <n>', 'Limit', '20')
48
+ .description('Get FX rates summary for fund')
49
+ .addHelpText('after', `
50
+ Examples:
51
+ $ vestberry meta fx-rates --fund-id abc123
52
+ $ vestberry meta fx-rates --fund-id abc123 --limit 50`)
53
+ .action(async function action(options) {
54
+ try {
55
+ const { client, config } = (0, common_1.getCommandContext)(this);
56
+ const row = await (0, meta_1.getFxRates)(client, options.fundId, Number(options.limit), config.verbose);
57
+ (0, output_1.printData)(row, config);
58
+ }
59
+ catch (error) {
60
+ (0, common_1.handleCliError)(error, Boolean(this.optsWithGlobals().verbose));
61
+ }
62
+ });
63
+ }
64
+ //# sourceMappingURL=meta.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta.js","sourceRoot":"","sources":["../../src/commands/meta.ts"],"names":[],"mappings":";;AAMA,kDAgEC;AArED,gDAAkF;AAClF,oDAAyD;AACzD,4CAA+D;AAC/D,qCAA6D;AAE7D,SAAgB,mBAAmB,CAAC,OAAgB;IAClD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;IAErE,GAAG;SACA,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,gBAAgB,CAAC;SAC7B,WAAW,CACV,OAAO,EACP;;;4CAGsC,CACvC;SACA,MAAM,CAAC,KAAK,UAAU,MAAM;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,0BAAiB,EAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAA,oBAAa,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACzD,IAAA,0BAAiB,EAAC,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,OAAO,CAAE,IAAI,CAAC,eAAe,EAA4B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,iBAAiB,CAAC;SAC9B,WAAW,CACV,OAAO,EACP;;;6CAGuC,CACxC;SACA,MAAM,CAAC,KAAK,UAAU,MAAM;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,0BAAiB,EAAC,IAAI,CAAC,CAAC;YACnD,MAAM,IAAI,GAAG,MAAM,IAAA,qBAAc,EAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC1D,IAAA,0BAAiB,EAAC,IAAA,+BAAkB,EAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,OAAO,CAAE,IAAI,CAAC,eAAe,EAA4B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,GAAG;SACA,OAAO,CAAC,UAAU,CAAC;SACnB,cAAc,CAAC,gBAAgB,EAAE,SAAS,CAAC;SAC3C,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC;SACpC,WAAW,CAAC,+BAA+B,CAAC;SAC5C,WAAW,CACV,OAAO,EACP;;;wDAGkD,CACnD;SACA,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAA0C;QACtE,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,0BAAiB,EAAC,IAAI,CAAC,CAAC;YACnD,MAAM,GAAG,GAAG,MAAM,IAAA,iBAAU,EAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5F,IAAA,kBAAS,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,uBAAc,EAAC,KAAK,EAAE,OAAO,CAAE,IAAI,CAAC,eAAe,EAA4B,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from 'commander';
2
+ export declare function registerNoteCommand(program: Command): void;