@invect/core 0.0.1
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 +103 -0
- package/dist/_virtual/_rolldown/runtime.cjs +33 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/actions/action-executor.cjs +166 -0
- package/dist/actions/action-executor.cjs.map +1 -0
- package/dist/actions/action-executor.d.cts +33 -0
- package/dist/actions/action-executor.d.cts.map +1 -0
- package/dist/actions/action-executor.d.ts +33 -0
- package/dist/actions/action-executor.d.ts.map +1 -0
- package/dist/actions/action-executor.js +164 -0
- package/dist/actions/action-executor.js.map +1 -0
- package/dist/actions/action-registry.cjs +236 -0
- package/dist/actions/action-registry.cjs.map +1 -0
- package/dist/actions/action-registry.d.cts +58 -0
- package/dist/actions/action-registry.d.cts.map +1 -0
- package/dist/actions/action-registry.d.ts +58 -0
- package/dist/actions/action-registry.d.ts.map +1 -0
- package/dist/actions/action-registry.js +233 -0
- package/dist/actions/action-registry.js.map +1 -0
- package/dist/actions/core/if-else.cjs +111 -0
- package/dist/actions/core/if-else.cjs.map +1 -0
- package/dist/actions/core/if-else.d.cts +1 -0
- package/dist/actions/core/if-else.d.ts +1 -0
- package/dist/actions/core/if-else.js +98 -0
- package/dist/actions/core/if-else.js.map +1 -0
- package/dist/actions/core/index.cjs +20 -0
- package/dist/actions/core/index.cjs.map +1 -0
- package/dist/actions/core/index.d.cts +7 -0
- package/dist/actions/core/index.d.cts.map +1 -0
- package/dist/actions/core/index.d.ts +7 -0
- package/dist/actions/core/index.d.ts.map +1 -0
- package/dist/actions/core/index.js +20 -0
- package/dist/actions/core/index.js.map +1 -0
- package/dist/actions/core/input.cjs +73 -0
- package/dist/actions/core/input.cjs.map +1 -0
- package/dist/actions/core/input.d.cts +1 -0
- package/dist/actions/core/input.d.ts +1 -0
- package/dist/actions/core/input.js +72 -0
- package/dist/actions/core/input.js.map +1 -0
- package/dist/actions/core/javascript.cjs +77 -0
- package/dist/actions/core/javascript.cjs.map +1 -0
- package/dist/actions/core/javascript.d.cts +1 -0
- package/dist/actions/core/javascript.d.ts +1 -0
- package/dist/actions/core/javascript.js +62 -0
- package/dist/actions/core/javascript.js.map +1 -0
- package/dist/actions/core/model.cjs +285 -0
- package/dist/actions/core/model.cjs.map +1 -0
- package/dist/actions/core/model.d.cts +1 -0
- package/dist/actions/core/model.d.ts +1 -0
- package/dist/actions/core/model.js +276 -0
- package/dist/actions/core/model.js.map +1 -0
- package/dist/actions/core/output.cjs +66 -0
- package/dist/actions/core/output.cjs.map +1 -0
- package/dist/actions/core/output.d.cts +1 -0
- package/dist/actions/core/output.d.ts +1 -0
- package/dist/actions/core/output.js +57 -0
- package/dist/actions/core/output.js.map +1 -0
- package/dist/actions/core/template-string.cjs +85 -0
- package/dist/actions/core/template-string.cjs.map +1 -0
- package/dist/actions/core/template-string.d.cts +1 -0
- package/dist/actions/core/template-string.d.ts +1 -0
- package/dist/actions/core/template-string.js +76 -0
- package/dist/actions/core/template-string.js.map +1 -0
- package/dist/actions/define-action.cjs +14 -0
- package/dist/actions/define-action.cjs.map +1 -0
- package/dist/actions/define-action.d.cts +13 -0
- package/dist/actions/define-action.d.cts.map +1 -0
- package/dist/actions/define-action.d.ts +13 -0
- package/dist/actions/define-action.d.ts.map +1 -0
- package/dist/actions/define-action.js +14 -0
- package/dist/actions/define-action.js.map +1 -0
- package/dist/actions/github/add-issue-comment.cjs +152 -0
- package/dist/actions/github/add-issue-comment.cjs.map +1 -0
- package/dist/actions/github/add-issue-comment.d.cts +1 -0
- package/dist/actions/github/add-issue-comment.d.ts +1 -0
- package/dist/actions/github/add-issue-comment.js +150 -0
- package/dist/actions/github/add-issue-comment.js.map +1 -0
- package/dist/actions/github/create-branch.cjs +201 -0
- package/dist/actions/github/create-branch.cjs.map +1 -0
- package/dist/actions/github/create-branch.d.cts +1 -0
- package/dist/actions/github/create-branch.d.ts +1 -0
- package/dist/actions/github/create-branch.js +199 -0
- package/dist/actions/github/create-branch.js.map +1 -0
- package/dist/actions/github/create-issue.cjs +190 -0
- package/dist/actions/github/create-issue.cjs.map +1 -0
- package/dist/actions/github/create-issue.d.cts +1 -0
- package/dist/actions/github/create-issue.d.ts +1 -0
- package/dist/actions/github/create-issue.js +188 -0
- package/dist/actions/github/create-issue.js.map +1 -0
- package/dist/actions/github/create-or-update-file.cjs +216 -0
- package/dist/actions/github/create-or-update-file.cjs.map +1 -0
- package/dist/actions/github/create-or-update-file.d.cts +1 -0
- package/dist/actions/github/create-or-update-file.d.ts +1 -0
- package/dist/actions/github/create-or-update-file.js +214 -0
- package/dist/actions/github/create-or-update-file.js.map +1 -0
- package/dist/actions/github/create-pull-request.cjs +206 -0
- package/dist/actions/github/create-pull-request.cjs.map +1 -0
- package/dist/actions/github/create-pull-request.d.cts +1 -0
- package/dist/actions/github/create-pull-request.d.ts +1 -0
- package/dist/actions/github/create-pull-request.js +204 -0
- package/dist/actions/github/create-pull-request.js.map +1 -0
- package/dist/actions/github/create-release.cjs +218 -0
- package/dist/actions/github/create-release.cjs.map +1 -0
- package/dist/actions/github/create-release.d.cts +1 -0
- package/dist/actions/github/create-release.d.ts +1 -0
- package/dist/actions/github/create-release.js +216 -0
- package/dist/actions/github/create-release.js.map +1 -0
- package/dist/actions/github/get-file-content.cjs +164 -0
- package/dist/actions/github/get-file-content.cjs.map +1 -0
- package/dist/actions/github/get-file-content.d.cts +1 -0
- package/dist/actions/github/get-file-content.d.ts +1 -0
- package/dist/actions/github/get-file-content.js +162 -0
- package/dist/actions/github/get-file-content.js.map +1 -0
- package/dist/actions/github/get-issue.cjs +149 -0
- package/dist/actions/github/get-issue.cjs.map +1 -0
- package/dist/actions/github/get-issue.d.cts +1 -0
- package/dist/actions/github/get-issue.d.ts +1 -0
- package/dist/actions/github/get-issue.js +147 -0
- package/dist/actions/github/get-issue.js.map +1 -0
- package/dist/actions/github/get-pull-request.cjs +160 -0
- package/dist/actions/github/get-pull-request.cjs.map +1 -0
- package/dist/actions/github/get-pull-request.d.cts +1 -0
- package/dist/actions/github/get-pull-request.d.ts +1 -0
- package/dist/actions/github/get-pull-request.js +158 -0
- package/dist/actions/github/get-pull-request.js.map +1 -0
- package/dist/actions/github/get-repo.cjs +144 -0
- package/dist/actions/github/get-repo.cjs.map +1 -0
- package/dist/actions/github/get-repo.d.cts +1 -0
- package/dist/actions/github/get-repo.d.ts +1 -0
- package/dist/actions/github/get-repo.js +142 -0
- package/dist/actions/github/get-repo.js.map +1 -0
- package/dist/actions/github/index.cjs +48 -0
- package/dist/actions/github/index.cjs.map +1 -0
- package/dist/actions/github/index.d.cts +7 -0
- package/dist/actions/github/index.d.cts.map +1 -0
- package/dist/actions/github/index.d.ts +7 -0
- package/dist/actions/github/index.d.ts.map +1 -0
- package/dist/actions/github/index.js +48 -0
- package/dist/actions/github/index.js.map +1 -0
- package/dist/actions/github/list-branches.cjs +149 -0
- package/dist/actions/github/list-branches.cjs.map +1 -0
- package/dist/actions/github/list-branches.d.cts +1 -0
- package/dist/actions/github/list-branches.d.ts +1 -0
- package/dist/actions/github/list-branches.js +147 -0
- package/dist/actions/github/list-branches.js.map +1 -0
- package/dist/actions/github/list-commits.cjs +200 -0
- package/dist/actions/github/list-commits.cjs.map +1 -0
- package/dist/actions/github/list-commits.d.cts +1 -0
- package/dist/actions/github/list-commits.d.ts +1 -0
- package/dist/actions/github/list-commits.js +198 -0
- package/dist/actions/github/list-commits.js.map +1 -0
- package/dist/actions/github/list-issue-comments.cjs +153 -0
- package/dist/actions/github/list-issue-comments.cjs.map +1 -0
- package/dist/actions/github/list-issue-comments.d.cts +1 -0
- package/dist/actions/github/list-issue-comments.d.ts +1 -0
- package/dist/actions/github/list-issue-comments.js +151 -0
- package/dist/actions/github/list-issue-comments.js.map +1 -0
- package/dist/actions/github/list-issues.cjs +244 -0
- package/dist/actions/github/list-issues.cjs.map +1 -0
- package/dist/actions/github/list-issues.d.cts +1 -0
- package/dist/actions/github/list-issues.d.ts +1 -0
- package/dist/actions/github/list-issues.js +242 -0
- package/dist/actions/github/list-issues.js.map +1 -0
- package/dist/actions/github/list-pull-requests.cjs +252 -0
- package/dist/actions/github/list-pull-requests.cjs.map +1 -0
- package/dist/actions/github/list-pull-requests.d.cts +1 -0
- package/dist/actions/github/list-pull-requests.d.ts +1 -0
- package/dist/actions/github/list-pull-requests.js +250 -0
- package/dist/actions/github/list-pull-requests.js.map +1 -0
- package/dist/actions/github/list-releases.cjs +152 -0
- package/dist/actions/github/list-releases.cjs.map +1 -0
- package/dist/actions/github/list-releases.d.cts +1 -0
- package/dist/actions/github/list-releases.d.ts +1 -0
- package/dist/actions/github/list-releases.js +150 -0
- package/dist/actions/github/list-releases.js.map +1 -0
- package/dist/actions/github/list-repos.cjs +227 -0
- package/dist/actions/github/list-repos.cjs.map +1 -0
- package/dist/actions/github/list-repos.d.cts +1 -0
- package/dist/actions/github/list-repos.d.ts +1 -0
- package/dist/actions/github/list-repos.js +225 -0
- package/dist/actions/github/list-repos.js.map +1 -0
- package/dist/actions/github/merge-pull-request.cjs +204 -0
- package/dist/actions/github/merge-pull-request.cjs.map +1 -0
- package/dist/actions/github/merge-pull-request.d.cts +1 -0
- package/dist/actions/github/merge-pull-request.d.ts +1 -0
- package/dist/actions/github/merge-pull-request.js +202 -0
- package/dist/actions/github/merge-pull-request.js.map +1 -0
- package/dist/actions/github/search-issues.cjs +200 -0
- package/dist/actions/github/search-issues.cjs.map +1 -0
- package/dist/actions/github/search-issues.d.cts +1 -0
- package/dist/actions/github/search-issues.d.ts +1 -0
- package/dist/actions/github/search-issues.js +198 -0
- package/dist/actions/github/search-issues.js.map +1 -0
- package/dist/actions/github/update-issue.cjs +243 -0
- package/dist/actions/github/update-issue.cjs.map +1 -0
- package/dist/actions/github/update-issue.d.cts +1 -0
- package/dist/actions/github/update-issue.d.ts +1 -0
- package/dist/actions/github/update-issue.js +241 -0
- package/dist/actions/github/update-issue.js.map +1 -0
- package/dist/actions/gmail/create-draft.cjs +228 -0
- package/dist/actions/gmail/create-draft.cjs.map +1 -0
- package/dist/actions/gmail/create-draft.d.cts +1 -0
- package/dist/actions/gmail/create-draft.d.ts +1 -0
- package/dist/actions/gmail/create-draft.js +226 -0
- package/dist/actions/gmail/create-draft.js.map +1 -0
- package/dist/actions/gmail/get-message.cjs +205 -0
- package/dist/actions/gmail/get-message.cjs.map +1 -0
- package/dist/actions/gmail/get-message.d.cts +1 -0
- package/dist/actions/gmail/get-message.d.ts +1 -0
- package/dist/actions/gmail/get-message.js +203 -0
- package/dist/actions/gmail/get-message.js.map +1 -0
- package/dist/actions/gmail/index.cjs +18 -0
- package/dist/actions/gmail/index.cjs.map +1 -0
- package/dist/actions/gmail/index.d.cts +7 -0
- package/dist/actions/gmail/index.d.cts.map +1 -0
- package/dist/actions/gmail/index.d.ts +7 -0
- package/dist/actions/gmail/index.d.ts.map +1 -0
- package/dist/actions/gmail/index.js +18 -0
- package/dist/actions/gmail/index.js.map +1 -0
- package/dist/actions/gmail/list-messages.cjs +195 -0
- package/dist/actions/gmail/list-messages.cjs.map +1 -0
- package/dist/actions/gmail/list-messages.d.cts +1 -0
- package/dist/actions/gmail/list-messages.d.ts +1 -0
- package/dist/actions/gmail/list-messages.js +193 -0
- package/dist/actions/gmail/list-messages.js.map +1 -0
- package/dist/actions/gmail/modify-labels.cjs +163 -0
- package/dist/actions/gmail/modify-labels.cjs.map +1 -0
- package/dist/actions/gmail/modify-labels.d.cts +1 -0
- package/dist/actions/gmail/modify-labels.d.ts +1 -0
- package/dist/actions/gmail/modify-labels.js +161 -0
- package/dist/actions/gmail/modify-labels.js.map +1 -0
- package/dist/actions/gmail/send-message.cjs +233 -0
- package/dist/actions/gmail/send-message.cjs.map +1 -0
- package/dist/actions/gmail/send-message.d.cts +1 -0
- package/dist/actions/gmail/send-message.d.ts +1 -0
- package/dist/actions/gmail/send-message.js +231 -0
- package/dist/actions/gmail/send-message.js.map +1 -0
- package/dist/actions/google-calendar/create-event.cjs +274 -0
- package/dist/actions/google-calendar/create-event.cjs.map +1 -0
- package/dist/actions/google-calendar/create-event.d.cts +1 -0
- package/dist/actions/google-calendar/create-event.d.ts +1 -0
- package/dist/actions/google-calendar/create-event.js +272 -0
- package/dist/actions/google-calendar/create-event.js.map +1 -0
- package/dist/actions/google-calendar/delete-event.cjs +145 -0
- package/dist/actions/google-calendar/delete-event.cjs.map +1 -0
- package/dist/actions/google-calendar/delete-event.d.cts +1 -0
- package/dist/actions/google-calendar/delete-event.d.ts +1 -0
- package/dist/actions/google-calendar/delete-event.js +143 -0
- package/dist/actions/google-calendar/delete-event.js.map +1 -0
- package/dist/actions/google-calendar/get-event.cjs +128 -0
- package/dist/actions/google-calendar/get-event.cjs.map +1 -0
- package/dist/actions/google-calendar/get-event.d.cts +1 -0
- package/dist/actions/google-calendar/get-event.d.ts +1 -0
- package/dist/actions/google-calendar/get-event.js +126 -0
- package/dist/actions/google-calendar/get-event.js.map +1 -0
- package/dist/actions/google-calendar/index.cjs +20 -0
- package/dist/actions/google-calendar/index.cjs.map +1 -0
- package/dist/actions/google-calendar/index.d.cts +7 -0
- package/dist/actions/google-calendar/index.d.cts.map +1 -0
- package/dist/actions/google-calendar/index.d.ts +7 -0
- package/dist/actions/google-calendar/index.d.ts.map +1 -0
- package/dist/actions/google-calendar/index.js +20 -0
- package/dist/actions/google-calendar/index.js.map +1 -0
- package/dist/actions/google-calendar/list-events.cjs +193 -0
- package/dist/actions/google-calendar/list-events.cjs.map +1 -0
- package/dist/actions/google-calendar/list-events.d.cts +1 -0
- package/dist/actions/google-calendar/list-events.d.ts +1 -0
- package/dist/actions/google-calendar/list-events.js +191 -0
- package/dist/actions/google-calendar/list-events.js.map +1 -0
- package/dist/actions/google-calendar/query-freebusy.cjs +160 -0
- package/dist/actions/google-calendar/query-freebusy.cjs.map +1 -0
- package/dist/actions/google-calendar/query-freebusy.d.cts +1 -0
- package/dist/actions/google-calendar/query-freebusy.d.ts +1 -0
- package/dist/actions/google-calendar/query-freebusy.js +158 -0
- package/dist/actions/google-calendar/query-freebusy.js.map +1 -0
- package/dist/actions/google-calendar/update-event.cjs +221 -0
- package/dist/actions/google-calendar/update-event.cjs.map +1 -0
- package/dist/actions/google-calendar/update-event.d.cts +1 -0
- package/dist/actions/google-calendar/update-event.d.ts +1 -0
- package/dist/actions/google-calendar/update-event.js +219 -0
- package/dist/actions/google-calendar/update-event.js.map +1 -0
- package/dist/actions/google-docs/append-text.cjs +138 -0
- package/dist/actions/google-docs/append-text.cjs.map +1 -0
- package/dist/actions/google-docs/append-text.d.cts +1 -0
- package/dist/actions/google-docs/append-text.d.ts +1 -0
- package/dist/actions/google-docs/append-text.js +136 -0
- package/dist/actions/google-docs/append-text.js.map +1 -0
- package/dist/actions/google-docs/create-document.cjs +138 -0
- package/dist/actions/google-docs/create-document.cjs.map +1 -0
- package/dist/actions/google-docs/create-document.d.cts +1 -0
- package/dist/actions/google-docs/create-document.d.ts +1 -0
- package/dist/actions/google-docs/create-document.js +136 -0
- package/dist/actions/google-docs/create-document.js.map +1 -0
- package/dist/actions/google-docs/get-document.cjs +118 -0
- package/dist/actions/google-docs/get-document.cjs.map +1 -0
- package/dist/actions/google-docs/get-document.d.cts +1 -0
- package/dist/actions/google-docs/get-document.d.ts +1 -0
- package/dist/actions/google-docs/get-document.js +116 -0
- package/dist/actions/google-docs/get-document.js.map +1 -0
- package/dist/actions/google-docs/index.cjs +18 -0
- package/dist/actions/google-docs/index.cjs.map +1 -0
- package/dist/actions/google-docs/index.d.cts +7 -0
- package/dist/actions/google-docs/index.d.cts.map +1 -0
- package/dist/actions/google-docs/index.d.ts +7 -0
- package/dist/actions/google-docs/index.d.ts.map +1 -0
- package/dist/actions/google-docs/index.js +18 -0
- package/dist/actions/google-docs/index.js.map +1 -0
- package/dist/actions/google-docs/insert-text.cjs +136 -0
- package/dist/actions/google-docs/insert-text.cjs.map +1 -0
- package/dist/actions/google-docs/insert-text.d.cts +1 -0
- package/dist/actions/google-docs/insert-text.d.ts +1 -0
- package/dist/actions/google-docs/insert-text.js +134 -0
- package/dist/actions/google-docs/insert-text.js.map +1 -0
- package/dist/actions/google-docs/replace-text.cjs +152 -0
- package/dist/actions/google-docs/replace-text.cjs.map +1 -0
- package/dist/actions/google-docs/replace-text.d.cts +1 -0
- package/dist/actions/google-docs/replace-text.d.ts +1 -0
- package/dist/actions/google-docs/replace-text.js +150 -0
- package/dist/actions/google-docs/replace-text.js.map +1 -0
- package/dist/actions/google-drive/create-file.cjs +155 -0
- package/dist/actions/google-drive/create-file.cjs.map +1 -0
- package/dist/actions/google-drive/create-file.d.cts +1 -0
- package/dist/actions/google-drive/create-file.d.ts +1 -0
- package/dist/actions/google-drive/create-file.js +153 -0
- package/dist/actions/google-drive/create-file.js.map +1 -0
- package/dist/actions/google-drive/create-folder.cjs +130 -0
- package/dist/actions/google-drive/create-folder.cjs.map +1 -0
- package/dist/actions/google-drive/create-folder.d.cts +1 -0
- package/dist/actions/google-drive/create-folder.d.ts +1 -0
- package/dist/actions/google-drive/create-folder.js +128 -0
- package/dist/actions/google-drive/create-folder.js.map +1 -0
- package/dist/actions/google-drive/delete-file.cjs +98 -0
- package/dist/actions/google-drive/delete-file.cjs.map +1 -0
- package/dist/actions/google-drive/delete-file.d.cts +1 -0
- package/dist/actions/google-drive/delete-file.d.ts +1 -0
- package/dist/actions/google-drive/delete-file.js +96 -0
- package/dist/actions/google-drive/delete-file.js.map +1 -0
- package/dist/actions/google-drive/get-file.cjs +103 -0
- package/dist/actions/google-drive/get-file.cjs.map +1 -0
- package/dist/actions/google-drive/get-file.d.cts +1 -0
- package/dist/actions/google-drive/get-file.d.ts +1 -0
- package/dist/actions/google-drive/get-file.js +101 -0
- package/dist/actions/google-drive/get-file.js.map +1 -0
- package/dist/actions/google-drive/index.cjs +22 -0
- package/dist/actions/google-drive/index.cjs.map +1 -0
- package/dist/actions/google-drive/index.d.cts +7 -0
- package/dist/actions/google-drive/index.d.cts.map +1 -0
- package/dist/actions/google-drive/index.d.ts +7 -0
- package/dist/actions/google-drive/index.d.ts.map +1 -0
- package/dist/actions/google-drive/index.js +22 -0
- package/dist/actions/google-drive/index.js.map +1 -0
- package/dist/actions/google-drive/list-files.cjs +156 -0
- package/dist/actions/google-drive/list-files.cjs.map +1 -0
- package/dist/actions/google-drive/list-files.d.cts +1 -0
- package/dist/actions/google-drive/list-files.d.ts +1 -0
- package/dist/actions/google-drive/list-files.js +154 -0
- package/dist/actions/google-drive/list-files.js.map +1 -0
- package/dist/actions/google-drive/search-files.cjs +138 -0
- package/dist/actions/google-drive/search-files.cjs.map +1 -0
- package/dist/actions/google-drive/search-files.d.cts +1 -0
- package/dist/actions/google-drive/search-files.d.ts +1 -0
- package/dist/actions/google-drive/search-files.js +136 -0
- package/dist/actions/google-drive/search-files.js.map +1 -0
- package/dist/actions/google-drive/share-file.cjs +226 -0
- package/dist/actions/google-drive/share-file.cjs.map +1 -0
- package/dist/actions/google-drive/share-file.d.cts +1 -0
- package/dist/actions/google-drive/share-file.d.ts +1 -0
- package/dist/actions/google-drive/share-file.js +224 -0
- package/dist/actions/google-drive/share-file.js.map +1 -0
- package/dist/actions/google-sheets/append-values.cjs +175 -0
- package/dist/actions/google-sheets/append-values.cjs.map +1 -0
- package/dist/actions/google-sheets/append-values.d.cts +1 -0
- package/dist/actions/google-sheets/append-values.d.ts +1 -0
- package/dist/actions/google-sheets/append-values.js +173 -0
- package/dist/actions/google-sheets/append-values.js.map +1 -0
- package/dist/actions/google-sheets/clear-values.cjs +118 -0
- package/dist/actions/google-sheets/clear-values.cjs.map +1 -0
- package/dist/actions/google-sheets/clear-values.d.cts +1 -0
- package/dist/actions/google-sheets/clear-values.d.ts +1 -0
- package/dist/actions/google-sheets/clear-values.js +116 -0
- package/dist/actions/google-sheets/clear-values.js.map +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.cjs +128 -0
- package/dist/actions/google-sheets/create-spreadsheet.cjs.map +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.d.cts +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.d.ts +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.js +126 -0
- package/dist/actions/google-sheets/create-spreadsheet.js.map +1 -0
- package/dist/actions/google-sheets/get-values.cjs +168 -0
- package/dist/actions/google-sheets/get-values.cjs.map +1 -0
- package/dist/actions/google-sheets/get-values.d.cts +1 -0
- package/dist/actions/google-sheets/get-values.d.ts +1 -0
- package/dist/actions/google-sheets/get-values.js +166 -0
- package/dist/actions/google-sheets/get-values.js.map +1 -0
- package/dist/actions/google-sheets/index.cjs +18 -0
- package/dist/actions/google-sheets/index.cjs.map +1 -0
- package/dist/actions/google-sheets/index.d.cts +7 -0
- package/dist/actions/google-sheets/index.d.cts.map +1 -0
- package/dist/actions/google-sheets/index.d.ts +7 -0
- package/dist/actions/google-sheets/index.d.ts.map +1 -0
- package/dist/actions/google-sheets/index.js +18 -0
- package/dist/actions/google-sheets/index.js.map +1 -0
- package/dist/actions/google-sheets/update-values.cjs +158 -0
- package/dist/actions/google-sheets/update-values.cjs.map +1 -0
- package/dist/actions/google-sheets/update-values.d.cts +1 -0
- package/dist/actions/google-sheets/update-values.d.ts +1 -0
- package/dist/actions/google-sheets/update-values.js +156 -0
- package/dist/actions/google-sheets/update-values.js.map +1 -0
- package/dist/actions/http/index.cjs +7 -0
- package/dist/actions/http/index.cjs.map +1 -0
- package/dist/actions/http/index.d.cts +7 -0
- package/dist/actions/http/index.d.cts.map +1 -0
- package/dist/actions/http/index.d.ts +7 -0
- package/dist/actions/http/index.d.ts.map +1 -0
- package/dist/actions/http/index.js +8 -0
- package/dist/actions/http/index.js.map +1 -0
- package/dist/actions/http/request.cjs +223 -0
- package/dist/actions/http/request.cjs.map +1 -0
- package/dist/actions/http/request.d.cts +1 -0
- package/dist/actions/http/request.d.ts +1 -0
- package/dist/actions/http/request.js +222 -0
- package/dist/actions/http/request.js.map +1 -0
- package/dist/actions/index.cjs +46 -0
- package/dist/actions/index.cjs.map +1 -0
- package/dist/actions/index.d.cts +27 -0
- package/dist/actions/index.d.cts.map +1 -0
- package/dist/actions/index.d.ts +27 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +45 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/linear/create-issue.cjs +296 -0
- package/dist/actions/linear/create-issue.cjs.map +1 -0
- package/dist/actions/linear/create-issue.d.cts +1 -0
- package/dist/actions/linear/create-issue.d.ts +1 -0
- package/dist/actions/linear/create-issue.js +294 -0
- package/dist/actions/linear/create-issue.js.map +1 -0
- package/dist/actions/linear/index.cjs +16 -0
- package/dist/actions/linear/index.cjs.map +1 -0
- package/dist/actions/linear/index.d.cts +7 -0
- package/dist/actions/linear/index.d.cts.map +1 -0
- package/dist/actions/linear/index.d.ts +7 -0
- package/dist/actions/linear/index.d.ts.map +1 -0
- package/dist/actions/linear/index.js +16 -0
- package/dist/actions/linear/index.js.map +1 -0
- package/dist/actions/linear/list-issues.cjs +239 -0
- package/dist/actions/linear/list-issues.cjs.map +1 -0
- package/dist/actions/linear/list-issues.d.cts +1 -0
- package/dist/actions/linear/list-issues.d.ts +1 -0
- package/dist/actions/linear/list-issues.js +237 -0
- package/dist/actions/linear/list-issues.js.map +1 -0
- package/dist/actions/linear/list-teams.cjs +183 -0
- package/dist/actions/linear/list-teams.cjs.map +1 -0
- package/dist/actions/linear/list-teams.d.cts +1 -0
- package/dist/actions/linear/list-teams.d.ts +1 -0
- package/dist/actions/linear/list-teams.js +181 -0
- package/dist/actions/linear/list-teams.js.map +1 -0
- package/dist/actions/linear/update-issue.cjs +282 -0
- package/dist/actions/linear/update-issue.cjs.map +1 -0
- package/dist/actions/linear/update-issue.d.cts +1 -0
- package/dist/actions/linear/update-issue.d.ts +1 -0
- package/dist/actions/linear/update-issue.js +280 -0
- package/dist/actions/linear/update-issue.js.map +1 -0
- package/dist/actions/microsoft/get-calendar-event.cjs +139 -0
- package/dist/actions/microsoft/get-calendar-event.cjs.map +1 -0
- package/dist/actions/microsoft/get-calendar-event.d.cts +1 -0
- package/dist/actions/microsoft/get-calendar-event.d.ts +1 -0
- package/dist/actions/microsoft/get-calendar-event.js +137 -0
- package/dist/actions/microsoft/get-calendar-event.js.map +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.cjs +221 -0
- package/dist/actions/microsoft/get-meeting-transcript.cjs.map +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.d.cts +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.d.ts +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.js +219 -0
- package/dist/actions/microsoft/get-meeting-transcript.js.map +1 -0
- package/dist/actions/microsoft/get-message.cjs +173 -0
- package/dist/actions/microsoft/get-message.cjs.map +1 -0
- package/dist/actions/microsoft/get-message.d.cts +1 -0
- package/dist/actions/microsoft/get-message.d.ts +1 -0
- package/dist/actions/microsoft/get-message.js +171 -0
- package/dist/actions/microsoft/get-message.js.map +1 -0
- package/dist/actions/microsoft/index.cjs +22 -0
- package/dist/actions/microsoft/index.cjs.map +1 -0
- package/dist/actions/microsoft/index.d.cts +1 -0
- package/dist/actions/microsoft/index.d.ts +1 -0
- package/dist/actions/microsoft/index.js +22 -0
- package/dist/actions/microsoft/index.js.map +1 -0
- package/dist/actions/microsoft/list-calendar-events.cjs +202 -0
- package/dist/actions/microsoft/list-calendar-events.cjs.map +1 -0
- package/dist/actions/microsoft/list-calendar-events.d.cts +1 -0
- package/dist/actions/microsoft/list-calendar-events.d.ts +1 -0
- package/dist/actions/microsoft/list-calendar-events.js +200 -0
- package/dist/actions/microsoft/list-calendar-events.js.map +1 -0
- package/dist/actions/microsoft/list-calendars.cjs +99 -0
- package/dist/actions/microsoft/list-calendars.cjs.map +1 -0
- package/dist/actions/microsoft/list-calendars.d.cts +1 -0
- package/dist/actions/microsoft/list-calendars.d.ts +1 -0
- package/dist/actions/microsoft/list-calendars.js +97 -0
- package/dist/actions/microsoft/list-calendars.js.map +1 -0
- package/dist/actions/microsoft/list-messages.cjs +223 -0
- package/dist/actions/microsoft/list-messages.cjs.map +1 -0
- package/dist/actions/microsoft/list-messages.d.cts +1 -0
- package/dist/actions/microsoft/list-messages.d.ts +1 -0
- package/dist/actions/microsoft/list-messages.js +221 -0
- package/dist/actions/microsoft/list-messages.js.map +1 -0
- package/dist/actions/microsoft/list-online-meetings.cjs +132 -0
- package/dist/actions/microsoft/list-online-meetings.cjs.map +1 -0
- package/dist/actions/microsoft/list-online-meetings.d.cts +1 -0
- package/dist/actions/microsoft/list-online-meetings.d.ts +1 -0
- package/dist/actions/microsoft/list-online-meetings.js +130 -0
- package/dist/actions/microsoft/list-online-meetings.js.map +1 -0
- package/dist/actions/postgres/describe-table.cjs +175 -0
- package/dist/actions/postgres/describe-table.cjs.map +1 -0
- package/dist/actions/postgres/describe-table.d.cts +1 -0
- package/dist/actions/postgres/describe-table.d.ts +1 -0
- package/dist/actions/postgres/describe-table.js +165 -0
- package/dist/actions/postgres/describe-table.js.map +1 -0
- package/dist/actions/postgres/execute-query.cjs +120 -0
- package/dist/actions/postgres/execute-query.cjs.map +1 -0
- package/dist/actions/postgres/execute-query.d.cts +1 -0
- package/dist/actions/postgres/execute-query.d.ts +1 -0
- package/dist/actions/postgres/execute-query.js +110 -0
- package/dist/actions/postgres/execute-query.js.map +1 -0
- package/dist/actions/postgres/index.cjs +16 -0
- package/dist/actions/postgres/index.cjs.map +1 -0
- package/dist/actions/postgres/index.d.cts +7 -0
- package/dist/actions/postgres/index.d.cts.map +1 -0
- package/dist/actions/postgres/index.d.ts +7 -0
- package/dist/actions/postgres/index.d.ts.map +1 -0
- package/dist/actions/postgres/index.js +16 -0
- package/dist/actions/postgres/index.js.map +1 -0
- package/dist/actions/postgres/insert-rows.cjs +168 -0
- package/dist/actions/postgres/insert-rows.cjs.map +1 -0
- package/dist/actions/postgres/insert-rows.d.cts +1 -0
- package/dist/actions/postgres/insert-rows.d.ts +1 -0
- package/dist/actions/postgres/insert-rows.js +158 -0
- package/dist/actions/postgres/insert-rows.js.map +1 -0
- package/dist/actions/postgres/list-tables.cjs +133 -0
- package/dist/actions/postgres/list-tables.cjs.map +1 -0
- package/dist/actions/postgres/list-tables.d.cts +1 -0
- package/dist/actions/postgres/list-tables.d.ts +1 -0
- package/dist/actions/postgres/list-tables.js +123 -0
- package/dist/actions/postgres/list-tables.js.map +1 -0
- package/dist/actions/providers.cjs +128 -0
- package/dist/actions/providers.cjs.map +1 -0
- package/dist/actions/providers.d.cts +22 -0
- package/dist/actions/providers.d.cts.map +1 -0
- package/dist/actions/providers.d.ts +22 -0
- package/dist/actions/providers.d.ts.map +1 -0
- package/dist/actions/providers.js +116 -0
- package/dist/actions/providers.js.map +1 -0
- package/dist/actions/slack/index.cjs +9 -0
- package/dist/actions/slack/index.cjs.map +1 -0
- package/dist/actions/slack/index.d.cts +7 -0
- package/dist/actions/slack/index.d.cts.map +1 -0
- package/dist/actions/slack/index.d.ts +7 -0
- package/dist/actions/slack/index.d.ts.map +1 -0
- package/dist/actions/slack/index.js +9 -0
- package/dist/actions/slack/index.js.map +1 -0
- package/dist/actions/slack/list-channels.cjs +157 -0
- package/dist/actions/slack/list-channels.cjs.map +1 -0
- package/dist/actions/slack/list-channels.d.cts +1 -0
- package/dist/actions/slack/list-channels.d.ts +1 -0
- package/dist/actions/slack/list-channels.js +155 -0
- package/dist/actions/slack/list-channels.js.map +1 -0
- package/dist/actions/slack/send-message.cjs +157 -0
- package/dist/actions/slack/send-message.cjs.map +1 -0
- package/dist/actions/slack/send-message.d.cts +1 -0
- package/dist/actions/slack/send-message.d.ts +1 -0
- package/dist/actions/slack/send-message.js +155 -0
- package/dist/actions/slack/send-message.js.map +1 -0
- package/dist/actions/triggers/cron.cjs +95 -0
- package/dist/actions/triggers/cron.cjs.map +1 -0
- package/dist/actions/triggers/cron.d.cts +1 -0
- package/dist/actions/triggers/cron.d.ts +1 -0
- package/dist/actions/triggers/cron.js +83 -0
- package/dist/actions/triggers/cron.js.map +1 -0
- package/dist/actions/triggers/index.cjs +9 -0
- package/dist/actions/triggers/index.cjs.map +1 -0
- package/dist/actions/triggers/index.d.cts +1 -0
- package/dist/actions/triggers/index.d.ts +1 -0
- package/dist/actions/triggers/index.js +9 -0
- package/dist/actions/triggers/index.js.map +1 -0
- package/dist/actions/triggers/manual.cjs +105 -0
- package/dist/actions/triggers/manual.cjs.map +1 -0
- package/dist/actions/triggers/manual.d.cts +1 -0
- package/dist/actions/triggers/manual.d.ts +1 -0
- package/dist/actions/triggers/manual.js +103 -0
- package/dist/actions/triggers/manual.js.map +1 -0
- package/dist/actions/types.d.cts +373 -0
- package/dist/actions/types.d.cts.map +1 -0
- package/dist/actions/types.d.ts +373 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/database/adapter-factory.cjs +188 -0
- package/dist/database/adapter-factory.cjs.map +1 -0
- package/dist/database/adapter-factory.js +187 -0
- package/dist/database/adapter-factory.js.map +1 -0
- package/dist/database/adapter.cjs +33 -0
- package/dist/database/adapter.cjs.map +1 -0
- package/dist/database/adapter.d.cts +76 -0
- package/dist/database/adapter.d.cts.map +1 -0
- package/dist/database/adapter.d.ts +76 -0
- package/dist/database/adapter.d.ts.map +1 -0
- package/dist/database/adapter.js +33 -0
- package/dist/database/adapter.js.map +1 -0
- package/dist/database/adapters/connection-bridge.cjs +119 -0
- package/dist/database/adapters/connection-bridge.cjs.map +1 -0
- package/dist/database/adapters/connection-bridge.js +118 -0
- package/dist/database/adapters/connection-bridge.js.map +1 -0
- package/dist/database/adapters/kysely-adapter.cjs +138 -0
- package/dist/database/adapters/kysely-adapter.cjs.map +1 -0
- package/dist/database/adapters/kysely-adapter.js +137 -0
- package/dist/database/adapters/kysely-adapter.js.map +1 -0
- package/dist/database/connection.cjs +277 -0
- package/dist/database/connection.cjs.map +1 -0
- package/dist/database/connection.d.cts +115 -0
- package/dist/database/connection.d.cts.map +1 -0
- package/dist/database/connection.d.ts +115 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +271 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/core-schema.cjs +644 -0
- package/dist/database/core-schema.cjs.map +1 -0
- package/dist/database/core-schema.d.cts +22 -0
- package/dist/database/core-schema.d.cts.map +1 -0
- package/dist/database/core-schema.d.ts +22 -0
- package/dist/database/core-schema.d.ts.map +1 -0
- package/dist/database/core-schema.js +642 -0
- package/dist/database/core-schema.js.map +1 -0
- package/dist/database/index.cjs +4 -0
- package/dist/database/index.d.cts +10 -0
- package/dist/database/index.d.cts.map +1 -0
- package/dist/database/index.d.ts +10 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +5 -0
- package/dist/database/prisma-schema-generator.cjs +219 -0
- package/dist/database/prisma-schema-generator.cjs.map +1 -0
- package/dist/database/prisma-schema-generator.d.cts +19 -0
- package/dist/database/prisma-schema-generator.d.cts.map +1 -0
- package/dist/database/prisma-schema-generator.d.ts +19 -0
- package/dist/database/prisma-schema-generator.d.ts.map +1 -0
- package/dist/database/prisma-schema-generator.js +218 -0
- package/dist/database/prisma-schema-generator.js.map +1 -0
- package/dist/database/schema-generator.cjs +576 -0
- package/dist/database/schema-generator.cjs.map +1 -0
- package/dist/database/schema-generator.d.cts +18 -0
- package/dist/database/schema-generator.d.cts.map +1 -0
- package/dist/database/schema-generator.d.ts +18 -0
- package/dist/database/schema-generator.d.ts.map +1 -0
- package/dist/database/schema-generator.js +571 -0
- package/dist/database/schema-generator.js.map +1 -0
- package/dist/database/schema-merger.cjs +153 -0
- package/dist/database/schema-merger.cjs.map +1 -0
- package/dist/database/schema-merger.d.cts +53 -0
- package/dist/database/schema-merger.d.cts.map +1 -0
- package/dist/database/schema-merger.d.ts +53 -0
- package/dist/database/schema-merger.d.ts.map +1 -0
- package/dist/database/schema-merger.js +152 -0
- package/dist/database/schema-merger.js.map +1 -0
- package/dist/database/schema-metadata.cjs +98 -0
- package/dist/database/schema-metadata.cjs.map +1 -0
- package/dist/database/schema-metadata.js +98 -0
- package/dist/database/schema-metadata.js.map +1 -0
- package/dist/database/schema-mysql.cjs +288 -0
- package/dist/database/schema-mysql.cjs.map +1 -0
- package/dist/database/schema-mysql.d.cts +2117 -0
- package/dist/database/schema-mysql.d.cts.map +1 -0
- package/dist/database/schema-mysql.d.ts +2117 -0
- package/dist/database/schema-mysql.d.ts.map +1 -0
- package/dist/database/schema-mysql.js +263 -0
- package/dist/database/schema-mysql.js.map +1 -0
- package/dist/database/schema-postgres.cjs +312 -0
- package/dist/database/schema-postgres.cjs.map +1 -0
- package/dist/database/schema-postgres.d.cts +2127 -0
- package/dist/database/schema-postgres.d.cts.map +1 -0
- package/dist/database/schema-postgres.d.ts +2127 -0
- package/dist/database/schema-postgres.d.ts.map +1 -0
- package/dist/database/schema-postgres.js +280 -0
- package/dist/database/schema-postgres.js.map +1 -0
- package/dist/database/schema-sqlite.cjs +247 -0
- package/dist/database/schema-sqlite.cjs.map +1 -0
- package/dist/database/schema-sqlite.d.cts +2294 -0
- package/dist/database/schema-sqlite.d.cts.map +1 -0
- package/dist/database/schema-sqlite.d.ts +2294 -0
- package/dist/database/schema-sqlite.d.ts.map +1 -0
- package/dist/database/schema-sqlite.js +222 -0
- package/dist/database/schema-sqlite.js.map +1 -0
- package/dist/database/schema-verification.cjs +123 -0
- package/dist/database/schema-verification.cjs.map +1 -0
- package/dist/database/schema-verification.d.cts +40 -0
- package/dist/database/schema-verification.d.cts.map +1 -0
- package/dist/database/schema-verification.d.ts +40 -0
- package/dist/database/schema-verification.d.ts.map +1 -0
- package/dist/database/schema-verification.js +123 -0
- package/dist/database/schema-verification.js.map +1 -0
- package/dist/database/schema.cjs +3 -0
- package/dist/database/schema.d.cts +3 -0
- package/dist/database/schema.d.ts +3 -0
- package/dist/database/schema.js +4 -0
- package/dist/index.cjs +199 -0
- package/dist/index.d.cts +70 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.js +56 -0
- package/dist/invect-core.cjs +1688 -0
- package/dist/invect-core.cjs.map +1 -0
- package/dist/invect-core.d.cts +846 -0
- package/dist/invect-core.d.cts.map +1 -0
- package/dist/invect-core.d.ts +846 -0
- package/dist/invect-core.d.ts.map +1 -0
- package/dist/invect-core.js +1688 -0
- package/dist/invect-core.js.map +1 -0
- package/dist/nodes/agent-executor.cjs +881 -0
- package/dist/nodes/agent-executor.cjs.map +1 -0
- package/dist/nodes/agent-executor.d.cts +243 -0
- package/dist/nodes/agent-executor.d.cts.map +1 -0
- package/dist/nodes/agent-executor.d.ts +243 -0
- package/dist/nodes/agent-executor.d.ts.map +1 -0
- package/dist/nodes/agent-executor.js +877 -0
- package/dist/nodes/agent-executor.js.map +1 -0
- package/dist/nodes/base-node.cjs +174 -0
- package/dist/nodes/base-node.cjs.map +1 -0
- package/dist/nodes/base-node.d.cts +125 -0
- package/dist/nodes/base-node.d.cts.map +1 -0
- package/dist/nodes/base-node.d.ts +125 -0
- package/dist/nodes/base-node.d.ts.map +1 -0
- package/dist/nodes/base-node.js +170 -0
- package/dist/nodes/base-node.js.map +1 -0
- package/dist/nodes/executor-registry.cjs +46 -0
- package/dist/nodes/executor-registry.cjs.map +1 -0
- package/dist/nodes/executor-registry.d.cts +18 -0
- package/dist/nodes/executor-registry.d.cts.map +1 -0
- package/dist/nodes/executor-registry.d.ts +18 -0
- package/dist/nodes/executor-registry.d.ts.map +1 -0
- package/dist/nodes/executor-registry.js +46 -0
- package/dist/nodes/executor-registry.js.map +1 -0
- package/dist/nodes/index.cjs +2 -0
- package/dist/nodes/index.d.cts +3 -0
- package/dist/nodes/index.d.ts +3 -0
- package/dist/nodes/index.js +3 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.cjs +110 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.cjs.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.cts +42 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.cts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.ts +42 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.ts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.js +110 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.js.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.cjs +152 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.cjs.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.cts +71 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.cts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.ts +71 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.ts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.js +152 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.js.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.cjs +101 -0
- package/dist/services/agent-tools/agent-tool-registry.cjs.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.d.cts +51 -0
- package/dist/services/agent-tools/agent-tool-registry.d.cts.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.d.ts +51 -0
- package/dist/services/agent-tools/agent-tool-registry.d.ts.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.js +98 -0
- package/dist/services/agent-tools/agent-tool-registry.js.map +1 -0
- package/dist/services/agent-tools/builtin/index.cjs +17 -0
- package/dist/services/agent-tools/builtin/index.cjs.map +1 -0
- package/dist/services/agent-tools/builtin/index.js +17 -0
- package/dist/services/agent-tools/builtin/index.js.map +1 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.cjs +73 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.cjs.map +1 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.js +70 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.js.map +1 -0
- package/dist/services/agent-tools/builtin/math-tool.cjs +117 -0
- package/dist/services/agent-tools/builtin/math-tool.cjs.map +1 -0
- package/dist/services/agent-tools/builtin/math-tool.js +116 -0
- package/dist/services/agent-tools/builtin/math-tool.js.map +1 -0
- package/dist/services/agent-tools/index.cjs +2 -0
- package/dist/services/agent-tools/index.js +3 -0
- package/dist/services/ai/ai-types.cjs +37 -0
- package/dist/services/ai/ai-types.cjs.map +1 -0
- package/dist/services/ai/ai-types.d.cts +105 -0
- package/dist/services/ai/ai-types.d.cts.map +1 -0
- package/dist/services/ai/ai-types.d.ts +105 -0
- package/dist/services/ai/ai-types.d.ts.map +1 -0
- package/dist/services/ai/ai-types.js +35 -0
- package/dist/services/ai/ai-types.js.map +1 -0
- package/dist/services/ai/anthropic-adapter.cjs +411 -0
- package/dist/services/ai/anthropic-adapter.cjs.map +1 -0
- package/dist/services/ai/anthropic-adapter.d.cts +1 -0
- package/dist/services/ai/anthropic-adapter.d.ts +1 -0
- package/dist/services/ai/anthropic-adapter.js +409 -0
- package/dist/services/ai/anthropic-adapter.js.map +1 -0
- package/dist/services/ai/base-client.cjs +345 -0
- package/dist/services/ai/base-client.cjs.map +1 -0
- package/dist/services/ai/base-client.d.cts +138 -0
- package/dist/services/ai/base-client.d.cts.map +1 -0
- package/dist/services/ai/base-client.d.ts +138 -0
- package/dist/services/ai/base-client.d.ts.map +1 -0
- package/dist/services/ai/base-client.js +345 -0
- package/dist/services/ai/base-client.js.map +1 -0
- package/dist/services/ai/openai-adapter.cjs +460 -0
- package/dist/services/ai/openai-adapter.cjs.map +1 -0
- package/dist/services/ai/openai-adapter.d.cts +1 -0
- package/dist/services/ai/openai-adapter.d.ts +1 -0
- package/dist/services/ai/openai-adapter.js +458 -0
- package/dist/services/ai/openai-adapter.js.map +1 -0
- package/dist/services/ai/openrouter-adapter.cjs +124 -0
- package/dist/services/ai/openrouter-adapter.cjs.map +1 -0
- package/dist/services/ai/openrouter-adapter.d.cts +1 -0
- package/dist/services/ai/openrouter-adapter.d.ts +1 -0
- package/dist/services/ai/openrouter-adapter.js +122 -0
- package/dist/services/ai/openrouter-adapter.js.map +1 -0
- package/dist/services/ai/provider-adapter.cjs +72 -0
- package/dist/services/ai/provider-adapter.cjs.map +1 -0
- package/dist/services/ai/provider-adapter.d.cts +81 -0
- package/dist/services/ai/provider-adapter.d.cts.map +1 -0
- package/dist/services/ai/provider-adapter.d.ts +81 -0
- package/dist/services/ai/provider-adapter.d.ts.map +1 -0
- package/dist/services/ai/provider-adapter.js +72 -0
- package/dist/services/ai/provider-adapter.js.map +1 -0
- package/dist/services/auth/authorization.service.cjs +259 -0
- package/dist/services/auth/authorization.service.cjs.map +1 -0
- package/dist/services/auth/authorization.service.d.cts +102 -0
- package/dist/services/auth/authorization.service.d.cts.map +1 -0
- package/dist/services/auth/authorization.service.d.ts +102 -0
- package/dist/services/auth/authorization.service.d.ts.map +1 -0
- package/dist/services/auth/authorization.service.js +257 -0
- package/dist/services/auth/authorization.service.js.map +1 -0
- package/dist/services/auth/flow-access.service.cjs +259 -0
- package/dist/services/auth/flow-access.service.cjs.map +1 -0
- package/dist/services/auth/flow-access.service.d.cts +89 -0
- package/dist/services/auth/flow-access.service.d.cts.map +1 -0
- package/dist/services/auth/flow-access.service.d.ts +89 -0
- package/dist/services/auth/flow-access.service.d.ts.map +1 -0
- package/dist/services/auth/flow-access.service.js +259 -0
- package/dist/services/auth/flow-access.service.js.map +1 -0
- package/dist/services/auth/index.d.ts +2 -0
- package/dist/services/batch-jobs/batch-jobs.model.cjs +213 -0
- package/dist/services/batch-jobs/batch-jobs.model.cjs.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.cts +79 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.cts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.ts +79 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.ts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.model.js +213 -0
- package/dist/services/batch-jobs/batch-jobs.model.js.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.cjs +178 -0
- package/dist/services/batch-jobs/batch-jobs.service.cjs.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.cts +83 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.cts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.ts +83 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.ts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.js +178 -0
- package/dist/services/batch-jobs/batch-jobs.service.js.map +1 -0
- package/dist/services/chat/chat-messages.model.cjs +143 -0
- package/dist/services/chat/chat-messages.model.cjs.map +1 -0
- package/dist/services/chat/chat-messages.model.d.cts +43 -0
- package/dist/services/chat/chat-messages.model.d.cts.map +1 -0
- package/dist/services/chat/chat-messages.model.d.ts +43 -0
- package/dist/services/chat/chat-messages.model.d.ts.map +1 -0
- package/dist/services/chat/chat-messages.model.js +142 -0
- package/dist/services/chat/chat-messages.model.js.map +1 -0
- package/dist/services/chat/chat-stream-session.cjs +181 -0
- package/dist/services/chat/chat-stream-session.cjs.map +1 -0
- package/dist/services/chat/chat-stream-session.d.cts +1 -0
- package/dist/services/chat/chat-stream-session.d.ts +1 -0
- package/dist/services/chat/chat-stream-session.js +181 -0
- package/dist/services/chat/chat-stream-session.js.map +1 -0
- package/dist/services/chat/chat-stream.service.cjs +205 -0
- package/dist/services/chat/chat-stream.service.cjs.map +1 -0
- package/dist/services/chat/chat-stream.service.d.cts +84 -0
- package/dist/services/chat/chat-stream.service.d.cts.map +1 -0
- package/dist/services/chat/chat-stream.service.d.ts +84 -0
- package/dist/services/chat/chat-stream.service.d.ts.map +1 -0
- package/dist/services/chat/chat-stream.service.js +205 -0
- package/dist/services/chat/chat-stream.service.js.map +1 -0
- package/dist/services/chat/chat-toolkit.cjs +125 -0
- package/dist/services/chat/chat-toolkit.cjs.map +1 -0
- package/dist/services/chat/chat-toolkit.d.cts +58 -0
- package/dist/services/chat/chat-toolkit.d.cts.map +1 -0
- package/dist/services/chat/chat-toolkit.d.ts +58 -0
- package/dist/services/chat/chat-toolkit.d.ts.map +1 -0
- package/dist/services/chat/chat-toolkit.js +124 -0
- package/dist/services/chat/chat-toolkit.js.map +1 -0
- package/dist/services/chat/chat-types.cjs +24 -0
- package/dist/services/chat/chat-types.cjs.map +1 -0
- package/dist/services/chat/chat-types.d.cts +134 -0
- package/dist/services/chat/chat-types.d.cts.map +1 -0
- package/dist/services/chat/chat-types.d.ts +134 -0
- package/dist/services/chat/chat-types.d.ts.map +1 -0
- package/dist/services/chat/chat-types.js +23 -0
- package/dist/services/chat/chat-types.js.map +1 -0
- package/dist/services/chat/index.cjs +5 -0
- package/dist/services/chat/index.d.cts +3 -0
- package/dist/services/chat/index.d.ts +3 -0
- package/dist/services/chat/index.js +6 -0
- package/dist/services/chat/system-prompt.cjs +223 -0
- package/dist/services/chat/system-prompt.cjs.map +1 -0
- package/dist/services/chat/system-prompt.d.cts +1 -0
- package/dist/services/chat/system-prompt.d.ts +1 -0
- package/dist/services/chat/system-prompt.js +223 -0
- package/dist/services/chat/system-prompt.js.map +1 -0
- package/dist/services/chat/tools/agent-tools.cjs +472 -0
- package/dist/services/chat/tools/agent-tools.cjs.map +1 -0
- package/dist/services/chat/tools/agent-tools.js +471 -0
- package/dist/services/chat/tools/agent-tools.js.map +1 -0
- package/dist/services/chat/tools/context-tools.cjs +252 -0
- package/dist/services/chat/tools/context-tools.cjs.map +1 -0
- package/dist/services/chat/tools/context-tools.js +251 -0
- package/dist/services/chat/tools/context-tools.js.map +1 -0
- package/dist/services/chat/tools/flow-tools.cjs +244 -0
- package/dist/services/chat/tools/flow-tools.cjs.map +1 -0
- package/dist/services/chat/tools/flow-tools.js +243 -0
- package/dist/services/chat/tools/flow-tools.js.map +1 -0
- package/dist/services/chat/tools/index.cjs +22 -0
- package/dist/services/chat/tools/index.cjs.map +1 -0
- package/dist/services/chat/tools/index.js +22 -0
- package/dist/services/chat/tools/index.js.map +1 -0
- package/dist/services/chat/tools/node-tools.cjs +323 -0
- package/dist/services/chat/tools/node-tools.cjs.map +1 -0
- package/dist/services/chat/tools/node-tools.js +322 -0
- package/dist/services/chat/tools/node-tools.js.map +1 -0
- package/dist/services/chat/tools/plan-tools.cjs +94 -0
- package/dist/services/chat/tools/plan-tools.cjs.map +1 -0
- package/dist/services/chat/tools/plan-tools.js +93 -0
- package/dist/services/chat/tools/plan-tools.js.map +1 -0
- package/dist/services/chat/tools/run-tools.cjs +121 -0
- package/dist/services/chat/tools/run-tools.cjs.map +1 -0
- package/dist/services/chat/tools/run-tools.js +120 -0
- package/dist/services/chat/tools/run-tools.js.map +1 -0
- package/dist/services/credentials/credentials.model.cjs +313 -0
- package/dist/services/credentials/credentials.model.cjs.map +1 -0
- package/dist/services/credentials/credentials.model.d.cts +27 -0
- package/dist/services/credentials/credentials.model.d.cts.map +1 -0
- package/dist/services/credentials/credentials.model.d.ts +27 -0
- package/dist/services/credentials/credentials.model.d.ts.map +1 -0
- package/dist/services/credentials/credentials.model.js +312 -0
- package/dist/services/credentials/credentials.model.js.map +1 -0
- package/dist/services/credentials/credentials.service.cjs +358 -0
- package/dist/services/credentials/credentials.service.cjs.map +1 -0
- package/dist/services/credentials/credentials.service.d.cts +156 -0
- package/dist/services/credentials/credentials.service.d.cts.map +1 -0
- package/dist/services/credentials/credentials.service.d.ts +156 -0
- package/dist/services/credentials/credentials.service.d.ts.map +1 -0
- package/dist/services/credentials/credentials.service.js +357 -0
- package/dist/services/credentials/credentials.service.js.map +1 -0
- package/dist/services/credentials/encryption.service.cjs +121 -0
- package/dist/services/credentials/encryption.service.cjs.map +1 -0
- package/dist/services/credentials/encryption.service.d.cts +70 -0
- package/dist/services/credentials/encryption.service.d.cts.map +1 -0
- package/dist/services/credentials/encryption.service.d.ts +70 -0
- package/dist/services/credentials/encryption.service.d.ts.map +1 -0
- package/dist/services/credentials/encryption.service.js +119 -0
- package/dist/services/credentials/encryption.service.js.map +1 -0
- package/dist/services/credentials/index.d.cts +4 -0
- package/dist/services/credentials/index.d.ts +4 -0
- package/dist/services/credentials/oauth2-providers.cjs +668 -0
- package/dist/services/credentials/oauth2-providers.cjs.map +1 -0
- package/dist/services/credentials/oauth2-providers.d.cts +39 -0
- package/dist/services/credentials/oauth2-providers.d.cts.map +1 -0
- package/dist/services/credentials/oauth2-providers.d.ts +39 -0
- package/dist/services/credentials/oauth2-providers.d.ts.map +1 -0
- package/dist/services/credentials/oauth2-providers.js +667 -0
- package/dist/services/credentials/oauth2-providers.js.map +1 -0
- package/dist/services/credentials/oauth2.service.cjs +252 -0
- package/dist/services/credentials/oauth2.service.cjs.map +1 -0
- package/dist/services/credentials/oauth2.service.d.cts +132 -0
- package/dist/services/credentials/oauth2.service.d.cts.map +1 -0
- package/dist/services/credentials/oauth2.service.d.ts +132 -0
- package/dist/services/credentials/oauth2.service.d.ts.map +1 -0
- package/dist/services/credentials/oauth2.service.js +251 -0
- package/dist/services/credentials/oauth2.service.js.map +1 -0
- package/dist/services/database/database.service.cjs +469 -0
- package/dist/services/database/database.service.cjs.map +1 -0
- package/dist/services/database/database.service.d.cts +162 -0
- package/dist/services/database/database.service.d.cts.map +1 -0
- package/dist/services/database/database.service.d.ts +162 -0
- package/dist/services/database/database.service.d.ts.map +1 -0
- package/dist/services/database/database.service.js +469 -0
- package/dist/services/database/database.service.js.map +1 -0
- package/dist/services/execution-event-bus.cjs +80 -0
- package/dist/services/execution-event-bus.cjs.map +1 -0
- package/dist/services/execution-event-bus.d.cts +57 -0
- package/dist/services/execution-event-bus.d.cts.map +1 -0
- package/dist/services/execution-event-bus.d.ts +57 -0
- package/dist/services/execution-event-bus.d.ts.map +1 -0
- package/dist/services/execution-event-bus.js +77 -0
- package/dist/services/execution-event-bus.js.map +1 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.cjs +499 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.cjs.map +1 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.js +499 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.js.map +1 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.cjs +657 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.cjs.map +1 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.js +657 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.js.map +1 -0
- package/dist/services/flow-orchestration.service.cjs +493 -0
- package/dist/services/flow-orchestration.service.cjs.map +1 -0
- package/dist/services/flow-orchestration.service.d.cts +149 -0
- package/dist/services/flow-orchestration.service.d.cts.map +1 -0
- package/dist/services/flow-orchestration.service.d.ts +149 -0
- package/dist/services/flow-orchestration.service.d.ts.map +1 -0
- package/dist/services/flow-orchestration.service.js +493 -0
- package/dist/services/flow-orchestration.service.js.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.cjs +403 -0
- package/dist/services/flow-runs/flow-runs.model.cjs.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.d.cts +113 -0
- package/dist/services/flow-runs/flow-runs.model.d.cts.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.d.ts +113 -0
- package/dist/services/flow-runs/flow-runs.model.d.ts.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.js +403 -0
- package/dist/services/flow-runs/flow-runs.model.js.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.cjs +273 -0
- package/dist/services/flow-runs/flow-runs.service.cjs.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.d.cts +129 -0
- package/dist/services/flow-runs/flow-runs.service.d.cts.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.d.ts +129 -0
- package/dist/services/flow-runs/flow-runs.service.d.ts.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.js +273 -0
- package/dist/services/flow-runs/flow-runs.service.js.map +1 -0
- package/dist/services/flow-validator.cjs +149 -0
- package/dist/services/flow-validator.cjs.map +1 -0
- package/dist/services/flow-validator.js +149 -0
- package/dist/services/flow-validator.js.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.cjs +231 -0
- package/dist/services/flow-versions/flow-versions.model.cjs.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.d.cts +55 -0
- package/dist/services/flow-versions/flow-versions.model.d.cts.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.d.ts +55 -0
- package/dist/services/flow-versions/flow-versions.model.d.ts.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.js +231 -0
- package/dist/services/flow-versions/flow-versions.model.js.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.cjs +72 -0
- package/dist/services/flow-versions/flow-versions.service.cjs.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.d.cts +63 -0
- package/dist/services/flow-versions/flow-versions.service.d.cts.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.d.ts +63 -0
- package/dist/services/flow-versions/flow-versions.service.d.ts.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.js +72 -0
- package/dist/services/flow-versions/flow-versions.service.js.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.cjs +90 -0
- package/dist/services/flow-versions/schemas-fresh.cjs.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.d.cts +201 -0
- package/dist/services/flow-versions/schemas-fresh.d.cts.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.d.ts +201 -0
- package/dist/services/flow-versions/schemas-fresh.d.ts.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.js +85 -0
- package/dist/services/flow-versions/schemas-fresh.js.map +1 -0
- package/dist/services/flows/flows.model.cjs +273 -0
- package/dist/services/flows/flows.model.cjs.map +1 -0
- package/dist/services/flows/flows.model.d.cts +105 -0
- package/dist/services/flows/flows.model.d.cts.map +1 -0
- package/dist/services/flows/flows.model.d.ts +105 -0
- package/dist/services/flows/flows.model.d.ts.map +1 -0
- package/dist/services/flows/flows.model.js +273 -0
- package/dist/services/flows/flows.model.js.map +1 -0
- package/dist/services/flows/flows.service.cjs +134 -0
- package/dist/services/flows/flows.service.cjs.map +1 -0
- package/dist/services/flows/flows.service.d.cts +105 -0
- package/dist/services/flows/flows.service.d.cts.map +1 -0
- package/dist/services/flows/flows.service.d.ts +105 -0
- package/dist/services/flows/flows.service.d.ts.map +1 -0
- package/dist/services/flows/flows.service.js +134 -0
- package/dist/services/flows/flows.service.js.map +1 -0
- package/dist/services/graph.service.cjs +375 -0
- package/dist/services/graph.service.cjs.map +1 -0
- package/dist/services/graph.service.d.cts +90 -0
- package/dist/services/graph.service.d.cts.map +1 -0
- package/dist/services/graph.service.d.ts +90 -0
- package/dist/services/graph.service.d.ts.map +1 -0
- package/dist/services/graph.service.js +375 -0
- package/dist/services/graph.service.js.map +1 -0
- package/dist/services/node-data.service.cjs +232 -0
- package/dist/services/node-data.service.cjs.map +1 -0
- package/dist/services/node-data.service.d.cts +119 -0
- package/dist/services/node-data.service.d.cts.map +1 -0
- package/dist/services/node-data.service.d.ts +119 -0
- package/dist/services/node-data.service.d.ts.map +1 -0
- package/dist/services/node-data.service.js +230 -0
- package/dist/services/node-data.service.js.map +1 -0
- package/dist/services/node-executions/node-execution.service.cjs +236 -0
- package/dist/services/node-executions/node-execution.service.cjs.map +1 -0
- package/dist/services/node-executions/node-execution.service.d.cts +126 -0
- package/dist/services/node-executions/node-execution.service.d.cts.map +1 -0
- package/dist/services/node-executions/node-execution.service.d.ts +126 -0
- package/dist/services/node-executions/node-execution.service.d.ts.map +1 -0
- package/dist/services/node-executions/node-execution.service.js +236 -0
- package/dist/services/node-executions/node-execution.service.js.map +1 -0
- package/dist/services/node-executions/node-executions.model.cjs +300 -0
- package/dist/services/node-executions/node-executions.model.cjs.map +1 -0
- package/dist/services/node-executions/node-executions.model.d.cts +102 -0
- package/dist/services/node-executions/node-executions.model.d.cts.map +1 -0
- package/dist/services/node-executions/node-executions.model.d.ts +102 -0
- package/dist/services/node-executions/node-executions.model.d.ts.map +1 -0
- package/dist/services/node-executions/node-executions.model.js +300 -0
- package/dist/services/node-executions/node-executions.model.js.map +1 -0
- package/dist/services/plugin-manager.cjs +205 -0
- package/dist/services/plugin-manager.cjs.map +1 -0
- package/dist/services/plugin-manager.js +205 -0
- package/dist/services/plugin-manager.js.map +1 -0
- package/dist/services/react-flow-renderer.service.cjs +236 -0
- package/dist/services/react-flow-renderer.service.cjs.map +1 -0
- package/dist/services/react-flow-renderer.service.d.cts +149 -0
- package/dist/services/react-flow-renderer.service.d.cts.map +1 -0
- package/dist/services/react-flow-renderer.service.d.ts +149 -0
- package/dist/services/react-flow-renderer.service.d.ts.map +1 -0
- package/dist/services/react-flow-renderer.service.js +235 -0
- package/dist/services/react-flow-renderer.service.js.map +1 -0
- package/dist/services/service-factory.cjs +301 -0
- package/dist/services/service-factory.cjs.map +1 -0
- package/dist/services/service-factory.d.cts +172 -0
- package/dist/services/service-factory.d.cts.map +1 -0
- package/dist/services/service-factory.d.ts +172 -0
- package/dist/services/service-factory.d.ts.map +1 -0
- package/dist/services/service-factory.js +301 -0
- package/dist/services/service-factory.js.map +1 -0
- package/dist/services/templating/index.cjs +2 -0
- package/dist/services/templating/index.d.ts +2 -0
- package/dist/services/templating/index.js +3 -0
- package/dist/services/templating/js-expression.service.cjs +148 -0
- package/dist/services/templating/js-expression.service.cjs.map +1 -0
- package/dist/services/templating/js-expression.service.d.cts +61 -0
- package/dist/services/templating/js-expression.service.d.cts.map +1 -0
- package/dist/services/templating/js-expression.service.d.ts +60 -0
- package/dist/services/templating/js-expression.service.d.ts.map +1 -0
- package/dist/services/templating/js-expression.service.js +143 -0
- package/dist/services/templating/js-expression.service.js.map +1 -0
- package/dist/services/templating/template.service.cjs +182 -0
- package/dist/services/templating/template.service.cjs.map +1 -0
- package/dist/services/templating/template.service.d.cts +62 -0
- package/dist/services/templating/template.service.d.cts.map +1 -0
- package/dist/services/templating/template.service.d.ts +62 -0
- package/dist/services/templating/template.service.d.ts.map +1 -0
- package/dist/services/templating/template.service.js +180 -0
- package/dist/services/templating/template.service.js.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.cjs +141 -0
- package/dist/services/triggers/cron-scheduler.service.cjs.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.d.cts +36 -0
- package/dist/services/triggers/cron-scheduler.service.d.cts.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.d.ts +36 -0
- package/dist/services/triggers/cron-scheduler.service.d.ts.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.js +140 -0
- package/dist/services/triggers/cron-scheduler.service.js.map +1 -0
- package/dist/services/triggers/flow-triggers.model.cjs +241 -0
- package/dist/services/triggers/flow-triggers.model.cjs.map +1 -0
- package/dist/services/triggers/flow-triggers.model.d.cts +53 -0
- package/dist/services/triggers/flow-triggers.model.d.cts.map +1 -0
- package/dist/services/triggers/flow-triggers.model.d.ts +53 -0
- package/dist/services/triggers/flow-triggers.model.d.ts.map +1 -0
- package/dist/services/triggers/flow-triggers.model.js +241 -0
- package/dist/services/triggers/flow-triggers.model.js.map +1 -0
- package/dist/services/triggers/flow-triggers.service.cjs +218 -0
- package/dist/services/triggers/flow-triggers.service.cjs.map +1 -0
- package/dist/services/triggers/flow-triggers.service.d.cts +77 -0
- package/dist/services/triggers/flow-triggers.service.d.cts.map +1 -0
- package/dist/services/triggers/flow-triggers.service.d.ts +77 -0
- package/dist/services/triggers/flow-triggers.service.d.ts.map +1 -0
- package/dist/services/triggers/flow-triggers.service.js +217 -0
- package/dist/services/triggers/flow-triggers.service.js.map +1 -0
- package/dist/services/triggers/index.cjs +3 -0
- package/dist/services/triggers/index.d.cts +4 -0
- package/dist/services/triggers/index.d.ts +4 -0
- package/dist/services/triggers/index.js +4 -0
- package/dist/services/triggers/trigger.types.d.cts +63 -0
- package/dist/services/triggers/trigger.types.d.cts.map +1 -0
- package/dist/services/triggers/trigger.types.d.ts +63 -0
- package/dist/services/triggers/trigger.types.d.ts.map +1 -0
- package/dist/types/agent-tool.types.cjs +20 -0
- package/dist/types/agent-tool.types.cjs.map +1 -0
- package/dist/types/agent-tool.types.d.cts +211 -0
- package/dist/types/agent-tool.types.d.cts.map +1 -0
- package/dist/types/agent-tool.types.d.ts +211 -0
- package/dist/types/agent-tool.types.d.ts.map +1 -0
- package/dist/types/agent-tool.types.js +18 -0
- package/dist/types/agent-tool.types.js.map +1 -0
- package/dist/types/auth.types.cjs +76 -0
- package/dist/types/auth.types.cjs.map +1 -0
- package/dist/types/auth.types.d.cts +235 -0
- package/dist/types/auth.types.d.cts.map +1 -0
- package/dist/types/auth.types.d.ts +235 -0
- package/dist/types/auth.types.d.ts.map +1 -0
- package/dist/types/auth.types.js +75 -0
- package/dist/types/auth.types.js.map +1 -0
- package/dist/types/base.cjs +25 -0
- package/dist/types/base.cjs.map +1 -0
- package/dist/types/base.d.cts +21 -0
- package/dist/types/base.d.cts.map +1 -0
- package/dist/types/base.d.ts +21 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +24 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/common/errors.types.cjs +46 -0
- package/dist/types/common/errors.types.cjs.map +1 -0
- package/dist/types/common/errors.types.js +44 -0
- package/dist/types/common/errors.types.js.map +1 -0
- package/dist/types/graph-node-types.cjs +46 -0
- package/dist/types/graph-node-types.cjs.map +1 -0
- package/dist/types/graph-node-types.d.cts +32 -0
- package/dist/types/graph-node-types.d.cts.map +1 -0
- package/dist/types/graph-node-types.d.ts +32 -0
- package/dist/types/graph-node-types.d.ts.map +1 -0
- package/dist/types/graph-node-types.js +45 -0
- package/dist/types/graph-node-types.js.map +1 -0
- package/dist/types/node-config-update.types.d.cts +33 -0
- package/dist/types/node-config-update.types.d.cts.map +1 -0
- package/dist/types/node-config-update.types.d.ts +33 -0
- package/dist/types/node-config-update.types.d.ts.map +1 -0
- package/dist/types/node-definition.types.d.cts +88 -0
- package/dist/types/node-definition.types.d.cts.map +1 -0
- package/dist/types/node-definition.types.d.ts +88 -0
- package/dist/types/node-definition.types.d.ts.map +1 -0
- package/dist/types/node-execution.types.d.cts +39 -0
- package/dist/types/node-execution.types.d.cts.map +1 -0
- package/dist/types/node-execution.types.d.ts +39 -0
- package/dist/types/node-execution.types.d.ts.map +1 -0
- package/dist/types/node-io-types.cjs +19 -0
- package/dist/types/node-io-types.cjs.map +1 -0
- package/dist/types/node-io-types.d.cts +65 -0
- package/dist/types/node-io-types.d.cts.map +1 -0
- package/dist/types/node-io-types.d.ts +65 -0
- package/dist/types/node-io-types.d.ts.map +1 -0
- package/dist/types/node-io-types.js +18 -0
- package/dist/types/node-io-types.js.map +1 -0
- package/dist/types/node-output-schemas.cjs +51 -0
- package/dist/types/node-output-schemas.cjs.map +1 -0
- package/dist/types/node-output-schemas.js +50 -0
- package/dist/types/node-output-schemas.js.map +1 -0
- package/dist/types/plugin.types.d.cts +654 -0
- package/dist/types/plugin.types.d.cts.map +1 -0
- package/dist/types/plugin.types.d.ts +654 -0
- package/dist/types/plugin.types.d.ts.map +1 -0
- package/dist/types/schemas/flow/create-flow-version.schema.cjs +1 -0
- package/dist/types/schemas/flow/create-flow-version.schema.d.ts +1 -0
- package/dist/types/schemas/flow/create-flow-version.schema.js +2 -0
- package/dist/types/schemas/flow/create-flow.schema.cjs +9 -0
- package/dist/types/schemas/flow/create-flow.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/create-flow.schema.d.cts +14 -0
- package/dist/types/schemas/flow/create-flow.schema.d.cts.map +1 -0
- package/dist/types/schemas/flow/create-flow.schema.d.ts +14 -0
- package/dist/types/schemas/flow/create-flow.schema.d.ts.map +1 -0
- package/dist/types/schemas/flow/create-flow.schema.js +10 -0
- package/dist/types/schemas/flow/create-flow.schema.js.map +1 -0
- package/dist/types/schemas/flow/delete-flow.schema.cjs +11 -0
- package/dist/types/schemas/flow/delete-flow.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/delete-flow.schema.d.ts +1 -0
- package/dist/types/schemas/flow/delete-flow.schema.js +11 -0
- package/dist/types/schemas/flow/delete-flow.schema.js.map +1 -0
- package/dist/types/schemas/flow/flow-executions.schema.cjs +36 -0
- package/dist/types/schemas/flow/flow-executions.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/flow-executions.schema.d.ts +1 -0
- package/dist/types/schemas/flow/flow-executions.schema.js +35 -0
- package/dist/types/schemas/flow/flow-executions.schema.js.map +1 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.cjs +7 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.d.ts +1 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.js +7 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.js.map +1 -0
- package/dist/types/schemas/flow/get-flow-versions-response.schema.cjs +1 -0
- package/dist/types/schemas/flow/get-flow-versions-response.schema.d.ts +1 -0
- package/dist/types/schemas/flow/get-flow-versions-response.schema.js +2 -0
- package/dist/types/schemas/flow/get-flows-response.schema.cjs +6 -0
- package/dist/types/schemas/flow/get-flows-response.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/get-flows-response.schema.d.ts +1 -0
- package/dist/types/schemas/flow/get-flows-response.schema.js +7 -0
- package/dist/types/schemas/flow/get-flows-response.schema.js.map +1 -0
- package/dist/types/schemas/flow/index.cjs +9 -0
- package/dist/types/schemas/flow/index.d.ts +1 -0
- package/dist/types/schemas/flow/index.js +10 -0
- package/dist/types/schemas/flow/update-flow.schema.cjs +1 -0
- package/dist/types/schemas/flow/update-flow.schema.d.ts +1 -0
- package/dist/types/schemas/flow/update-flow.schema.js +2 -0
- package/dist/types/schemas/flow/validate-flow.schema.cjs +19 -0
- package/dist/types/schemas/flow/validate-flow.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/validate-flow.schema.d.ts +1 -0
- package/dist/types/schemas/flow/validate-flow.schema.js +19 -0
- package/dist/types/schemas/flow/validate-flow.schema.js.map +1 -0
- package/dist/types/schemas/index.cjs +3 -0
- package/dist/types/schemas/index.d.ts +2 -0
- package/dist/types/schemas/index.js +4 -0
- package/dist/types/schemas/pagination-sort-filter.cjs +56 -0
- package/dist/types/schemas/pagination-sort-filter.cjs.map +1 -0
- package/dist/types/schemas/pagination-sort-filter.d.cts +38 -0
- package/dist/types/schemas/pagination-sort-filter.d.cts.map +1 -0
- package/dist/types/schemas/pagination-sort-filter.d.ts +38 -0
- package/dist/types/schemas/pagination-sort-filter.d.ts.map +1 -0
- package/dist/types/schemas/pagination-sort-filter.js +50 -0
- package/dist/types/schemas/pagination-sort-filter.js.map +1 -0
- package/dist/types/schemas-fresh/invect-config.cjs +181 -0
- package/dist/types/schemas-fresh/invect-config.cjs.map +1 -0
- package/dist/types/schemas-fresh/invect-config.d.cts +207 -0
- package/dist/types/schemas-fresh/invect-config.d.cts.map +1 -0
- package/dist/types/schemas-fresh/invect-config.d.ts +207 -0
- package/dist/types/schemas-fresh/invect-config.d.ts.map +1 -0
- package/dist/types/schemas-fresh/invect-config.js +174 -0
- package/dist/types/schemas-fresh/invect-config.js.map +1 -0
- package/dist/types/validation/common.schemas.cjs +41 -0
- package/dist/types/validation/common.schemas.cjs.map +1 -0
- package/dist/types/validation/common.schemas.js +39 -0
- package/dist/types/validation/common.schemas.js.map +1 -0
- package/dist/types/validation/flow.schemas.cjs +49 -0
- package/dist/types/validation/flow.schemas.cjs.map +1 -0
- package/dist/types/validation/flow.schemas.js +46 -0
- package/dist/types/validation/flow.schemas.js.map +1 -0
- package/dist/types/validation.cjs +49 -0
- package/dist/types/validation.cjs.map +1 -0
- package/dist/types/validation.d.cts +49 -0
- package/dist/types/validation.d.cts.map +1 -0
- package/dist/types/validation.d.ts +49 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +48 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/types-export.cjs +11 -0
- package/dist/types-export.d.cts +25 -0
- package/dist/types-export.d.ts +25 -0
- package/dist/types-export.js +5 -0
- package/dist/types-fresh.cjs +9 -0
- package/dist/types-fresh.cjs.map +1 -0
- package/dist/types-fresh.d.cts +129 -0
- package/dist/types-fresh.d.cts.map +1 -0
- package/dist/types-fresh.d.ts +129 -0
- package/dist/types-fresh.d.ts.map +1 -0
- package/dist/types-fresh.js +8 -0
- package/dist/types-fresh.js.map +1 -0
- package/dist/utils/id-generator.cjs +34 -0
- package/dist/utils/id-generator.cjs.map +1 -0
- package/dist/utils/id-generator.js +34 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/utils/logger.cjs +285 -0
- package/dist/utils/logger.cjs.map +1 -0
- package/dist/utils/logger.d.cts +161 -0
- package/dist/utils/logger.d.cts.map +1 -0
- package/dist/utils/logger.d.ts +160 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +282 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/node-slug.cjs +13 -0
- package/dist/utils/node-slug.cjs.map +1 -0
- package/dist/utils/node-slug.d.cts +8 -0
- package/dist/utils/node-slug.d.cts.map +1 -0
- package/dist/utils/node-slug.d.ts +8 -0
- package/dist/utils/node-slug.d.ts.map +1 -0
- package/dist/utils/node-slug.js +13 -0
- package/dist/utils/node-slug.js.map +1 -0
- package/dist/utils/provider-detection.cjs +72 -0
- package/dist/utils/provider-detection.cjs.map +1 -0
- package/dist/utils/provider-detection.js +72 -0
- package/dist/utils/provider-detection.js.map +1 -0
- package/dist/utils/url-safe-id.cjs +52 -0
- package/dist/utils/url-safe-id.cjs.map +1 -0
- package/dist/utils/url-safe-id.js +52 -0
- package/dist/utils/url-safe-id.js.map +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2-providers.js","names":[],"sources":["../../../src/services/credentials/oauth2-providers.ts"],"sourcesContent":["/**\n * OAuth2 Provider Definitions\n *\n * Registry of OAuth2 providers with their configuration.\n * Each provider defines the URLs, scopes, and parameters needed for OAuth2 flow.\n *\n * Scopes and configurations verified against FlowiseAI/Flowise repository:\n * https://github.com/FlowiseAI/Flowise/tree/main/packages/components/credentials\n */\n\nexport interface OAuth2ProviderDefinition {\n /** Unique provider identifier */\n id: string;\n /** Human-readable name */\n name: string;\n /** Description of what this provider is for */\n description: string;\n /** Icon name (lucide icon) */\n icon?: string;\n /** OAuth2 authorization endpoint */\n authorizationUrl: string;\n /** OAuth2 token endpoint */\n tokenUrl: string;\n /** Default scopes for this provider */\n defaultScopes: string[];\n /** Additional query parameters for authorization request */\n additionalAuthParams?: Record<string, string>;\n /** Whether this provider supports refresh tokens */\n supportsRefresh: boolean;\n /** Separator for scopes in the authorization URL (default: \" \"). Linear uses \",\". */\n scopeSeparator?: string;\n /** Documentation URL for setup instructions */\n docsUrl?: string;\n /** Category for grouping in UI - based on product function, not company */\n category:\n | 'productivity' // Docs, spreadsheets, office suites\n | 'storage' // Cloud file storage and sync\n | 'communication' // Email, messaging, video conferencing\n | 'development' // Code repos, version control, CI/CD\n | 'project_management' // Task tracking, issue tracking, project tools\n | 'crm_sales' // Customer relationship management, sales pipelines\n | 'marketing' // Email marketing, social media, analytics\n | 'payments' // Payment processing, billing\n | 'support' // Customer support, helpdesk, ticketing\n | 'design' // Design tools, creative software\n | 'other';\n}\n\n/**\n * Built-in OAuth2 provider definitions\n * Verified against FlowiseAI credential definitions\n */\nexport const OAUTH2_PROVIDERS: Record<string, OAuth2ProviderDefinition> = {\n // =============================================================================\n // GOOGLE PROVIDERS\n // =============================================================================\n\n // Google Docs - Verified from FlowiseAI GoogleDocsOAuth2.credential.ts\n google_docs: {\n id: 'google_docs',\n name: 'Google Docs',\n description: 'Access Google Docs for document creation and editing',\n icon: 'FileText',\n authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n defaultScopes: [\n 'https://www.googleapis.com/auth/documents',\n 'https://www.googleapis.com/auth/drive',\n 'https://www.googleapis.com/auth/drive.file',\n ],\n additionalAuthParams: {\n access_type: 'offline',\n prompt: 'consent',\n },\n supportsRefresh: true,\n docsUrl: 'https://developers.google.com/docs/api/quickstart',\n category: 'productivity',\n },\n\n // Google Sheets - Verified from FlowiseAI GoogleSheetsOAuth2.credential.ts\n google_sheets: {\n id: 'google_sheets',\n name: 'Google Sheets',\n description: 'Access Google Sheets for spreadsheet operations',\n icon: 'Sheet',\n authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n defaultScopes: [\n 'https://www.googleapis.com/auth/drive.file',\n 'https://www.googleapis.com/auth/spreadsheets',\n 'https://www.googleapis.com/auth/drive.metadata',\n ],\n additionalAuthParams: {\n access_type: 'offline',\n prompt: 'consent',\n },\n supportsRefresh: true,\n docsUrl: 'https://developers.google.com/sheets/api/quickstart',\n category: 'productivity',\n },\n\n // Google Drive - Verified from FlowiseAI GoogleDriveOAuth2.credential.ts\n google_drive: {\n id: 'google_drive',\n name: 'Google Drive',\n description: 'Access Google Drive for file management',\n icon: 'HardDrive',\n authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n defaultScopes: [\n 'https://www.googleapis.com/auth/drive',\n 'https://www.googleapis.com/auth/drive.appdata',\n 'https://www.googleapis.com/auth/drive.photos.readonly',\n ],\n additionalAuthParams: {\n access_type: 'offline',\n prompt: 'consent',\n },\n supportsRefresh: true,\n docsUrl: 'https://developers.google.com/drive/api/quickstart',\n category: 'storage',\n },\n\n // Gmail - Verified from FlowiseAI GmailOAuth2.credential.ts\n // Updated scopes to match Flowise: gmail.readonly, gmail.compose, gmail.modify, gmail.labels\n google_gmail: {\n id: 'google_gmail',\n name: 'Gmail',\n description: 'Access Gmail for email operations',\n icon: 'Mail',\n authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n defaultScopes: [\n 'https://www.googleapis.com/auth/gmail.readonly',\n 'https://www.googleapis.com/auth/gmail.compose',\n 'https://www.googleapis.com/auth/gmail.modify',\n 'https://www.googleapis.com/auth/gmail.labels',\n ],\n additionalAuthParams: {\n access_type: 'offline',\n prompt: 'consent',\n },\n supportsRefresh: true,\n docsUrl: 'https://developers.google.com/gmail/api/quickstart',\n category: 'communication',\n },\n\n // Google Calendar - Verified from FlowiseAI GoogleCalendarOAuth2.credential.ts\n google_calendar: {\n id: 'google_calendar',\n name: 'Google Calendar',\n description: 'Access Google Calendar for event management',\n icon: 'Calendar',\n authorizationUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n tokenUrl: 'https://oauth2.googleapis.com/token',\n defaultScopes: [\n 'https://www.googleapis.com/auth/calendar',\n 'https://www.googleapis.com/auth/calendar.events',\n ],\n additionalAuthParams: {\n access_type: 'offline',\n prompt: 'consent',\n },\n supportsRefresh: true,\n docsUrl: 'https://developers.google.com/calendar/api/quickstart',\n category: 'productivity',\n },\n\n // =============================================================================\n // MICROSOFT PROVIDERS\n // =============================================================================\n\n // Microsoft 365 (General) - Base Microsoft OAuth2 / Graph API\n microsoft: {\n id: 'microsoft',\n name: 'Microsoft 365',\n description:\n 'Access Microsoft 365 services via Graph API — calendars, mail, meetings, and more',\n icon: 'Cloud',\n authorizationUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n defaultScopes: [\n 'openid',\n 'profile',\n 'email',\n 'offline_access',\n 'User.Read',\n 'Calendars.Read',\n 'Mail.Read',\n 'Mail.ReadBasic',\n 'OnlineMeetings.Read',\n 'OnlineMeetingTranscript.Read.All',\n ],\n supportsRefresh: true,\n docsUrl:\n 'https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow',\n category: 'productivity',\n },\n\n // Microsoft Outlook - Verified from FlowiseAI MicrosoftOutlookOAuth2.credential.ts\n microsoft_outlook: {\n id: 'microsoft_outlook',\n name: 'Microsoft Outlook',\n description: 'Access Outlook for email, calendar, and contacts',\n icon: 'Mail',\n authorizationUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n defaultScopes: [\n 'openid',\n 'offline_access',\n 'Contacts.Read',\n 'Contacts.ReadWrite',\n 'Calendars.Read',\n 'Calendars.Read.Shared',\n 'Calendars.ReadWrite',\n 'Mail.Read',\n 'Mail.ReadWrite',\n 'Mail.ReadWrite.Shared',\n 'Mail.Send',\n 'Mail.Send.Shared',\n 'MailboxSettings.Read',\n ],\n supportsRefresh: true,\n docsUrl: 'https://docs.microsoft.com/en-us/graph/api/resources/mail-api-overview',\n category: 'communication',\n },\n\n // Microsoft Teams - Verified from FlowiseAI MicrosoftTeamsOAuth2.credential.ts\n microsoft_teams: {\n id: 'microsoft_teams',\n name: 'Microsoft Teams',\n description: 'Access Microsoft Teams for messaging and collaboration',\n icon: 'Users',\n authorizationUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n defaultScopes: [\n // Basic authentication\n 'openid',\n 'offline_access',\n // User permissions\n 'User.Read',\n 'User.ReadWrite.All',\n // Teams and Groups\n 'Group.ReadWrite.All',\n 'Team.ReadBasic.All',\n 'Team.Create',\n 'TeamMember.ReadWrite.All',\n // Channels\n 'Channel.ReadBasic.All',\n 'Channel.Create',\n 'Channel.Delete.All',\n 'ChannelMember.ReadWrite.All',\n // Chat operations\n 'Chat.ReadWrite',\n 'Chat.Create',\n 'ChatMember.ReadWrite',\n // Messages\n 'ChatMessage.Send',\n 'ChatMessage.Read',\n 'ChannelMessage.Send',\n 'ChannelMessage.Read.All',\n // Reactions and advanced features\n 'TeamsActivity.Send',\n ],\n supportsRefresh: true,\n docsUrl: 'https://docs.microsoft.com/en-us/graph/api/resources/teams-api-overview',\n category: 'communication',\n },\n\n // Microsoft OneDrive\n microsoft_onedrive: {\n id: 'microsoft_onedrive',\n name: 'Microsoft OneDrive',\n description: 'Access OneDrive for file storage and management',\n icon: 'HardDrive',\n authorizationUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize',\n tokenUrl: 'https://login.microsoftonline.com/common/oauth2/v2.0/token',\n defaultScopes: [\n 'openid',\n 'offline_access',\n 'Files.Read',\n 'Files.Read.All',\n 'Files.ReadWrite',\n 'Files.ReadWrite.All',\n ],\n supportsRefresh: true,\n docsUrl: 'https://docs.microsoft.com/en-us/onedrive/developer/rest-api/',\n category: 'storage',\n },\n\n // =============================================================================\n // DEVELOPMENT\n // =============================================================================\n\n // GitHub - Verified from FlowiseAI (uses API tokens, not full OAuth2 in Flowise)\n github: {\n id: 'github',\n name: 'GitHub',\n description: 'Access GitHub repositories and issues',\n icon: 'Github',\n authorizationUrl: 'https://github.com/login/oauth/authorize',\n tokenUrl: 'https://github.com/login/oauth/access_token',\n defaultScopes: ['repo', 'read:user', 'user:email'],\n supportsRefresh: false, // GitHub tokens don't expire by default\n docsUrl: 'https://docs.github.com/en/apps/oauth-apps',\n category: 'development',\n },\n\n // =============================================================================\n // COMMUNICATION\n // =============================================================================\n\n // Slack - Based on FlowiseAI SlackApi.credential.ts (uses bot tokens)\n slack: {\n id: 'slack',\n name: 'Slack',\n description: 'Access Slack for messaging and channel operations',\n icon: 'MessageSquare',\n authorizationUrl: 'https://slack.com/oauth/v2/authorize',\n tokenUrl: 'https://slack.com/api/oauth.v2.access',\n defaultScopes: [\n 'channels:read',\n 'channels:write',\n 'chat:write',\n 'users:read',\n 'im:read',\n 'im:write',\n 'groups:read',\n ],\n supportsRefresh: true,\n docsUrl: 'https://api.slack.com/authentication/oauth-v2',\n category: 'communication',\n },\n\n // =============================================================================\n // PROJECT MANAGEMENT\n // =============================================================================\n\n // Jira (Atlassian Cloud) - Verified from FlowiseAI JiraApi.credential.ts\n jira: {\n id: 'jira',\n name: 'Jira',\n description: 'Access Jira for issue tracking and project management',\n icon: 'Bug',\n authorizationUrl: 'https://auth.atlassian.com/authorize',\n tokenUrl: 'https://auth.atlassian.com/oauth/token',\n defaultScopes: ['read:jira-work', 'write:jira-work', 'read:jira-user', 'offline_access'],\n additionalAuthParams: {\n audience: 'api.atlassian.com',\n prompt: 'consent',\n },\n supportsRefresh: true,\n docsUrl: 'https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps/',\n category: 'project_management',\n },\n\n // Confluence Cloud - Based on FlowiseAI ConfluenceCloudApi.credential.ts\n confluence: {\n id: 'confluence',\n name: 'Confluence',\n description: 'Access Confluence for documentation and wiki pages',\n icon: 'BookOpen',\n authorizationUrl: 'https://auth.atlassian.com/authorize',\n tokenUrl: 'https://auth.atlassian.com/oauth/token',\n defaultScopes: [\n 'read:confluence-content.all',\n 'read:confluence-space.summary',\n 'write:confluence-content',\n 'offline_access',\n ],\n additionalAuthParams: {\n audience: 'api.atlassian.com',\n prompt: 'consent',\n },\n supportsRefresh: true,\n docsUrl: 'https://developer.atlassian.com/cloud/confluence/oauth-2-3lo-apps/',\n category: 'productivity',\n },\n\n // =============================================================================\n // OTHER PROVIDERS\n // =============================================================================\n\n // Notion - Verified (Notion uses internal OAuth, no traditional scopes)\n notion: {\n id: 'notion',\n name: 'Notion',\n description: 'Access Notion workspaces and pages',\n icon: 'FileText',\n authorizationUrl: 'https://api.notion.com/v1/oauth/authorize',\n tokenUrl: 'https://api.notion.com/v1/oauth/token',\n defaultScopes: [], // Notion doesn't use scopes, permissions are set during integration setup\n additionalAuthParams: {\n owner: 'user',\n },\n supportsRefresh: false,\n docsUrl: 'https://developers.notion.com/docs/authorization',\n category: 'productivity',\n },\n\n // Linear - Verified\n linear: {\n id: 'linear',\n name: 'Linear',\n description: 'Access Linear for issue tracking and project management',\n icon: 'CheckSquare',\n authorizationUrl: 'https://linear.app/oauth/authorize',\n tokenUrl: 'https://api.linear.app/oauth/token',\n defaultScopes: ['read', 'write', 'issues:create', 'comments:create'],\n scopeSeparator: ',',\n supportsRefresh: true,\n docsUrl: 'https://developers.linear.app/docs/oauth/authentication',\n category: 'project_management',\n },\n\n // Airtable - Verified\n airtable: {\n id: 'airtable',\n name: 'Airtable',\n description: 'Access Airtable bases and records',\n icon: 'Table',\n authorizationUrl: 'https://airtable.com/oauth2/v1/authorize',\n tokenUrl: 'https://airtable.com/oauth2/v1/token',\n defaultScopes: [\n 'data.records:read',\n 'data.records:write',\n 'schema.bases:read',\n 'schema.bases:write',\n ],\n supportsRefresh: true,\n docsUrl: 'https://airtable.com/developers/web/api/oauth-reference',\n category: 'productivity',\n },\n\n // Figma - Based on FlowiseAI FigmaApi.credential.ts\n figma: {\n id: 'figma',\n name: 'Figma',\n description: 'Access Figma for design files and collaboration',\n icon: 'Figma',\n authorizationUrl: 'https://www.figma.com/oauth',\n tokenUrl: 'https://www.figma.com/api/oauth/token',\n defaultScopes: ['files:read', 'file_comments:write'],\n supportsRefresh: true,\n docsUrl: 'https://www.figma.com/developers/api#authentication',\n category: 'design',\n },\n\n // Dropbox\n dropbox: {\n id: 'dropbox',\n name: 'Dropbox',\n description: 'Access Dropbox for file storage and sharing',\n icon: 'Cloud',\n authorizationUrl: 'https://www.dropbox.com/oauth2/authorize',\n tokenUrl: 'https://api.dropboxapi.com/oauth2/token',\n defaultScopes: [\n 'account_info.read',\n 'files.content.read',\n 'files.content.write',\n 'files.metadata.read',\n 'files.metadata.write',\n ],\n additionalAuthParams: {\n token_access_type: 'offline',\n },\n supportsRefresh: true,\n docsUrl: 'https://www.dropbox.com/developers/documentation/http/documentation',\n category: 'storage',\n },\n\n // HubSpot\n hubspot: {\n id: 'hubspot',\n name: 'HubSpot',\n description: 'Access HubSpot CRM for contacts, deals, and marketing',\n icon: 'Users',\n authorizationUrl: 'https://app.hubspot.com/oauth/authorize',\n tokenUrl: 'https://api.hubapi.com/oauth/v1/token',\n defaultScopes: [\n 'crm.objects.contacts.read',\n 'crm.objects.contacts.write',\n 'crm.objects.companies.read',\n 'crm.objects.deals.read',\n 'crm.objects.deals.write',\n ],\n supportsRefresh: true,\n docsUrl: 'https://developers.hubspot.com/docs/api/oauth-quickstart-guide',\n category: 'crm_sales',\n },\n\n // Salesforce\n salesforce: {\n id: 'salesforce',\n name: 'Salesforce',\n description: 'Access Salesforce CRM for sales and customer data',\n icon: 'Cloud',\n authorizationUrl: 'https://login.salesforce.com/services/oauth2/authorize',\n tokenUrl: 'https://login.salesforce.com/services/oauth2/token',\n defaultScopes: ['api', 'refresh_token', 'offline_access'],\n supportsRefresh: true,\n docsUrl:\n 'https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_oauth_and_connected_apps.htm',\n category: 'crm_sales',\n },\n\n // Asana\n asana: {\n id: 'asana',\n name: 'Asana',\n description: 'Access Asana for task and project management',\n icon: 'CheckSquare',\n authorizationUrl: 'https://app.asana.com/-/oauth_authorize',\n tokenUrl: 'https://app.asana.com/-/oauth_token',\n defaultScopes: ['default'], // Asana uses 'default' scope for full access\n supportsRefresh: true,\n docsUrl: 'https://developers.asana.com/docs/oauth',\n category: 'project_management',\n },\n\n // Trello\n trello: {\n id: 'trello',\n name: 'Trello',\n description: 'Access Trello boards, cards, and lists',\n icon: 'Layout',\n authorizationUrl: 'https://trello.com/1/authorize',\n tokenUrl: 'https://trello.com/1/OAuthGetAccessToken',\n defaultScopes: ['read', 'write'],\n additionalAuthParams: {\n expiration: 'never',\n name: 'Invect',\n },\n supportsRefresh: false, // Trello uses OAuth 1.0a style with non-expiring tokens\n docsUrl: 'https://developer.atlassian.com/cloud/trello/guides/rest-api/authorization/',\n category: 'project_management',\n },\n\n // Zoom\n zoom: {\n id: 'zoom',\n name: 'Zoom',\n description: 'Access Zoom for meetings and webinars',\n icon: 'Video',\n authorizationUrl: 'https://zoom.us/oauth/authorize',\n tokenUrl: 'https://zoom.us/oauth/token',\n defaultScopes: ['meeting:read', 'meeting:write', 'user:read', 'webinar:read', 'webinar:write'],\n supportsRefresh: true,\n docsUrl: 'https://developers.zoom.us/docs/integrations/oauth/',\n category: 'communication',\n },\n\n // Discord\n discord: {\n id: 'discord',\n name: 'Discord',\n description: 'Access Discord for messaging and server management',\n icon: 'MessageSquare',\n authorizationUrl: 'https://discord.com/api/oauth2/authorize',\n tokenUrl: 'https://discord.com/api/oauth2/token',\n defaultScopes: ['identify', 'email', 'guilds', 'guilds.members.read', 'bot', 'messages.read'],\n supportsRefresh: true,\n docsUrl: 'https://discord.com/developers/docs/topics/oauth2',\n category: 'communication',\n },\n\n // Twitter/X\n twitter: {\n id: 'twitter',\n name: 'Twitter / X',\n description: 'Access Twitter/X for tweets and user data',\n icon: 'Twitter',\n authorizationUrl: 'https://twitter.com/i/oauth2/authorize',\n tokenUrl: 'https://api.twitter.com/2/oauth2/token',\n defaultScopes: ['tweet.read', 'tweet.write', 'users.read', 'offline.access'],\n additionalAuthParams: {\n code_challenge_method: 'S256',\n },\n supportsRefresh: true,\n docsUrl: 'https://developer.twitter.com/en/docs/authentication/oauth-2-0',\n category: 'marketing',\n },\n\n // Spotify\n spotify: {\n id: 'spotify',\n name: 'Spotify',\n description: 'Access Spotify for music and playlist management',\n icon: 'Music',\n authorizationUrl: 'https://accounts.spotify.com/authorize',\n tokenUrl: 'https://accounts.spotify.com/api/token',\n defaultScopes: [\n 'user-read-email',\n 'user-read-private',\n 'playlist-read-private',\n 'playlist-modify-public',\n 'playlist-modify-private',\n ],\n supportsRefresh: true,\n docsUrl: 'https://developer.spotify.com/documentation/web-api/tutorials/code-flow',\n category: 'other',\n },\n\n // Shopify\n shopify: {\n id: 'shopify',\n name: 'Shopify',\n description: 'Access Shopify for e-commerce store management',\n icon: 'ShoppingBag',\n authorizationUrl: 'https://{shop}.myshopify.com/admin/oauth/authorize',\n tokenUrl: 'https://{shop}.myshopify.com/admin/oauth/access_token',\n defaultScopes: [\n 'read_products',\n 'write_products',\n 'read_orders',\n 'write_orders',\n 'read_customers',\n ],\n supportsRefresh: false, // Shopify tokens don't expire\n docsUrl: 'https://shopify.dev/docs/apps/auth/oauth',\n category: 'other', // ecommerce\n },\n\n // Intercom\n intercom: {\n id: 'intercom',\n name: 'Intercom',\n description: 'Access Intercom for customer messaging and support',\n icon: 'MessageCircle',\n authorizationUrl: 'https://app.intercom.com/oauth',\n tokenUrl: 'https://api.intercom.io/auth/eagle/token',\n defaultScopes: [], // Intercom doesn't use scopes in OAuth flow\n supportsRefresh: false,\n docsUrl: 'https://developers.intercom.com/building-apps/docs/setting-up-oauth',\n category: 'support',\n },\n\n // Zendesk\n zendesk: {\n id: 'zendesk',\n name: 'Zendesk',\n description: 'Access Zendesk for customer support and ticketing',\n icon: 'Headphones',\n authorizationUrl: 'https://{subdomain}.zendesk.com/oauth/authorizations/new',\n tokenUrl: 'https://{subdomain}.zendesk.com/oauth/tokens',\n defaultScopes: ['read', 'write'],\n supportsRefresh: true,\n docsUrl: 'https://developer.zendesk.com/documentation/live-chat/getting-started/auth/',\n category: 'support',\n },\n\n // Box\n box: {\n id: 'box',\n name: 'Box',\n description: 'Access Box for file storage and collaboration',\n icon: 'Box',\n authorizationUrl: 'https://account.box.com/api/oauth2/authorize',\n tokenUrl: 'https://api.box.com/oauth2/token',\n defaultScopes: [], // Box doesn't use scopes in authorization\n supportsRefresh: true,\n docsUrl: 'https://developer.box.com/guides/authentication/oauth2/',\n category: 'storage',\n },\n\n // Pipedrive\n pipedrive: {\n id: 'pipedrive',\n name: 'Pipedrive',\n description: 'Access Pipedrive CRM for sales pipeline management',\n icon: 'TrendingUp',\n authorizationUrl: 'https://oauth.pipedrive.com/oauth/authorize',\n tokenUrl: 'https://oauth.pipedrive.com/oauth/token',\n defaultScopes: [], // Pipedrive uses app-level permissions, not OAuth scopes\n supportsRefresh: true,\n docsUrl: 'https://pipedrive.readme.io/docs/marketplace-oauth-authorization',\n category: 'crm_sales',\n },\n\n // Monday.com\n monday: {\n id: 'monday',\n name: 'Monday.com',\n description: 'Access Monday.com for work management',\n icon: 'Calendar',\n authorizationUrl: 'https://auth.monday.com/oauth2/authorize',\n tokenUrl: 'https://auth.monday.com/oauth2/token',\n defaultScopes: ['me:read', 'boards:read', 'boards:write'],\n supportsRefresh: true,\n docsUrl: 'https://developer.monday.com/apps/docs/oauth',\n category: 'project_management',\n },\n\n // ClickUp\n clickup: {\n id: 'clickup',\n name: 'ClickUp',\n description: 'Access ClickUp for project and task management',\n icon: 'CheckCircle',\n authorizationUrl: 'https://app.clickup.com/api',\n tokenUrl: 'https://api.clickup.com/api/v2/oauth/token',\n defaultScopes: [], // ClickUp doesn't use OAuth scopes\n supportsRefresh: true,\n docsUrl: 'https://clickup.com/api/developer-portal/authentication/',\n category: 'project_management',\n },\n\n // Freshdesk\n freshdesk: {\n id: 'freshdesk',\n name: 'Freshdesk',\n description: 'Access Freshdesk for customer support ticketing',\n icon: 'Headphones',\n authorizationUrl: 'https://{domain}.freshdesk.com/oauth/authorize',\n tokenUrl: 'https://{domain}.freshdesk.com/oauth/token',\n defaultScopes: [], // Freshdesk uses API key or OAuth without scopes\n supportsRefresh: true,\n docsUrl: 'https://developers.freshdesk.com/api/#authentication',\n category: 'support',\n },\n\n // QuickBooks\n quickbooks: {\n id: 'quickbooks',\n name: 'QuickBooks',\n description: 'Access QuickBooks for accounting and financial data',\n icon: 'DollarSign',\n authorizationUrl: 'https://appcenter.intuit.com/connect/oauth2',\n tokenUrl: 'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer',\n defaultScopes: ['com.intuit.quickbooks.accounting'],\n supportsRefresh: true,\n docsUrl:\n 'https://developer.intuit.com/app/developer/qbo/docs/develop/authentication-and-authorization/oauth-2.0',\n category: 'payments', // accounting/finance\n },\n\n // Mailchimp\n mailchimp: {\n id: 'mailchimp',\n name: 'Mailchimp',\n description: 'Access Mailchimp for email marketing and audiences',\n icon: 'Mail',\n authorizationUrl: 'https://login.mailchimp.com/oauth2/authorize',\n tokenUrl: 'https://login.mailchimp.com/oauth2/token',\n defaultScopes: [], // Mailchimp doesn't use OAuth scopes\n supportsRefresh: false, // Mailchimp tokens don't expire\n docsUrl: 'https://mailchimp.com/developer/marketing/guides/access-user-data-oauth-2/',\n category: 'marketing',\n },\n\n // Stripe\n stripe: {\n id: 'stripe',\n name: 'Stripe',\n description: 'Access Stripe for payment processing',\n icon: 'CreditCard',\n authorizationUrl: 'https://connect.stripe.com/oauth/authorize',\n tokenUrl: 'https://connect.stripe.com/oauth/token',\n defaultScopes: ['read_write'],\n supportsRefresh: true,\n docsUrl: 'https://stripe.com/docs/connect/oauth-reference',\n category: 'payments',\n },\n\n // PayPal\n paypal: {\n id: 'paypal',\n name: 'PayPal',\n description: 'Access PayPal for payment processing',\n icon: 'DollarSign',\n authorizationUrl: 'https://www.paypal.com/signin/authorize',\n tokenUrl: 'https://api.paypal.com/v1/oauth2/token',\n defaultScopes: ['openid', 'email'],\n supportsRefresh: true,\n docsUrl: 'https://developer.paypal.com/docs/log-in-with-paypal/integrate/',\n category: 'payments',\n },\n};\n\n/**\n * Get a provider definition by ID\n */\nexport function getOAuth2Provider(providerId: string): OAuth2ProviderDefinition | undefined {\n return OAUTH2_PROVIDERS[providerId];\n}\n\n/**\n * Get all provider definitions\n */\nexport function getAllOAuth2Providers(): OAuth2ProviderDefinition[] {\n return Object.values(OAUTH2_PROVIDERS);\n}\n\n/**\n * Get providers by category\n */\nexport function getOAuth2ProvidersByCategory(\n category: OAuth2ProviderDefinition['category'],\n): OAuth2ProviderDefinition[] {\n return Object.values(OAUTH2_PROVIDERS).filter((p) => p.category === category);\n}\n"],"mappings":";;;;;AAoDA,MAAa,mBAA6D;CAMxE,aAAa;EACX,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACD;EACD,sBAAsB;GACpB,aAAa;GACb,QAAQ;GACT;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,eAAe;EACb,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACD;EACD,sBAAsB;GACpB,aAAa;GACb,QAAQ;GACT;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,cAAc;EACZ,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACD;EACD,sBAAsB;GACpB,aAAa;GACb,QAAQ;GACT;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAID,cAAc;EACZ,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACD;EACD,sBAAsB;GACpB,aAAa;GACb,QAAQ;GACT;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,iBAAiB;EACf,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CACb,4CACA,kDACD;EACD,sBAAsB;GACpB,aAAa;GACb,QAAQ;GACT;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAOD,WAAW;EACT,IAAI;EACJ,MAAM;EACN,aACE;EACF,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SACE;EACF,UAAU;EACX;CAGD,mBAAmB;EACjB,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,iBAAiB;EACf,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAEb;GACA;GAEA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACA;GACA;GAEA;GACA;GACA;GACA;GAEA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,oBAAoB;EAClB,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAOD,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAQ;GAAa;GAAa;EAClD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAOD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAOD,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAkB;GAAmB;GAAkB;GAAiB;EACxF,sBAAsB;GACpB,UAAU;GACV,QAAQ;GACT;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,YAAY;EACV,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACD;EACD,sBAAsB;GACpB,UAAU;GACV,QAAQ;GACT;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAOD,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,EAAE;EACjB,sBAAsB,EACpB,OAAO,QACR;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAQ;GAAS;GAAiB;GAAkB;EACpE,gBAAgB;EAChB,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,UAAU;EACR,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CAAC,cAAc,sBAAsB;EACpD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACD;EACD,sBAAsB,EACpB,mBAAmB,WACpB;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,YAAY;EACV,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAO;GAAiB;GAAiB;EACzD,iBAAiB;EACjB,SACE;EACF,UAAU;EACX;CAGD,OAAO;EACL,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CAAC,UAAU;EAC1B,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CAAC,QAAQ,QAAQ;EAChC,sBAAsB;GACpB,YAAY;GACZ,MAAM;GACP;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,MAAM;EACJ,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAgB;GAAiB;GAAa;GAAgB;GAAgB;EAC9F,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAY;GAAS;GAAU;GAAuB;GAAO;GAAgB;EAC7F,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAc;GAAe;GAAc;GAAiB;EAC5E,sBAAsB,EACpB,uBAAuB,QACxB;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GACb;GACA;GACA;GACA;GACA;GACD;EACD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,UAAU;EACR,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,EAAE;EACjB,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CAAC,QAAQ,QAAQ;EAChC,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,KAAK;EACH,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,EAAE;EACjB,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,WAAW;EACT,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,EAAE;EACjB,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe;GAAC;GAAW;GAAe;GAAe;EACzD,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,SAAS;EACP,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,EAAE;EACjB,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,WAAW;EACT,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,EAAE;EACjB,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,YAAY;EACV,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CAAC,mCAAmC;EACnD,iBAAiB;EACjB,SACE;EACF,UAAU;EACX;CAGD,WAAW;EACT,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,EAAE;EACjB,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CAAC,aAAa;EAC7B,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CAGD,QAAQ;EACN,IAAI;EACJ,MAAM;EACN,aAAa;EACb,MAAM;EACN,kBAAkB;EAClB,UAAU;EACV,eAAe,CAAC,UAAU,QAAQ;EAClC,iBAAiB;EACjB,SAAS;EACT,UAAU;EACX;CACF;;;;AAKD,SAAgB,kBAAkB,YAA0D;AAC1F,QAAO,iBAAiB;;;;;AAM1B,SAAgB,wBAAoD;AAClE,QAAO,OAAO,OAAO,iBAAiB"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_oauth2_providers = require("./oauth2-providers.cjs");
|
|
3
|
+
let crypto = require("crypto");
|
|
4
|
+
//#region src/services/credentials/oauth2.service.ts
|
|
5
|
+
/**
|
|
6
|
+
* OAuth2 Service
|
|
7
|
+
*
|
|
8
|
+
* Handles OAuth2 authorization flow:
|
|
9
|
+
* 1. Generate authorization URL with state
|
|
10
|
+
* 2. Exchange authorization code for tokens
|
|
11
|
+
* 3. Refresh access tokens when expired
|
|
12
|
+
*/
|
|
13
|
+
const pendingStates = /* @__PURE__ */ new Map();
|
|
14
|
+
const STATE_EXPIRY_MS = 600 * 1e3;
|
|
15
|
+
function cleanupExpiredStates() {
|
|
16
|
+
const now = Date.now();
|
|
17
|
+
for (const [state, pending] of pendingStates.entries()) if (now - pending.createdAt > STATE_EXPIRY_MS) pendingStates.delete(state);
|
|
18
|
+
}
|
|
19
|
+
setInterval(cleanupExpiredStates, 300 * 1e3);
|
|
20
|
+
/**
|
|
21
|
+
* OAuth2 Service for handling authorization flows
|
|
22
|
+
*/
|
|
23
|
+
var OAuth2Service = class {
|
|
24
|
+
constructor(logger) {
|
|
25
|
+
this.logger = logger;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get all available OAuth2 providers
|
|
29
|
+
*/
|
|
30
|
+
getProviders() {
|
|
31
|
+
return require_oauth2_providers.getAllOAuth2Providers();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get a specific OAuth2 provider
|
|
35
|
+
*/
|
|
36
|
+
getProvider(providerId) {
|
|
37
|
+
return require_oauth2_providers.getOAuth2Provider(providerId);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Start an OAuth2 authorization flow
|
|
41
|
+
*
|
|
42
|
+
* @param providerId - The OAuth2 provider ID
|
|
43
|
+
* @param appConfig - OAuth app credentials and redirect URI
|
|
44
|
+
* @param options - Additional options
|
|
45
|
+
* @returns Authorization URL and state to redirect user to
|
|
46
|
+
*/
|
|
47
|
+
startAuthorizationFlow(providerId, appConfig, options = {}) {
|
|
48
|
+
const provider = require_oauth2_providers.getOAuth2Provider(providerId);
|
|
49
|
+
if (!provider) throw new Error(`Unknown OAuth2 provider: ${providerId}`);
|
|
50
|
+
const state = (0, crypto.randomBytes)(32).toString("hex");
|
|
51
|
+
const codeVerifier = (0, crypto.randomBytes)(32).toString("base64url");
|
|
52
|
+
const codeChallenge = (0, crypto.createHash)("sha256").update(codeVerifier).digest("base64url");
|
|
53
|
+
const params = new URLSearchParams({
|
|
54
|
+
client_id: appConfig.clientId,
|
|
55
|
+
redirect_uri: appConfig.redirectUri,
|
|
56
|
+
response_type: "code",
|
|
57
|
+
state,
|
|
58
|
+
code_challenge: codeChallenge,
|
|
59
|
+
code_challenge_method: "S256"
|
|
60
|
+
});
|
|
61
|
+
const scopes = options.scopes ?? provider.defaultScopes;
|
|
62
|
+
if (scopes.length > 0) {
|
|
63
|
+
const separator = provider.scopeSeparator ?? " ";
|
|
64
|
+
params.set("scope", scopes.join(separator));
|
|
65
|
+
}
|
|
66
|
+
if (provider.additionalAuthParams) for (const [key, value] of Object.entries(provider.additionalAuthParams)) params.set(key, value);
|
|
67
|
+
const authorizationUrl = `${provider.authorizationUrl}?${params.toString()}`;
|
|
68
|
+
const pendingState = {
|
|
69
|
+
state,
|
|
70
|
+
providerId,
|
|
71
|
+
codeVerifier,
|
|
72
|
+
returnUrl: options.returnUrl,
|
|
73
|
+
credentialName: options.credentialName,
|
|
74
|
+
createdAt: Date.now()
|
|
75
|
+
};
|
|
76
|
+
pendingStates.set(state, pendingState);
|
|
77
|
+
this.logger.debug("Started OAuth2 flow", {
|
|
78
|
+
providerId,
|
|
79
|
+
state
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
authorizationUrl,
|
|
83
|
+
state,
|
|
84
|
+
codeVerifier
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Get pending OAuth2 state
|
|
89
|
+
*/
|
|
90
|
+
getPendingState(state) {
|
|
91
|
+
return pendingStates.get(state);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Remove pending OAuth2 state (after successful exchange)
|
|
95
|
+
*/
|
|
96
|
+
removePendingState(state) {
|
|
97
|
+
pendingStates.delete(state);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Exchange authorization code for tokens
|
|
101
|
+
*
|
|
102
|
+
* @param code - Authorization code from callback
|
|
103
|
+
* @param state - State parameter for verification
|
|
104
|
+
* @param appConfig - OAuth app credentials
|
|
105
|
+
* @returns OAuth2 tokens
|
|
106
|
+
*/
|
|
107
|
+
async exchangeCodeForTokens(code, state, appConfig) {
|
|
108
|
+
const pendingState = pendingStates.get(state);
|
|
109
|
+
if (!pendingState) throw new Error("Invalid or expired OAuth state. Please try again.");
|
|
110
|
+
const provider = require_oauth2_providers.getOAuth2Provider(pendingState.providerId);
|
|
111
|
+
if (!provider) throw new Error(`Unknown OAuth2 provider: ${pendingState.providerId}`);
|
|
112
|
+
const params = new URLSearchParams({
|
|
113
|
+
grant_type: "authorization_code",
|
|
114
|
+
code,
|
|
115
|
+
redirect_uri: appConfig.redirectUri,
|
|
116
|
+
client_id: appConfig.clientId,
|
|
117
|
+
client_secret: appConfig.clientSecret
|
|
118
|
+
});
|
|
119
|
+
if (pendingState.codeVerifier) params.set("code_verifier", pendingState.codeVerifier);
|
|
120
|
+
this.logger.debug("Exchanging code for tokens", { providerId: pendingState.providerId });
|
|
121
|
+
const response = await fetch(provider.tokenUrl, {
|
|
122
|
+
method: "POST",
|
|
123
|
+
headers: {
|
|
124
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
125
|
+
Accept: "application/json"
|
|
126
|
+
},
|
|
127
|
+
body: params.toString()
|
|
128
|
+
});
|
|
129
|
+
if (!response.ok) {
|
|
130
|
+
const errorText = await response.text();
|
|
131
|
+
this.logger.error("Token exchange failed", {
|
|
132
|
+
status: response.status,
|
|
133
|
+
error: errorText
|
|
134
|
+
});
|
|
135
|
+
throw new Error(`Token exchange failed: ${errorText}`);
|
|
136
|
+
}
|
|
137
|
+
const data = await response.json();
|
|
138
|
+
const tokens = {
|
|
139
|
+
accessToken: data.access_token,
|
|
140
|
+
refreshToken: data.refresh_token,
|
|
141
|
+
tokenType: data.token_type || "Bearer",
|
|
142
|
+
expiresIn: data.expires_in,
|
|
143
|
+
scope: data.scope,
|
|
144
|
+
raw: data
|
|
145
|
+
};
|
|
146
|
+
pendingStates.delete(state);
|
|
147
|
+
this.logger.info("OAuth2 tokens obtained", {
|
|
148
|
+
providerId: pendingState.providerId,
|
|
149
|
+
hasRefreshToken: !!tokens.refreshToken,
|
|
150
|
+
expiresIn: tokens.expiresIn
|
|
151
|
+
});
|
|
152
|
+
return {
|
|
153
|
+
tokens,
|
|
154
|
+
pendingState
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Refresh an expired access token
|
|
159
|
+
*
|
|
160
|
+
* @param refreshToken - The refresh token
|
|
161
|
+
* @param providerId - The OAuth2 provider ID
|
|
162
|
+
* @param appConfig - OAuth app credentials
|
|
163
|
+
* @returns New OAuth2 tokens
|
|
164
|
+
*/
|
|
165
|
+
async refreshAccessToken(refreshToken, providerId, appConfig) {
|
|
166
|
+
const provider = require_oauth2_providers.getOAuth2Provider(providerId);
|
|
167
|
+
if (!provider) throw new Error(`Unknown OAuth2 provider: ${providerId}`);
|
|
168
|
+
if (!provider.supportsRefresh) throw new Error(`Provider ${providerId} does not support token refresh`);
|
|
169
|
+
const params = new URLSearchParams({
|
|
170
|
+
grant_type: "refresh_token",
|
|
171
|
+
refresh_token: refreshToken,
|
|
172
|
+
client_id: appConfig.clientId,
|
|
173
|
+
client_secret: appConfig.clientSecret
|
|
174
|
+
});
|
|
175
|
+
this.logger.debug("Refreshing access token", { providerId });
|
|
176
|
+
const response = await fetch(provider.tokenUrl, {
|
|
177
|
+
method: "POST",
|
|
178
|
+
headers: {
|
|
179
|
+
"Content-Type": "application/x-www-form-urlencoded",
|
|
180
|
+
Accept: "application/json"
|
|
181
|
+
},
|
|
182
|
+
body: params.toString()
|
|
183
|
+
});
|
|
184
|
+
if (!response.ok) {
|
|
185
|
+
const errorText = await response.text();
|
|
186
|
+
this.logger.error("Token refresh failed", {
|
|
187
|
+
status: response.status,
|
|
188
|
+
error: errorText
|
|
189
|
+
});
|
|
190
|
+
throw new Error(`Token refresh failed: ${errorText}`);
|
|
191
|
+
}
|
|
192
|
+
const data = await response.json();
|
|
193
|
+
const tokens = {
|
|
194
|
+
accessToken: data.access_token,
|
|
195
|
+
refreshToken: data.refresh_token || refreshToken,
|
|
196
|
+
tokenType: data.token_type || "Bearer",
|
|
197
|
+
expiresIn: data.expires_in,
|
|
198
|
+
scope: data.scope,
|
|
199
|
+
raw: data
|
|
200
|
+
};
|
|
201
|
+
this.logger.info("Access token refreshed", {
|
|
202
|
+
providerId,
|
|
203
|
+
expiresIn: tokens.expiresIn
|
|
204
|
+
});
|
|
205
|
+
return tokens;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Build a CredentialConfig from OAuth2 tokens
|
|
209
|
+
*/
|
|
210
|
+
buildCredentialConfig(tokens, providerId, appConfig) {
|
|
211
|
+
const now = /* @__PURE__ */ new Date();
|
|
212
|
+
const expiresAt = tokens.expiresIn ? new Date(now.getTime() + tokens.expiresIn * 1e3).toISOString() : void 0;
|
|
213
|
+
return {
|
|
214
|
+
accessToken: tokens.accessToken,
|
|
215
|
+
refreshToken: tokens.refreshToken,
|
|
216
|
+
tokenType: tokens.tokenType,
|
|
217
|
+
scope: tokens.scope,
|
|
218
|
+
expiresAt,
|
|
219
|
+
oauth2Provider: providerId,
|
|
220
|
+
clientId: appConfig.clientId,
|
|
221
|
+
clientSecret: appConfig.clientSecret
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Check if a credential's access token is expired or about to expire
|
|
226
|
+
*
|
|
227
|
+
* @param config - The credential config
|
|
228
|
+
* @param bufferSeconds - Buffer time before actual expiry (default 5 minutes)
|
|
229
|
+
*/
|
|
230
|
+
isTokenExpired(config, bufferSeconds = 300) {
|
|
231
|
+
if (!config.expiresAt) return false;
|
|
232
|
+
const expiresAt = new Date(config.expiresAt);
|
|
233
|
+
const bufferMs = bufferSeconds * 1e3;
|
|
234
|
+
return expiresAt.getTime() - bufferMs < Date.now();
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Check if a credential can be refreshed
|
|
238
|
+
*/
|
|
239
|
+
canRefresh(config) {
|
|
240
|
+
return !!(config.refreshToken && config.oauth2Provider);
|
|
241
|
+
}
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Create OAuth2 service instance
|
|
245
|
+
*/
|
|
246
|
+
function createOAuth2Service(logger) {
|
|
247
|
+
return new OAuth2Service(logger);
|
|
248
|
+
}
|
|
249
|
+
//#endregion
|
|
250
|
+
exports.createOAuth2Service = createOAuth2Service;
|
|
251
|
+
|
|
252
|
+
//# sourceMappingURL=oauth2.service.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.service.cjs","names":["getAllOAuth2Providers","getOAuth2Provider"],"sources":["../../../src/services/credentials/oauth2.service.ts"],"sourcesContent":["/**\n * OAuth2 Service\n *\n * Handles OAuth2 authorization flow:\n * 1. Generate authorization URL with state\n * 2. Exchange authorization code for tokens\n * 3. Refresh access tokens when expired\n */\n\nimport { randomBytes, createHash } from 'crypto';\nimport type { Logger } from 'src/types/schemas';\nimport type { CredentialConfig } from 'src/database/schema-sqlite';\nimport {\n getOAuth2Provider,\n getAllOAuth2Providers,\n type OAuth2ProviderDefinition,\n} from './oauth2-providers';\n\n/**\n * OAuth2 configuration for the Invect application\n */\nexport interface OAuth2AppConfig {\n /** Client ID from the OAuth provider */\n clientId: string;\n /** Client secret from the OAuth provider */\n clientSecret: string;\n /** Redirect URI registered with the provider */\n redirectUri: string;\n}\n\n/**\n * Result of starting an OAuth2 flow\n */\nexport interface OAuth2StartResult {\n /** URL to redirect the user to */\n authorizationUrl: string;\n /** State parameter for CSRF protection (store and verify on callback) */\n state: string;\n /** Code verifier for PKCE (store and use during token exchange) */\n codeVerifier?: string;\n}\n\n/**\n * OAuth2 tokens received from provider\n */\nexport interface OAuth2Tokens {\n accessToken: string;\n refreshToken?: string;\n tokenType: string;\n expiresIn?: number; // seconds until expiry\n scope?: string;\n /** Additional provider-specific data */\n raw?: Record<string, unknown>;\n}\n\n/**\n * Pending OAuth2 flow state\n * Store this temporarily during the OAuth flow\n */\nexport interface OAuth2PendingState {\n state: string;\n providerId: string;\n codeVerifier?: string;\n /** Original URL to redirect back to after OAuth completes */\n returnUrl?: string;\n /** Custom credential name */\n credentialName?: string;\n /** Timestamp when this state was created */\n createdAt: number;\n}\n\n// In-memory store for pending OAuth states (should use Redis in production)\nconst pendingStates = new Map<string, OAuth2PendingState>();\n\n// Clean up expired states (older than 10 minutes)\nconst STATE_EXPIRY_MS = 10 * 60 * 1000;\n\nfunction cleanupExpiredStates() {\n const now = Date.now();\n for (const [state, pending] of pendingStates.entries()) {\n if (now - pending.createdAt > STATE_EXPIRY_MS) {\n pendingStates.delete(state);\n }\n }\n}\n\n// Run cleanup every 5 minutes\nsetInterval(cleanupExpiredStates, 5 * 60 * 1000);\n\n/**\n * OAuth2 Service for handling authorization flows\n */\nexport class OAuth2Service {\n constructor(private readonly logger: Logger) {}\n\n /**\n * Get all available OAuth2 providers\n */\n getProviders(): OAuth2ProviderDefinition[] {\n return getAllOAuth2Providers();\n }\n\n /**\n * Get a specific OAuth2 provider\n */\n getProvider(providerId: string): OAuth2ProviderDefinition | undefined {\n return getOAuth2Provider(providerId);\n }\n\n /**\n * Start an OAuth2 authorization flow\n *\n * @param providerId - The OAuth2 provider ID\n * @param appConfig - OAuth app credentials and redirect URI\n * @param options - Additional options\n * @returns Authorization URL and state to redirect user to\n */\n startAuthorizationFlow(\n providerId: string,\n appConfig: OAuth2AppConfig,\n options: {\n scopes?: string[];\n returnUrl?: string;\n credentialName?: string;\n } = {},\n ): OAuth2StartResult {\n const provider = getOAuth2Provider(providerId);\n if (!provider) {\n throw new Error(`Unknown OAuth2 provider: ${providerId}`);\n }\n\n // Generate cryptographically secure state\n const state = randomBytes(32).toString('hex');\n\n // Generate PKCE code verifier and challenge\n const codeVerifier = randomBytes(32).toString('base64url');\n const codeChallenge = createHash('sha256').update(codeVerifier).digest('base64url');\n\n // Build authorization URL\n const params = new URLSearchParams({\n client_id: appConfig.clientId,\n redirect_uri: appConfig.redirectUri,\n response_type: 'code',\n state,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n });\n\n // Add scopes\n const scopes = options.scopes ?? provider.defaultScopes;\n if (scopes.length > 0) {\n const separator = provider.scopeSeparator ?? ' ';\n params.set('scope', scopes.join(separator));\n }\n\n // Add provider-specific additional params\n if (provider.additionalAuthParams) {\n for (const [key, value] of Object.entries(provider.additionalAuthParams)) {\n params.set(key, value);\n }\n }\n\n const authorizationUrl = `${provider.authorizationUrl}?${params.toString()}`;\n\n // Store pending state\n const pendingState: OAuth2PendingState = {\n state,\n providerId,\n codeVerifier,\n returnUrl: options.returnUrl,\n credentialName: options.credentialName,\n createdAt: Date.now(),\n };\n pendingStates.set(state, pendingState);\n\n this.logger.debug('Started OAuth2 flow', { providerId, state });\n\n return {\n authorizationUrl,\n state,\n codeVerifier,\n };\n }\n\n /**\n * Get pending OAuth2 state\n */\n getPendingState(state: string): OAuth2PendingState | undefined {\n return pendingStates.get(state);\n }\n\n /**\n * Remove pending OAuth2 state (after successful exchange)\n */\n removePendingState(state: string): void {\n pendingStates.delete(state);\n }\n\n /**\n * Exchange authorization code for tokens\n *\n * @param code - Authorization code from callback\n * @param state - State parameter for verification\n * @param appConfig - OAuth app credentials\n * @returns OAuth2 tokens\n */\n async exchangeCodeForTokens(\n code: string,\n state: string,\n appConfig: OAuth2AppConfig,\n ): Promise<{ tokens: OAuth2Tokens; pendingState: OAuth2PendingState }> {\n // Verify and retrieve pending state\n const pendingState = pendingStates.get(state);\n if (!pendingState) {\n throw new Error('Invalid or expired OAuth state. Please try again.');\n }\n\n const provider = getOAuth2Provider(pendingState.providerId);\n if (!provider) {\n throw new Error(`Unknown OAuth2 provider: ${pendingState.providerId}`);\n }\n\n // Build token request\n const params = new URLSearchParams({\n grant_type: 'authorization_code',\n code,\n redirect_uri: appConfig.redirectUri,\n client_id: appConfig.clientId,\n client_secret: appConfig.clientSecret,\n });\n\n // Add PKCE code verifier if available\n if (pendingState.codeVerifier) {\n params.set('code_verifier', pendingState.codeVerifier);\n }\n\n this.logger.debug('Exchanging code for tokens', { providerId: pendingState.providerId });\n\n // Exchange code for tokens\n const response = await fetch(provider.tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: params.toString(),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n this.logger.error('Token exchange failed', { status: response.status, error: errorText });\n throw new Error(`Token exchange failed: ${errorText}`);\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n\n // Parse tokens\n const tokens: OAuth2Tokens = {\n accessToken: data.access_token as string,\n refreshToken: data.refresh_token as string | undefined,\n tokenType: (data.token_type as string) || 'Bearer',\n expiresIn: data.expires_in as number | undefined,\n scope: data.scope as string | undefined,\n raw: data,\n };\n\n // Remove used state\n pendingStates.delete(state);\n\n this.logger.info('OAuth2 tokens obtained', {\n providerId: pendingState.providerId,\n hasRefreshToken: !!tokens.refreshToken,\n expiresIn: tokens.expiresIn,\n });\n\n return { tokens, pendingState };\n }\n\n /**\n * Refresh an expired access token\n *\n * @param refreshToken - The refresh token\n * @param providerId - The OAuth2 provider ID\n * @param appConfig - OAuth app credentials\n * @returns New OAuth2 tokens\n */\n async refreshAccessToken(\n refreshToken: string,\n providerId: string,\n appConfig: OAuth2AppConfig,\n ): Promise<OAuth2Tokens> {\n const provider = getOAuth2Provider(providerId);\n if (!provider) {\n throw new Error(`Unknown OAuth2 provider: ${providerId}`);\n }\n\n if (!provider.supportsRefresh) {\n throw new Error(`Provider ${providerId} does not support token refresh`);\n }\n\n const params = new URLSearchParams({\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n client_id: appConfig.clientId,\n client_secret: appConfig.clientSecret,\n });\n\n this.logger.debug('Refreshing access token', { providerId });\n\n const response = await fetch(provider.tokenUrl, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n Accept: 'application/json',\n },\n body: params.toString(),\n });\n\n if (!response.ok) {\n const errorText = await response.text();\n this.logger.error('Token refresh failed', { status: response.status, error: errorText });\n throw new Error(`Token refresh failed: ${errorText}`);\n }\n\n const data = (await response.json()) as Record<string, unknown>;\n\n const tokens: OAuth2Tokens = {\n accessToken: data.access_token as string,\n // Some providers return a new refresh token\n refreshToken: (data.refresh_token as string | undefined) || refreshToken,\n tokenType: (data.token_type as string) || 'Bearer',\n expiresIn: data.expires_in as number | undefined,\n scope: data.scope as string | undefined,\n raw: data,\n };\n\n this.logger.info('Access token refreshed', {\n providerId,\n expiresIn: tokens.expiresIn,\n });\n\n return tokens;\n }\n\n /**\n * Build a CredentialConfig from OAuth2 tokens\n */\n buildCredentialConfig(\n tokens: OAuth2Tokens,\n providerId: string,\n appConfig: { clientId: string; clientSecret: string },\n ): CredentialConfig {\n const now = new Date();\n const expiresAt = tokens.expiresIn\n ? new Date(now.getTime() + tokens.expiresIn * 1000).toISOString()\n : undefined;\n\n return {\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n tokenType: tokens.tokenType,\n scope: tokens.scope,\n expiresAt,\n // Store provider info for refresh\n oauth2Provider: providerId,\n clientId: appConfig.clientId,\n clientSecret: appConfig.clientSecret,\n };\n }\n\n /**\n * Check if a credential's access token is expired or about to expire\n *\n * @param config - The credential config\n * @param bufferSeconds - Buffer time before actual expiry (default 5 minutes)\n */\n isTokenExpired(config: CredentialConfig, bufferSeconds: number = 300): boolean {\n if (!config.expiresAt) {\n return false; // No expiry means it doesn't expire (or we don't know)\n }\n\n const expiresAt = new Date(config.expiresAt);\n const bufferMs = bufferSeconds * 1000;\n return expiresAt.getTime() - bufferMs < Date.now();\n }\n\n /**\n * Check if a credential can be refreshed\n */\n canRefresh(config: CredentialConfig): boolean {\n return !!(config.refreshToken && config.oauth2Provider);\n }\n}\n\n/**\n * Create OAuth2 service instance\n */\nexport function createOAuth2Service(logger: Logger): OAuth2Service {\n return new OAuth2Service(logger);\n}\n"],"mappings":";;;;;;;;;;;;AAwEA,MAAM,gCAAgB,IAAI,KAAiC;AAG3D,MAAM,kBAAkB,MAAU;AAElC,SAAS,uBAAuB;CAC9B,MAAM,MAAM,KAAK,KAAK;AACtB,MAAK,MAAM,CAAC,OAAO,YAAY,cAAc,SAAS,CACpD,KAAI,MAAM,QAAQ,YAAY,gBAC5B,eAAc,OAAO,MAAM;;AAMjC,YAAY,sBAAsB,MAAS,IAAK;;;;AAKhD,IAAa,gBAAb,MAA2B;CACzB,YAAY,QAAiC;AAAhB,OAAA,SAAA;;;;;CAK7B,eAA2C;AACzC,SAAOA,yBAAAA,uBAAuB;;;;;CAMhC,YAAY,YAA0D;AACpE,SAAOC,yBAAAA,kBAAkB,WAAW;;;;;;;;;;CAWtC,uBACE,YACA,WACA,UAII,EAAE,EACa;EACnB,MAAM,WAAWA,yBAAAA,kBAAkB,WAAW;AAC9C,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,4BAA4B,aAAa;EAI3D,MAAM,SAAA,GAAA,OAAA,aAAoB,GAAG,CAAC,SAAS,MAAM;EAG7C,MAAM,gBAAA,GAAA,OAAA,aAA2B,GAAG,CAAC,SAAS,YAAY;EAC1D,MAAM,iBAAA,GAAA,OAAA,YAA2B,SAAS,CAAC,OAAO,aAAa,CAAC,OAAO,YAAY;EAGnF,MAAM,SAAS,IAAI,gBAAgB;GACjC,WAAW,UAAU;GACrB,cAAc,UAAU;GACxB,eAAe;GACf;GACA,gBAAgB;GAChB,uBAAuB;GACxB,CAAC;EAGF,MAAM,SAAS,QAAQ,UAAU,SAAS;AAC1C,MAAI,OAAO,SAAS,GAAG;GACrB,MAAM,YAAY,SAAS,kBAAkB;AAC7C,UAAO,IAAI,SAAS,OAAO,KAAK,UAAU,CAAC;;AAI7C,MAAI,SAAS,qBACX,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,SAAS,qBAAqB,CACtE,QAAO,IAAI,KAAK,MAAM;EAI1B,MAAM,mBAAmB,GAAG,SAAS,iBAAiB,GAAG,OAAO,UAAU;EAG1E,MAAM,eAAmC;GACvC;GACA;GACA;GACA,WAAW,QAAQ;GACnB,gBAAgB,QAAQ;GACxB,WAAW,KAAK,KAAK;GACtB;AACD,gBAAc,IAAI,OAAO,aAAa;AAEtC,OAAK,OAAO,MAAM,uBAAuB;GAAE;GAAY;GAAO,CAAC;AAE/D,SAAO;GACL;GACA;GACA;GACD;;;;;CAMH,gBAAgB,OAA+C;AAC7D,SAAO,cAAc,IAAI,MAAM;;;;;CAMjC,mBAAmB,OAAqB;AACtC,gBAAc,OAAO,MAAM;;;;;;;;;;CAW7B,MAAM,sBACJ,MACA,OACA,WACqE;EAErE,MAAM,eAAe,cAAc,IAAI,MAAM;AAC7C,MAAI,CAAC,aACH,OAAM,IAAI,MAAM,oDAAoD;EAGtE,MAAM,WAAWA,yBAAAA,kBAAkB,aAAa,WAAW;AAC3D,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,4BAA4B,aAAa,aAAa;EAIxE,MAAM,SAAS,IAAI,gBAAgB;GACjC,YAAY;GACZ;GACA,cAAc,UAAU;GACxB,WAAW,UAAU;GACrB,eAAe,UAAU;GAC1B,CAAC;AAGF,MAAI,aAAa,aACf,QAAO,IAAI,iBAAiB,aAAa,aAAa;AAGxD,OAAK,OAAO,MAAM,8BAA8B,EAAE,YAAY,aAAa,YAAY,CAAC;EAGxF,MAAM,WAAW,MAAM,MAAM,SAAS,UAAU;GAC9C,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,QAAQ;IACT;GACD,MAAM,OAAO,UAAU;GACxB,CAAC;AAEF,MAAI,CAAC,SAAS,IAAI;GAChB,MAAM,YAAY,MAAM,SAAS,MAAM;AACvC,QAAK,OAAO,MAAM,yBAAyB;IAAE,QAAQ,SAAS;IAAQ,OAAO;IAAW,CAAC;AACzF,SAAM,IAAI,MAAM,0BAA0B,YAAY;;EAGxD,MAAM,OAAQ,MAAM,SAAS,MAAM;EAGnC,MAAM,SAAuB;GAC3B,aAAa,KAAK;GAClB,cAAc,KAAK;GACnB,WAAY,KAAK,cAAyB;GAC1C,WAAW,KAAK;GAChB,OAAO,KAAK;GACZ,KAAK;GACN;AAGD,gBAAc,OAAO,MAAM;AAE3B,OAAK,OAAO,KAAK,0BAA0B;GACzC,YAAY,aAAa;GACzB,iBAAiB,CAAC,CAAC,OAAO;GAC1B,WAAW,OAAO;GACnB,CAAC;AAEF,SAAO;GAAE;GAAQ;GAAc;;;;;;;;;;CAWjC,MAAM,mBACJ,cACA,YACA,WACuB;EACvB,MAAM,WAAWA,yBAAAA,kBAAkB,WAAW;AAC9C,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,4BAA4B,aAAa;AAG3D,MAAI,CAAC,SAAS,gBACZ,OAAM,IAAI,MAAM,YAAY,WAAW,iCAAiC;EAG1E,MAAM,SAAS,IAAI,gBAAgB;GACjC,YAAY;GACZ,eAAe;GACf,WAAW,UAAU;GACrB,eAAe,UAAU;GAC1B,CAAC;AAEF,OAAK,OAAO,MAAM,2BAA2B,EAAE,YAAY,CAAC;EAE5D,MAAM,WAAW,MAAM,MAAM,SAAS,UAAU;GAC9C,QAAQ;GACR,SAAS;IACP,gBAAgB;IAChB,QAAQ;IACT;GACD,MAAM,OAAO,UAAU;GACxB,CAAC;AAEF,MAAI,CAAC,SAAS,IAAI;GAChB,MAAM,YAAY,MAAM,SAAS,MAAM;AACvC,QAAK,OAAO,MAAM,wBAAwB;IAAE,QAAQ,SAAS;IAAQ,OAAO;IAAW,CAAC;AACxF,SAAM,IAAI,MAAM,yBAAyB,YAAY;;EAGvD,MAAM,OAAQ,MAAM,SAAS,MAAM;EAEnC,MAAM,SAAuB;GAC3B,aAAa,KAAK;GAElB,cAAe,KAAK,iBAAwC;GAC5D,WAAY,KAAK,cAAyB;GAC1C,WAAW,KAAK;GAChB,OAAO,KAAK;GACZ,KAAK;GACN;AAED,OAAK,OAAO,KAAK,0BAA0B;GACzC;GACA,WAAW,OAAO;GACnB,CAAC;AAEF,SAAO;;;;;CAMT,sBACE,QACA,YACA,WACkB;EAClB,MAAM,sBAAM,IAAI,MAAM;EACtB,MAAM,YAAY,OAAO,YACrB,IAAI,KAAK,IAAI,SAAS,GAAG,OAAO,YAAY,IAAK,CAAC,aAAa,GAC/D,KAAA;AAEJ,SAAO;GACL,aAAa,OAAO;GACpB,cAAc,OAAO;GACrB,WAAW,OAAO;GAClB,OAAO,OAAO;GACd;GAEA,gBAAgB;GAChB,UAAU,UAAU;GACpB,cAAc,UAAU;GACzB;;;;;;;;CASH,eAAe,QAA0B,gBAAwB,KAAc;AAC7E,MAAI,CAAC,OAAO,UACV,QAAO;EAGT,MAAM,YAAY,IAAI,KAAK,OAAO,UAAU;EAC5C,MAAM,WAAW,gBAAgB;AACjC,SAAO,UAAU,SAAS,GAAG,WAAW,KAAK,KAAK;;;;;CAMpD,WAAW,QAAmC;AAC5C,SAAO,CAAC,EAAE,OAAO,gBAAgB,OAAO;;;;;;AAO5C,SAAgB,oBAAoB,QAA+B;AACjE,QAAO,IAAI,cAAc,OAAO"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Logger } from "../../types/schemas-fresh/invect-config.cjs";
|
|
2
|
+
import { OAuth2ProviderDefinition } from "./oauth2-providers.cjs";
|
|
3
|
+
import { CredentialConfig } from "../../database/schema-sqlite.cjs";
|
|
4
|
+
|
|
5
|
+
//#region src/services/credentials/oauth2.service.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* OAuth2 configuration for the Invect application
|
|
8
|
+
*/
|
|
9
|
+
interface OAuth2AppConfig {
|
|
10
|
+
/** Client ID from the OAuth provider */
|
|
11
|
+
clientId: string;
|
|
12
|
+
/** Client secret from the OAuth provider */
|
|
13
|
+
clientSecret: string;
|
|
14
|
+
/** Redirect URI registered with the provider */
|
|
15
|
+
redirectUri: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result of starting an OAuth2 flow
|
|
19
|
+
*/
|
|
20
|
+
interface OAuth2StartResult {
|
|
21
|
+
/** URL to redirect the user to */
|
|
22
|
+
authorizationUrl: string;
|
|
23
|
+
/** State parameter for CSRF protection (store and verify on callback) */
|
|
24
|
+
state: string;
|
|
25
|
+
/** Code verifier for PKCE (store and use during token exchange) */
|
|
26
|
+
codeVerifier?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* OAuth2 tokens received from provider
|
|
30
|
+
*/
|
|
31
|
+
interface OAuth2Tokens {
|
|
32
|
+
accessToken: string;
|
|
33
|
+
refreshToken?: string;
|
|
34
|
+
tokenType: string;
|
|
35
|
+
expiresIn?: number;
|
|
36
|
+
scope?: string;
|
|
37
|
+
/** Additional provider-specific data */
|
|
38
|
+
raw?: Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pending OAuth2 flow state
|
|
42
|
+
* Store this temporarily during the OAuth flow
|
|
43
|
+
*/
|
|
44
|
+
interface OAuth2PendingState {
|
|
45
|
+
state: string;
|
|
46
|
+
providerId: string;
|
|
47
|
+
codeVerifier?: string;
|
|
48
|
+
/** Original URL to redirect back to after OAuth completes */
|
|
49
|
+
returnUrl?: string;
|
|
50
|
+
/** Custom credential name */
|
|
51
|
+
credentialName?: string;
|
|
52
|
+
/** Timestamp when this state was created */
|
|
53
|
+
createdAt: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* OAuth2 Service for handling authorization flows
|
|
57
|
+
*/
|
|
58
|
+
declare class OAuth2Service {
|
|
59
|
+
private readonly logger;
|
|
60
|
+
constructor(logger: Logger);
|
|
61
|
+
/**
|
|
62
|
+
* Get all available OAuth2 providers
|
|
63
|
+
*/
|
|
64
|
+
getProviders(): OAuth2ProviderDefinition[];
|
|
65
|
+
/**
|
|
66
|
+
* Get a specific OAuth2 provider
|
|
67
|
+
*/
|
|
68
|
+
getProvider(providerId: string): OAuth2ProviderDefinition | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Start an OAuth2 authorization flow
|
|
71
|
+
*
|
|
72
|
+
* @param providerId - The OAuth2 provider ID
|
|
73
|
+
* @param appConfig - OAuth app credentials and redirect URI
|
|
74
|
+
* @param options - Additional options
|
|
75
|
+
* @returns Authorization URL and state to redirect user to
|
|
76
|
+
*/
|
|
77
|
+
startAuthorizationFlow(providerId: string, appConfig: OAuth2AppConfig, options?: {
|
|
78
|
+
scopes?: string[];
|
|
79
|
+
returnUrl?: string;
|
|
80
|
+
credentialName?: string;
|
|
81
|
+
}): OAuth2StartResult;
|
|
82
|
+
/**
|
|
83
|
+
* Get pending OAuth2 state
|
|
84
|
+
*/
|
|
85
|
+
getPendingState(state: string): OAuth2PendingState | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Remove pending OAuth2 state (after successful exchange)
|
|
88
|
+
*/
|
|
89
|
+
removePendingState(state: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* Exchange authorization code for tokens
|
|
92
|
+
*
|
|
93
|
+
* @param code - Authorization code from callback
|
|
94
|
+
* @param state - State parameter for verification
|
|
95
|
+
* @param appConfig - OAuth app credentials
|
|
96
|
+
* @returns OAuth2 tokens
|
|
97
|
+
*/
|
|
98
|
+
exchangeCodeForTokens(code: string, state: string, appConfig: OAuth2AppConfig): Promise<{
|
|
99
|
+
tokens: OAuth2Tokens;
|
|
100
|
+
pendingState: OAuth2PendingState;
|
|
101
|
+
}>;
|
|
102
|
+
/**
|
|
103
|
+
* Refresh an expired access token
|
|
104
|
+
*
|
|
105
|
+
* @param refreshToken - The refresh token
|
|
106
|
+
* @param providerId - The OAuth2 provider ID
|
|
107
|
+
* @param appConfig - OAuth app credentials
|
|
108
|
+
* @returns New OAuth2 tokens
|
|
109
|
+
*/
|
|
110
|
+
refreshAccessToken(refreshToken: string, providerId: string, appConfig: OAuth2AppConfig): Promise<OAuth2Tokens>;
|
|
111
|
+
/**
|
|
112
|
+
* Build a CredentialConfig from OAuth2 tokens
|
|
113
|
+
*/
|
|
114
|
+
buildCredentialConfig(tokens: OAuth2Tokens, providerId: string, appConfig: {
|
|
115
|
+
clientId: string;
|
|
116
|
+
clientSecret: string;
|
|
117
|
+
}): CredentialConfig;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a credential's access token is expired or about to expire
|
|
120
|
+
*
|
|
121
|
+
* @param config - The credential config
|
|
122
|
+
* @param bufferSeconds - Buffer time before actual expiry (default 5 minutes)
|
|
123
|
+
*/
|
|
124
|
+
isTokenExpired(config: CredentialConfig, bufferSeconds?: number): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Check if a credential can be refreshed
|
|
127
|
+
*/
|
|
128
|
+
canRefresh(config: CredentialConfig): boolean;
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
export { OAuth2AppConfig, OAuth2PendingState, OAuth2Service, OAuth2StartResult, OAuth2Tokens };
|
|
132
|
+
//# sourceMappingURL=oauth2.service.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.service.d.cts","names":[],"sources":["../../../src/services/credentials/oauth2.service.ts"],"mappings":";;;;;;;;UAqBiB,eAAA;EAYiB;EAVhC,QAAA;EAUgC;EARhC,YAAA;EAYA;EAVA,WAAA;AAAA;;AAkBF;;UAZiB,iBAAA;EAmBH;EAjBZ,gBAAA;EAYA;EAVA,KAAA;EAYA;EAVA,YAAA;AAAA;;;;UAMe,YAAA;EACf,WAAA;EACA,YAAA;EACA,SAAA;EACA,SAAA;EACA,KAAA;EAYA;EAVA,GAAA,GAAM,MAAA;AAAA;;;;AAwCR;UAjCiB,kBAAA;EACf,KAAA;EACA,UAAA;EACA,YAAA;EA2CiC;EAzCjC,SAAA;EA6DG;EA3DH,cAAA;EA+Ia;EA7Ib,SAAA;AAAA;;;;cAwBW,aAAA;EAAA,iBACkB,MAAA;cAAA,MAAA,EAAQ,MAAA;EA2Rd;;;EAtRvB,YAAA,CAAA,GAAgB,wBAAA;EALa;;;EAY7B,WAAA,CAAY,UAAA,WAAqB,wBAAA;EAPjC;;;;;;;;EAmBA,sBAAA,CACE,UAAA,UACA,SAAA,EAAW,eAAA,EACX,OAAA;IACE,MAAA;IACA,SAAA;IACA,cAAA;EAAA,IAED,iBAAA;EAAA;;;EA8DH,eAAA,CAAgB,KAAA,WAAgB,kBAAA;EAOhC;;;EAAA,kBAAA,CAAmB,KAAA;EAcjB;;;;;;;;EAFI,qBAAA,CACJ,IAAA,UACA,KAAA,UACA,SAAA,EAAW,eAAA,GACV,OAAA;IAAU,MAAA,EAAQ,YAAA;IAAc,YAAA,EAAc,kBAAA;EAAA;EA+E/C;;;;;;;;EAHI,kBAAA,CACJ,YAAA,UACA,UAAA,UACA,SAAA,EAAW,eAAA,GACV,OAAA,CAAQ,YAAA;EA4DT;;;EAHF,qBAAA,CACE,MAAA,EAAQ,YAAA,EACR,UAAA,UACA,SAAA;IAAa,QAAA;IAAkB,YAAA;EAAA,IAC9B,gBAAA;EAsCgB;;;;;;EAbnB,cAAA,CAAe,MAAA,EAAQ,gBAAA,EAAkB,aAAA;;;;EAazC,UAAA,CAAW,MAAA,EAAQ,gBAAA;AAAA"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { Logger } from "../../types/schemas-fresh/invect-config.js";
|
|
2
|
+
import { OAuth2ProviderDefinition } from "./oauth2-providers.js";
|
|
3
|
+
import { CredentialConfig } from "../../database/schema-sqlite.js";
|
|
4
|
+
|
|
5
|
+
//#region src/services/credentials/oauth2.service.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* OAuth2 configuration for the Invect application
|
|
8
|
+
*/
|
|
9
|
+
interface OAuth2AppConfig {
|
|
10
|
+
/** Client ID from the OAuth provider */
|
|
11
|
+
clientId: string;
|
|
12
|
+
/** Client secret from the OAuth provider */
|
|
13
|
+
clientSecret: string;
|
|
14
|
+
/** Redirect URI registered with the provider */
|
|
15
|
+
redirectUri: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Result of starting an OAuth2 flow
|
|
19
|
+
*/
|
|
20
|
+
interface OAuth2StartResult {
|
|
21
|
+
/** URL to redirect the user to */
|
|
22
|
+
authorizationUrl: string;
|
|
23
|
+
/** State parameter for CSRF protection (store and verify on callback) */
|
|
24
|
+
state: string;
|
|
25
|
+
/** Code verifier for PKCE (store and use during token exchange) */
|
|
26
|
+
codeVerifier?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* OAuth2 tokens received from provider
|
|
30
|
+
*/
|
|
31
|
+
interface OAuth2Tokens {
|
|
32
|
+
accessToken: string;
|
|
33
|
+
refreshToken?: string;
|
|
34
|
+
tokenType: string;
|
|
35
|
+
expiresIn?: number;
|
|
36
|
+
scope?: string;
|
|
37
|
+
/** Additional provider-specific data */
|
|
38
|
+
raw?: Record<string, unknown>;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Pending OAuth2 flow state
|
|
42
|
+
* Store this temporarily during the OAuth flow
|
|
43
|
+
*/
|
|
44
|
+
interface OAuth2PendingState {
|
|
45
|
+
state: string;
|
|
46
|
+
providerId: string;
|
|
47
|
+
codeVerifier?: string;
|
|
48
|
+
/** Original URL to redirect back to after OAuth completes */
|
|
49
|
+
returnUrl?: string;
|
|
50
|
+
/** Custom credential name */
|
|
51
|
+
credentialName?: string;
|
|
52
|
+
/** Timestamp when this state was created */
|
|
53
|
+
createdAt: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* OAuth2 Service for handling authorization flows
|
|
57
|
+
*/
|
|
58
|
+
declare class OAuth2Service {
|
|
59
|
+
private readonly logger;
|
|
60
|
+
constructor(logger: Logger);
|
|
61
|
+
/**
|
|
62
|
+
* Get all available OAuth2 providers
|
|
63
|
+
*/
|
|
64
|
+
getProviders(): OAuth2ProviderDefinition[];
|
|
65
|
+
/**
|
|
66
|
+
* Get a specific OAuth2 provider
|
|
67
|
+
*/
|
|
68
|
+
getProvider(providerId: string): OAuth2ProviderDefinition | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* Start an OAuth2 authorization flow
|
|
71
|
+
*
|
|
72
|
+
* @param providerId - The OAuth2 provider ID
|
|
73
|
+
* @param appConfig - OAuth app credentials and redirect URI
|
|
74
|
+
* @param options - Additional options
|
|
75
|
+
* @returns Authorization URL and state to redirect user to
|
|
76
|
+
*/
|
|
77
|
+
startAuthorizationFlow(providerId: string, appConfig: OAuth2AppConfig, options?: {
|
|
78
|
+
scopes?: string[];
|
|
79
|
+
returnUrl?: string;
|
|
80
|
+
credentialName?: string;
|
|
81
|
+
}): OAuth2StartResult;
|
|
82
|
+
/**
|
|
83
|
+
* Get pending OAuth2 state
|
|
84
|
+
*/
|
|
85
|
+
getPendingState(state: string): OAuth2PendingState | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Remove pending OAuth2 state (after successful exchange)
|
|
88
|
+
*/
|
|
89
|
+
removePendingState(state: string): void;
|
|
90
|
+
/**
|
|
91
|
+
* Exchange authorization code for tokens
|
|
92
|
+
*
|
|
93
|
+
* @param code - Authorization code from callback
|
|
94
|
+
* @param state - State parameter for verification
|
|
95
|
+
* @param appConfig - OAuth app credentials
|
|
96
|
+
* @returns OAuth2 tokens
|
|
97
|
+
*/
|
|
98
|
+
exchangeCodeForTokens(code: string, state: string, appConfig: OAuth2AppConfig): Promise<{
|
|
99
|
+
tokens: OAuth2Tokens;
|
|
100
|
+
pendingState: OAuth2PendingState;
|
|
101
|
+
}>;
|
|
102
|
+
/**
|
|
103
|
+
* Refresh an expired access token
|
|
104
|
+
*
|
|
105
|
+
* @param refreshToken - The refresh token
|
|
106
|
+
* @param providerId - The OAuth2 provider ID
|
|
107
|
+
* @param appConfig - OAuth app credentials
|
|
108
|
+
* @returns New OAuth2 tokens
|
|
109
|
+
*/
|
|
110
|
+
refreshAccessToken(refreshToken: string, providerId: string, appConfig: OAuth2AppConfig): Promise<OAuth2Tokens>;
|
|
111
|
+
/**
|
|
112
|
+
* Build a CredentialConfig from OAuth2 tokens
|
|
113
|
+
*/
|
|
114
|
+
buildCredentialConfig(tokens: OAuth2Tokens, providerId: string, appConfig: {
|
|
115
|
+
clientId: string;
|
|
116
|
+
clientSecret: string;
|
|
117
|
+
}): CredentialConfig;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a credential's access token is expired or about to expire
|
|
120
|
+
*
|
|
121
|
+
* @param config - The credential config
|
|
122
|
+
* @param bufferSeconds - Buffer time before actual expiry (default 5 minutes)
|
|
123
|
+
*/
|
|
124
|
+
isTokenExpired(config: CredentialConfig, bufferSeconds?: number): boolean;
|
|
125
|
+
/**
|
|
126
|
+
* Check if a credential can be refreshed
|
|
127
|
+
*/
|
|
128
|
+
canRefresh(config: CredentialConfig): boolean;
|
|
129
|
+
}
|
|
130
|
+
//#endregion
|
|
131
|
+
export { OAuth2AppConfig, OAuth2PendingState, OAuth2Service, OAuth2StartResult, OAuth2Tokens };
|
|
132
|
+
//# sourceMappingURL=oauth2.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oauth2.service.d.ts","names":[],"sources":["../../../src/services/credentials/oauth2.service.ts"],"mappings":";;;;;;;;UAqBiB,eAAA;EAYA;EAVf,QAAA;;EAEA,YAAA;EAUA;EARA,WAAA;AAAA;;;AAkBF;UAZiB,iBAAA;;EAEf,gBAAA;EAWA;EATA,KAAA;EAWA;EATA,YAAA;AAAA;;;;UAMe,YAAA;EACf,WAAA;EACA,YAAA;EACA,SAAA;EACA,SAAA;EACA,KAAA;EAWA;EATA,GAAA,GAAM,MAAA;AAAA;;;;;UAOS,kBAAA;EACf,KAAA;EACA,UAAA;EACA,YAAA;EAoCgB;EAlChB,SAAA;EAuDa;EArDb,cAAA;EAyHgC;EAvHhC,SAAA;AAAA;;;;cAwBW,aAAA;EAAA,iBACkB,MAAA;cAAA,MAAA,EAAQ,MAAA;EAkQlC;;;EA7PH,YAAA,CAAA,GAAgB,wBAAA;EAmSmB;;;EA5RnC,WAAA,CAAY,UAAA,WAAqB,wBAAA;EAZJ;;;;;;;;EAwB7B,sBAAA,CACE,UAAA,UACA,SAAA,EAAW,eAAA,EACX,OAAA;IACE,MAAA;IACA,SAAA;IACA,cAAA;EAAA,IAED,iBAAA;EALD;;;EAmEF,eAAA,CAAgB,KAAA,WAAgB,kBAAA;EAAA;;;EAOhC,kBAAA,CAAmB,KAAA;EAajB;;;;;;;;EADI,qBAAA,CACJ,IAAA,UACA,KAAA,UACA,SAAA,EAAW,eAAA,GACV,OAAA;IAAU,MAAA,EAAQ,YAAA;IAAc,YAAA,EAAc,kBAAA;EAAA;EA+EpC;;;;;;;;EAHP,kBAAA,CACJ,YAAA,UACA,UAAA,UACA,SAAA,EAAW,eAAA,GACV,OAAA,CAAQ,YAAA;EA4DsB;;;EAHjC,qBAAA,CACE,MAAA,EAAQ,YAAA,EACR,UAAA,UACA,SAAA;IAAa,QAAA;IAAkB,YAAA;EAAA,IAC9B,gBAAA;EAsCH;;;;;;EAbA,cAAA,CAAe,MAAA,EAAQ,gBAAA,EAAkB,aAAA;;;;EAazC,UAAA,CAAW,MAAA,EAAQ,gBAAA;AAAA"}
|