@lagoon-protocol/lagoon-mcp 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/LICENSE +201 -0
- package/README.md +618 -0
- package/dist/cache/index.d.ts +97 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +106 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +40 -0
- package/dist/config.js.map +1 -0
- package/dist/core/cache-adapter.d.ts +73 -0
- package/dist/core/cache-adapter.d.ts.map +1 -0
- package/dist/core/cache-adapter.js +47 -0
- package/dist/core/cache-adapter.js.map +1 -0
- package/dist/core/cache-invalidation.d.ts +72 -0
- package/dist/core/cache-invalidation.d.ts.map +1 -0
- package/dist/core/cache-invalidation.js +114 -0
- package/dist/core/cache-invalidation.js.map +1 -0
- package/dist/core/container.d.ts +34 -0
- package/dist/core/container.d.ts.map +1 -0
- package/dist/core/container.js +75 -0
- package/dist/core/container.js.map +1 -0
- package/dist/graphql/client.d.ts +32 -0
- package/dist/graphql/client.d.ts.map +1 -0
- package/dist/graphql/client.js +49 -0
- package/dist/graphql/client.js.map +1 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.d.ts +64 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.js +62 -0
- package/dist/graphql/fragments/apr-breakdown.fragment.js.map +1 -0
- package/dist/graphql/fragments/asset-info.fragment.d.ts +18 -0
- package/dist/graphql/fragments/asset-info.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/asset-info.fragment.js +36 -0
- package/dist/graphql/fragments/asset-info.fragment.js.map +1 -0
- package/dist/graphql/fragments/chain-info.fragment.d.ts +18 -0
- package/dist/graphql/fragments/chain-info.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/chain-info.fragment.js +32 -0
- package/dist/graphql/fragments/chain-info.fragment.js.map +1 -0
- package/dist/graphql/fragments/index.d.ts +15 -0
- package/dist/graphql/fragments/index.d.ts.map +1 -0
- package/dist/graphql/fragments/index.js +21 -0
- package/dist/graphql/fragments/index.js.map +1 -0
- package/dist/graphql/fragments/pageinfo.fragment.d.ts +33 -0
- package/dist/graphql/fragments/pageinfo.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/pageinfo.fragment.js +47 -0
- package/dist/graphql/fragments/pageinfo.fragment.js.map +1 -0
- package/dist/graphql/fragments/transaction-base.fragment.d.ts +19 -0
- package/dist/graphql/fragments/transaction-base.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/transaction-base.fragment.js +32 -0
- package/dist/graphql/fragments/transaction-base.fragment.js.map +1 -0
- package/dist/graphql/fragments/vault-list.fragment.d.ts +53 -0
- package/dist/graphql/fragments/vault-list.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/vault-list.fragment.js +51 -0
- package/dist/graphql/fragments/vault-list.fragment.js.map +1 -0
- package/dist/graphql/fragments/vault-summary.fragment.d.ts +68 -0
- package/dist/graphql/fragments/vault-summary.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/vault-summary.fragment.js +66 -0
- package/dist/graphql/fragments/vault-summary.fragment.js.map +1 -0
- package/dist/graphql/fragments/vault.fragment.d.ts +133 -0
- package/dist/graphql/fragments/vault.fragment.d.ts.map +1 -0
- package/dist/graphql/fragments/vault.fragment.js +119 -0
- package/dist/graphql/fragments/vault.fragment.js.map +1 -0
- package/dist/graphql/fragments.d.ts +183 -0
- package/dist/graphql/fragments.d.ts.map +1 -0
- package/dist/graphql/fragments.js +297 -0
- package/dist/graphql/fragments.js.map +1 -0
- package/dist/graphql/queries/export.queries.d.ts +72 -0
- package/dist/graphql/queries/export.queries.d.ts.map +1 -0
- package/dist/graphql/queries/export.queries.js +202 -0
- package/dist/graphql/queries/export.queries.js.map +1 -0
- package/dist/graphql/queries/index.d.ts +15 -0
- package/dist/graphql/queries/index.d.ts.map +1 -0
- package/dist/graphql/queries/index.js +23 -0
- package/dist/graphql/queries/index.js.map +1 -0
- package/dist/graphql/queries/performance.queries.d.ts +63 -0
- package/dist/graphql/queries/performance.queries.d.ts.map +1 -0
- package/dist/graphql/queries/performance.queries.js +133 -0
- package/dist/graphql/queries/performance.queries.js.map +1 -0
- package/dist/graphql/queries/period-summaries.d.ts +15 -0
- package/dist/graphql/queries/period-summaries.d.ts.map +1 -0
- package/dist/graphql/queries/period-summaries.js +24 -0
- package/dist/graphql/queries/period-summaries.js.map +1 -0
- package/dist/graphql/queries/portfolio.queries.d.ts +78 -0
- package/dist/graphql/queries/portfolio.queries.d.ts.map +1 -0
- package/dist/graphql/queries/portfolio.queries.js +198 -0
- package/dist/graphql/queries/portfolio.queries.js.map +1 -0
- package/dist/graphql/queries/prediction.queries.d.ts +38 -0
- package/dist/graphql/queries/prediction.queries.d.ts.map +1 -0
- package/dist/graphql/queries/prediction.queries.js +100 -0
- package/dist/graphql/queries/prediction.queries.js.map +1 -0
- package/dist/graphql/queries/risk.queries.d.ts +37 -0
- package/dist/graphql/queries/risk.queries.d.ts.map +1 -0
- package/dist/graphql/queries/risk.queries.js +90 -0
- package/dist/graphql/queries/risk.queries.js.map +1 -0
- package/dist/graphql/queries/search.queries.d.ts +61 -0
- package/dist/graphql/queries/search.queries.d.ts.map +1 -0
- package/dist/graphql/queries/search.queries.js +103 -0
- package/dist/graphql/queries/search.queries.js.map +1 -0
- package/dist/graphql/queries/transaction.queries.d.ts +60 -0
- package/dist/graphql/queries/transaction.queries.d.ts.map +1 -0
- package/dist/graphql/queries/transaction.queries.js +252 -0
- package/dist/graphql/queries/transaction.queries.js.map +1 -0
- package/dist/graphql/queries/vault.queries.d.ts +54 -0
- package/dist/graphql/queries/vault.queries.d.ts.map +1 -0
- package/dist/graphql/queries/vault.queries.js +78 -0
- package/dist/graphql/queries/vault.queries.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +32 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/competitor-comparison.d.ts +8 -0
- package/dist/prompts/competitor-comparison.d.ts.map +1 -0
- package/dist/prompts/competitor-comparison.js +432 -0
- package/dist/prompts/competitor-comparison.js.map +1 -0
- package/dist/prompts/curator-performance.d.ts +8 -0
- package/dist/prompts/curator-performance.d.ts.map +1 -0
- package/dist/prompts/curator-performance.js +383 -0
- package/dist/prompts/curator-performance.js.map +1 -0
- package/dist/prompts/financial-analysis.d.ts +8 -0
- package/dist/prompts/financial-analysis.d.ts.map +1 -0
- package/dist/prompts/financial-analysis.js +480 -0
- package/dist/prompts/financial-analysis.js.map +1 -0
- package/dist/prompts/index.d.ts +21 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +50 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/onboarding-first-vault.d.ts +8 -0
- package/dist/prompts/onboarding-first-vault.d.ts.map +1 -0
- package/dist/prompts/onboarding-first-vault.js +317 -0
- package/dist/prompts/onboarding-first-vault.js.map +1 -0
- package/dist/prompts/portfolio-optimization.d.ts +8 -0
- package/dist/prompts/portfolio-optimization.d.ts.map +1 -0
- package/dist/prompts/portfolio-optimization.js +412 -0
- package/dist/prompts/portfolio-optimization.js.map +1 -0
- package/dist/prompts/protocol-overview.d.ts +8 -0
- package/dist/prompts/protocol-overview.d.ts.map +1 -0
- package/dist/prompts/protocol-overview.js +398 -0
- package/dist/prompts/protocol-overview.js.map +1 -0
- package/dist/prompts/shared/disclaimers.d.ts +54 -0
- package/dist/prompts/shared/disclaimers.d.ts.map +1 -0
- package/dist/prompts/shared/disclaimers.js +400 -0
- package/dist/prompts/shared/disclaimers.js.map +1 -0
- package/dist/resources/glossary.d.ts +8 -0
- package/dist/resources/glossary.d.ts.map +1 -0
- package/dist/resources/glossary.js +407 -0
- package/dist/resources/glossary.js.map +1 -0
- package/dist/resources/index.d.ts +18 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +29 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/schema.d.ts +22 -0
- package/dist/resources/schema.d.ts.map +1 -0
- package/dist/resources/schema.js +67 -0
- package/dist/resources/schema.js.map +1 -0
- package/dist/schemas/config.schema.d.ts +46 -0
- package/dist/schemas/config.schema.d.ts.map +1 -0
- package/dist/schemas/config.schema.js +48 -0
- package/dist/schemas/config.schema.js.map +1 -0
- package/dist/sdk/__tests__/apr-service.test.d.ts +7 -0
- package/dist/sdk/__tests__/apr-service.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/apr-service.test.js +385 -0
- package/dist/sdk/__tests__/apr-service.test.js.map +1 -0
- package/dist/sdk/__tests__/math-utils.test.d.ts +7 -0
- package/dist/sdk/__tests__/math-utils.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/math-utils.test.js +185 -0
- package/dist/sdk/__tests__/math-utils.test.js.map +1 -0
- package/dist/sdk/__tests__/simulation-service.test.d.ts +5 -0
- package/dist/sdk/__tests__/simulation-service.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/simulation-service.test.js +397 -0
- package/dist/sdk/__tests__/simulation-service.test.js.map +1 -0
- package/dist/sdk/__tests__/vault-utils.test.d.ts +7 -0
- package/dist/sdk/__tests__/vault-utils.test.d.ts.map +1 -0
- package/dist/sdk/__tests__/vault-utils.test.js +189 -0
- package/dist/sdk/__tests__/vault-utils.test.js.map +1 -0
- package/dist/sdk/apr-service.d.ts +101 -0
- package/dist/sdk/apr-service.d.ts.map +1 -0
- package/dist/sdk/apr-service.js +175 -0
- package/dist/sdk/apr-service.js.map +1 -0
- package/dist/sdk/math-utils.d.ts +138 -0
- package/dist/sdk/math-utils.d.ts.map +1 -0
- package/dist/sdk/math-utils.js +218 -0
- package/dist/sdk/math-utils.js.map +1 -0
- package/dist/sdk/simulation-service.d.ts +106 -0
- package/dist/sdk/simulation-service.d.ts.map +1 -0
- package/dist/sdk/simulation-service.js +143 -0
- package/dist/sdk/simulation-service.js.map +1 -0
- package/dist/sdk/vault-utils.d.ts +125 -0
- package/dist/sdk/vault-utils.d.ts.map +1 -0
- package/dist/sdk/vault-utils.js +165 -0
- package/dist/sdk/vault-utils.js.map +1 -0
- package/dist/server.d.ts +21 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +225 -0
- package/dist/server.js.map +1 -0
- package/dist/services/analytics/protocol-overview.service.d.ts +61 -0
- package/dist/services/analytics/protocol-overview.service.d.ts.map +1 -0
- package/dist/services/analytics/protocol-overview.service.js +182 -0
- package/dist/services/analytics/protocol-overview.service.js.map +1 -0
- package/dist/services/analytics/risk.service.d.ts +92 -0
- package/dist/services/analytics/risk.service.d.ts.map +1 -0
- package/dist/services/analytics/risk.service.js +423 -0
- package/dist/services/analytics/risk.service.js.map +1 -0
- package/dist/services/base.service.d.ts +39 -0
- package/dist/services/base.service.d.ts.map +1 -0
- package/dist/services/base.service.js +37 -0
- package/dist/services/base.service.js.map +1 -0
- package/dist/services/index.d.ts +30 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +101 -0
- package/dist/services/index.js.map +1 -0
- package/dist/tools/__tests__/simulate-vault.test.d.ts +5 -0
- package/dist/tools/__tests__/simulate-vault.test.d.ts.map +1 -0
- package/dist/tools/__tests__/simulate-vault.test.js +363 -0
- package/dist/tools/__tests__/simulate-vault.test.js.map +1 -0
- package/dist/tools/analyze-risk.d.ts +34 -0
- package/dist/tools/analyze-risk.d.ts.map +1 -0
- package/dist/tools/analyze-risk.js +100 -0
- package/dist/tools/analyze-risk.js.map +1 -0
- package/dist/tools/compare-vaults.d.ts +29 -0
- package/dist/tools/compare-vaults.d.ts.map +1 -0
- package/dist/tools/compare-vaults.js +285 -0
- package/dist/tools/compare-vaults.js.map +1 -0
- package/dist/tools/export-data.d.ts +34 -0
- package/dist/tools/export-data.d.ts.map +1 -0
- package/dist/tools/export-data.js +309 -0
- package/dist/tools/export-data.js.map +1 -0
- package/dist/tools/get-price-history.d.ts +29 -0
- package/dist/tools/get-price-history.d.ts.map +1 -0
- package/dist/tools/get-price-history.js +236 -0
- package/dist/tools/get-price-history.js.map +1 -0
- package/dist/tools/get-transactions.d.ts +29 -0
- package/dist/tools/get-transactions.d.ts.map +1 -0
- package/dist/tools/get-transactions.js +181 -0
- package/dist/tools/get-transactions.js.map +1 -0
- package/dist/tools/index.d.ts +26 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +32 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/optimize-portfolio.d.ts +37 -0
- package/dist/tools/optimize-portfolio.d.ts.map +1 -0
- package/dist/tools/optimize-portfolio.js +459 -0
- package/dist/tools/optimize-portfolio.js.map +1 -0
- package/dist/tools/predict-yield.d.ts +30 -0
- package/dist/tools/predict-yield.d.ts.map +1 -0
- package/dist/tools/predict-yield.js +248 -0
- package/dist/tools/predict-yield.js.map +1 -0
- package/dist/tools/query-graphql.d.ts +35 -0
- package/dist/tools/query-graphql.d.ts.map +1 -0
- package/dist/tools/query-graphql.js +54 -0
- package/dist/tools/query-graphql.js.map +1 -0
- package/dist/tools/registry.d.ts +42 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +231 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search-vaults.d.ts +40 -0
- package/dist/tools/search-vaults.d.ts.map +1 -0
- package/dist/tools/search-vaults.js +184 -0
- package/dist/tools/search-vaults.js.map +1 -0
- package/dist/tools/simulate-vault.d.ts +80 -0
- package/dist/tools/simulate-vault.d.ts.map +1 -0
- package/dist/tools/simulate-vault.js +281 -0
- package/dist/tools/simulate-vault.js.map +1 -0
- package/dist/tools/user-portfolio.d.ts +30 -0
- package/dist/tools/user-portfolio.d.ts.map +1 -0
- package/dist/tools/user-portfolio.js +142 -0
- package/dist/tools/user-portfolio.js.map +1 -0
- package/dist/tools/vault-data.d.ts +23 -0
- package/dist/tools/vault-data.d.ts.map +1 -0
- package/dist/tools/vault-data.js +68 -0
- package/dist/tools/vault-data.js.map +1 -0
- package/dist/tools/vault-performance.d.ts +30 -0
- package/dist/tools/vault-performance.d.ts.map +1 -0
- package/dist/tools/vault-performance.js +275 -0
- package/dist/tools/vault-performance.js.map +1 -0
- package/dist/types/generated.d.ts +1109 -0
- package/dist/types/generated.d.ts.map +1 -0
- package/dist/types/generated.js +2 -0
- package/dist/types/generated.js.map +1 -0
- package/dist/types/index.d.ts +46 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/comparison-metrics.d.ts +120 -0
- package/dist/utils/comparison-metrics.d.ts.map +1 -0
- package/dist/utils/comparison-metrics.js +215 -0
- package/dist/utils/comparison-metrics.js.map +1 -0
- package/dist/utils/config-loader.d.ts +17 -0
- package/dist/utils/config-loader.d.ts.map +1 -0
- package/dist/utils/config-loader.js +45 -0
- package/dist/utils/config-loader.js.map +1 -0
- package/dist/utils/csv-generator.d.ts +89 -0
- package/dist/utils/csv-generator.d.ts.map +1 -0
- package/dist/utils/csv-generator.js +97 -0
- package/dist/utils/csv-generator.js.map +1 -0
- package/dist/utils/disclaimers.d.ts +70 -0
- package/dist/utils/disclaimers.d.ts.map +1 -0
- package/dist/utils/disclaimers.js +161 -0
- package/dist/utils/disclaimers.js.map +1 -0
- package/dist/utils/errors.d.ts +66 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +86 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/execute-tool-with-cache.d.ts +97 -0
- package/dist/utils/execute-tool-with-cache.d.ts.map +1 -0
- package/dist/utils/execute-tool-with-cache.js +105 -0
- package/dist/utils/execute-tool-with-cache.js.map +1 -0
- package/dist/utils/portfolio-optimization.d.ts +100 -0
- package/dist/utils/portfolio-optimization.d.ts.map +1 -0
- package/dist/utils/portfolio-optimization.js +283 -0
- package/dist/utils/portfolio-optimization.js.map +1 -0
- package/dist/utils/risk-scoring.d.ts +226 -0
- package/dist/utils/risk-scoring.d.ts.map +1 -0
- package/dist/utils/risk-scoring.js +523 -0
- package/dist/utils/risk-scoring.js.map +1 -0
- package/dist/utils/tool-error-handler.d.ts +16 -0
- package/dist/utils/tool-error-handler.d.ts.map +1 -0
- package/dist/utils/tool-error-handler.js +43 -0
- package/dist/utils/tool-error-handler.js.map +1 -0
- package/dist/utils/tool-handler.d.ts +33 -0
- package/dist/utils/tool-handler.d.ts.map +1 -0
- package/dist/utils/tool-handler.js +59 -0
- package/dist/utils/tool-handler.js.map +1 -0
- package/dist/utils/tool-response.d.ts +16 -0
- package/dist/utils/tool-response.d.ts.map +1 -0
- package/dist/utils/tool-response.js +25 -0
- package/dist/utils/tool-response.js.map +1 -0
- package/dist/utils/validators.d.ts +359 -0
- package/dist/utils/validators.d.ts.map +1 -0
- package/dist/utils/validators.js +233 -0
- package/dist/utils/validators.js.map +1 -0
- package/dist/utils/yield-prediction.d.ts +69 -0
- package/dist/utils/yield-prediction.d.ts.map +1 -0
- package/dist/utils/yield-prediction.js +290 -0
- package/dist/utils/yield-prediction.js.map +1 -0
- package/package.json +83 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSV Generator Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides CSV formatting and generation for vault data export.
|
|
5
|
+
* Handles proper escaping, quoting, and formatting for CSV compliance.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Escape CSV field value
|
|
9
|
+
* Handles quotes, commas, newlines according to RFC 4180
|
|
10
|
+
*/
|
|
11
|
+
export declare function escapeCSVField(value: unknown): string;
|
|
12
|
+
/**
|
|
13
|
+
* Generate CSV header row from column names
|
|
14
|
+
*/
|
|
15
|
+
export declare function generateCSVHeader(columns: string[]): string;
|
|
16
|
+
/**
|
|
17
|
+
* Generate CSV row from data object
|
|
18
|
+
*/
|
|
19
|
+
export declare function generateCSVRow(data: Record<string, unknown>, columns: string[]): string;
|
|
20
|
+
/**
|
|
21
|
+
* Generate complete CSV from array of objects
|
|
22
|
+
*/
|
|
23
|
+
export declare function generateCSV(data: Record<string, unknown>[], columns: string[]): string;
|
|
24
|
+
/**
|
|
25
|
+
* Format vault data for CSV export
|
|
26
|
+
*/
|
|
27
|
+
export interface VaultCSVData extends Record<string, unknown> {
|
|
28
|
+
address: string;
|
|
29
|
+
name: string;
|
|
30
|
+
symbol: string;
|
|
31
|
+
chainId: number;
|
|
32
|
+
tvl: number;
|
|
33
|
+
apr: number;
|
|
34
|
+
pricePerShare: number;
|
|
35
|
+
totalAssets: string;
|
|
36
|
+
totalShares: string;
|
|
37
|
+
assetSymbol: string;
|
|
38
|
+
assetAddress: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate CSV for vault data
|
|
42
|
+
*/
|
|
43
|
+
export declare function generateVaultCSV(vaults: VaultCSVData[]): string;
|
|
44
|
+
/**
|
|
45
|
+
* Format transaction data for CSV export
|
|
46
|
+
*/
|
|
47
|
+
export interface TransactionCSVData extends Record<string, unknown> {
|
|
48
|
+
id: string;
|
|
49
|
+
type: string;
|
|
50
|
+
timestamp: string;
|
|
51
|
+
blockNumber: string;
|
|
52
|
+
vaultAddress: string;
|
|
53
|
+
userAddress?: string;
|
|
54
|
+
amount?: string;
|
|
55
|
+
shares?: string;
|
|
56
|
+
assets?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Generate CSV for transaction data
|
|
60
|
+
*/
|
|
61
|
+
export declare function generateTransactionCSV(transactions: TransactionCSVData[]): string;
|
|
62
|
+
/**
|
|
63
|
+
* Format price history data for CSV export
|
|
64
|
+
*/
|
|
65
|
+
export interface PriceHistoryCSVData extends Record<string, unknown> {
|
|
66
|
+
date: string;
|
|
67
|
+
open: number;
|
|
68
|
+
high: number;
|
|
69
|
+
low: number;
|
|
70
|
+
close: number;
|
|
71
|
+
volume: number;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Generate CSV for price history data
|
|
75
|
+
*/
|
|
76
|
+
export declare function generatePriceHistoryCSV(priceData: PriceHistoryCSVData[]): string;
|
|
77
|
+
/**
|
|
78
|
+
* Format performance metrics for CSV export
|
|
79
|
+
*/
|
|
80
|
+
export interface PerformanceCSVData extends Record<string, unknown> {
|
|
81
|
+
timestamp: string;
|
|
82
|
+
totalAssetsUsd: number;
|
|
83
|
+
blockNumber: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Generate CSV for performance metrics
|
|
87
|
+
*/
|
|
88
|
+
export declare function generatePerformanceCSV(metrics: PerformanceCSVData[]): string;
|
|
89
|
+
//# sourceMappingURL=csv-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-generator.d.ts","sourceRoot":"","sources":["../../src/utils/csv-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAgBrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAEvF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAStF;AAED;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAgB/D;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAcjF;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,mBAAmB,EAAE,GAAG,MAAM,CAIhF;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACjE,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAI5E"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSV Generator Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides CSV formatting and generation for vault data export.
|
|
5
|
+
* Handles proper escaping, quoting, and formatting for CSV compliance.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Escape CSV field value
|
|
9
|
+
* Handles quotes, commas, newlines according to RFC 4180
|
|
10
|
+
*/
|
|
11
|
+
export function escapeCSVField(value) {
|
|
12
|
+
if (value === null || value === undefined) {
|
|
13
|
+
return '';
|
|
14
|
+
}
|
|
15
|
+
const strValue = String(value);
|
|
16
|
+
// Check if field needs quoting (contains comma, quote, or newline)
|
|
17
|
+
const needsQuoting = /[",\n\r]/.test(strValue);
|
|
18
|
+
if (needsQuoting) {
|
|
19
|
+
// Escape quotes by doubling them and wrap in quotes
|
|
20
|
+
return `"${strValue.replace(/"/g, '""')}"`;
|
|
21
|
+
}
|
|
22
|
+
return strValue;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate CSV header row from column names
|
|
26
|
+
*/
|
|
27
|
+
export function generateCSVHeader(columns) {
|
|
28
|
+
return columns.map(escapeCSVField).join(',');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Generate CSV row from data object
|
|
32
|
+
*/
|
|
33
|
+
export function generateCSVRow(data, columns) {
|
|
34
|
+
return columns.map((col) => escapeCSVField(data[col])).join(',');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Generate complete CSV from array of objects
|
|
38
|
+
*/
|
|
39
|
+
export function generateCSV(data, columns) {
|
|
40
|
+
if (data.length === 0) {
|
|
41
|
+
return generateCSVHeader(columns);
|
|
42
|
+
}
|
|
43
|
+
const header = generateCSVHeader(columns);
|
|
44
|
+
const rows = data.map((row) => generateCSVRow(row, columns));
|
|
45
|
+
return [header, ...rows].join('\n');
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Generate CSV for vault data
|
|
49
|
+
*/
|
|
50
|
+
export function generateVaultCSV(vaults) {
|
|
51
|
+
const columns = [
|
|
52
|
+
'address',
|
|
53
|
+
'name',
|
|
54
|
+
'symbol',
|
|
55
|
+
'chainId',
|
|
56
|
+
'tvl',
|
|
57
|
+
'apr',
|
|
58
|
+
'pricePerShare',
|
|
59
|
+
'totalAssets',
|
|
60
|
+
'totalShares',
|
|
61
|
+
'assetSymbol',
|
|
62
|
+
'assetAddress',
|
|
63
|
+
];
|
|
64
|
+
return generateCSV(vaults, columns);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Generate CSV for transaction data
|
|
68
|
+
*/
|
|
69
|
+
export function generateTransactionCSV(transactions) {
|
|
70
|
+
const columns = [
|
|
71
|
+
'id',
|
|
72
|
+
'type',
|
|
73
|
+
'timestamp',
|
|
74
|
+
'blockNumber',
|
|
75
|
+
'vaultAddress',
|
|
76
|
+
'userAddress',
|
|
77
|
+
'amount',
|
|
78
|
+
'shares',
|
|
79
|
+
'assets',
|
|
80
|
+
];
|
|
81
|
+
return generateCSV(transactions, columns);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Generate CSV for price history data
|
|
85
|
+
*/
|
|
86
|
+
export function generatePriceHistoryCSV(priceData) {
|
|
87
|
+
const columns = ['date', 'open', 'high', 'low', 'close', 'volume'];
|
|
88
|
+
return generateCSV(priceData, columns);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Generate CSV for performance metrics
|
|
92
|
+
*/
|
|
93
|
+
export function generatePerformanceCSV(metrics) {
|
|
94
|
+
const columns = ['timestamp', 'totalAssetsUsd', 'blockNumber'];
|
|
95
|
+
return generateCSV(metrics, columns);
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=csv-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"csv-generator.js","sourceRoot":"","sources":["../../src/utils/csv-generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE/B,mEAAmE;IACnE,MAAM,YAAY,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE/C,IAAI,YAAY,EAAE,CAAC;QACjB,oDAAoD;QACpD,OAAO,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;IAC7C,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAiB;IACjD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,IAA6B,EAAE,OAAiB;IAC7E,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACnE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAA+B,EAAE,OAAiB;IAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IAE7D,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAmBD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAsB;IACrD,MAAM,OAAO,GAAG;QACd,SAAS;QACT,MAAM;QACN,QAAQ;QACR,SAAS;QACT,KAAK;QACL,KAAK;QACL,eAAe;QACf,aAAa;QACb,aAAa;QACb,aAAa;QACb,cAAc;KACf,CAAC;IAEF,OAAO,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAiBD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,YAAkC;IACvE,MAAM,OAAO,GAAG;QACd,IAAI;QACJ,MAAM;QACN,WAAW;QACX,aAAa;QACb,cAAc;QACd,aAAa;QACb,QAAQ;QACR,QAAQ;QACR,QAAQ;KACT,CAAC;IAEF,OAAO,WAAW,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAgC;IACtE,MAAM,OAAO,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAEnE,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAWD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAA6B;IAClE,MAAM,OAAO,GAAG,CAAC,WAAW,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;IAE/D,OAAO,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legal Disclaimers for Financial Analysis Tools
|
|
3
|
+
*
|
|
4
|
+
* Provides legally protective disclaimer text for all financial analysis outputs.
|
|
5
|
+
* Compliant with SEC/FINRA guidelines for financial information disclosure.
|
|
6
|
+
*
|
|
7
|
+
* @module disclaimers
|
|
8
|
+
*/
|
|
9
|
+
export type DisclaimerMode = 'full' | 'compact' | 'minimal';
|
|
10
|
+
export interface DisclaimerConfig {
|
|
11
|
+
mode: DisclaimerMode;
|
|
12
|
+
toolName: string;
|
|
13
|
+
includeTimestamp?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Full disclaimer for high-risk financial analysis tools
|
|
17
|
+
* Use for: analyze_risk, predict_yield, optimize_portfolio, compare_vaults
|
|
18
|
+
*
|
|
19
|
+
* Includes:
|
|
20
|
+
* - Not financial advice statement
|
|
21
|
+
* - Risk warnings
|
|
22
|
+
* - Liability limitation
|
|
23
|
+
* - Professional consultation recommendation
|
|
24
|
+
* - Data accuracy limitations
|
|
25
|
+
*
|
|
26
|
+
* @param toolName - Name of the tool generating the output
|
|
27
|
+
* @returns Full legal disclaimer text
|
|
28
|
+
*/
|
|
29
|
+
export declare function getFullFinancialDisclaimer(toolName: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* Compact disclaimer for medium-risk tools
|
|
32
|
+
* Use for: search_vaults, vault_performance, get_price_history, get_transactions
|
|
33
|
+
*
|
|
34
|
+
* Provides essential legal protection while maintaining readability for data-focused tools.
|
|
35
|
+
*
|
|
36
|
+
* @param toolName - Name of the tool generating the output
|
|
37
|
+
* @returns Compact legal disclaimer text
|
|
38
|
+
*/
|
|
39
|
+
export declare function getCompactFinancialDisclaimer(toolName: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* Minimal disclaimer for data retrieval tools
|
|
42
|
+
* Use for: get_vault_data, user_portfolio, export_data, query_graphql, simulate_vault
|
|
43
|
+
*
|
|
44
|
+
* Provides basic legal protection for pure data retrieval operations.
|
|
45
|
+
*
|
|
46
|
+
* @param toolName - Name of the tool generating the output
|
|
47
|
+
* @returns Minimal legal disclaimer text
|
|
48
|
+
*/
|
|
49
|
+
export declare function getMinimalFinancialDisclaimer(_toolName: string): string;
|
|
50
|
+
/**
|
|
51
|
+
* Get appropriate disclaimer based on tool risk level
|
|
52
|
+
*
|
|
53
|
+
* Automatically determines the appropriate disclaimer level based on tool name
|
|
54
|
+
* if mode is not explicitly specified.
|
|
55
|
+
*
|
|
56
|
+
* @param toolName - Name of the tool (snake_case)
|
|
57
|
+
* @param mode - Optional override for disclaimer mode
|
|
58
|
+
* @returns Appropriate disclaimer text for the tool
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const disclaimer = getToolDisclaimer('analyze_risk');
|
|
63
|
+
* // Returns full disclaimer
|
|
64
|
+
*
|
|
65
|
+
* const customDisclaimer = getToolDisclaimer('search_vaults', 'minimal');
|
|
66
|
+
* // Returns minimal disclaimer (overriding auto-detection)
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export declare function getToolDisclaimer(toolName: string, mode?: DisclaimerMode): string;
|
|
70
|
+
//# sourceMappingURL=disclaimers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disclaimers.d.ts","sourceRoot":"","sources":["../../src/utils/disclaimers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5D,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,cAAc,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmCnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAStE;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAKvE;AA4BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,MAAM,CAyBjF"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Legal Disclaimers for Financial Analysis Tools
|
|
3
|
+
*
|
|
4
|
+
* Provides legally protective disclaimer text for all financial analysis outputs.
|
|
5
|
+
* Compliant with SEC/FINRA guidelines for financial information disclosure.
|
|
6
|
+
*
|
|
7
|
+
* @module disclaimers
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Full disclaimer for high-risk financial analysis tools
|
|
11
|
+
* Use for: analyze_risk, predict_yield, optimize_portfolio, compare_vaults
|
|
12
|
+
*
|
|
13
|
+
* Includes:
|
|
14
|
+
* - Not financial advice statement
|
|
15
|
+
* - Risk warnings
|
|
16
|
+
* - Liability limitation
|
|
17
|
+
* - Professional consultation recommendation
|
|
18
|
+
* - Data accuracy limitations
|
|
19
|
+
*
|
|
20
|
+
* @param toolName - Name of the tool generating the output
|
|
21
|
+
* @returns Full legal disclaimer text
|
|
22
|
+
*/
|
|
23
|
+
export function getFullFinancialDisclaimer(toolName) {
|
|
24
|
+
const timestamp = new Date().toISOString();
|
|
25
|
+
return `
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
⚠️ **IMPORTANT DISCLAIMER - NOT FINANCIAL ADVICE**
|
|
30
|
+
|
|
31
|
+
This analysis is provided for **informational and educational purposes only** and does NOT constitute financial, investment, legal, or tax advice. The information presented by the ${toolName} tool:
|
|
32
|
+
|
|
33
|
+
- Is based on historical data and algorithmic analysis that may contain errors or inaccuracies
|
|
34
|
+
- Should NOT be relied upon as the sole basis for any investment decision
|
|
35
|
+
- Does NOT consider your individual financial situation, risk tolerance, or investment objectives
|
|
36
|
+
- Is NOT a recommendation to buy, sell, hold, or trade any digital asset or financial instrument
|
|
37
|
+
|
|
38
|
+
**Cryptocurrency and DeFi investments carry substantial risk**, including but not limited to:
|
|
39
|
+
- Complete loss of invested capital
|
|
40
|
+
- Smart contract vulnerabilities and exploits
|
|
41
|
+
- Market volatility and illiquidity
|
|
42
|
+
- Regulatory changes and enforcement actions
|
|
43
|
+
- Platform failures and operational risks
|
|
44
|
+
|
|
45
|
+
**BEFORE MAKING ANY INVESTMENT DECISIONS**:
|
|
46
|
+
1. Conduct your own thorough due diligence and research
|
|
47
|
+
2. Consult with qualified financial, legal, and tax professionals
|
|
48
|
+
3. Only invest capital you can afford to lose completely
|
|
49
|
+
4. Understand the specific risks associated with each vault and protocol
|
|
50
|
+
|
|
51
|
+
**NO LIABILITY**: We accept no liability whatsoever for any loss, damage, or adverse outcome arising from your use of this information. Past performance does not guarantee future results.
|
|
52
|
+
|
|
53
|
+
**Data Currency**: Analysis generated at ${timestamp}. Market conditions change rapidly.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Compact disclaimer for medium-risk tools
|
|
60
|
+
* Use for: search_vaults, vault_performance, get_price_history, get_transactions
|
|
61
|
+
*
|
|
62
|
+
* Provides essential legal protection while maintaining readability for data-focused tools.
|
|
63
|
+
*
|
|
64
|
+
* @param toolName - Name of the tool generating the output
|
|
65
|
+
* @returns Compact legal disclaimer text
|
|
66
|
+
*/
|
|
67
|
+
export function getCompactFinancialDisclaimer(toolName) {
|
|
68
|
+
return `
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
⚠️ **DISCLAIMER**: This ${toolName} output is for informational purposes only and is NOT financial advice. Cryptocurrency investments carry substantial risk including complete loss of capital. Conduct your own research and consult qualified professionals before making investment decisions. We accept no liability for losses arising from use of this information.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
`;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Minimal disclaimer for data retrieval tools
|
|
79
|
+
* Use for: get_vault_data, user_portfolio, export_data, query_graphql, simulate_vault
|
|
80
|
+
*
|
|
81
|
+
* Provides basic legal protection for pure data retrieval operations.
|
|
82
|
+
*
|
|
83
|
+
* @param toolName - Name of the tool generating the output
|
|
84
|
+
* @returns Minimal legal disclaimer text
|
|
85
|
+
*/
|
|
86
|
+
export function getMinimalFinancialDisclaimer(_toolName) {
|
|
87
|
+
return `
|
|
88
|
+
|
|
89
|
+
*Disclaimer: For informational purposes only. Not financial advice. DYOR and consult professionals before investing.*
|
|
90
|
+
`;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* High-risk financial analysis tools requiring full disclaimers
|
|
94
|
+
*/
|
|
95
|
+
const HIGH_RISK_TOOLS = ['analyze_risk', 'predict_yield', 'optimize_portfolio', 'compare_vaults'];
|
|
96
|
+
/**
|
|
97
|
+
* Medium-risk tools requiring compact disclaimers
|
|
98
|
+
*/
|
|
99
|
+
const MEDIUM_RISK_TOOLS = [
|
|
100
|
+
'search_vaults',
|
|
101
|
+
'vault_performance',
|
|
102
|
+
'price_history',
|
|
103
|
+
'get_transactions',
|
|
104
|
+
];
|
|
105
|
+
/**
|
|
106
|
+
* Low-risk data retrieval tools requiring minimal disclaimers
|
|
107
|
+
*/
|
|
108
|
+
const LOW_RISK_TOOLS = [
|
|
109
|
+
'vault_data',
|
|
110
|
+
'user_portfolio',
|
|
111
|
+
'export_data',
|
|
112
|
+
'query_graphql',
|
|
113
|
+
'simulate_vault',
|
|
114
|
+
];
|
|
115
|
+
/**
|
|
116
|
+
* Get appropriate disclaimer based on tool risk level
|
|
117
|
+
*
|
|
118
|
+
* Automatically determines the appropriate disclaimer level based on tool name
|
|
119
|
+
* if mode is not explicitly specified.
|
|
120
|
+
*
|
|
121
|
+
* @param toolName - Name of the tool (snake_case)
|
|
122
|
+
* @param mode - Optional override for disclaimer mode
|
|
123
|
+
* @returns Appropriate disclaimer text for the tool
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* ```typescript
|
|
127
|
+
* const disclaimer = getToolDisclaimer('analyze_risk');
|
|
128
|
+
* // Returns full disclaimer
|
|
129
|
+
*
|
|
130
|
+
* const customDisclaimer = getToolDisclaimer('search_vaults', 'minimal');
|
|
131
|
+
* // Returns minimal disclaimer (overriding auto-detection)
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
export function getToolDisclaimer(toolName, mode) {
|
|
135
|
+
// Auto-determine mode based on tool name if not specified
|
|
136
|
+
let disclaimerMode = mode;
|
|
137
|
+
if (!disclaimerMode) {
|
|
138
|
+
if (HIGH_RISK_TOOLS.includes(toolName)) {
|
|
139
|
+
disclaimerMode = 'full';
|
|
140
|
+
}
|
|
141
|
+
else if (MEDIUM_RISK_TOOLS.includes(toolName)) {
|
|
142
|
+
disclaimerMode = 'compact';
|
|
143
|
+
}
|
|
144
|
+
else if (LOW_RISK_TOOLS.includes(toolName)) {
|
|
145
|
+
disclaimerMode = 'minimal';
|
|
146
|
+
}
|
|
147
|
+
else {
|
|
148
|
+
// Default to compact for unknown tools
|
|
149
|
+
disclaimerMode = 'compact';
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
switch (disclaimerMode) {
|
|
153
|
+
case 'full':
|
|
154
|
+
return getFullFinancialDisclaimer(toolName);
|
|
155
|
+
case 'compact':
|
|
156
|
+
return getCompactFinancialDisclaimer(toolName);
|
|
157
|
+
case 'minimal':
|
|
158
|
+
return getMinimalFinancialDisclaimer(toolName);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=disclaimers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disclaimers.js","sourceRoot":"","sources":["../../src/utils/disclaimers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE3C,OAAO;;;;;;sLAM6K,QAAQ;;;;;;;;;;;;;;;;;;;;;;2CAsBnJ,SAAS;;;CAGnD,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAAC,QAAgB;IAC5D,OAAO;;;;0BAIiB,QAAQ;;;CAGjC,CAAC;AACF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,6BAA6B,CAAC,SAAiB;IAC7D,OAAO;;;CAGR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,eAAe,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,CAAC;AAElG;;GAEG;AACH,MAAM,iBAAiB,GAAG;IACxB,eAAe;IACf,mBAAmB;IACnB,eAAe;IACf,kBAAkB;CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,cAAc,GAAG;IACrB,YAAY;IACZ,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,gBAAgB;CACjB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,IAAqB;IACvE,0DAA0D;IAC1D,IAAI,cAAc,GAAG,IAAI,CAAC;IAE1B,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,cAAc,GAAG,MAAM,CAAC;QAC1B,CAAC;aAAM,IAAI,iBAAiB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChD,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7C,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,QAAQ,cAAc,EAAE,CAAC;QACvB,KAAK,MAAM;YACT,OAAO,0BAA0B,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,SAAS;YACZ,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QACjD,KAAK,SAAS;YACZ,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Handling Utilities
|
|
3
|
+
*
|
|
4
|
+
* Custom error types and formatting for consistent error handling
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* GraphQL error detail structure
|
|
8
|
+
*/
|
|
9
|
+
type GraphQLErrorDetail = {
|
|
10
|
+
message: string;
|
|
11
|
+
locations?: Array<{
|
|
12
|
+
line: number;
|
|
13
|
+
column: number;
|
|
14
|
+
}>;
|
|
15
|
+
path?: Array<string | number>;
|
|
16
|
+
extensions?: Record<string, unknown>;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* GraphQL-specific error with response details
|
|
20
|
+
*/
|
|
21
|
+
export declare class GraphQLError extends Error {
|
|
22
|
+
errors: GraphQLErrorDetail[];
|
|
23
|
+
constructor(message: string, errors: GraphQLErrorDetail[]);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Input validation error
|
|
27
|
+
*/
|
|
28
|
+
export declare class ValidationError extends Error {
|
|
29
|
+
constructor(message: string);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Cache operation error
|
|
33
|
+
*/
|
|
34
|
+
export declare class CacheError extends Error {
|
|
35
|
+
constructor(message: string);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Network/connection error
|
|
39
|
+
*/
|
|
40
|
+
export declare class NetworkError extends Error {
|
|
41
|
+
constructor(message: string);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Format error for user-facing display
|
|
45
|
+
*/
|
|
46
|
+
export declare function formatError(error: unknown): string;
|
|
47
|
+
/**
|
|
48
|
+
* MCP error response type
|
|
49
|
+
*/
|
|
50
|
+
type MCPErrorResponse = {
|
|
51
|
+
content: Array<{
|
|
52
|
+
type: 'text';
|
|
53
|
+
text: string;
|
|
54
|
+
}>;
|
|
55
|
+
isError: true;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Standard error response for MCP tools
|
|
59
|
+
*/
|
|
60
|
+
export declare function errorResponse(error: unknown): MCPErrorResponse;
|
|
61
|
+
/**
|
|
62
|
+
* Log error to stderr (Claude Code captures this)
|
|
63
|
+
*/
|
|
64
|
+
export declare function logError(error: unknown, context?: string): void;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,KAAK,kBAAkB,GAAG;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC,CAAC;AAEF;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;IAG5B,MAAM,EAAE,kBAAkB,EAAE;gBADnC,OAAO,EAAE,MAAM,EACR,MAAM,EAAE,kBAAkB,EAAE;CAKtC;AAED;;GAEG;AACH,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,KAAK;gBACvB,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM;CAI5B;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAsBlD;AAED;;GAEG;AACH,KAAK,gBAAgB,GAAG;IACtB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/C,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAU9D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAG/D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Handling Utilities
|
|
3
|
+
*
|
|
4
|
+
* Custom error types and formatting for consistent error handling
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* GraphQL-specific error with response details
|
|
8
|
+
*/
|
|
9
|
+
export class GraphQLError extends Error {
|
|
10
|
+
errors;
|
|
11
|
+
constructor(message, errors) {
|
|
12
|
+
super(message);
|
|
13
|
+
this.errors = errors;
|
|
14
|
+
this.name = 'GraphQLError';
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Input validation error
|
|
19
|
+
*/
|
|
20
|
+
export class ValidationError extends Error {
|
|
21
|
+
constructor(message) {
|
|
22
|
+
super(message);
|
|
23
|
+
this.name = 'ValidationError';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Cache operation error
|
|
28
|
+
*/
|
|
29
|
+
export class CacheError extends Error {
|
|
30
|
+
constructor(message) {
|
|
31
|
+
super(message);
|
|
32
|
+
this.name = 'CacheError';
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Network/connection error
|
|
37
|
+
*/
|
|
38
|
+
export class NetworkError extends Error {
|
|
39
|
+
constructor(message) {
|
|
40
|
+
super(message);
|
|
41
|
+
this.name = 'NetworkError';
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Format error for user-facing display
|
|
46
|
+
*/
|
|
47
|
+
export function formatError(error) {
|
|
48
|
+
if (error instanceof GraphQLError) {
|
|
49
|
+
return `GraphQL Error: ${error.message}\n${JSON.stringify(error.errors, null, 2)}`;
|
|
50
|
+
}
|
|
51
|
+
if (error instanceof ValidationError) {
|
|
52
|
+
return `Validation Error: ${error.message}`;
|
|
53
|
+
}
|
|
54
|
+
if (error instanceof CacheError) {
|
|
55
|
+
return `Cache Error: ${error.message}`;
|
|
56
|
+
}
|
|
57
|
+
if (error instanceof NetworkError) {
|
|
58
|
+
return `Network Error: ${error.message}`;
|
|
59
|
+
}
|
|
60
|
+
if (error instanceof Error) {
|
|
61
|
+
return `Error: ${error.message}`;
|
|
62
|
+
}
|
|
63
|
+
return `Unknown Error: ${String(error)}`;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Standard error response for MCP tools
|
|
67
|
+
*/
|
|
68
|
+
export function errorResponse(error) {
|
|
69
|
+
return {
|
|
70
|
+
content: [
|
|
71
|
+
{
|
|
72
|
+
type: 'text',
|
|
73
|
+
text: formatError(error),
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
isError: true,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Log error to stderr (Claude Code captures this)
|
|
81
|
+
*/
|
|
82
|
+
export function logError(error, context) {
|
|
83
|
+
const prefix = context ? `[${context}]` : '';
|
|
84
|
+
console.error(`${prefix} ${formatError(error)}`);
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAYH;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IAG5B;IAFT,YACE,OAAe,EACR,MAA4B;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAFR,WAAM,GAAN,MAAM,CAAsB;QAGnC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,KAAK;IACrC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,kBAAkB,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACrF,CAAC;IAED,IAAI,KAAK,YAAY,eAAe,EAAE,CAAC;QACrC,OAAO,qBAAqB,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;QAChC,OAAO,gBAAgB,KAAK,CAAC,OAAO,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,KAAK,YAAY,YAAY,EAAE,CAAC;QAClC,OAAO,kBAAkB,KAAK,CAAC,OAAO,EAAE,CAAC;IAC3C,CAAC;IAED,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;QAC3B,OAAO,UAAU,KAAK,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,OAAO,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3C,CAAC;AAUD;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC;aACzB;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAc,EAAE,OAAgB;IACvD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACnD,CAAC"}
|