@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,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timer Current Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the currently running timer(s) using the /comments/business/.../timers endpoint.
|
|
5
|
+
* This endpoint is not supported by the SDK, so we use raw HTTP.
|
|
6
|
+
*
|
|
7
|
+
* Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { TimerCurrentInputSchema, TimerCurrentOutputSchema } from "./schemas.js";
|
|
11
|
+
import { ToolContext } from "../../errors/types.js";
|
|
12
|
+
import { FreshBooksClientWrapper } from "../../client/freshbooks-client.js";
|
|
13
|
+
/**
|
|
14
|
+
* Tool definition for timer_current
|
|
15
|
+
*/
|
|
16
|
+
export declare const timerCurrentTool: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: z.ZodObject<{
|
|
20
|
+
businessId: z.ZodNumber;
|
|
21
|
+
}, "strip", z.ZodTypeAny, {
|
|
22
|
+
businessId: number;
|
|
23
|
+
}, {
|
|
24
|
+
businessId: number;
|
|
25
|
+
}>;
|
|
26
|
+
outputSchema: z.ZodObject<{
|
|
27
|
+
activeTimers: z.ZodArray<z.ZodObject<{
|
|
28
|
+
id: z.ZodNumber;
|
|
29
|
+
identityId: z.ZodOptional<z.ZodNumber>;
|
|
30
|
+
isLogged: z.ZodBoolean;
|
|
31
|
+
startedAt: z.ZodString;
|
|
32
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
33
|
+
clientId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
34
|
+
projectId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
35
|
+
taskId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
36
|
+
serviceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
37
|
+
note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
38
|
+
active: z.ZodBoolean;
|
|
39
|
+
billable: z.ZodOptional<z.ZodBoolean>;
|
|
40
|
+
billed: z.ZodOptional<z.ZodBoolean>;
|
|
41
|
+
internal: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
duration: z.ZodNumber;
|
|
43
|
+
timer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
44
|
+
id: z.ZodNumber;
|
|
45
|
+
isRunning: z.ZodNullable<z.ZodBoolean>;
|
|
46
|
+
}, "strip", z.ZodTypeAny, {
|
|
47
|
+
id: number;
|
|
48
|
+
isRunning: boolean | null;
|
|
49
|
+
}, {
|
|
50
|
+
id: number;
|
|
51
|
+
isRunning: boolean | null;
|
|
52
|
+
}>>>;
|
|
53
|
+
pendingClient: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
54
|
+
pendingProject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
55
|
+
pendingTask: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
56
|
+
retainerId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
duration: number;
|
|
59
|
+
id: number;
|
|
60
|
+
isLogged: boolean;
|
|
61
|
+
startedAt: string;
|
|
62
|
+
active: boolean;
|
|
63
|
+
billed?: boolean | undefined;
|
|
64
|
+
taskId?: number | null | undefined;
|
|
65
|
+
createdAt?: string | undefined;
|
|
66
|
+
identityId?: number | undefined;
|
|
67
|
+
clientId?: number | null | undefined;
|
|
68
|
+
projectId?: number | null | undefined;
|
|
69
|
+
pendingClient?: string | null | undefined;
|
|
70
|
+
pendingProject?: string | null | undefined;
|
|
71
|
+
pendingTask?: string | null | undefined;
|
|
72
|
+
serviceId?: number | null | undefined;
|
|
73
|
+
note?: string | null | undefined;
|
|
74
|
+
billable?: boolean | undefined;
|
|
75
|
+
internal?: boolean | undefined;
|
|
76
|
+
retainerId?: number | null | undefined;
|
|
77
|
+
timer?: {
|
|
78
|
+
id: number;
|
|
79
|
+
isRunning: boolean | null;
|
|
80
|
+
} | null | undefined;
|
|
81
|
+
}, {
|
|
82
|
+
duration: number;
|
|
83
|
+
id: number;
|
|
84
|
+
isLogged: boolean;
|
|
85
|
+
startedAt: string;
|
|
86
|
+
active: boolean;
|
|
87
|
+
billed?: boolean | undefined;
|
|
88
|
+
taskId?: number | null | undefined;
|
|
89
|
+
createdAt?: string | undefined;
|
|
90
|
+
identityId?: number | undefined;
|
|
91
|
+
clientId?: number | null | undefined;
|
|
92
|
+
projectId?: number | null | undefined;
|
|
93
|
+
pendingClient?: string | null | undefined;
|
|
94
|
+
pendingProject?: string | null | undefined;
|
|
95
|
+
pendingTask?: string | null | undefined;
|
|
96
|
+
serviceId?: number | null | undefined;
|
|
97
|
+
note?: string | null | undefined;
|
|
98
|
+
billable?: boolean | undefined;
|
|
99
|
+
internal?: boolean | undefined;
|
|
100
|
+
retainerId?: number | null | undefined;
|
|
101
|
+
timer?: {
|
|
102
|
+
id: number;
|
|
103
|
+
isRunning: boolean | null;
|
|
104
|
+
} | null | undefined;
|
|
105
|
+
}>, "many">;
|
|
106
|
+
count: z.ZodNumber;
|
|
107
|
+
}, "strip", z.ZodTypeAny, {
|
|
108
|
+
count: number;
|
|
109
|
+
activeTimers: {
|
|
110
|
+
duration: number;
|
|
111
|
+
id: number;
|
|
112
|
+
isLogged: boolean;
|
|
113
|
+
startedAt: string;
|
|
114
|
+
active: boolean;
|
|
115
|
+
billed?: boolean | undefined;
|
|
116
|
+
taskId?: number | null | undefined;
|
|
117
|
+
createdAt?: string | undefined;
|
|
118
|
+
identityId?: number | undefined;
|
|
119
|
+
clientId?: number | null | undefined;
|
|
120
|
+
projectId?: number | null | undefined;
|
|
121
|
+
pendingClient?: string | null | undefined;
|
|
122
|
+
pendingProject?: string | null | undefined;
|
|
123
|
+
pendingTask?: string | null | undefined;
|
|
124
|
+
serviceId?: number | null | undefined;
|
|
125
|
+
note?: string | null | undefined;
|
|
126
|
+
billable?: boolean | undefined;
|
|
127
|
+
internal?: boolean | undefined;
|
|
128
|
+
retainerId?: number | null | undefined;
|
|
129
|
+
timer?: {
|
|
130
|
+
id: number;
|
|
131
|
+
isRunning: boolean | null;
|
|
132
|
+
} | null | undefined;
|
|
133
|
+
}[];
|
|
134
|
+
}, {
|
|
135
|
+
count: number;
|
|
136
|
+
activeTimers: {
|
|
137
|
+
duration: number;
|
|
138
|
+
id: number;
|
|
139
|
+
isLogged: boolean;
|
|
140
|
+
startedAt: string;
|
|
141
|
+
active: boolean;
|
|
142
|
+
billed?: boolean | undefined;
|
|
143
|
+
taskId?: number | null | undefined;
|
|
144
|
+
createdAt?: string | undefined;
|
|
145
|
+
identityId?: number | undefined;
|
|
146
|
+
clientId?: number | null | undefined;
|
|
147
|
+
projectId?: number | null | undefined;
|
|
148
|
+
pendingClient?: string | null | undefined;
|
|
149
|
+
pendingProject?: string | null | undefined;
|
|
150
|
+
pendingTask?: string | null | undefined;
|
|
151
|
+
serviceId?: number | null | undefined;
|
|
152
|
+
note?: string | null | undefined;
|
|
153
|
+
billable?: boolean | undefined;
|
|
154
|
+
internal?: boolean | undefined;
|
|
155
|
+
retainerId?: number | null | undefined;
|
|
156
|
+
timer?: {
|
|
157
|
+
id: number;
|
|
158
|
+
isRunning: boolean | null;
|
|
159
|
+
} | null | undefined;
|
|
160
|
+
}[];
|
|
161
|
+
}>;
|
|
162
|
+
execute(input: z.infer<typeof TimerCurrentInputSchema>, client: FreshBooksClientWrapper): Promise<z.infer<typeof TimerCurrentOutputSchema>>;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Wrapped handler for backward compatibility with tests
|
|
166
|
+
*/
|
|
167
|
+
export declare function timerCurrentHandler(input: z.infer<typeof TimerCurrentInputSchema>, context: ToolContext & {
|
|
168
|
+
client: FreshBooksClientWrapper;
|
|
169
|
+
}): Promise<z.infer<typeof TimerCurrentOutputSchema>>;
|
|
170
|
+
//# sourceMappingURL=timer-current.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer-current.d.ts","sourceRoot":"","sources":["../../../src/tools/timer/timer-current.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AA6B5E;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA8DlB,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,UACtC,uBAAuB,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;CAqErD,CAAC;AAEF;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,EAC9C,OAAO,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,GACzD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAEnD"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timer Current Tool
|
|
3
|
+
*
|
|
4
|
+
* Gets the currently running timer(s) using the /comments/business/.../timers endpoint.
|
|
5
|
+
* This endpoint is not supported by the SDK, so we use raw HTTP.
|
|
6
|
+
*
|
|
7
|
+
* Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
|
|
8
|
+
*/
|
|
9
|
+
import { TimerCurrentInputSchema, TimerCurrentOutputSchema } from "./schemas.js";
|
|
10
|
+
import { ErrorHandler } from "../../errors/error-handler.js";
|
|
11
|
+
/**
|
|
12
|
+
* Tool definition for timer_current
|
|
13
|
+
*/
|
|
14
|
+
export const timerCurrentTool = {
|
|
15
|
+
name: "timer_current",
|
|
16
|
+
description: `Get the currently running timer(s) in FreshBooks.
|
|
17
|
+
|
|
18
|
+
WHEN TO USE:
|
|
19
|
+
- User asks "what timer is running?", "show my current timer", "am I tracking time?"
|
|
20
|
+
- Need to find timer ID before stopping it
|
|
21
|
+
- Want to check if any timer is active before starting a new one
|
|
22
|
+
- Need to see timer details (duration so far, project, notes)
|
|
23
|
+
|
|
24
|
+
HOW IT WORKS:
|
|
25
|
+
Searches for time entries with:
|
|
26
|
+
- active=true (timer is currently running)
|
|
27
|
+
- Returns all matching entries (typically 0 or 1)
|
|
28
|
+
|
|
29
|
+
TYPICAL RESULTS:
|
|
30
|
+
- 0 timers: No timer is currently running
|
|
31
|
+
- 1 timer: The active timer with details
|
|
32
|
+
- Multiple timers: Rare, but possible in some FreshBooks configurations
|
|
33
|
+
|
|
34
|
+
REQUIRED:
|
|
35
|
+
- businessId: FreshBooks business ID (get from user_me -> businessMemberships[].business.id)
|
|
36
|
+
|
|
37
|
+
NO ACTIVE TIMER:
|
|
38
|
+
If no timer is running, returns:
|
|
39
|
+
- activeTimers: [] (empty array)
|
|
40
|
+
- count: 0
|
|
41
|
+
|
|
42
|
+
ACTIVE TIMER DETAILS:
|
|
43
|
+
Each active timer includes:
|
|
44
|
+
- id: Time entry ID (use this to stop or discard)
|
|
45
|
+
- startedAt: When timer started (ISO 8601 timestamp)
|
|
46
|
+
- duration: Current duration in seconds (calculated from start time)
|
|
47
|
+
- projectId: Associated project (if any)
|
|
48
|
+
- clientId: Associated client (if any)
|
|
49
|
+
- note: Work description (if any)
|
|
50
|
+
- billable: Whether time is billable
|
|
51
|
+
- timer: Nested timer object with isRunning=true
|
|
52
|
+
|
|
53
|
+
CALCULATING ELAPSED TIME:
|
|
54
|
+
The duration field shows elapsed seconds, but it may not be real-time.
|
|
55
|
+
To calculate current elapsed time:
|
|
56
|
+
- Parse startedAt timestamp
|
|
57
|
+
- Calculate difference from now
|
|
58
|
+
- Result is current elapsed time
|
|
59
|
+
|
|
60
|
+
EXAMPLE USAGE:
|
|
61
|
+
- "Show my current timer"
|
|
62
|
+
- "What am I tracking time for?"
|
|
63
|
+
- "How long has my timer been running?"
|
|
64
|
+
- "Is there a timer running?"
|
|
65
|
+
|
|
66
|
+
NEXT STEPS:
|
|
67
|
+
If timer is found, you can:
|
|
68
|
+
- Stop it: Use timer_stop with the returned id
|
|
69
|
+
- Discard it: Use timer_discard with the returned id
|
|
70
|
+
- Continue running: Do nothing, timer keeps tracking`,
|
|
71
|
+
inputSchema: TimerCurrentInputSchema,
|
|
72
|
+
outputSchema: TimerCurrentOutputSchema,
|
|
73
|
+
async execute(input, client) {
|
|
74
|
+
const handler = ErrorHandler.wrapHandler('timer_current', async (input, _context) => {
|
|
75
|
+
const { businessId } = input;
|
|
76
|
+
// Use raw HTTP to access /comments/business/.../timers endpoint
|
|
77
|
+
// The SDK doesn't support this endpoint - it only has /timetracking/business/...
|
|
78
|
+
const result = await client.executeRawWithRetry('GET', `/comments/business/${businessId}/timers`, undefined, 'timer_current');
|
|
79
|
+
if (!result.ok || !result.data) {
|
|
80
|
+
throw result.error || new Error('Failed to fetch timers');
|
|
81
|
+
}
|
|
82
|
+
const timers = result.data.timers || [];
|
|
83
|
+
// Transform timers to the expected output format
|
|
84
|
+
// Each timer contains time_entries, and we want to expose the active ones
|
|
85
|
+
const activeTimers = timers.map(timer => {
|
|
86
|
+
// Get the most recent time entry for this timer
|
|
87
|
+
const timeEntries = timer.time_entries || [];
|
|
88
|
+
const activeEntry = timeEntries.find(te => te.duration === null) || timeEntries[0];
|
|
89
|
+
return {
|
|
90
|
+
id: activeEntry?.id || timer.id,
|
|
91
|
+
timerId: timer.id,
|
|
92
|
+
isRunning: timer.is_running,
|
|
93
|
+
identityId: undefined,
|
|
94
|
+
isLogged: activeEntry?.is_logged ?? false,
|
|
95
|
+
startedAt: activeEntry?.started_at || '',
|
|
96
|
+
createdAt: activeEntry?.created_at,
|
|
97
|
+
clientId: activeEntry?.client_id,
|
|
98
|
+
projectId: activeEntry?.project_id,
|
|
99
|
+
taskId: activeEntry?.task_id,
|
|
100
|
+
serviceId: activeEntry?.service_id,
|
|
101
|
+
note: activeEntry?.note,
|
|
102
|
+
active: activeEntry?.active ?? timer.is_running,
|
|
103
|
+
billable: activeEntry?.billable ?? false,
|
|
104
|
+
billed: activeEntry?.billed,
|
|
105
|
+
internal: activeEntry?.internal,
|
|
106
|
+
duration: activeEntry?.duration ?? 0,
|
|
107
|
+
timer: {
|
|
108
|
+
id: timer.id,
|
|
109
|
+
isRunning: timer.is_running,
|
|
110
|
+
},
|
|
111
|
+
// Include all time entries for duration calculation
|
|
112
|
+
timeEntries: timeEntries.map(te => ({
|
|
113
|
+
id: te.id,
|
|
114
|
+
duration: te.duration,
|
|
115
|
+
startedAt: te.started_at,
|
|
116
|
+
isLogged: te.is_logged,
|
|
117
|
+
})),
|
|
118
|
+
};
|
|
119
|
+
});
|
|
120
|
+
return {
|
|
121
|
+
activeTimers,
|
|
122
|
+
count: timers.length,
|
|
123
|
+
};
|
|
124
|
+
});
|
|
125
|
+
return handler(input, { businessId: input.businessId });
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Wrapped handler for backward compatibility with tests
|
|
130
|
+
*/
|
|
131
|
+
export async function timerCurrentHandler(input, context) {
|
|
132
|
+
return timerCurrentTool.execute(input, context.client);
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=timer-current.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer-current.js","sourceRoot":"","sources":["../../../src/tools/timer/timer-current.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timer Discard Tool
|
|
3
|
+
*
|
|
4
|
+
* Discards a running timer without logging the time using DELETE /comments/business/.../timers.
|
|
5
|
+
* This endpoint is not supported by the SDK, so we use raw HTTP.
|
|
6
|
+
*
|
|
7
|
+
* Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { TimerDiscardInputSchema, TimerDiscardOutputSchema } from "./schemas.js";
|
|
11
|
+
import { ToolContext } from "../../errors/types.js";
|
|
12
|
+
import { FreshBooksClientWrapper } from "../../client/freshbooks-client.js";
|
|
13
|
+
/**
|
|
14
|
+
* Tool definition for timer_discard
|
|
15
|
+
*/
|
|
16
|
+
export declare const timerDiscardTool: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: z.ZodObject<{
|
|
20
|
+
businessId: z.ZodNumber;
|
|
21
|
+
} & {
|
|
22
|
+
timerId: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
timeEntryId: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
businessId: number;
|
|
26
|
+
timeEntryId?: number | undefined;
|
|
27
|
+
timerId?: number | undefined;
|
|
28
|
+
}, {
|
|
29
|
+
businessId: number;
|
|
30
|
+
timeEntryId?: number | undefined;
|
|
31
|
+
timerId?: number | undefined;
|
|
32
|
+
}>;
|
|
33
|
+
outputSchema: z.ZodObject<{
|
|
34
|
+
success: z.ZodBoolean;
|
|
35
|
+
timeEntryId: z.ZodNumber;
|
|
36
|
+
message: z.ZodString;
|
|
37
|
+
}, "strip", z.ZodTypeAny, {
|
|
38
|
+
message: string;
|
|
39
|
+
success: boolean;
|
|
40
|
+
timeEntryId: number;
|
|
41
|
+
}, {
|
|
42
|
+
message: string;
|
|
43
|
+
success: boolean;
|
|
44
|
+
timeEntryId: number;
|
|
45
|
+
}>;
|
|
46
|
+
execute(input: z.infer<typeof TimerDiscardInputSchema>, client: FreshBooksClientWrapper): Promise<z.infer<typeof TimerDiscardOutputSchema>>;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Wrapped handler for backward compatibility with tests
|
|
50
|
+
*/
|
|
51
|
+
export declare function timerDiscardHandler(input: z.infer<typeof TimerDiscardInputSchema>, context: ToolContext & {
|
|
52
|
+
client: FreshBooksClientWrapper;
|
|
53
|
+
}): Promise<z.infer<typeof TimerDiscardOutputSchema>>;
|
|
54
|
+
//# sourceMappingURL=timer-discard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer-discard.d.ts","sourceRoot":"","sources":["../../../src/tools/timer/timer-discard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAEjF,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAe5E;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAiDlB,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,UACtC,uBAAuB,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;CA0ErD,CAAC;AAEF;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,EAC9C,OAAO,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,GACzD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC,CAEnD"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timer Discard Tool
|
|
3
|
+
*
|
|
4
|
+
* Discards a running timer without logging the time using DELETE /comments/business/.../timers.
|
|
5
|
+
* This endpoint is not supported by the SDK, so we use raw HTTP.
|
|
6
|
+
*
|
|
7
|
+
* Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
|
|
8
|
+
*/
|
|
9
|
+
import { TimerDiscardInputSchema, TimerDiscardOutputSchema } from "./schemas.js";
|
|
10
|
+
import { ErrorHandler } from "../../errors/error-handler.js";
|
|
11
|
+
/**
|
|
12
|
+
* Tool definition for timer_discard
|
|
13
|
+
*/
|
|
14
|
+
export const timerDiscardTool = {
|
|
15
|
+
name: "timer_discard",
|
|
16
|
+
description: `Discard a running timer without logging the time in FreshBooks.
|
|
17
|
+
|
|
18
|
+
WHEN TO USE:
|
|
19
|
+
- User says "discard timer", "delete timer", "cancel tracking"
|
|
20
|
+
- Timer was started by mistake
|
|
21
|
+
- Work was not actually performed
|
|
22
|
+
- Want to abandon tracked time without saving
|
|
23
|
+
|
|
24
|
+
IMPORTANT DIFFERENCE: Discard vs Stop
|
|
25
|
+
- timer_stop: Logs the time, saves the time entry with calculated duration
|
|
26
|
+
- timer_discard: DELETES the timer completely, no record is kept
|
|
27
|
+
|
|
28
|
+
USE WITH CAUTION:
|
|
29
|
+
- This permanently deletes the timer and all its time entries
|
|
30
|
+
- The tracked time CANNOT be recovered after discarding
|
|
31
|
+
- Use timer_stop if you want to keep and log the time entry
|
|
32
|
+
|
|
33
|
+
HOW IT WORKS:
|
|
34
|
+
Deletes the timer completely:
|
|
35
|
+
- Timer and all time entries are removed from FreshBooks
|
|
36
|
+
- No duration is logged
|
|
37
|
+
- No record remains
|
|
38
|
+
|
|
39
|
+
REQUIRED:
|
|
40
|
+
- businessId: FreshBooks business ID (get from user_me -> businessMemberships[].business.id)
|
|
41
|
+
|
|
42
|
+
OPTIONAL:
|
|
43
|
+
- timerId: ID of the timer to discard (from timer_current). If not provided, discards the current timer.
|
|
44
|
+
|
|
45
|
+
WHAT IF NO TIMER EXISTS:
|
|
46
|
+
- Returns error if no timer found
|
|
47
|
+
|
|
48
|
+
EXAMPLE USAGE:
|
|
49
|
+
- "Discard my current timer" (auto-detects current timer)
|
|
50
|
+
- "Delete timer - I didn't actually work on it"
|
|
51
|
+
- "Cancel time tracking"
|
|
52
|
+
|
|
53
|
+
RETURNS:
|
|
54
|
+
Confirmation object with:
|
|
55
|
+
- success: true if deletion succeeded
|
|
56
|
+
- timeEntryId: The first time entry ID that was deleted
|
|
57
|
+
- message: Confirmation message`,
|
|
58
|
+
inputSchema: TimerDiscardInputSchema,
|
|
59
|
+
outputSchema: TimerDiscardOutputSchema,
|
|
60
|
+
async execute(input, client) {
|
|
61
|
+
const handler = ErrorHandler.wrapHandler('timer_discard', async (input, _context) => {
|
|
62
|
+
const { businessId, timerId, timeEntryId } = input;
|
|
63
|
+
// First, get current timers to find the one to discard
|
|
64
|
+
const timersResult = await client.executeRawWithRetry('GET', `/comments/business/${businessId}/timers`, undefined, 'timer_discard_get_timers');
|
|
65
|
+
if (!timersResult.ok || !timersResult.data) {
|
|
66
|
+
throw timersResult.error || new Error('Failed to fetch timers');
|
|
67
|
+
}
|
|
68
|
+
const timers = timersResult.data.timers || [];
|
|
69
|
+
if (timers.length === 0) {
|
|
70
|
+
throw new Error('No timer found to discard');
|
|
71
|
+
}
|
|
72
|
+
// Find the timer to discard
|
|
73
|
+
let targetTimer = timers[0]; // Default to first timer
|
|
74
|
+
if (timerId) {
|
|
75
|
+
const found = timers.find(t => t.id === timerId);
|
|
76
|
+
if (!found) {
|
|
77
|
+
throw new Error(`Timer with ID ${timerId} not found`);
|
|
78
|
+
}
|
|
79
|
+
targetTimer = found;
|
|
80
|
+
}
|
|
81
|
+
else if (timeEntryId) {
|
|
82
|
+
// Legacy: find timer containing this time entry
|
|
83
|
+
const found = timers.find(t => t.time_entries?.some(te => te.id === timeEntryId));
|
|
84
|
+
if (found) {
|
|
85
|
+
targetTimer = found;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (!targetTimer) {
|
|
89
|
+
throw new Error('No timer found to discard');
|
|
90
|
+
}
|
|
91
|
+
const targetTimerId = targetTimer.id;
|
|
92
|
+
const firstTimeEntryId = targetTimer.time_entries?.[0]?.id ?? targetTimerId;
|
|
93
|
+
// DELETE /timers/{id} to discard
|
|
94
|
+
const result = await client.executeRawWithRetry('DELETE', `/comments/business/${businessId}/timers/${targetTimerId}`, undefined, 'timer_discard');
|
|
95
|
+
// Successful delete returns 204 No Content
|
|
96
|
+
if (!result.ok && result.status !== 204) {
|
|
97
|
+
throw result.error || new Error('Failed to discard timer');
|
|
98
|
+
}
|
|
99
|
+
// Return success confirmation
|
|
100
|
+
return {
|
|
101
|
+
success: true,
|
|
102
|
+
timeEntryId: firstTimeEntryId,
|
|
103
|
+
message: `Timer ${targetTimerId} has been discarded successfully. The time entry was deleted and no time was logged.`,
|
|
104
|
+
};
|
|
105
|
+
});
|
|
106
|
+
return handler(input, { businessId: input.businessId });
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
/**
|
|
110
|
+
* Wrapped handler for backward compatibility with tests
|
|
111
|
+
*/
|
|
112
|
+
export async function timerDiscardHandler(input, context) {
|
|
113
|
+
return timerDiscardTool.execute(input, context.client);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=timer-discard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer-discard.js","sourceRoot":"","sources":["../../../src/tools/timer/timer-discard.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAiB7D;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAyCiB;IAE9B,WAAW,EAAE,uBAAuB;IACpC,YAAY,EAAE,wBAAwB;IAEtC,KAAK,CAAC,OAAO,CACX,KAA8C,EAC9C,MAA+B;QAE/B,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,CACtC,eAAe,EACf,KAAK,EAAE,KAA8C,EAAE,QAAqB,EAAE,EAAE;YAC9E,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;YAEnD,uDAAuD;YACvD,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,mBAAmB,CACnD,KAAK,EACL,sBAAsB,UAAU,SAAS,EACzC,SAAS,EACT,0BAA0B,CAC3B,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBAC3C,MAAM,YAAY,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;YAE9C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,4BAA4B;YAC5B,IAAI,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB;YAEtD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;gBACjD,IAAI,CAAC,KAAK,EAAE,CAAC;oBACX,MAAM,IAAI,KAAK,CAAC,iBAAiB,OAAO,YAAY,CAAC,CAAC;gBACxD,CAAC;gBACD,WAAW,GAAG,KAAK,CAAC;YACtB,CAAC;iBAAM,IAAI,WAAW,EAAE,CAAC;gBACvB,gDAAgD;gBAChD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAC5B,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,CAClD,CAAC;gBACF,IAAI,KAAK,EAAE,CAAC;oBACV,WAAW,GAAG,KAAK,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,aAAa,GAAG,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,gBAAgB,GAAG,WAAW,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,aAAa,CAAC;YAE5E,iCAAiC;YACjC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAC7C,QAAQ,EACR,sBAAsB,UAAU,WAAW,aAAa,EAAE,EAC1D,SAAS,EACT,eAAe,CAChB,CAAC;YAEF,2CAA2C;YAC3C,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBACxC,MAAM,MAAM,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;YAC7D,CAAC;YAED,8BAA8B;YAC9B,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,WAAW,EAAE,gBAAgB;gBAC7B,OAAO,EAAE,SAAS,aAAa,sFAAsF;aACtH,CAAC;QACJ,CAAC,CACF,CAAC;QAEF,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1D,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA8C,EAC9C,OAA0D;IAE1D,OAAO,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timer Start Tool
|
|
3
|
+
*
|
|
4
|
+
* Starts a new timer using the /comments/business/.../time_entries endpoint.
|
|
5
|
+
* This endpoint is not supported by the SDK, so we use raw HTTP.
|
|
6
|
+
*
|
|
7
|
+
* Note: The SDK uses /timetracking/business/... but timer operations require /comments/business/...
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { TimerStartInputSchema, TimerStartOutputSchema } from "./schemas.js";
|
|
11
|
+
import { ToolContext } from "../../errors/types.js";
|
|
12
|
+
import { FreshBooksClientWrapper } from "../../client/freshbooks-client.js";
|
|
13
|
+
/**
|
|
14
|
+
* Tool definition for timer_start
|
|
15
|
+
*/
|
|
16
|
+
export declare const timerStartTool: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: z.ZodObject<{
|
|
20
|
+
businessId: z.ZodNumber;
|
|
21
|
+
} & {
|
|
22
|
+
projectId: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
clientId: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
serviceId: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
taskId: z.ZodOptional<z.ZodNumber>;
|
|
26
|
+
note: z.ZodOptional<z.ZodString>;
|
|
27
|
+
billable: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
28
|
+
internal: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
businessId: number;
|
|
31
|
+
billable: boolean;
|
|
32
|
+
internal: boolean;
|
|
33
|
+
taskId?: number | undefined;
|
|
34
|
+
clientId?: number | undefined;
|
|
35
|
+
projectId?: number | undefined;
|
|
36
|
+
serviceId?: number | undefined;
|
|
37
|
+
note?: string | undefined;
|
|
38
|
+
}, {
|
|
39
|
+
businessId: number;
|
|
40
|
+
taskId?: number | undefined;
|
|
41
|
+
clientId?: number | undefined;
|
|
42
|
+
projectId?: number | undefined;
|
|
43
|
+
serviceId?: number | undefined;
|
|
44
|
+
note?: string | undefined;
|
|
45
|
+
billable?: boolean | undefined;
|
|
46
|
+
internal?: boolean | undefined;
|
|
47
|
+
}>;
|
|
48
|
+
outputSchema: z.ZodObject<{
|
|
49
|
+
id: z.ZodNumber;
|
|
50
|
+
identityId: z.ZodOptional<z.ZodNumber>;
|
|
51
|
+
isLogged: z.ZodBoolean;
|
|
52
|
+
startedAt: z.ZodString;
|
|
53
|
+
createdAt: z.ZodOptional<z.ZodString>;
|
|
54
|
+
clientId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
55
|
+
projectId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
56
|
+
taskId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
57
|
+
serviceId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
58
|
+
note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
59
|
+
active: z.ZodBoolean;
|
|
60
|
+
billable: z.ZodOptional<z.ZodBoolean>;
|
|
61
|
+
billed: z.ZodOptional<z.ZodBoolean>;
|
|
62
|
+
internal: z.ZodOptional<z.ZodBoolean>;
|
|
63
|
+
duration: z.ZodNumber;
|
|
64
|
+
timer: z.ZodOptional<z.ZodNullable<z.ZodObject<{
|
|
65
|
+
id: z.ZodNumber;
|
|
66
|
+
isRunning: z.ZodNullable<z.ZodBoolean>;
|
|
67
|
+
}, "strip", z.ZodTypeAny, {
|
|
68
|
+
id: number;
|
|
69
|
+
isRunning: boolean | null;
|
|
70
|
+
}, {
|
|
71
|
+
id: number;
|
|
72
|
+
isRunning: boolean | null;
|
|
73
|
+
}>>>;
|
|
74
|
+
pendingClient: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
75
|
+
pendingProject: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
76
|
+
pendingTask: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
77
|
+
retainerId: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
|
|
78
|
+
}, "strip", z.ZodTypeAny, {
|
|
79
|
+
duration: number;
|
|
80
|
+
id: number;
|
|
81
|
+
isLogged: boolean;
|
|
82
|
+
startedAt: string;
|
|
83
|
+
active: boolean;
|
|
84
|
+
billed?: boolean | undefined;
|
|
85
|
+
taskId?: number | null | undefined;
|
|
86
|
+
createdAt?: string | undefined;
|
|
87
|
+
identityId?: number | undefined;
|
|
88
|
+
clientId?: number | null | undefined;
|
|
89
|
+
projectId?: number | null | undefined;
|
|
90
|
+
pendingClient?: string | null | undefined;
|
|
91
|
+
pendingProject?: string | null | undefined;
|
|
92
|
+
pendingTask?: string | null | undefined;
|
|
93
|
+
serviceId?: number | null | undefined;
|
|
94
|
+
note?: string | null | undefined;
|
|
95
|
+
billable?: boolean | undefined;
|
|
96
|
+
internal?: boolean | undefined;
|
|
97
|
+
retainerId?: number | null | undefined;
|
|
98
|
+
timer?: {
|
|
99
|
+
id: number;
|
|
100
|
+
isRunning: boolean | null;
|
|
101
|
+
} | null | undefined;
|
|
102
|
+
}, {
|
|
103
|
+
duration: number;
|
|
104
|
+
id: number;
|
|
105
|
+
isLogged: boolean;
|
|
106
|
+
startedAt: string;
|
|
107
|
+
active: boolean;
|
|
108
|
+
billed?: boolean | undefined;
|
|
109
|
+
taskId?: number | null | undefined;
|
|
110
|
+
createdAt?: string | undefined;
|
|
111
|
+
identityId?: number | undefined;
|
|
112
|
+
clientId?: number | null | undefined;
|
|
113
|
+
projectId?: number | null | undefined;
|
|
114
|
+
pendingClient?: string | null | undefined;
|
|
115
|
+
pendingProject?: string | null | undefined;
|
|
116
|
+
pendingTask?: string | null | undefined;
|
|
117
|
+
serviceId?: number | null | undefined;
|
|
118
|
+
note?: string | null | undefined;
|
|
119
|
+
billable?: boolean | undefined;
|
|
120
|
+
internal?: boolean | undefined;
|
|
121
|
+
retainerId?: number | null | undefined;
|
|
122
|
+
timer?: {
|
|
123
|
+
id: number;
|
|
124
|
+
isRunning: boolean | null;
|
|
125
|
+
} | null | undefined;
|
|
126
|
+
}>;
|
|
127
|
+
execute(input: z.infer<typeof TimerStartInputSchema>, client: FreshBooksClientWrapper): Promise<z.infer<typeof TimerStartOutputSchema>>;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* Wrapped handler for backward compatibility with tests
|
|
131
|
+
*/
|
|
132
|
+
export declare function timerStartHandler(input: z.infer<typeof TimerStartInputSchema>, context: ToolContext & {
|
|
133
|
+
client: FreshBooksClientWrapper;
|
|
134
|
+
}): Promise<z.infer<typeof TimerStartOutputSchema>>;
|
|
135
|
+
//# sourceMappingURL=timer-start.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timer-start.d.ts","sourceRoot":"","sources":["../../../src/tools/timer/timer-start.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE7E,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AA0B5E;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAmDhB,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,UACpC,uBAAuB,GAC9B,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;CA0EnD,CAAC;AAEF;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EAC5C,OAAO,EAAE,WAAW,GAAG;IAAE,MAAM,EAAE,uBAAuB,CAAA;CAAE,GACzD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC,CAEjD"}
|