@opencapstack/mcp-server 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.
- package/README.md +166 -0
- package/dist/auth.d.ts +7 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +16 -0
- package/dist/auth.js.map +1 -0
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +30 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +59 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +73 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/dilution.d.ts +3 -0
- package/dist/tools/dilution.d.ts.map +1 -0
- package/dist/tools/dilution.js +51 -0
- package/dist/tools/dilution.js.map +1 -0
- package/dist/tools/documents.d.ts +3 -0
- package/dist/tools/documents.d.ts.map +1 -0
- package/dist/tools/documents.js +72 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/equityPlans.d.ts +3 -0
- package/dist/tools/equityPlans.d.ts.map +1 -0
- package/dist/tools/equityPlans.js +65 -0
- package/dist/tools/equityPlans.js.map +1 -0
- package/dist/tools/financialReports.d.ts +3 -0
- package/dist/tools/financialReports.d.ts.map +1 -0
- package/dist/tools/financialReports.js +79 -0
- package/dist/tools/financialReports.js.map +1 -0
- package/dist/tools/safes.d.ts +3 -0
- package/dist/tools/safes.d.ts.map +1 -0
- package/dist/tools/safes.js +102 -0
- package/dist/tools/safes.js.map +1 -0
- package/dist/tools/shareClasses.d.ts +3 -0
- package/dist/tools/shareClasses.d.ts.map +1 -0
- package/dist/tools/shareClasses.js +63 -0
- package/dist/tools/shareClasses.js.map +1 -0
- package/dist/tools/stakeholders.d.ts +3 -0
- package/dist/tools/stakeholders.d.ts.map +1 -0
- package/dist/tools/stakeholders.js +72 -0
- package/dist/tools/stakeholders.js.map +1 -0
- package/dist/tools/valuations.d.ts +3 -0
- package/dist/tools/valuations.d.ts.map +1 -0
- package/dist/tools/valuations.js +67 -0
- package/dist/tools/valuations.js.map +1 -0
- package/dist/tools/waterfall.d.ts +3 -0
- package/dist/tools/waterfall.d.ts.map +1 -0
- package/dist/tools/waterfall.js +46 -0
- package/dist/tools/waterfall.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +57 -0
- package/src/auth.ts +19 -0
- package/src/client.ts +46 -0
- package/src/index.ts +70 -0
- package/src/server.ts +93 -0
- package/src/tools/dilution.ts +54 -0
- package/src/tools/documents.ts +74 -0
- package/src/tools/equityPlans.ts +67 -0
- package/src/tools/financialReports.ts +82 -0
- package/src/tools/safes.ts +104 -0
- package/src/tools/shareClasses.ts +65 -0
- package/src/tools/stakeholders.ts +74 -0
- package/src/tools/valuations.ts +73 -0
- package/src/tools/waterfall.ts +48 -0
- package/src/types.ts +16 -0
- package/tests/auth.test.ts +54 -0
- package/tests/server.test.ts +95 -0
- package/tests/tools/shareClasses.test.ts +133 -0
- package/tests/tools/stakeholders.test.ts +147 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"equityPlans.js","sourceRoot":"","sources":["../../src/tools/equityPlans.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"financialReports.d.ts","sourceRoot":"","sources":["../../src/tools/financialReports.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,oBAAoB,EAAE,cAAc,EA8EhD,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const financialReportTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'list_financial_reports',
|
|
5
|
+
description: 'List all financial reports (equity summaries, cap table snapshots, tax reports, etc.).',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
companyId: z.string().optional().describe('Filter by company ID'),
|
|
8
|
+
reportType: z
|
|
9
|
+
.enum([
|
|
10
|
+
'cap_table_summary',
|
|
11
|
+
'equity_summary',
|
|
12
|
+
'tax_report',
|
|
13
|
+
'409A_report',
|
|
14
|
+
'custom',
|
|
15
|
+
])
|
|
16
|
+
.optional()
|
|
17
|
+
.describe('Filter by report type'),
|
|
18
|
+
limit: z.number().optional().default(20).describe('Max results to return'),
|
|
19
|
+
}),
|
|
20
|
+
handler: async (input, client) => {
|
|
21
|
+
const { data } = await client.get('/api/v1/financial-reports', { params: input });
|
|
22
|
+
const reports = data.reports ?? data;
|
|
23
|
+
return {
|
|
24
|
+
content: [{ type: 'text', text: JSON.stringify(reports, null, 2) }],
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: 'get_financial_report',
|
|
30
|
+
description: 'Get the full contents of a specific financial report by ID.',
|
|
31
|
+
inputSchema: z.object({
|
|
32
|
+
id: z.string().describe('Financial report ID'),
|
|
33
|
+
}),
|
|
34
|
+
handler: async (input, client) => {
|
|
35
|
+
const { data } = await client.get(`/api/v1/financial-reports/${input.id}`);
|
|
36
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'create_financial_report',
|
|
41
|
+
description: 'Generate a new financial report or cap table snapshot for the company.',
|
|
42
|
+
inputSchema: z.object({
|
|
43
|
+
companyId: z.string().describe('Company ID'),
|
|
44
|
+
reportType: z
|
|
45
|
+
.enum([
|
|
46
|
+
'cap_table_summary',
|
|
47
|
+
'equity_summary',
|
|
48
|
+
'tax_report',
|
|
49
|
+
'409A_report',
|
|
50
|
+
'custom',
|
|
51
|
+
])
|
|
52
|
+
.describe('Type of report to generate'),
|
|
53
|
+
asOfDate: z
|
|
54
|
+
.string()
|
|
55
|
+
.optional()
|
|
56
|
+
.describe('Generate the report as of this date (ISO 8601 YYYY-MM-DD). Defaults to today.'),
|
|
57
|
+
includeConvertibles: z
|
|
58
|
+
.boolean()
|
|
59
|
+
.optional()
|
|
60
|
+
.default(true)
|
|
61
|
+
.describe('Include convertible instruments (SAFEs, notes) in the report'),
|
|
62
|
+
includeOptionPool: z
|
|
63
|
+
.boolean()
|
|
64
|
+
.optional()
|
|
65
|
+
.default(true)
|
|
66
|
+
.describe('Include option pool (granted and unissued) in the report'),
|
|
67
|
+
title: z.string().optional().describe('Custom report title'),
|
|
68
|
+
}),
|
|
69
|
+
handler: async (input, client) => {
|
|
70
|
+
const { data } = await client.post('/api/v1/financial-reports', input);
|
|
71
|
+
return {
|
|
72
|
+
content: [
|
|
73
|
+
{ type: 'text', text: `Financial report created: ${JSON.stringify(data, null, 2)}` },
|
|
74
|
+
],
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
];
|
|
79
|
+
//# sourceMappingURL=financialReports.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"financialReports.js","sourceRoot":"","sources":["../../src/tools/financialReports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,oBAAoB,GAAqB;IACpD;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,wFAAwF;QAC1F,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC;gBACJ,mBAAmB;gBACnB,gBAAgB;gBAChB,YAAY;gBACZ,aAAa;gBACb,QAAQ;aACT,CAAC;iBACD,QAAQ,EAAE;iBACV,QAAQ,CAAC,uBAAuB,CAAC;YACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAC3E,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,2BAA2B,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAClF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACpE,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAC/C,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,6BAA6B,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3E,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;KACF;IACD;QACE,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EACT,wEAAwE;QAC1E,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC;gBACJ,mBAAmB;gBACnB,gBAAgB;gBAChB,YAAY;gBACZ,aAAa;gBACb,QAAQ;aACT,CAAC;iBACD,QAAQ,CAAC,4BAA4B,CAAC;YACzC,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+EAA+E,CAAC;YAC5F,mBAAmB,EAAE,CAAC;iBACnB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,8DAA8D,CAAC;YAC3E,iBAAiB,EAAE,CAAC;iBACjB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,IAAI,CAAC;iBACb,QAAQ,CAAC,0DAA0D,CAAC;YACvE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,qBAAqB,CAAC;SAC7D,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,6BAA6B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;iBACrF;aACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safes.d.ts","sourceRoot":"","sources":["../../src/tools/safes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,SAAS,EAAE,cAAc,EAoGrC,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const safeTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'list_safes',
|
|
5
|
+
description: 'List all SAFE (Simple Agreement for Future Equity) instruments in the cap table.',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
companyId: z.string().optional().describe('Filter by company ID'),
|
|
8
|
+
investorId: z.string().optional().describe('Filter by investor stakeholder ID'),
|
|
9
|
+
limit: z.number().optional().default(50).describe('Max results to return'),
|
|
10
|
+
}),
|
|
11
|
+
handler: async (input, client) => {
|
|
12
|
+
const { data } = await client.get('/api/v1/safes', { params: input });
|
|
13
|
+
const safes = data.safes ?? data;
|
|
14
|
+
return {
|
|
15
|
+
content: [{ type: 'text', text: JSON.stringify(safes, null, 2) }],
|
|
16
|
+
};
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'get_safe',
|
|
21
|
+
description: 'Get details for a specific SAFE instrument by ID.',
|
|
22
|
+
inputSchema: z.object({
|
|
23
|
+
id: z.string().describe('SAFE ID'),
|
|
24
|
+
}),
|
|
25
|
+
handler: async (input, client) => {
|
|
26
|
+
const { data } = await client.get(`/api/v1/safes/${input.id}`);
|
|
27
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'create_safe',
|
|
32
|
+
description: 'Record a new SAFE instrument (e.g. post-money SAFE from a YC-style round).',
|
|
33
|
+
inputSchema: z.object({
|
|
34
|
+
investmentAmount: z.number().positive().describe('Investment amount in USD'),
|
|
35
|
+
valuationCap: z
|
|
36
|
+
.number()
|
|
37
|
+
.positive()
|
|
38
|
+
.optional()
|
|
39
|
+
.describe('Valuation cap in USD (for valuation cap SAFEs)'),
|
|
40
|
+
discountRate: z
|
|
41
|
+
.number()
|
|
42
|
+
.min(0)
|
|
43
|
+
.max(100)
|
|
44
|
+
.optional()
|
|
45
|
+
.describe('Discount rate percentage (e.g. 20 for 20%)'),
|
|
46
|
+
safeType: z
|
|
47
|
+
.enum(['valuation_cap', 'discount', 'mfn', 'valuation_cap_and_discount'])
|
|
48
|
+
.describe('Type of SAFE'),
|
|
49
|
+
investorId: z.string().describe('Stakeholder ID of the investor'),
|
|
50
|
+
companyId: z.string().describe('Company ID'),
|
|
51
|
+
investmentDate: z.string().describe('Investment date in ISO 8601 format (YYYY-MM-DD)'),
|
|
52
|
+
proRataRights: z
|
|
53
|
+
.boolean()
|
|
54
|
+
.optional()
|
|
55
|
+
.default(false)
|
|
56
|
+
.describe('Whether the investor has pro-rata rights'),
|
|
57
|
+
}),
|
|
58
|
+
handler: async (input, client) => {
|
|
59
|
+
const { data } = await client.post('/api/v1/safes', input);
|
|
60
|
+
return {
|
|
61
|
+
content: [
|
|
62
|
+
{ type: 'text', text: `SAFE created: ${JSON.stringify(data, null, 2)}` },
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'update_safe',
|
|
69
|
+
description: 'Update an existing SAFE instrument (e.g. record conversion).',
|
|
70
|
+
inputSchema: z.object({
|
|
71
|
+
id: z.string().describe('SAFE ID'),
|
|
72
|
+
status: z
|
|
73
|
+
.enum(['open', 'converted', 'cancelled'])
|
|
74
|
+
.optional()
|
|
75
|
+
.describe('Current status of the SAFE'),
|
|
76
|
+
conversionDate: z
|
|
77
|
+
.string()
|
|
78
|
+
.optional()
|
|
79
|
+
.describe('Conversion date in ISO 8601 format (YYYY-MM-DD)'),
|
|
80
|
+
convertedShareClassId: z
|
|
81
|
+
.string()
|
|
82
|
+
.optional()
|
|
83
|
+
.describe('Share class ID that this SAFE converted into'),
|
|
84
|
+
convertedShares: z
|
|
85
|
+
.number()
|
|
86
|
+
.int()
|
|
87
|
+
.positive()
|
|
88
|
+
.optional()
|
|
89
|
+
.describe('Number of shares issued upon conversion'),
|
|
90
|
+
}),
|
|
91
|
+
handler: async (input, client) => {
|
|
92
|
+
const { id, ...body } = input;
|
|
93
|
+
const { data } = await client.put(`/api/v1/safes/${id}`, body);
|
|
94
|
+
return {
|
|
95
|
+
content: [
|
|
96
|
+
{ type: 'text', text: `SAFE updated: ${JSON.stringify(data, null, 2)}` },
|
|
97
|
+
],
|
|
98
|
+
};
|
|
99
|
+
},
|
|
100
|
+
},
|
|
101
|
+
];
|
|
102
|
+
//# sourceMappingURL=safes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safes.js","sourceRoot":"","sources":["../../src/tools/safes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shareClasses.d.ts","sourceRoot":"","sources":["../../src/tools/shareClasses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,eAAe,EAAE,cAAc,EA6D3C,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const shareClassTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'list_share_classes',
|
|
5
|
+
description: 'List all share classes defined in the cap table (e.g. Common, Series A Preferred).',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
companyId: z.string().optional().describe('Filter by company ID'),
|
|
8
|
+
limit: z.number().optional().default(50).describe('Max results to return'),
|
|
9
|
+
}),
|
|
10
|
+
handler: async (input, client) => {
|
|
11
|
+
const { data } = await client.get('/api/v1/share-classes', { params: input });
|
|
12
|
+
const shareClasses = data.shareClasses ?? data;
|
|
13
|
+
return {
|
|
14
|
+
content: [{ type: 'text', text: JSON.stringify(shareClasses, null, 2) }],
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'get_share_class',
|
|
20
|
+
description: 'Get details for a specific share class by ID.',
|
|
21
|
+
inputSchema: z.object({
|
|
22
|
+
id: z.string().describe('Share class ID'),
|
|
23
|
+
}),
|
|
24
|
+
handler: async (input, client) => {
|
|
25
|
+
const { data } = await client.get(`/api/v1/share-classes/${input.id}`);
|
|
26
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'create_share_class',
|
|
31
|
+
description: 'Create a new share class (e.g. Series B Preferred).',
|
|
32
|
+
inputSchema: z.object({
|
|
33
|
+
name: z.string().describe('Share class name, e.g. "Series A Preferred"'),
|
|
34
|
+
classType: z
|
|
35
|
+
.enum(['common', 'preferred', 'warrant', 'option'])
|
|
36
|
+
.describe('Type of share class'),
|
|
37
|
+
authorizedShares: z
|
|
38
|
+
.number()
|
|
39
|
+
.int()
|
|
40
|
+
.positive()
|
|
41
|
+
.describe('Total number of authorized shares'),
|
|
42
|
+
parValue: z.number().optional().describe('Par value per share in USD'),
|
|
43
|
+
companyId: z.string().describe('Company ID this share class belongs to'),
|
|
44
|
+
liquidationPreference: z
|
|
45
|
+
.number()
|
|
46
|
+
.optional()
|
|
47
|
+
.describe('Liquidation preference multiplier (e.g. 1 for 1x)'),
|
|
48
|
+
participationRights: z
|
|
49
|
+
.enum(['none', 'full', 'capped'])
|
|
50
|
+
.optional()
|
|
51
|
+
.describe('Participation rights type'),
|
|
52
|
+
}),
|
|
53
|
+
handler: async (input, client) => {
|
|
54
|
+
const { data } = await client.post('/api/v1/share-classes', input);
|
|
55
|
+
return {
|
|
56
|
+
content: [
|
|
57
|
+
{ type: 'text', text: `Share class created: ${JSON.stringify(data, null, 2)}` },
|
|
58
|
+
],
|
|
59
|
+
};
|
|
60
|
+
},
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
//# sourceMappingURL=shareClasses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shareClasses.js","sourceRoot":"","sources":["../../src/tools/shareClasses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EACT,oFAAoF;QACtF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC;YACjE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC;SAC3E,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC9E,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC;YAC/C,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACzE,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SAC1C,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,yBAAyB,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9E,CAAC;KACF;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACxE,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;iBAClD,QAAQ,CAAC,qBAAqB,CAAC;YAClC,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,QAAQ,EAAE;iBACV,QAAQ,CAAC,mCAAmC,CAAC;YAChD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;YACtE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;YACxE,qBAAqB,EAAE,CAAC;iBACrB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;YAChE,mBAAmB,EAAE,CAAC;iBACnB,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;iBAChC,QAAQ,EAAE;iBACV,QAAQ,CAAC,2BAA2B,CAAC;SACzC,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACnE,OAAO;gBACL,OAAO,EAAE;oBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE;iBAChF;aACF,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakeholders.d.ts","sourceRoot":"","sources":["../../src/tools/stakeholders.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,gBAAgB,EAAE,cAAc,EAsE5C,CAAC"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const stakeholderTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'list_stakeholders',
|
|
5
|
+
description: 'List all stakeholders in the cap table. Returns name, email, role, and ownership details.',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
companyId: z.string().optional().describe('Filter by company ID'),
|
|
8
|
+
limit: z.number().optional().default(50).describe('Max results to return'),
|
|
9
|
+
}),
|
|
10
|
+
handler: async (input, client) => {
|
|
11
|
+
const { data } = await client.get('/api/v1/stakeholders', { params: input });
|
|
12
|
+
const stakeholders = data.stakeholders ?? data;
|
|
13
|
+
return {
|
|
14
|
+
content: [{ type: 'text', text: JSON.stringify(stakeholders, null, 2) }],
|
|
15
|
+
};
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'get_stakeholder',
|
|
20
|
+
description: 'Get details for a specific stakeholder by ID.',
|
|
21
|
+
inputSchema: z.object({
|
|
22
|
+
id: z.string().describe('Stakeholder ID'),
|
|
23
|
+
}),
|
|
24
|
+
handler: async (input, client) => {
|
|
25
|
+
const { data } = await client.get(`/api/v1/stakeholders/${input.id}`);
|
|
26
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'create_stakeholder',
|
|
31
|
+
description: 'Add a new stakeholder to the cap table.',
|
|
32
|
+
inputSchema: z.object({
|
|
33
|
+
name: z.string().describe('Full name'),
|
|
34
|
+
email: z.string().email().describe('Email address'),
|
|
35
|
+
role: z
|
|
36
|
+
.enum(['founder', 'investor', 'employee', 'advisor', 'other'])
|
|
37
|
+
.describe('Stakeholder role'),
|
|
38
|
+
companyId: z.string().describe('Company ID to add the stakeholder to'),
|
|
39
|
+
}),
|
|
40
|
+
handler: async (input, client) => {
|
|
41
|
+
const { data } = await client.post('/api/v1/stakeholders', input);
|
|
42
|
+
return {
|
|
43
|
+
content: [
|
|
44
|
+
{ type: 'text', text: `Stakeholder created: ${JSON.stringify(data, null, 2)}` },
|
|
45
|
+
],
|
|
46
|
+
};
|
|
47
|
+
},
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: 'update_stakeholder',
|
|
51
|
+
description: 'Update an existing stakeholder by ID.',
|
|
52
|
+
inputSchema: z.object({
|
|
53
|
+
id: z.string().describe('Stakeholder ID'),
|
|
54
|
+
name: z.string().optional().describe('Full name'),
|
|
55
|
+
email: z.string().email().optional().describe('Email address'),
|
|
56
|
+
role: z
|
|
57
|
+
.enum(['founder', 'investor', 'employee', 'advisor', 'other'])
|
|
58
|
+
.optional()
|
|
59
|
+
.describe('Stakeholder role'),
|
|
60
|
+
}),
|
|
61
|
+
handler: async (input, client) => {
|
|
62
|
+
const { id, ...body } = input;
|
|
63
|
+
const { data } = await client.put(`/api/v1/stakeholders/${id}`, body);
|
|
64
|
+
return {
|
|
65
|
+
content: [
|
|
66
|
+
{ type: 'text', text: `Stakeholder updated: ${JSON.stringify(data, null, 2)}` },
|
|
67
|
+
],
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
];
|
|
72
|
+
//# sourceMappingURL=stakeholders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stakeholders.js","sourceRoot":"","sources":["../../src/tools/stakeholders.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valuations.d.ts","sourceRoot":"","sources":["../../src/tools/valuations.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,cAAc,EAqE1C,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const valuationTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'get_latest_valuation',
|
|
5
|
+
description: 'Get the most recent 409A or board-approved valuation for the company.',
|
|
6
|
+
inputSchema: z.object({
|
|
7
|
+
companyId: z.string().describe('Company ID'),
|
|
8
|
+
}),
|
|
9
|
+
handler: async (input, client) => {
|
|
10
|
+
const { data } = await client.get(`/api/v1/valuations/latest`, { params: { companyId: input.companyId } });
|
|
11
|
+
return { content: [{ type: 'text', text: JSON.stringify(data, null, 2) }] };
|
|
12
|
+
},
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'get_valuation_history',
|
|
16
|
+
description: 'Get the historical valuation timeline for the company.',
|
|
17
|
+
inputSchema: z.object({
|
|
18
|
+
companyId: z.string().describe('Company ID'),
|
|
19
|
+
limit: z.number().optional().default(20).describe('Max results to return'),
|
|
20
|
+
}),
|
|
21
|
+
handler: async (input, client) => {
|
|
22
|
+
const { data } = await client.get('/api/v1/valuations', { params: input });
|
|
23
|
+
const valuations = data.valuations ?? data;
|
|
24
|
+
return {
|
|
25
|
+
content: [{ type: 'text', text: JSON.stringify(valuations, null, 2) }],
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
name: 'create_valuation_request',
|
|
31
|
+
description: 'Submit a new 409A valuation request or record a board-approved valuation.',
|
|
32
|
+
inputSchema: z.object({
|
|
33
|
+
companyId: z.string().describe('Company ID'),
|
|
34
|
+
valuationType: z
|
|
35
|
+
.enum(['409A', 'board_approved', 'preferred_round', 'other'])
|
|
36
|
+
.describe('Type of valuation'),
|
|
37
|
+
valuationDate: z.string().describe('Effective date in ISO 8601 format (YYYY-MM-DD)'),
|
|
38
|
+
commonStockFMV: z
|
|
39
|
+
.number()
|
|
40
|
+
.positive()
|
|
41
|
+
.describe('Fair market value per common share in USD'),
|
|
42
|
+
postMoneyValuation: z
|
|
43
|
+
.number()
|
|
44
|
+
.positive()
|
|
45
|
+
.optional()
|
|
46
|
+
.describe('Total post-money company valuation in USD'),
|
|
47
|
+
provider: z
|
|
48
|
+
.string()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe('Name of the 409A valuation provider or firm'),
|
|
51
|
+
reportUrl: z
|
|
52
|
+
.string()
|
|
53
|
+
.url()
|
|
54
|
+
.optional()
|
|
55
|
+
.describe('URL to the valuation report document'),
|
|
56
|
+
}),
|
|
57
|
+
handler: async (input, client) => {
|
|
58
|
+
const { data } = await client.post('/api/v1/valuations', input);
|
|
59
|
+
return {
|
|
60
|
+
content: [
|
|
61
|
+
{ type: 'text', text: `Valuation recorded: ${JSON.stringify(data, null, 2)}` },
|
|
62
|
+
],
|
|
63
|
+
};
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
];
|
|
67
|
+
//# sourceMappingURL=valuations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"valuations.js","sourceRoot":"","sources":["../../src/tools/valuations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterfall.d.ts","sourceRoot":"","sources":["../../src/tools/waterfall.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,eAAO,MAAM,cAAc,EAAE,cAAc,EA4C1C,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export const waterfallTools = [
|
|
3
|
+
{
|
|
4
|
+
name: 'run_waterfall_analysis',
|
|
5
|
+
description: 'Run a waterfall analysis to model how exit proceeds would be distributed among ' +
|
|
6
|
+
'stakeholders given their liquidation preferences, participation rights, and ownership. ' +
|
|
7
|
+
'Returns proceeds per stakeholder and per share class at the given exit amount.',
|
|
8
|
+
inputSchema: z.object({
|
|
9
|
+
companyId: z.string().describe('Company ID'),
|
|
10
|
+
exitAmount: z
|
|
11
|
+
.number()
|
|
12
|
+
.positive()
|
|
13
|
+
.describe('Total exit/acquisition proceeds in USD'),
|
|
14
|
+
exitType: z
|
|
15
|
+
.enum(['acquisition', 'ipo', 'dissolution'])
|
|
16
|
+
.optional()
|
|
17
|
+
.default('acquisition')
|
|
18
|
+
.describe('Type of exit event'),
|
|
19
|
+
deductTransactionCosts: z
|
|
20
|
+
.boolean()
|
|
21
|
+
.optional()
|
|
22
|
+
.default(false)
|
|
23
|
+
.describe('Whether to deduct estimated transaction costs before distribution'),
|
|
24
|
+
transactionCostsAmount: z
|
|
25
|
+
.number()
|
|
26
|
+
.optional()
|
|
27
|
+
.describe('Transaction costs amount in USD (used if deductTransactionCosts is true)'),
|
|
28
|
+
includeOptionPoolSweep: z
|
|
29
|
+
.boolean()
|
|
30
|
+
.optional()
|
|
31
|
+
.default(false)
|
|
32
|
+
.describe('Whether to include pre-exit option pool sweep'),
|
|
33
|
+
asOfDate: z
|
|
34
|
+
.string()
|
|
35
|
+
.optional()
|
|
36
|
+
.describe('Run analysis as of a specific date (ISO 8601 YYYY-MM-DD). Defaults to today.'),
|
|
37
|
+
}),
|
|
38
|
+
handler: async (input, client) => {
|
|
39
|
+
const { data } = await client.post('/api/v1/waterfall/analyze', input);
|
|
40
|
+
return {
|
|
41
|
+
content: [{ type: 'text', text: JSON.stringify(data, null, 2) }],
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
];
|
|
46
|
+
//# sourceMappingURL=waterfall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waterfall.js","sourceRoot":"","sources":["../../src/tools/waterfall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,cAAc,GAAqB;IAC9C;QACE,IAAI,EAAE,wBAAwB;QAC9B,WAAW,EACT,iFAAiF;YACjF,yFAAyF;YACzF,gFAAgF;QAClF,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,wCAAwC,CAAC;YACrD,QAAQ,EAAE,CAAC;iBACR,IAAI,CAAC,CAAC,aAAa,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;iBAC3C,QAAQ,EAAE;iBACV,OAAO,CAAC,aAAa,CAAC;iBACtB,QAAQ,CAAC,oBAAoB,CAAC;YACjC,sBAAsB,EAAE,CAAC;iBACtB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,mEAAmE,CAAC;YAChF,sBAAsB,EAAE,CAAC;iBACtB,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0EAA0E,CAAC;YACvF,sBAAsB,EAAE,CAAC;iBACtB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,8EAA8E,CAAC;SAC5F,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YACvE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aACjE,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types used across tools and the server.
|
|
3
|
+
*/
|
|
4
|
+
import { type z } from 'zod';
|
|
5
|
+
import { type AxiosInstance } from 'axios';
|
|
6
|
+
import { type CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
7
|
+
export type ToolResult = CallToolResult;
|
|
8
|
+
export interface ToolDefinition<TSchema extends z.ZodTypeAny = z.ZodTypeAny> {
|
|
9
|
+
name: string;
|
|
10
|
+
description: string;
|
|
11
|
+
inputSchema: TSchema;
|
|
12
|
+
handler: (input: z.infer<TSchema>, client: AxiosInstance) => Promise<ToolResult>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAEzE,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAExC,MAAM,WAAW,cAAc,CAAC,OAAO,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IACzE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAClF"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@opencapstack/mcp-server",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "MCP server for OpenCap Stack — manage your cap table via Claude, Cursor, and any MCP-compatible client",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"opencap-mcp": "dist/index.js"
|
|
8
|
+
},
|
|
9
|
+
"main": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc",
|
|
13
|
+
"dev": "tsx src/index.ts",
|
|
14
|
+
"test": "jest",
|
|
15
|
+
"prepublishOnly": "npm run build"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
19
|
+
"axios": "^1.6.0",
|
|
20
|
+
"zod": "^3.22.0",
|
|
21
|
+
"zod-to-json-schema": "^3.25.2"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"@types/express": "^5.0.6",
|
|
25
|
+
"@types/jest": "^29.5.0",
|
|
26
|
+
"@types/node": "^20.0.0",
|
|
27
|
+
"express": "^5.2.1",
|
|
28
|
+
"jest": "^29.7.0",
|
|
29
|
+
"ts-jest": "^29.1.0",
|
|
30
|
+
"tsx": "^4.0.0",
|
|
31
|
+
"typescript": "^5.3.0"
|
|
32
|
+
},
|
|
33
|
+
"engines": {
|
|
34
|
+
"node": ">=18.0.0"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"jest": {
|
|
40
|
+
"preset": "ts-jest/presets/default-esm",
|
|
41
|
+
"testEnvironment": "node",
|
|
42
|
+
"extensionsToTreatAsEsm": [
|
|
43
|
+
".ts"
|
|
44
|
+
],
|
|
45
|
+
"moduleNameMapper": {
|
|
46
|
+
"^(\\.{1,2}/.*)\\.js$": "$1"
|
|
47
|
+
},
|
|
48
|
+
"transform": {
|
|
49
|
+
"^.+\\.tsx?$": [
|
|
50
|
+
"ts-jest",
|
|
51
|
+
{
|
|
52
|
+
"useESM": true
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|