@goodsamsoftware/freshbooks-mcp 1.0.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 +21 -0
- package/README.md +357 -0
- package/dist/auth/config.d.ts +57 -0
- package/dist/auth/config.d.ts.map +1 -0
- package/dist/auth/config.js +118 -0
- package/dist/auth/config.js.map +1 -0
- package/dist/auth/index.d.ts +47 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +46 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth.d.ts +93 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +279 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/token-store.d.ts +80 -0
- package/dist/auth/token-store.d.ts.map +1 -0
- package/dist/auth/token-store.js +204 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/auth/types.d.ts +76 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +20 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/client/freshbooks-client.d.ts +99 -0
- package/dist/client/freshbooks-client.d.ts.map +1 -0
- package/dist/client/freshbooks-client.js +283 -0
- package/dist/client/freshbooks-client.js.map +1 -0
- package/dist/client/index.d.ts +5 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +5 -0
- package/dist/client/index.js.map +1 -0
- package/dist/config/index.d.ts +17 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +81 -0
- package/dist/config/index.js.map +1 -0
- package/dist/errors/documentation.d.ts +57 -0
- package/dist/errors/documentation.d.ts.map +1 -0
- package/dist/errors/documentation.js +390 -0
- package/dist/errors/documentation.js.map +1 -0
- package/dist/errors/error-codes.d.ts +45 -0
- package/dist/errors/error-codes.d.ts.map +1 -0
- package/dist/errors/error-codes.js +94 -0
- package/dist/errors/error-codes.js.map +1 -0
- package/dist/errors/error-handler.d.ts +127 -0
- package/dist/errors/error-handler.d.ts.map +1 -0
- package/dist/errors/error-handler.js +283 -0
- package/dist/errors/error-handler.js.map +1 -0
- package/dist/errors/error-mapper.d.ts +68 -0
- package/dist/errors/error-mapper.d.ts.map +1 -0
- package/dist/errors/error-mapper.js +449 -0
- package/dist/errors/error-mapper.js.map +1 -0
- package/dist/errors/index.d.ts +37 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +41 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/response-formatter.d.ts +109 -0
- package/dist/errors/response-formatter.d.ts.map +1 -0
- package/dist/errors/response-formatter.js +232 -0
- package/dist/errors/response-formatter.js.map +1 -0
- package/dist/errors/types.d.ts +194 -0
- package/dist/errors/types.d.ts.map +1 -0
- package/dist/errors/types.js +134 -0
- package/dist/errors/types.js.map +1 -0
- package/dist/server.d.ts +10 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +263 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/base-tool.d.ts +146 -0
- package/dist/tools/base-tool.d.ts.map +1 -0
- package/dist/tools/base-tool.js +161 -0
- package/dist/tools/base-tool.js.map +1 -0
- package/dist/tools/bill/bill-archive.d.ts +40 -0
- package/dist/tools/bill/bill-archive.d.ts.map +1 -0
- package/dist/tools/bill/bill-archive.js +68 -0
- package/dist/tools/bill/bill-archive.js.map +1 -0
- package/dist/tools/bill/bill-create.d.ts +178 -0
- package/dist/tools/bill/bill-create.d.ts.map +1 -0
- package/dist/tools/bill/bill-create.js +70 -0
- package/dist/tools/bill/bill-create.js.map +1 -0
- package/dist/tools/bill/bill-delete.d.ts +40 -0
- package/dist/tools/bill/bill-delete.d.ts.map +1 -0
- package/dist/tools/bill/bill-delete.js +67 -0
- package/dist/tools/bill/bill-delete.js.map +1 -0
- package/dist/tools/bill/bill-list.d.ts +249 -0
- package/dist/tools/bill/bill-list.d.ts.map +1 -0
- package/dist/tools/bill/bill-list.js +114 -0
- package/dist/tools/bill/bill-list.js.map +1 -0
- package/dist/tools/bill/bill-single.d.ts +142 -0
- package/dist/tools/bill/bill-single.d.ts.map +1 -0
- package/dist/tools/bill/bill-single.js +62 -0
- package/dist/tools/bill/bill-single.js.map +1 -0
- package/dist/tools/bill/index.d.ts +11 -0
- package/dist/tools/bill/index.d.ts.map +1 -0
- package/dist/tools/bill/index.js +13 -0
- package/dist/tools/bill/index.js.map +1 -0
- package/dist/tools/bill/schemas.d.ts +609 -0
- package/dist/tools/bill/schemas.d.ts.map +1 -0
- package/dist/tools/bill/schemas.js +124 -0
- package/dist/tools/bill/schemas.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-create.d.ts +103 -0
- package/dist/tools/bill-payment/billpayment-create.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-create.js +67 -0
- package/dist/tools/bill-payment/billpayment-create.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-delete.d.ts +40 -0
- package/dist/tools/bill-payment/billpayment-delete.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-delete.js +67 -0
- package/dist/tools/bill-payment/billpayment-delete.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-list.d.ts +148 -0
- package/dist/tools/bill-payment/billpayment-list.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-list.js +111 -0
- package/dist/tools/bill-payment/billpayment-list.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-single.d.ts +76 -0
- package/dist/tools/bill-payment/billpayment-single.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-single.js +62 -0
- package/dist/tools/bill-payment/billpayment-single.js.map +1 -0
- package/dist/tools/bill-payment/billpayment-update.d.ts +103 -0
- package/dist/tools/bill-payment/billpayment-update.d.ts.map +1 -0
- package/dist/tools/bill-payment/billpayment-update.js +67 -0
- package/dist/tools/bill-payment/billpayment-update.js.map +1 -0
- package/dist/tools/bill-payment/index.d.ts +11 -0
- package/dist/tools/bill-payment/index.d.ts.map +1 -0
- package/dist/tools/bill-payment/index.js +13 -0
- package/dist/tools/bill-payment/index.js.map +1 -0
- package/dist/tools/bill-payment/schemas.d.ts +381 -0
- package/dist/tools/bill-payment/schemas.d.ts.map +1 -0
- package/dist/tools/bill-payment/schemas.js +113 -0
- package/dist/tools/bill-payment/schemas.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-create.d.ts +139 -0
- package/dist/tools/bill-vendor/billvendor-create.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-create.js +72 -0
- package/dist/tools/bill-vendor/billvendor-create.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-delete.d.ts +40 -0
- package/dist/tools/bill-vendor/billvendor-delete.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-delete.js +67 -0
- package/dist/tools/bill-vendor/billvendor-delete.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-list.d.ts +179 -0
- package/dist/tools/bill-vendor/billvendor-list.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-list.js +109 -0
- package/dist/tools/bill-vendor/billvendor-list.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-single.d.ts +94 -0
- package/dist/tools/bill-vendor/billvendor-single.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-single.js +62 -0
- package/dist/tools/bill-vendor/billvendor-single.js.map +1 -0
- package/dist/tools/bill-vendor/billvendor-update.d.ts +142 -0
- package/dist/tools/bill-vendor/billvendor-update.d.ts.map +1 -0
- package/dist/tools/bill-vendor/billvendor-update.js +72 -0
- package/dist/tools/bill-vendor/billvendor-update.js.map +1 -0
- package/dist/tools/bill-vendor/index.d.ts +11 -0
- package/dist/tools/bill-vendor/index.d.ts.map +1 -0
- package/dist/tools/bill-vendor/index.js +13 -0
- package/dist/tools/bill-vendor/index.js.map +1 -0
- package/dist/tools/bill-vendor/schemas.d.ts +483 -0
- package/dist/tools/bill-vendor/schemas.d.ts.map +1 -0
- package/dist/tools/bill-vendor/schemas.js +136 -0
- package/dist/tools/bill-vendor/schemas.js.map +1 -0
- package/dist/tools/callback/callback-create.d.ts +52 -0
- package/dist/tools/callback/callback-create.d.ts.map +1 -0
- package/dist/tools/callback/callback-create.js +73 -0
- package/dist/tools/callback/callback-create.js.map +1 -0
- package/dist/tools/callback/callback-delete.d.ts +37 -0
- package/dist/tools/callback/callback-delete.d.ts.map +1 -0
- package/dist/tools/callback/callback-delete.js +57 -0
- package/dist/tools/callback/callback-delete.js.map +1 -0
- package/dist/tools/callback/callback-list.d.ts +100 -0
- package/dist/tools/callback/callback-list.d.ts.map +1 -0
- package/dist/tools/callback/callback-list.js +84 -0
- package/dist/tools/callback/callback-list.js.map +1 -0
- package/dist/tools/callback/callback-resend-verification.d.ts +49 -0
- package/dist/tools/callback/callback-resend-verification.d.ts.map +1 -0
- package/dist/tools/callback/callback-resend-verification.js +63 -0
- package/dist/tools/callback/callback-resend-verification.js.map +1 -0
- package/dist/tools/callback/callback-single.d.ts +49 -0
- package/dist/tools/callback/callback-single.d.ts.map +1 -0
- package/dist/tools/callback/callback-single.js +53 -0
- package/dist/tools/callback/callback-single.js.map +1 -0
- package/dist/tools/callback/callback-update.d.ts +55 -0
- package/dist/tools/callback/callback-update.d.ts.map +1 -0
- package/dist/tools/callback/callback-update.js +62 -0
- package/dist/tools/callback/callback-update.js.map +1 -0
- package/dist/tools/callback/callback-verify.d.ts +43 -0
- package/dist/tools/callback/callback-verify.d.ts.map +1 -0
- package/dist/tools/callback/callback-verify.js +69 -0
- package/dist/tools/callback/callback-verify.js.map +1 -0
- package/dist/tools/callback/index.d.ts +13 -0
- package/dist/tools/callback/index.d.ts.map +1 -0
- package/dist/tools/callback/index.js +15 -0
- package/dist/tools/callback/index.js.map +1 -0
- package/dist/tools/callback/schemas.d.ts +284 -0
- package/dist/tools/callback/schemas.d.ts.map +1 -0
- package/dist/tools/callback/schemas.js +114 -0
- package/dist/tools/callback/schemas.js.map +1 -0
- package/dist/tools/client/client-create.d.ts +211 -0
- package/dist/tools/client/client-create.d.ts.map +1 -0
- package/dist/tools/client/client-create.js +147 -0
- package/dist/tools/client/client-create.js.map +1 -0
- package/dist/tools/client/client-delete.d.ts +40 -0
- package/dist/tools/client/client-delete.d.ts.map +1 -0
- package/dist/tools/client/client-delete.js +73 -0
- package/dist/tools/client/client-delete.js.map +1 -0
- package/dist/tools/client/client-list.d.ts +264 -0
- package/dist/tools/client/client-list.d.ts.map +1 -0
- package/dist/tools/client/client-list.js +131 -0
- package/dist/tools/client/client-list.js.map +1 -0
- package/dist/tools/client/client-single.d.ts +133 -0
- package/dist/tools/client/client-single.d.ts.map +1 -0
- package/dist/tools/client/client-single.js +67 -0
- package/dist/tools/client/client-single.js.map +1 -0
- package/dist/tools/client/client-update.d.ts +217 -0
- package/dist/tools/client/client-update.d.ts.map +1 -0
- package/dist/tools/client/client-update.js +146 -0
- package/dist/tools/client/client-update.js.map +1 -0
- package/dist/tools/client/index.d.ts +11 -0
- package/dist/tools/client/index.d.ts.map +1 -0
- package/dist/tools/client/index.js +13 -0
- package/dist/tools/client/index.js.map +1 -0
- package/dist/tools/client/schemas.d.ts +759 -0
- package/dist/tools/client/schemas.d.ts.map +1 -0
- package/dist/tools/client/schemas.js +241 -0
- package/dist/tools/client/schemas.js.map +1 -0
- package/dist/tools/credit-note/creditnote-create.d.ts +448 -0
- package/dist/tools/credit-note/creditnote-create.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-create.js +88 -0
- package/dist/tools/credit-note/creditnote-create.js.map +1 -0
- package/dist/tools/credit-note/creditnote-delete.d.ts +37 -0
- package/dist/tools/credit-note/creditnote-delete.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-delete.js +57 -0
- package/dist/tools/credit-note/creditnote-delete.js.map +1 -0
- package/dist/tools/credit-note/creditnote-list.d.ts +627 -0
- package/dist/tools/credit-note/creditnote-list.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-list.js +106 -0
- package/dist/tools/credit-note/creditnote-list.js.map +1 -0
- package/dist/tools/credit-note/creditnote-single.d.ts +358 -0
- package/dist/tools/credit-note/creditnote-single.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-single.js +60 -0
- package/dist/tools/credit-note/creditnote-single.js.map +1 -0
- package/dist/tools/credit-note/creditnote-update.d.ts +442 -0
- package/dist/tools/credit-note/creditnote-update.d.ts.map +1 -0
- package/dist/tools/credit-note/creditnote-update.js +82 -0
- package/dist/tools/credit-note/creditnote-update.js.map +1 -0
- package/dist/tools/credit-note/index.d.ts +11 -0
- package/dist/tools/credit-note/index.d.ts.map +1 -0
- package/dist/tools/credit-note/index.js +13 -0
- package/dist/tools/credit-note/index.js.map +1 -0
- package/dist/tools/credit-note/schemas.d.ts +1599 -0
- package/dist/tools/credit-note/schemas.d.ts.map +1 -0
- package/dist/tools/credit-note/schemas.js +196 -0
- package/dist/tools/credit-note/schemas.js.map +1 -0
- package/dist/tools/expense/expense-create.d.ts +196 -0
- package/dist/tools/expense/expense-create.d.ts.map +1 -0
- package/dist/tools/expense/expense-create.js +103 -0
- package/dist/tools/expense/expense-create.js.map +1 -0
- package/dist/tools/expense/expense-delete.d.ts +40 -0
- package/dist/tools/expense/expense-delete.d.ts.map +1 -0
- package/dist/tools/expense/expense-delete.js +73 -0
- package/dist/tools/expense/expense-delete.js.map +1 -0
- package/dist/tools/expense/expense-list.d.ts +264 -0
- package/dist/tools/expense/expense-list.d.ts.map +1 -0
- package/dist/tools/expense/expense-list.js +126 -0
- package/dist/tools/expense/expense-list.js.map +1 -0
- package/dist/tools/expense/expense-single.d.ts +145 -0
- package/dist/tools/expense/expense-single.d.ts.map +1 -0
- package/dist/tools/expense/expense-single.js +63 -0
- package/dist/tools/expense/expense-single.js.map +1 -0
- package/dist/tools/expense/expense-update.d.ts +199 -0
- package/dist/tools/expense/expense-update.d.ts.map +1 -0
- package/dist/tools/expense/expense-update.js +108 -0
- package/dist/tools/expense/expense-update.js.map +1 -0
- package/dist/tools/expense/index.d.ts +11 -0
- package/dist/tools/expense/index.d.ts.map +1 -0
- package/dist/tools/expense/index.js +13 -0
- package/dist/tools/expense/index.js.map +1 -0
- package/dist/tools/expense/schemas.d.ts +667 -0
- package/dist/tools/expense/schemas.d.ts.map +1 -0
- package/dist/tools/expense/schemas.js +142 -0
- package/dist/tools/expense/schemas.js.map +1 -0
- package/dist/tools/expense-category/expensecategory-list.d.ts +113 -0
- package/dist/tools/expense-category/expensecategory-list.d.ts.map +1 -0
- package/dist/tools/expense-category/expensecategory-list.js +113 -0
- package/dist/tools/expense-category/expensecategory-list.js.map +1 -0
- package/dist/tools/expense-category/expensecategory-single.d.ts +58 -0
- package/dist/tools/expense-category/expensecategory-single.d.ts.map +1 -0
- package/dist/tools/expense-category/expensecategory-single.js +66 -0
- package/dist/tools/expense-category/expensecategory-single.js.map +1 -0
- package/dist/tools/expense-category/index.d.ts +9 -0
- package/dist/tools/expense-category/index.d.ts.map +1 -0
- package/dist/tools/expense-category/index.js +11 -0
- package/dist/tools/expense-category/index.js.map +1 -0
- package/dist/tools/expense-category/schemas.d.ts +184 -0
- package/dist/tools/expense-category/schemas.d.ts.map +1 -0
- package/dist/tools/expense-category/schemas.js +58 -0
- package/dist/tools/expense-category/schemas.js.map +1 -0
- package/dist/tools/index.d.ts +53 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +98 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/invoice/index.d.ts +12 -0
- package/dist/tools/invoice/index.d.ts.map +1 -0
- package/dist/tools/invoice/index.js +14 -0
- package/dist/tools/invoice/index.js.map +1 -0
- package/dist/tools/invoice/invoice-create.d.ts +367 -0
- package/dist/tools/invoice/invoice-create.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-create.js +115 -0
- package/dist/tools/invoice/invoice-create.js.map +1 -0
- package/dist/tools/invoice/invoice-delete.d.ts +40 -0
- package/dist/tools/invoice/invoice-delete.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-delete.js +75 -0
- package/dist/tools/invoice/invoice-delete.js.map +1 -0
- package/dist/tools/invoice/invoice-list.d.ts +439 -0
- package/dist/tools/invoice/invoice-list.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-list.js +126 -0
- package/dist/tools/invoice/invoice-list.js.map +1 -0
- package/dist/tools/invoice/invoice-share-link.d.ts +40 -0
- package/dist/tools/invoice/invoice-share-link.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-share-link.js +89 -0
- package/dist/tools/invoice/invoice-share-link.js.map +1 -0
- package/dist/tools/invoice/invoice-single.d.ts +265 -0
- package/dist/tools/invoice/invoice-single.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-single.js +66 -0
- package/dist/tools/invoice/invoice-single.js.map +1 -0
- package/dist/tools/invoice/invoice-update.d.ts +373 -0
- package/dist/tools/invoice/invoice-update.d.ts.map +1 -0
- package/dist/tools/invoice/invoice-update.js +122 -0
- package/dist/tools/invoice/invoice-update.js.map +1 -0
- package/dist/tools/invoice/schemas.d.ts +1414 -0
- package/dist/tools/invoice/schemas.d.ts.map +1 -0
- package/dist/tools/invoice/schemas.js +269 -0
- package/dist/tools/invoice/schemas.js.map +1 -0
- package/dist/tools/item/index.d.ts +10 -0
- package/dist/tools/item/index.d.ts.map +1 -0
- package/dist/tools/item/index.js +12 -0
- package/dist/tools/item/index.js.map +1 -0
- package/dist/tools/item/item-create.d.ts +136 -0
- package/dist/tools/item/item-create.d.ts.map +1 -0
- package/dist/tools/item/item-create.js +71 -0
- package/dist/tools/item/item-create.js.map +1 -0
- package/dist/tools/item/item-list.d.ts +178 -0
- package/dist/tools/item/item-list.d.ts.map +1 -0
- package/dist/tools/item/item-list.js +112 -0
- package/dist/tools/item/item-list.js.map +1 -0
- package/dist/tools/item/item-single.d.ts +94 -0
- package/dist/tools/item/item-single.d.ts.map +1 -0
- package/dist/tools/item/item-single.js +62 -0
- package/dist/tools/item/item-single.js.map +1 -0
- package/dist/tools/item/item-update.d.ts +139 -0
- package/dist/tools/item/item-update.d.ts.map +1 -0
- package/dist/tools/item/item-update.js +74 -0
- package/dist/tools/item/item-update.js.map +1 -0
- package/dist/tools/item/schemas.d.ts +454 -0
- package/dist/tools/item/schemas.d.ts.map +1 -0
- package/dist/tools/item/schemas.js +116 -0
- package/dist/tools/item/schemas.js.map +1 -0
- package/dist/tools/journal-entry/index.d.ts +7 -0
- package/dist/tools/journal-entry/index.d.ts.map +1 -0
- package/dist/tools/journal-entry/index.js +9 -0
- package/dist/tools/journal-entry/index.js.map +1 -0
- package/dist/tools/journal-entry/journalentry-create.d.ts +114 -0
- package/dist/tools/journal-entry/journalentry-create.d.ts.map +1 -0
- package/dist/tools/journal-entry/journalentry-create.js +98 -0
- package/dist/tools/journal-entry/journalentry-create.js.map +1 -0
- package/dist/tools/journal-entry/schemas.d.ts +182 -0
- package/dist/tools/journal-entry/schemas.d.ts.map +1 -0
- package/dist/tools/journal-entry/schemas.js +43 -0
- package/dist/tools/journal-entry/schemas.js.map +1 -0
- package/dist/tools/journal-entry-account/index.d.ts +7 -0
- package/dist/tools/journal-entry-account/index.d.ts.map +1 -0
- package/dist/tools/journal-entry-account/index.js +9 -0
- package/dist/tools/journal-entry-account/index.js.map +1 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.d.ts +190 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.d.ts.map +1 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.js +102 -0
- package/dist/tools/journal-entry-account/journalentryaccount-list.js.map +1 -0
- package/dist/tools/journal-entry-account/schemas.d.ts +344 -0
- package/dist/tools/journal-entry-account/schemas.d.ts.map +1 -0
- package/dist/tools/journal-entry-account/schemas.js +65 -0
- package/dist/tools/journal-entry-account/schemas.js.map +1 -0
- package/dist/tools/metadata.d.ts +49 -0
- package/dist/tools/metadata.d.ts.map +1 -0
- package/dist/tools/metadata.js +317 -0
- package/dist/tools/metadata.js.map +1 -0
- package/dist/tools/other-income/index.d.ts +11 -0
- package/dist/tools/other-income/index.d.ts.map +1 -0
- package/dist/tools/other-income/index.js +13 -0
- package/dist/tools/other-income/index.js.map +1 -0
- package/dist/tools/other-income/otherincome-create.d.ts +152 -0
- package/dist/tools/other-income/otherincome-create.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-create.js +89 -0
- package/dist/tools/other-income/otherincome-create.js.map +1 -0
- package/dist/tools/other-income/otherincome-delete.d.ts +37 -0
- package/dist/tools/other-income/otherincome-delete.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-delete.js +57 -0
- package/dist/tools/other-income/otherincome-delete.js.map +1 -0
- package/dist/tools/other-income/otherincome-list.d.ts +186 -0
- package/dist/tools/other-income/otherincome-list.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-list.js +107 -0
- package/dist/tools/other-income/otherincome-list.js.map +1 -0
- package/dist/tools/other-income/otherincome-single.d.ts +99 -0
- package/dist/tools/other-income/otherincome-single.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-single.js +53 -0
- package/dist/tools/other-income/otherincome-single.js.map +1 -0
- package/dist/tools/other-income/otherincome-update.d.ts +155 -0
- package/dist/tools/other-income/otherincome-update.d.ts.map +1 -0
- package/dist/tools/other-income/otherincome-update.js +84 -0
- package/dist/tools/other-income/otherincome-update.js.map +1 -0
- package/dist/tools/other-income/schemas.d.ts +510 -0
- package/dist/tools/other-income/schemas.d.ts.map +1 -0
- package/dist/tools/other-income/schemas.js +141 -0
- package/dist/tools/other-income/schemas.js.map +1 -0
- package/dist/tools/payment/index.d.ts +11 -0
- package/dist/tools/payment/index.d.ts.map +1 -0
- package/dist/tools/payment/index.js +13 -0
- package/dist/tools/payment/index.js.map +1 -0
- package/dist/tools/payment/payment-create.d.ts +127 -0
- package/dist/tools/payment/payment-create.d.ts.map +1 -0
- package/dist/tools/payment/payment-create.js +84 -0
- package/dist/tools/payment/payment-create.js.map +1 -0
- package/dist/tools/payment/payment-delete.d.ts +40 -0
- package/dist/tools/payment/payment-delete.d.ts.map +1 -0
- package/dist/tools/payment/payment-delete.js +67 -0
- package/dist/tools/payment/payment-delete.js.map +1 -0
- package/dist/tools/payment/payment-list.d.ts +186 -0
- package/dist/tools/payment/payment-list.d.ts.map +1 -0
- package/dist/tools/payment/payment-list.js +113 -0
- package/dist/tools/payment/payment-list.js.map +1 -0
- package/dist/tools/payment/payment-single.d.ts +97 -0
- package/dist/tools/payment/payment-single.d.ts.map +1 -0
- package/dist/tools/payment/payment-single.js +62 -0
- package/dist/tools/payment/payment-single.js.map +1 -0
- package/dist/tools/payment/payment-update.d.ts +124 -0
- package/dist/tools/payment/payment-update.d.ts.map +1 -0
- package/dist/tools/payment/payment-update.js +79 -0
- package/dist/tools/payment/payment-update.js.map +1 -0
- package/dist/tools/payment/schemas.d.ts +445 -0
- package/dist/tools/payment/schemas.d.ts.map +1 -0
- package/dist/tools/payment/schemas.js +126 -0
- package/dist/tools/payment/schemas.js.map +1 -0
- package/dist/tools/payment-options/index.d.ts +9 -0
- package/dist/tools/payment-options/index.d.ts.map +1 -0
- package/dist/tools/payment-options/index.js +11 -0
- package/dist/tools/payment-options/index.js.map +1 -0
- package/dist/tools/payment-options/paymentoptions-create.d.ts +91 -0
- package/dist/tools/payment-options/paymentoptions-create.d.ts.map +1 -0
- package/dist/tools/payment-options/paymentoptions-create.js +71 -0
- package/dist/tools/payment-options/paymentoptions-create.js.map +1 -0
- package/dist/tools/payment-options/paymentoptions-default.d.ts +43 -0
- package/dist/tools/payment-options/paymentoptions-default.d.ts.map +1 -0
- package/dist/tools/payment-options/paymentoptions-default.js +64 -0
- package/dist/tools/payment-options/paymentoptions-default.js.map +1 -0
- package/dist/tools/payment-options/paymentoptions-single.d.ts +76 -0
- package/dist/tools/payment-options/paymentoptions-single.d.ts.map +1 -0
- package/dist/tools/payment-options/paymentoptions-single.js +58 -0
- package/dist/tools/payment-options/paymentoptions-single.js.map +1 -0
- package/dist/tools/payment-options/schemas.d.ts +197 -0
- package/dist/tools/payment-options/schemas.d.ts.map +1 -0
- package/dist/tools/payment-options/schemas.js +69 -0
- package/dist/tools/payment-options/schemas.js.map +1 -0
- package/dist/tools/project/index.d.ts +11 -0
- package/dist/tools/project/index.d.ts.map +1 -0
- package/dist/tools/project/index.js +13 -0
- package/dist/tools/project/index.js.map +1 -0
- package/dist/tools/project/project-create.d.ts +142 -0
- package/dist/tools/project/project-create.d.ts.map +1 -0
- package/dist/tools/project/project-create.js +100 -0
- package/dist/tools/project/project-create.js.map +1 -0
- package/dist/tools/project/project-delete.d.ts +44 -0
- package/dist/tools/project/project-delete.d.ts.map +1 -0
- package/dist/tools/project/project-delete.js +80 -0
- package/dist/tools/project/project-delete.js.map +1 -0
- package/dist/tools/project/project-list.d.ts +227 -0
- package/dist/tools/project/project-list.d.ts.map +1 -0
- package/dist/tools/project/project-list.js +118 -0
- package/dist/tools/project/project-list.js.map +1 -0
- package/dist/tools/project/project-single.d.ts +115 -0
- package/dist/tools/project/project-single.d.ts.map +1 -0
- package/dist/tools/project/project-single.js +63 -0
- package/dist/tools/project/project-single.js.map +1 -0
- package/dist/tools/project/project-update.d.ts +151 -0
- package/dist/tools/project/project-update.d.ts.map +1 -0
- package/dist/tools/project/project-update.js +106 -0
- package/dist/tools/project/project-update.js.map +1 -0
- package/dist/tools/project/schemas.d.ts +588 -0
- package/dist/tools/project/schemas.d.ts.map +1 -0
- package/dist/tools/project/schemas.js +196 -0
- package/dist/tools/project/schemas.js.map +1 -0
- package/dist/tools/report/index.d.ts +9 -0
- package/dist/tools/report/index.d.ts.map +1 -0
- package/dist/tools/report/index.js +11 -0
- package/dist/tools/report/index.js.map +1 -0
- package/dist/tools/report/report-payments-collected.d.ts +118 -0
- package/dist/tools/report/report-payments-collected.d.ts.map +1 -0
- package/dist/tools/report/report-payments-collected.js +89 -0
- package/dist/tools/report/report-payments-collected.js.map +1 -0
- package/dist/tools/report/report-profit-loss.d.ts +139 -0
- package/dist/tools/report/report-profit-loss.d.ts.map +1 -0
- package/dist/tools/report/report-profit-loss.js +98 -0
- package/dist/tools/report/report-profit-loss.js.map +1 -0
- package/dist/tools/report/report-tax-summary.d.ts +155 -0
- package/dist/tools/report/report-tax-summary.d.ts.map +1 -0
- package/dist/tools/report/report-tax-summary.js +100 -0
- package/dist/tools/report/report-tax-summary.js.map +1 -0
- package/dist/tools/report/schemas.d.ts +859 -0
- package/dist/tools/report/schemas.d.ts.map +1 -0
- package/dist/tools/report/schemas.js +126 -0
- package/dist/tools/report/schemas.js.map +1 -0
- package/dist/tools/service/index.d.ts +12 -0
- package/dist/tools/service/index.d.ts.map +1 -0
- package/dist/tools/service/index.js +14 -0
- package/dist/tools/service/index.js.map +1 -0
- package/dist/tools/service/schemas.d.ts +159 -0
- package/dist/tools/service/schemas.d.ts.map +1 -0
- package/dist/tools/service/schemas.js +62 -0
- package/dist/tools/service/schemas.js.map +1 -0
- package/dist/tools/service/service-create.d.ts +52 -0
- package/dist/tools/service/service-create.d.ts.map +1 -0
- package/dist/tools/service/service-create.js +82 -0
- package/dist/tools/service/service-create.js.map +1 -0
- package/dist/tools/service/service-list.d.ts +119 -0
- package/dist/tools/service/service-list.d.ts.map +1 -0
- package/dist/tools/service/service-list.js +99 -0
- package/dist/tools/service/service-list.js.map +1 -0
- package/dist/tools/service/service-rate-get.d.ts +63 -0
- package/dist/tools/service/service-rate-get.d.ts.map +1 -0
- package/dist/tools/service/service-rate-get.js +66 -0
- package/dist/tools/service/service-rate-get.js.map +1 -0
- package/dist/tools/service/service-rate-set.d.ts +76 -0
- package/dist/tools/service/service-rate-set.d.ts.map +1 -0
- package/dist/tools/service/service-rate-set.js +91 -0
- package/dist/tools/service/service-rate-set.js.map +1 -0
- package/dist/tools/service/service-single.d.ts +45 -0
- package/dist/tools/service/service-single.d.ts.map +1 -0
- package/dist/tools/service/service-single.js +63 -0
- package/dist/tools/service/service-single.js.map +1 -0
- package/dist/tools/task/index.d.ts +12 -0
- package/dist/tools/task/index.d.ts.map +1 -0
- package/dist/tools/task/index.js +14 -0
- package/dist/tools/task/index.js.map +1 -0
- package/dist/tools/task/schemas.d.ts +299 -0
- package/dist/tools/task/schemas.d.ts.map +1 -0
- package/dist/tools/task/schemas.js +89 -0
- package/dist/tools/task/schemas.js.map +1 -0
- package/dist/tools/task/task-create.d.ts +101 -0
- package/dist/tools/task/task-create.d.ts.map +1 -0
- package/dist/tools/task/task-create.js +77 -0
- package/dist/tools/task/task-create.js.map +1 -0
- package/dist/tools/task/task-delete.d.ts +39 -0
- package/dist/tools/task/task-delete.d.ts.map +1 -0
- package/dist/tools/task/task-delete.js +70 -0
- package/dist/tools/task/task-delete.js.map +1 -0
- package/dist/tools/task/task-list.d.ts +157 -0
- package/dist/tools/task/task-list.d.ts.map +1 -0
- package/dist/tools/task/task-list.js +78 -0
- package/dist/tools/task/task-list.js.map +1 -0
- package/dist/tools/task/task-single.d.ts +77 -0
- package/dist/tools/task/task-single.d.ts.map +1 -0
- package/dist/tools/task/task-single.js +56 -0
- package/dist/tools/task/task-single.js.map +1 -0
- package/dist/tools/task/task-update.d.ts +107 -0
- package/dist/tools/task/task-update.d.ts.map +1 -0
- package/dist/tools/task/task-update.js +87 -0
- package/dist/tools/task/task-update.js.map +1 -0
- package/dist/tools/time-entry/index.d.ts +11 -0
- package/dist/tools/time-entry/index.d.ts.map +1 -0
- package/dist/tools/time-entry/index.js +11 -0
- package/dist/tools/time-entry/index.js.map +1 -0
- package/dist/tools/time-entry/schemas.d.ts +598 -0
- package/dist/tools/time-entry/schemas.d.ts.map +1 -0
- package/dist/tools/time-entry/schemas.js +217 -0
- package/dist/tools/time-entry/schemas.js.map +1 -0
- package/dist/tools/time-entry/timeentry-create.d.ts +142 -0
- package/dist/tools/time-entry/timeentry-create.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-create.js +137 -0
- package/dist/tools/time-entry/timeentry-create.js.map +1 -0
- package/dist/tools/time-entry/timeentry-delete.d.ts +43 -0
- package/dist/tools/time-entry/timeentry-delete.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-delete.js +93 -0
- package/dist/tools/time-entry/timeentry-delete.js.map +1 -0
- package/dist/tools/time-entry/timeentry-list.d.ts +232 -0
- package/dist/tools/time-entry/timeentry-list.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-list.js +154 -0
- package/dist/tools/time-entry/timeentry-list.js.map +1 -0
- package/dist/tools/time-entry/timeentry-single.d.ts +109 -0
- package/dist/tools/time-entry/timeentry-single.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-single.js +75 -0
- package/dist/tools/time-entry/timeentry-single.js.map +1 -0
- package/dist/tools/time-entry/timeentry-update.d.ts +145 -0
- package/dist/tools/time-entry/timeentry-update.d.ts.map +1 -0
- package/dist/tools/time-entry/timeentry-update.js +174 -0
- package/dist/tools/time-entry/timeentry-update.js.map +1 -0
- package/dist/tools/timer/index.d.ts +16 -0
- package/dist/tools/timer/index.d.ts.map +1 -0
- package/dist/tools/timer/index.js +19 -0
- package/dist/tools/timer/index.js.map +1 -0
- package/dist/tools/timer/schemas.d.ts +520 -0
- package/dist/tools/timer/schemas.d.ts.map +1 -0
- package/dist/tools/timer/schemas.js +109 -0
- package/dist/tools/timer/schemas.js.map +1 -0
- package/dist/tools/timer/timer-current.d.ts +170 -0
- package/dist/tools/timer/timer-current.d.ts.map +1 -0
- package/dist/tools/timer/timer-current.js +134 -0
- package/dist/tools/timer/timer-current.js.map +1 -0
- package/dist/tools/timer/timer-discard.d.ts +54 -0
- package/dist/tools/timer/timer-discard.d.ts.map +1 -0
- package/dist/tools/timer/timer-discard.js +115 -0
- package/dist/tools/timer/timer-discard.js.map +1 -0
- package/dist/tools/timer/timer-start.d.ts +135 -0
- package/dist/tools/timer/timer-start.d.ts.map +1 -0
- package/dist/tools/timer/timer-start.js +129 -0
- package/dist/tools/timer/timer-start.js.map +1 -0
- package/dist/tools/timer/timer-stop.d.ts +123 -0
- package/dist/tools/timer/timer-stop.d.ts.map +1 -0
- package/dist/tools/timer/timer-stop.js +165 -0
- package/dist/tools/timer/timer-stop.js.map +1 -0
- package/dist/tools/types.d.ts +49 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +61 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools/user/index.d.ts +7 -0
- package/dist/tools/user/index.d.ts.map +1 -0
- package/dist/tools/user/index.js +9 -0
- package/dist/tools/user/index.js.map +1 -0
- package/dist/tools/user/schemas.d.ts +258 -0
- package/dist/tools/user/schemas.d.ts.map +1 -0
- package/dist/tools/user/schemas.js +51 -0
- package/dist/tools/user/schemas.js.map +1 -0
- package/dist/tools/user/user-me.d.ts +129 -0
- package/dist/tools/user/user-me.d.ts.map +1 -0
- package/dist/tools/user/user-me.js +63 -0
- package/dist/tools/user/user-me.js.map +1 -0
- package/dist/types/freshbooks.d.ts +276 -0
- package/dist/types/freshbooks.d.ts.map +1 -0
- package/dist/types/freshbooks.js +6 -0
- package/dist/types/freshbooks.js.map +1 -0
- package/dist/types/index.d.ts +92 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +54 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +133 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/pagination.d.ts +39 -0
- package/dist/utils/pagination.d.ts.map +1 -0
- package/dist/utils/pagination.js +62 -0
- package/dist/utils/pagination.js.map +1 -0
- package/package.json +88 -0
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error Mapper
|
|
3
|
+
*
|
|
4
|
+
* Maps various error types to normalized MCP format while
|
|
5
|
+
* preserving original error details for debugging.
|
|
6
|
+
*/
|
|
7
|
+
import { MCPErrorCode, FreshBooksErrorCode, } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Error Mapper Class
|
|
10
|
+
*
|
|
11
|
+
* Provides static methods for mapping different error types
|
|
12
|
+
* to the normalized MCP error format.
|
|
13
|
+
*/
|
|
14
|
+
export class ErrorMapper {
|
|
15
|
+
/**
|
|
16
|
+
* Map FreshBooks API error to MCP error
|
|
17
|
+
*
|
|
18
|
+
* @param fbError - FreshBooks API error object
|
|
19
|
+
* @param context - Additional error context
|
|
20
|
+
* @returns Normalized MCP error
|
|
21
|
+
*/
|
|
22
|
+
static mapFreshBooksError(fbError, context) {
|
|
23
|
+
const errorCode = fbError.error?.code || "UNKNOWN";
|
|
24
|
+
const mapping = ERROR_MAPPINGS[errorCode] || DEFAULT_MAPPING;
|
|
25
|
+
const mcpError = Object.assign(new Error(mapping.getMessage(fbError.error)), {
|
|
26
|
+
code: mapping.mcpCode,
|
|
27
|
+
message: mapping.getMessage(fbError.error),
|
|
28
|
+
data: {
|
|
29
|
+
freshbooksError: {
|
|
30
|
+
code: fbError.error?.code || "UNKNOWN",
|
|
31
|
+
message: fbError.error?.message || "Unknown error",
|
|
32
|
+
field: fbError.error?.field,
|
|
33
|
+
errno: fbError.error?.errno,
|
|
34
|
+
details: fbError.error?.details,
|
|
35
|
+
},
|
|
36
|
+
context,
|
|
37
|
+
recoverable: mapping.recoverable,
|
|
38
|
+
suggestion: mapping.getSuggestion(fbError.error),
|
|
39
|
+
retryAfter: fbError.retryAfter,
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
return mcpError;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Map Zod validation error to MCP error
|
|
46
|
+
*
|
|
47
|
+
* @param zodError - Zod validation error
|
|
48
|
+
* @param context - Additional error context
|
|
49
|
+
* @returns Normalized MCP error
|
|
50
|
+
*/
|
|
51
|
+
static mapValidationError(zodError, context) {
|
|
52
|
+
const issues = zodError.issues.map((issue) => ({
|
|
53
|
+
path: issue.path.join("."),
|
|
54
|
+
message: issue.message,
|
|
55
|
+
code: issue.code,
|
|
56
|
+
expected: "expected" in issue ? String(issue.expected) : undefined,
|
|
57
|
+
received: "received" in issue ? issue.received : undefined,
|
|
58
|
+
}));
|
|
59
|
+
const firstIssue = issues[0];
|
|
60
|
+
const message = firstIssue
|
|
61
|
+
? `Validation failed for "${firstIssue.path}": ${firstIssue.message}`
|
|
62
|
+
: "Validation failed";
|
|
63
|
+
const mcpError = Object.assign(new Error(message), {
|
|
64
|
+
code: MCPErrorCode.INVALID_PARAMS,
|
|
65
|
+
message,
|
|
66
|
+
data: {
|
|
67
|
+
validationErrors: issues,
|
|
68
|
+
context,
|
|
69
|
+
recoverable: true,
|
|
70
|
+
suggestion: this.getValidationSuggestion(issues),
|
|
71
|
+
statusCode: 400,
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
return mcpError;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Map OAuth error to MCP error
|
|
78
|
+
*
|
|
79
|
+
* @param error - OAuth error
|
|
80
|
+
* @param context - Additional error context
|
|
81
|
+
* @returns Normalized MCP error
|
|
82
|
+
*/
|
|
83
|
+
static mapOAuthError(error, context) {
|
|
84
|
+
const isTokenExpired = error.code === "invalid_grant" ||
|
|
85
|
+
error.code === "token_expired" ||
|
|
86
|
+
error.message.toLowerCase().includes("expired");
|
|
87
|
+
const isInvalidAuth = error.code === "invalid_client" ||
|
|
88
|
+
error.code === "unauthorized_client" ||
|
|
89
|
+
error.code === "access_denied";
|
|
90
|
+
if (isTokenExpired) {
|
|
91
|
+
const message = "Authentication token has expired.";
|
|
92
|
+
return Object.assign(new Error(message), {
|
|
93
|
+
code: MCPErrorCode.TOKEN_EXPIRED,
|
|
94
|
+
message,
|
|
95
|
+
data: {
|
|
96
|
+
freshbooksError: {
|
|
97
|
+
code: error.code,
|
|
98
|
+
message: error.message,
|
|
99
|
+
},
|
|
100
|
+
context,
|
|
101
|
+
recoverable: true,
|
|
102
|
+
suggestion: "Call auth_refresh to get a new token, or re-authenticate using auth_get_url",
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
if (isInvalidAuth) {
|
|
107
|
+
const message = "Authentication failed or access was denied.";
|
|
108
|
+
return Object.assign(new Error(message), {
|
|
109
|
+
code: MCPErrorCode.NOT_AUTHENTICATED,
|
|
110
|
+
message,
|
|
111
|
+
data: {
|
|
112
|
+
freshbooksError: {
|
|
113
|
+
code: error.code,
|
|
114
|
+
message: error.message,
|
|
115
|
+
},
|
|
116
|
+
context,
|
|
117
|
+
recoverable: true,
|
|
118
|
+
suggestion: "Re-authenticate using auth_get_url to obtain valid credentials",
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const message = `OAuth error: ${error.message}`;
|
|
123
|
+
return Object.assign(new Error(message), {
|
|
124
|
+
code: MCPErrorCode.NOT_AUTHENTICATED,
|
|
125
|
+
message,
|
|
126
|
+
data: {
|
|
127
|
+
freshbooksError: {
|
|
128
|
+
code: error.code,
|
|
129
|
+
message: error.message,
|
|
130
|
+
details: error.details,
|
|
131
|
+
},
|
|
132
|
+
context,
|
|
133
|
+
recoverable: true,
|
|
134
|
+
suggestion: "Check your OAuth credentials and try again",
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get validation suggestion based on issues
|
|
140
|
+
*
|
|
141
|
+
* @param issues - Validation issues
|
|
142
|
+
* @returns Human-readable suggestion
|
|
143
|
+
*/
|
|
144
|
+
static getValidationSuggestion(issues) {
|
|
145
|
+
if (issues.length === 0) {
|
|
146
|
+
return "Check the input parameters and try again";
|
|
147
|
+
}
|
|
148
|
+
if (issues.length === 1) {
|
|
149
|
+
const issue = issues[0];
|
|
150
|
+
if (!issue) {
|
|
151
|
+
return "Check the input parameters and try again";
|
|
152
|
+
}
|
|
153
|
+
return `Fix the "${issue.path}" field: ${issue.message.toLowerCase()}`;
|
|
154
|
+
}
|
|
155
|
+
const fields = issues.map((i) => `"${i.path}"`).join(", ");
|
|
156
|
+
return `Fix the following fields: ${fields}`;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Map network/transport error to MCP error
|
|
160
|
+
*
|
|
161
|
+
* Handles various network error conditions like timeouts,
|
|
162
|
+
* connection failures, DNS errors, etc.
|
|
163
|
+
*
|
|
164
|
+
* @param error - Network error
|
|
165
|
+
* @param context - Additional error context
|
|
166
|
+
* @returns Normalized MCP error
|
|
167
|
+
*/
|
|
168
|
+
static mapNetworkError(error, context) {
|
|
169
|
+
const errorMessage = error.message.toLowerCase();
|
|
170
|
+
// Timeout errors
|
|
171
|
+
const isTimeout = errorMessage.includes("etimedout") || errorMessage.includes("timeout");
|
|
172
|
+
// Connection errors
|
|
173
|
+
const isConnection = errorMessage.includes("econnrefused") ||
|
|
174
|
+
errorMessage.includes("enotfound") ||
|
|
175
|
+
errorMessage.includes("econnreset");
|
|
176
|
+
// DNS errors
|
|
177
|
+
const isDNS = errorMessage.includes("eai_again") ||
|
|
178
|
+
errorMessage.includes("getaddrinfo");
|
|
179
|
+
// Socket errors
|
|
180
|
+
const isSocket = errorMessage.includes("socket hang up");
|
|
181
|
+
if (isTimeout) {
|
|
182
|
+
const message = "Request timed out. FreshBooks may be slow to respond.";
|
|
183
|
+
return Object.assign(new Error(message), {
|
|
184
|
+
code: MCPErrorCode.SERVICE_UNAVAILABLE,
|
|
185
|
+
message,
|
|
186
|
+
data: {
|
|
187
|
+
context,
|
|
188
|
+
recoverable: true,
|
|
189
|
+
suggestion: "Wait a moment and try again. If the issue persists, check FreshBooks status.",
|
|
190
|
+
},
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
if (isConnection || isDNS) {
|
|
194
|
+
const message = "Could not connect to FreshBooks API.";
|
|
195
|
+
return Object.assign(new Error(message), {
|
|
196
|
+
code: MCPErrorCode.SERVICE_UNAVAILABLE,
|
|
197
|
+
message,
|
|
198
|
+
data: {
|
|
199
|
+
context,
|
|
200
|
+
recoverable: true,
|
|
201
|
+
suggestion: "Check your internet connection and try again.",
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
if (isSocket) {
|
|
206
|
+
const message = "Connection was closed unexpectedly.";
|
|
207
|
+
return Object.assign(new Error(message), {
|
|
208
|
+
code: MCPErrorCode.SERVICE_UNAVAILABLE,
|
|
209
|
+
message,
|
|
210
|
+
data: {
|
|
211
|
+
context,
|
|
212
|
+
recoverable: true,
|
|
213
|
+
suggestion: "The connection was interrupted. Please try again.",
|
|
214
|
+
},
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// Generic network error
|
|
218
|
+
const message = `Network error: ${error.message}`;
|
|
219
|
+
return Object.assign(new Error(message), {
|
|
220
|
+
code: MCPErrorCode.INTERNAL_ERROR,
|
|
221
|
+
message,
|
|
222
|
+
data: {
|
|
223
|
+
context,
|
|
224
|
+
recoverable: true,
|
|
225
|
+
suggestion: "An unexpected network error occurred. Please try again.",
|
|
226
|
+
},
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Map HTTP status code to MCP error
|
|
231
|
+
*
|
|
232
|
+
* @param statusCode - HTTP status code
|
|
233
|
+
* @param statusText - HTTP status text
|
|
234
|
+
* @param context - Additional error context
|
|
235
|
+
* @returns Normalized MCP error
|
|
236
|
+
*/
|
|
237
|
+
static mapHttpError(statusCode, statusText, context) {
|
|
238
|
+
let code;
|
|
239
|
+
let message;
|
|
240
|
+
let recoverable;
|
|
241
|
+
let suggestion;
|
|
242
|
+
switch (statusCode) {
|
|
243
|
+
case 401:
|
|
244
|
+
code = MCPErrorCode.NOT_AUTHENTICATED;
|
|
245
|
+
message = "Authentication required or session expired";
|
|
246
|
+
recoverable = true;
|
|
247
|
+
suggestion = "Please re-authenticate using auth_get_url";
|
|
248
|
+
break;
|
|
249
|
+
case 403:
|
|
250
|
+
code = MCPErrorCode.PERMISSION_DENIED;
|
|
251
|
+
message = "Permission denied";
|
|
252
|
+
recoverable = false;
|
|
253
|
+
suggestion =
|
|
254
|
+
"You don't have access to this resource. Contact your administrator.";
|
|
255
|
+
break;
|
|
256
|
+
case 404:
|
|
257
|
+
code = MCPErrorCode.RESOURCE_NOT_FOUND;
|
|
258
|
+
message = "Resource not found";
|
|
259
|
+
recoverable = false;
|
|
260
|
+
suggestion =
|
|
261
|
+
"Verify the resource ID is correct. The resource may have been deleted.";
|
|
262
|
+
break;
|
|
263
|
+
case 409:
|
|
264
|
+
code = MCPErrorCode.CONFLICT;
|
|
265
|
+
message = "Conflict with existing resource";
|
|
266
|
+
recoverable = false;
|
|
267
|
+
suggestion = "A resource with these details already exists";
|
|
268
|
+
break;
|
|
269
|
+
case 422:
|
|
270
|
+
code = MCPErrorCode.VALIDATION_ERROR;
|
|
271
|
+
message = "Validation failed";
|
|
272
|
+
recoverable = true;
|
|
273
|
+
suggestion = "Check the input values and try again";
|
|
274
|
+
break;
|
|
275
|
+
case 429:
|
|
276
|
+
code = MCPErrorCode.RATE_LIMITED;
|
|
277
|
+
message = "Rate limit exceeded";
|
|
278
|
+
recoverable = true;
|
|
279
|
+
suggestion = "Wait a moment before making more requests";
|
|
280
|
+
break;
|
|
281
|
+
case 500:
|
|
282
|
+
case 502:
|
|
283
|
+
case 503:
|
|
284
|
+
case 504:
|
|
285
|
+
code = MCPErrorCode.SERVICE_UNAVAILABLE;
|
|
286
|
+
message = "FreshBooks service is unavailable";
|
|
287
|
+
recoverable = true;
|
|
288
|
+
suggestion =
|
|
289
|
+
"An error occurred on FreshBooks' side. Please try again.";
|
|
290
|
+
break;
|
|
291
|
+
default:
|
|
292
|
+
code = MCPErrorCode.INTERNAL_ERROR;
|
|
293
|
+
message = `HTTP error ${statusCode}: ${statusText}`;
|
|
294
|
+
recoverable = true;
|
|
295
|
+
suggestion = "An unexpected error occurred. Please try again.";
|
|
296
|
+
}
|
|
297
|
+
return Object.assign(new Error(message), {
|
|
298
|
+
code,
|
|
299
|
+
message,
|
|
300
|
+
data: {
|
|
301
|
+
freshbooksError: {
|
|
302
|
+
code: `HTTP_${statusCode}`,
|
|
303
|
+
message: statusText,
|
|
304
|
+
},
|
|
305
|
+
context,
|
|
306
|
+
recoverable,
|
|
307
|
+
suggestion,
|
|
308
|
+
},
|
|
309
|
+
});
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Error Mapping Configuration
|
|
314
|
+
*
|
|
315
|
+
* Maps FreshBooks error codes to MCP error codes with
|
|
316
|
+
* recovery guidance.
|
|
317
|
+
*/
|
|
318
|
+
const ERROR_MAPPINGS = {
|
|
319
|
+
// Authentication Errors
|
|
320
|
+
[FreshBooksErrorCode.UNAUTHORIZED]: {
|
|
321
|
+
mcpCode: MCPErrorCode.NOT_AUTHENTICATED,
|
|
322
|
+
recoverable: true,
|
|
323
|
+
statusCode: 401,
|
|
324
|
+
getMessage: () => "Authentication required or session expired",
|
|
325
|
+
getSuggestion: () => "Please authenticate using auth_get_url to obtain access credentials",
|
|
326
|
+
},
|
|
327
|
+
[FreshBooksErrorCode.UNAUTHENTICATED]: {
|
|
328
|
+
mcpCode: MCPErrorCode.NOT_AUTHENTICATED,
|
|
329
|
+
recoverable: true,
|
|
330
|
+
statusCode: 401,
|
|
331
|
+
getMessage: () => "No valid authentication found",
|
|
332
|
+
getSuggestion: () => "Call auth_get_url to start the authentication process",
|
|
333
|
+
},
|
|
334
|
+
[FreshBooksErrorCode.TOKEN_EXPIRED]: {
|
|
335
|
+
mcpCode: MCPErrorCode.TOKEN_EXPIRED,
|
|
336
|
+
recoverable: true,
|
|
337
|
+
statusCode: 401,
|
|
338
|
+
getMessage: () => "Access token has expired",
|
|
339
|
+
getSuggestion: () => "Call auth_refresh to refresh your token, or re-authenticate if refresh fails",
|
|
340
|
+
},
|
|
341
|
+
[FreshBooksErrorCode.INVALID_GRANT]: {
|
|
342
|
+
mcpCode: MCPErrorCode.TOKEN_EXPIRED,
|
|
343
|
+
recoverable: true,
|
|
344
|
+
statusCode: 401,
|
|
345
|
+
getMessage: () => "Refresh token is invalid or expired",
|
|
346
|
+
getSuggestion: () => "Re-authenticate using auth_get_url to obtain new credentials",
|
|
347
|
+
},
|
|
348
|
+
// Permission Errors
|
|
349
|
+
[FreshBooksErrorCode.FORBIDDEN]: {
|
|
350
|
+
mcpCode: MCPErrorCode.PERMISSION_DENIED,
|
|
351
|
+
recoverable: false,
|
|
352
|
+
statusCode: 403,
|
|
353
|
+
getMessage: (e) => `Permission denied: ${e.message}`,
|
|
354
|
+
getSuggestion: () => "You don't have permission to access this resource. Contact your FreshBooks administrator to request access.",
|
|
355
|
+
},
|
|
356
|
+
[FreshBooksErrorCode.INSUFFICIENT_PERMISSIONS]: {
|
|
357
|
+
mcpCode: MCPErrorCode.PERMISSION_DENIED,
|
|
358
|
+
recoverable: false,
|
|
359
|
+
statusCode: 403,
|
|
360
|
+
getMessage: (e) => `Insufficient permissions: ${e.message}`,
|
|
361
|
+
getSuggestion: () => "Your FreshBooks account lacks the required permissions for this operation",
|
|
362
|
+
},
|
|
363
|
+
// Resource Errors
|
|
364
|
+
[FreshBooksErrorCode.NOT_FOUND]: {
|
|
365
|
+
mcpCode: MCPErrorCode.RESOURCE_NOT_FOUND,
|
|
366
|
+
recoverable: false,
|
|
367
|
+
statusCode: 404,
|
|
368
|
+
getMessage: (e) => {
|
|
369
|
+
if (e.field) {
|
|
370
|
+
return `Resource not found: The ${e.field} you specified doesn't exist`;
|
|
371
|
+
}
|
|
372
|
+
return `Resource not found: ${e.message}`;
|
|
373
|
+
},
|
|
374
|
+
getSuggestion: (e) => {
|
|
375
|
+
if (e.field) {
|
|
376
|
+
return `Verify the ${e.field} is correct. The resource may have been deleted or moved to a different account.`;
|
|
377
|
+
}
|
|
378
|
+
return "Double-check the ID or identifier. The resource may have been deleted.";
|
|
379
|
+
},
|
|
380
|
+
},
|
|
381
|
+
// Validation Errors
|
|
382
|
+
[FreshBooksErrorCode.VALIDATION_ERROR]: {
|
|
383
|
+
mcpCode: MCPErrorCode.VALIDATION_ERROR,
|
|
384
|
+
recoverable: true,
|
|
385
|
+
statusCode: 422,
|
|
386
|
+
getMessage: (e) => {
|
|
387
|
+
if (e.field) {
|
|
388
|
+
return `Invalid value for "${e.field}": ${e.message}`;
|
|
389
|
+
}
|
|
390
|
+
return `Validation error: ${e.message}`;
|
|
391
|
+
},
|
|
392
|
+
getSuggestion: (e) => {
|
|
393
|
+
if (e.field) {
|
|
394
|
+
return `Check the value provided for "${e.field}" and ensure it meets the requirements`;
|
|
395
|
+
}
|
|
396
|
+
return "Review the input values and ensure they match the expected format";
|
|
397
|
+
},
|
|
398
|
+
},
|
|
399
|
+
[FreshBooksErrorCode.BAD_REQUEST]: {
|
|
400
|
+
mcpCode: MCPErrorCode.VALIDATION_ERROR,
|
|
401
|
+
recoverable: true,
|
|
402
|
+
statusCode: 400,
|
|
403
|
+
getMessage: (e) => `Invalid request: ${e.message}`,
|
|
404
|
+
getSuggestion: () => "Check the request parameters and ensure all required fields are provided correctly",
|
|
405
|
+
},
|
|
406
|
+
// Rate Limiting
|
|
407
|
+
[FreshBooksErrorCode.RATE_LIMIT_EXCEEDED]: {
|
|
408
|
+
mcpCode: MCPErrorCode.RATE_LIMITED,
|
|
409
|
+
recoverable: true,
|
|
410
|
+
statusCode: 429,
|
|
411
|
+
getMessage: () => "Rate limit exceeded",
|
|
412
|
+
getSuggestion: () => "You've made too many requests in a short period. Wait before making more requests.",
|
|
413
|
+
},
|
|
414
|
+
// Conflict Errors
|
|
415
|
+
[FreshBooksErrorCode.CONFLICT]: {
|
|
416
|
+
mcpCode: MCPErrorCode.CONFLICT,
|
|
417
|
+
recoverable: false,
|
|
418
|
+
statusCode: 409,
|
|
419
|
+
getMessage: (e) => `Conflict: ${e.message}`,
|
|
420
|
+
getSuggestion: () => "A resource with these details already exists. Try updating the existing resource instead of creating a new one.",
|
|
421
|
+
},
|
|
422
|
+
// Server Errors
|
|
423
|
+
[FreshBooksErrorCode.INTERNAL_ERROR]: {
|
|
424
|
+
mcpCode: MCPErrorCode.INTERNAL_ERROR,
|
|
425
|
+
recoverable: true,
|
|
426
|
+
statusCode: 500,
|
|
427
|
+
getMessage: () => "FreshBooks server error",
|
|
428
|
+
getSuggestion: () => "An error occurred on FreshBooks' side. Please try again in a few moments. If the issue persists, contact FreshBooks support.",
|
|
429
|
+
},
|
|
430
|
+
[FreshBooksErrorCode.SERVICE_UNAVAILABLE]: {
|
|
431
|
+
mcpCode: MCPErrorCode.SERVICE_UNAVAILABLE,
|
|
432
|
+
recoverable: true,
|
|
433
|
+
statusCode: 503,
|
|
434
|
+
getMessage: () => "FreshBooks service is temporarily unavailable",
|
|
435
|
+
getSuggestion: () => "FreshBooks may be undergoing maintenance. Please try again later or check status.freshbooks.com",
|
|
436
|
+
},
|
|
437
|
+
};
|
|
438
|
+
/**
|
|
439
|
+
* Default Error Mapping
|
|
440
|
+
*
|
|
441
|
+
* Used when no specific mapping is found for an error code.
|
|
442
|
+
*/
|
|
443
|
+
const DEFAULT_MAPPING = {
|
|
444
|
+
mcpCode: MCPErrorCode.INTERNAL_ERROR,
|
|
445
|
+
recoverable: true,
|
|
446
|
+
getMessage: (e) => e.message || "An unexpected error occurred",
|
|
447
|
+
getSuggestion: () => "Please try again. If the issue persists, check the error details.",
|
|
448
|
+
};
|
|
449
|
+
//# sourceMappingURL=error-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-mapper.js","sourceRoot":"","sources":["../../src/errors/error-mapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error System
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive error handling for the FreshBooks MCP server.
|
|
5
|
+
*
|
|
6
|
+
* This module provides a dual-format error system:
|
|
7
|
+
* - All errors normalized to MCP JSON-RPC format for clients
|
|
8
|
+
* - Original FreshBooks errors preserved in data field for debugging
|
|
9
|
+
*
|
|
10
|
+
* @module errors
|
|
11
|
+
*/
|
|
12
|
+
export type { MCPError, MCPErrorData, ErrorContext, FreshBooksApiError, ErrorMapping, ToolContext, } from "./types.js";
|
|
13
|
+
export { MCPErrorCode, FreshBooksErrorCode, OAuthError, } from "./types.js";
|
|
14
|
+
export { ErrorMapper } from "./error-mapper.js";
|
|
15
|
+
export { ErrorHandler, generateRequestId, handleError, createAuthError } from "./error-handler.js";
|
|
16
|
+
import { MCPErrorCode as _MCPErrorCode } from "./types.js";
|
|
17
|
+
/**
|
|
18
|
+
* Re-export commonly used error codes for convenience
|
|
19
|
+
*/
|
|
20
|
+
export declare const ErrorCodes: {
|
|
21
|
+
readonly PARSE_ERROR: _MCPErrorCode.PARSE_ERROR;
|
|
22
|
+
readonly INVALID_REQUEST: _MCPErrorCode.INVALID_REQUEST;
|
|
23
|
+
readonly METHOD_NOT_FOUND: _MCPErrorCode.METHOD_NOT_FOUND;
|
|
24
|
+
readonly INVALID_PARAMS: _MCPErrorCode.INVALID_PARAMS;
|
|
25
|
+
readonly INTERNAL_ERROR: _MCPErrorCode.INTERNAL_ERROR;
|
|
26
|
+
readonly NOT_AUTHENTICATED: _MCPErrorCode.NOT_AUTHENTICATED;
|
|
27
|
+
readonly TOKEN_EXPIRED: _MCPErrorCode.TOKEN_EXPIRED;
|
|
28
|
+
readonly PERMISSION_DENIED: _MCPErrorCode.PERMISSION_DENIED;
|
|
29
|
+
readonly RATE_LIMITED: _MCPErrorCode.RATE_LIMITED;
|
|
30
|
+
readonly RESOURCE_NOT_FOUND: _MCPErrorCode.RESOURCE_NOT_FOUND;
|
|
31
|
+
readonly VALIDATION_ERROR: _MCPErrorCode.VALIDATION_ERROR;
|
|
32
|
+
readonly CONFLICT: _MCPErrorCode.CONFLICT;
|
|
33
|
+
readonly SERVICE_UNAVAILABLE: _MCPErrorCode.SERVICE_UNAVAILABLE;
|
|
34
|
+
readonly NETWORK_ERROR: _MCPErrorCode.NETWORK_ERROR;
|
|
35
|
+
readonly TIMEOUT: _MCPErrorCode.TIMEOUT;
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGnG,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;CAmBb,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error System
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive error handling for the FreshBooks MCP server.
|
|
5
|
+
*
|
|
6
|
+
* This module provides a dual-format error system:
|
|
7
|
+
* - All errors normalized to MCP JSON-RPC format for clients
|
|
8
|
+
* - Original FreshBooks errors preserved in data field for debugging
|
|
9
|
+
*
|
|
10
|
+
* @module errors
|
|
11
|
+
*/
|
|
12
|
+
export { MCPErrorCode, FreshBooksErrorCode, OAuthError, } from "./types.js";
|
|
13
|
+
// Error Mapping
|
|
14
|
+
export { ErrorMapper } from "./error-mapper.js";
|
|
15
|
+
// Error Handling
|
|
16
|
+
export { ErrorHandler, generateRequestId, handleError, createAuthError } from "./error-handler.js";
|
|
17
|
+
// Re-export MCPErrorCode enum for convenience
|
|
18
|
+
import { MCPErrorCode as _MCPErrorCode } from "./types.js";
|
|
19
|
+
/**
|
|
20
|
+
* Re-export commonly used error codes for convenience
|
|
21
|
+
*/
|
|
22
|
+
export const ErrorCodes = {
|
|
23
|
+
// JSON-RPC standard errors
|
|
24
|
+
PARSE_ERROR: _MCPErrorCode.PARSE_ERROR,
|
|
25
|
+
INVALID_REQUEST: _MCPErrorCode.INVALID_REQUEST,
|
|
26
|
+
METHOD_NOT_FOUND: _MCPErrorCode.METHOD_NOT_FOUND,
|
|
27
|
+
INVALID_PARAMS: _MCPErrorCode.INVALID_PARAMS,
|
|
28
|
+
INTERNAL_ERROR: _MCPErrorCode.INTERNAL_ERROR,
|
|
29
|
+
// Application errors
|
|
30
|
+
NOT_AUTHENTICATED: _MCPErrorCode.NOT_AUTHENTICATED,
|
|
31
|
+
TOKEN_EXPIRED: _MCPErrorCode.TOKEN_EXPIRED,
|
|
32
|
+
PERMISSION_DENIED: _MCPErrorCode.PERMISSION_DENIED,
|
|
33
|
+
RATE_LIMITED: _MCPErrorCode.RATE_LIMITED,
|
|
34
|
+
RESOURCE_NOT_FOUND: _MCPErrorCode.RESOURCE_NOT_FOUND,
|
|
35
|
+
VALIDATION_ERROR: _MCPErrorCode.VALIDATION_ERROR,
|
|
36
|
+
CONFLICT: _MCPErrorCode.CONFLICT,
|
|
37
|
+
SERVICE_UNAVAILABLE: _MCPErrorCode.SERVICE_UNAVAILABLE,
|
|
38
|
+
NETWORK_ERROR: _MCPErrorCode.NETWORK_ERROR,
|
|
39
|
+
TIMEOUT: _MCPErrorCode.TIMEOUT,
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,UAAU,GACX,MAAM,YAAY,CAAC;AAEpB,gBAAgB;AAChB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,iBAAiB;AACjB,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEnG,8CAA8C;AAC9C,OAAO,EAAE,YAAY,IAAI,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,2BAA2B;IAC3B,WAAW,EAAE,aAAa,CAAC,WAAW;IACtC,eAAe,EAAE,aAAa,CAAC,eAAe;IAC9C,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;IAChD,cAAc,EAAE,aAAa,CAAC,cAAc;IAC5C,cAAc,EAAE,aAAa,CAAC,cAAc;IAE5C,qBAAqB;IACrB,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;IAClD,aAAa,EAAE,aAAa,CAAC,aAAa;IAC1C,iBAAiB,EAAE,aAAa,CAAC,iBAAiB;IAClD,YAAY,EAAE,aAAa,CAAC,YAAY;IACxC,kBAAkB,EAAE,aAAa,CAAC,kBAAkB;IACpD,gBAAgB,EAAE,aAAa,CAAC,gBAAgB;IAChD,QAAQ,EAAE,aAAa,CAAC,QAAQ;IAChC,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;IACtD,aAAa,EAAE,aAAa,CAAC,aAAa;IAC1C,OAAO,EAAE,aAAa,CAAC,OAAO;CACtB,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response Formatter
|
|
3
|
+
*
|
|
4
|
+
* Formats errors for different output contexts:
|
|
5
|
+
* - JSON-RPC response format (for MCP protocol)
|
|
6
|
+
* - Claude-friendly text format (for display)
|
|
7
|
+
*/
|
|
8
|
+
import { MCPError } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Format MCPError for JSON-RPC 2.0 error response
|
|
11
|
+
*
|
|
12
|
+
* Creates a properly formatted JSON-RPC error response object
|
|
13
|
+
* that can be sent over the MCP protocol.
|
|
14
|
+
*
|
|
15
|
+
* @param error - The normalized MCP error
|
|
16
|
+
* @param requestId - Optional request ID (null for notifications)
|
|
17
|
+
* @returns JSON-RPC error response object
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* const response = formatErrorResponse(mcpError, "req-123");
|
|
22
|
+
* // Returns:
|
|
23
|
+
* // {
|
|
24
|
+
* // jsonrpc: "2.0",
|
|
25
|
+
* // id: "req-123",
|
|
26
|
+
* // error: {
|
|
27
|
+
* // code: -32005,
|
|
28
|
+
* // message: "Resource not found",
|
|
29
|
+
* // data: { ... }
|
|
30
|
+
* // }
|
|
31
|
+
* // }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function formatErrorResponse(error: MCPError, requestId?: string | number | null): object;
|
|
35
|
+
/**
|
|
36
|
+
* Format error for Claude-friendly display
|
|
37
|
+
*
|
|
38
|
+
* Creates a markdown-formatted, human-readable error message
|
|
39
|
+
* that Claude can present to the user with actionable guidance.
|
|
40
|
+
*
|
|
41
|
+
* @param error - The normalized MCP error
|
|
42
|
+
* @returns Formatted error message with suggestions
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* const display = formatErrorForClaude(mcpError);
|
|
47
|
+
* // Returns:
|
|
48
|
+
* // **Error:** Resource not found
|
|
49
|
+
* //
|
|
50
|
+
* // **Suggestion:** Verify the ID is correct...
|
|
51
|
+
* //
|
|
52
|
+
* // *This error cannot be recovered by retrying.*
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
export declare function formatErrorForClaude(error: MCPError): string;
|
|
56
|
+
/**
|
|
57
|
+
* Format error for logging
|
|
58
|
+
*
|
|
59
|
+
* Creates a structured log entry suitable for stderr logging.
|
|
60
|
+
* Omits sensitive information like tokens or PII.
|
|
61
|
+
*
|
|
62
|
+
* @param error - The normalized MCP error
|
|
63
|
+
* @returns Structured log object
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const logEntry = formatErrorForLogging(mcpError);
|
|
68
|
+
* console.error(JSON.stringify(logEntry));
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare function formatErrorForLogging(error: MCPError): object;
|
|
72
|
+
/**
|
|
73
|
+
* Format error details for debugging
|
|
74
|
+
*
|
|
75
|
+
* Creates a comprehensive error dump including all details
|
|
76
|
+
* for debugging purposes. Should only be used in development.
|
|
77
|
+
*
|
|
78
|
+
* @param error - The normalized MCP error
|
|
79
|
+
* @returns Detailed error information
|
|
80
|
+
*/
|
|
81
|
+
export declare function formatErrorForDebug(error: MCPError): object;
|
|
82
|
+
/**
|
|
83
|
+
* Get error summary
|
|
84
|
+
*
|
|
85
|
+
* Returns a brief one-line summary of the error.
|
|
86
|
+
*
|
|
87
|
+
* @param error - The normalized MCP error
|
|
88
|
+
* @returns Brief error summary
|
|
89
|
+
*/
|
|
90
|
+
export declare function getErrorSummary(error: MCPError): string;
|
|
91
|
+
/**
|
|
92
|
+
* Check if error is retryable
|
|
93
|
+
*
|
|
94
|
+
* Determines if the error can be resolved by retrying.
|
|
95
|
+
*
|
|
96
|
+
* @param error - The normalized MCP error
|
|
97
|
+
* @returns True if error is retryable
|
|
98
|
+
*/
|
|
99
|
+
export declare function isRetryable(error: MCPError): boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Get suggested retry delay
|
|
102
|
+
*
|
|
103
|
+
* Returns the suggested delay before retrying (in milliseconds).
|
|
104
|
+
*
|
|
105
|
+
* @param error - The normalized MCP error
|
|
106
|
+
* @returns Delay in milliseconds, or undefined if not retryable
|
|
107
|
+
*/
|
|
108
|
+
export declare function getRetryDelay(error: MCPError): number | undefined;
|
|
109
|
+
//# sourceMappingURL=response-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-formatter.d.ts","sourceRoot":"","sources":["../../src/errors/response-formatter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,QAAQ,EACf,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GACjC,MAAM,CAUR;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAgD5D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAgB7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAW3D;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAYvD;AAED;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAEpD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAqBjE"}
|