@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,257 @@
|
|
|
1
|
+
import { DEFAULT_ROLE_PERMISSIONS } from "../../types/auth.types.js";
|
|
2
|
+
import { EventEmitter } from "events";
|
|
3
|
+
//#region src/services/auth/authorization.service.ts
|
|
4
|
+
/**
|
|
5
|
+
* Authorization Service
|
|
6
|
+
*
|
|
7
|
+
* Handles RBAC (Role-Based Access Control) for Invect resources.
|
|
8
|
+
* This service is stateless - all identity information comes from the host app
|
|
9
|
+
* via the resolveUser callback at request time.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* AuthorizationService - Stateless RBAC authorization for Invect
|
|
13
|
+
*
|
|
14
|
+
* Key design decisions:
|
|
15
|
+
* - No database tables for users/roles (BYO Auth pattern)
|
|
16
|
+
* - All identity information resolved at request time
|
|
17
|
+
* - Emits events for host app audit logging
|
|
18
|
+
* - Supports custom roles and permission overrides
|
|
19
|
+
*/
|
|
20
|
+
var AuthorizationService = class extends EventEmitter {
|
|
21
|
+
config;
|
|
22
|
+
rolePermissions;
|
|
23
|
+
logger;
|
|
24
|
+
constructor(options = {}) {
|
|
25
|
+
super();
|
|
26
|
+
this.config = {
|
|
27
|
+
enabled: false,
|
|
28
|
+
defaultRole: "viewer",
|
|
29
|
+
onAuthFailure: "throw",
|
|
30
|
+
...options.config
|
|
31
|
+
};
|
|
32
|
+
this.logger = options.logger;
|
|
33
|
+
this.rolePermissions = /* @__PURE__ */ new Map();
|
|
34
|
+
for (const [role, permissions] of Object.entries(DEFAULT_ROLE_PERMISSIONS)) this.rolePermissions.set(role, permissions);
|
|
35
|
+
if (this.config.customRoles) for (const [role, permissions] of Object.entries(this.config.customRoles)) this.rolePermissions.set(role, permissions);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Check if authentication is enabled.
|
|
39
|
+
*/
|
|
40
|
+
isEnabled() {
|
|
41
|
+
return this.config.enabled ?? true;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if a route is public (no auth required).
|
|
45
|
+
*/
|
|
46
|
+
isPublicRoute(path) {
|
|
47
|
+
if (!this.config.publicRoutes) return false;
|
|
48
|
+
return this.config.publicRoutes.some((pattern) => {
|
|
49
|
+
if (pattern.endsWith("/*")) {
|
|
50
|
+
const prefix = pattern.slice(0, -2);
|
|
51
|
+
return path.startsWith(prefix);
|
|
52
|
+
}
|
|
53
|
+
return path === pattern;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Authorize an action for an identity.
|
|
58
|
+
*
|
|
59
|
+
* @param context - Authorization context with identity, action, and optional resource
|
|
60
|
+
* @returns Authorization result with allowed flag and optional reason
|
|
61
|
+
*/
|
|
62
|
+
async authorize(context) {
|
|
63
|
+
const { identity, action, resource } = context;
|
|
64
|
+
if (!this.isEnabled()) {
|
|
65
|
+
this.logger?.debug("Auth disabled, allowing action", { action });
|
|
66
|
+
return { allowed: true };
|
|
67
|
+
}
|
|
68
|
+
if (!identity) {
|
|
69
|
+
const event = {
|
|
70
|
+
type: "auth:unauthenticated",
|
|
71
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
72
|
+
action,
|
|
73
|
+
resource
|
|
74
|
+
};
|
|
75
|
+
this.emit("auth:unauthenticated", event);
|
|
76
|
+
this.logger?.warn("Unauthenticated request", {
|
|
77
|
+
action,
|
|
78
|
+
resource
|
|
79
|
+
});
|
|
80
|
+
return {
|
|
81
|
+
allowed: false,
|
|
82
|
+
reason: "Authentication required"
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
if (this.hasDirectPermission(identity, action)) return this.allowAction(context, "direct permission");
|
|
86
|
+
const role = this.resolveRole(identity);
|
|
87
|
+
const permissions = this.getPermissionsForRole(role);
|
|
88
|
+
if (this.permissionMatches(permissions, action)) {
|
|
89
|
+
if (resource?.id && identity.resourceAccess) {
|
|
90
|
+
if (!this.checkResourceAccess(identity, resource)) return this.denyAction(context, `No access to ${resource.type} '${resource.id}'`);
|
|
91
|
+
}
|
|
92
|
+
return this.allowAction(context, `role '${role}'`);
|
|
93
|
+
}
|
|
94
|
+
if (this.config.customAuthorize) try {
|
|
95
|
+
const customResult = await this.config.customAuthorize(context);
|
|
96
|
+
if (customResult === true) return this.allowAction(context, "custom authorizer");
|
|
97
|
+
if (customResult === false) return this.denyAction(context, "Denied by custom authorizer");
|
|
98
|
+
} catch (error) {
|
|
99
|
+
this.logger?.error("Custom authorizer error", {
|
|
100
|
+
error,
|
|
101
|
+
context
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return this.denyAction(context, `Permission '${action}' required. Role '${role}' does not have this permission.`);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get all permissions for an identity.
|
|
108
|
+
*/
|
|
109
|
+
getPermissions(identity) {
|
|
110
|
+
if (!identity) return [];
|
|
111
|
+
const role = this.resolveRole(identity);
|
|
112
|
+
const rolePerms = this.getPermissionsForRole(role);
|
|
113
|
+
const directPerms = identity.permissions || [];
|
|
114
|
+
const allPerms = new Set([...rolePerms, ...directPerms]);
|
|
115
|
+
if (allPerms.has("admin:*")) return ["admin:*"];
|
|
116
|
+
return Array.from(allPerms);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if identity has a specific permission.
|
|
120
|
+
*/
|
|
121
|
+
hasPermission(identity, permission) {
|
|
122
|
+
if (!identity) return false;
|
|
123
|
+
const permissions = this.getPermissions(identity);
|
|
124
|
+
return this.permissionMatches(permissions, permission);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get the resolved role for an identity.
|
|
128
|
+
*/
|
|
129
|
+
getResolvedRole(identity) {
|
|
130
|
+
return this.resolveRole(identity);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Get available roles and their permissions.
|
|
134
|
+
* Useful for admin UIs to show role options.
|
|
135
|
+
*/
|
|
136
|
+
getAvailableRoles() {
|
|
137
|
+
const roles = [];
|
|
138
|
+
for (const [role, permissions] of this.rolePermissions) roles.push({
|
|
139
|
+
role,
|
|
140
|
+
permissions
|
|
141
|
+
});
|
|
142
|
+
return roles;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Resolve the effective Invect role for an identity.
|
|
146
|
+
*/
|
|
147
|
+
resolveRole(identity) {
|
|
148
|
+
const identityRole = identity.role;
|
|
149
|
+
if (!identityRole) return this.config.defaultRole ?? "viewer";
|
|
150
|
+
if (this.config.roleMapper && this.config.roleMapper[identityRole]) return this.config.roleMapper[identityRole];
|
|
151
|
+
return identityRole;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get permissions for a role.
|
|
155
|
+
*/
|
|
156
|
+
getPermissionsForRole(role) {
|
|
157
|
+
return this.rolePermissions.get(role) || [];
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Check if identity has the permission via direct override.
|
|
161
|
+
*/
|
|
162
|
+
hasDirectPermission(identity, action) {
|
|
163
|
+
if (!identity.permissions) return false;
|
|
164
|
+
return this.permissionMatches(identity.permissions, action);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check if a permission list includes the required permission.
|
|
168
|
+
* Handles admin:* wildcard.
|
|
169
|
+
*/
|
|
170
|
+
permissionMatches(permissions, required) {
|
|
171
|
+
if (permissions.includes("admin:*")) return true;
|
|
172
|
+
return permissions.includes(required);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Check resource-level access control.
|
|
176
|
+
*/
|
|
177
|
+
checkResourceAccess(identity, resource) {
|
|
178
|
+
if (!identity.resourceAccess || !resource.id) return true;
|
|
179
|
+
const accessKey = this.getResourceAccessKey(resource.type);
|
|
180
|
+
if (!accessKey) return true;
|
|
181
|
+
const accessList = identity.resourceAccess[accessKey];
|
|
182
|
+
if (accessList === void 0) return true;
|
|
183
|
+
if (accessList === "*") return true;
|
|
184
|
+
return accessList.includes(resource.id);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Map resource type to resourceAccess property key.
|
|
188
|
+
*/
|
|
189
|
+
getResourceAccessKey(type) {
|
|
190
|
+
switch (type) {
|
|
191
|
+
case "flow":
|
|
192
|
+
case "flow-version":
|
|
193
|
+
case "flow-run":
|
|
194
|
+
case "node-execution": return "flows";
|
|
195
|
+
case "credential": return "credentials";
|
|
196
|
+
case "agent-tool": return null;
|
|
197
|
+
default: return null;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Allow an action and emit event.
|
|
202
|
+
*/
|
|
203
|
+
allowAction(context, grantedBy) {
|
|
204
|
+
const event = {
|
|
205
|
+
type: "auth:authorized",
|
|
206
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
207
|
+
identity: context.identity,
|
|
208
|
+
action: context.action,
|
|
209
|
+
resource: context.resource,
|
|
210
|
+
allowed: true
|
|
211
|
+
};
|
|
212
|
+
this.emit("auth:authorized", event);
|
|
213
|
+
this.logger?.debug("Action authorized", {
|
|
214
|
+
action: context.action,
|
|
215
|
+
resource: context.resource,
|
|
216
|
+
grantedBy,
|
|
217
|
+
identity: context.identity?.id
|
|
218
|
+
});
|
|
219
|
+
return { allowed: true };
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Deny an action and emit event.
|
|
223
|
+
*/
|
|
224
|
+
denyAction(context, reason) {
|
|
225
|
+
const event = {
|
|
226
|
+
type: "auth:forbidden",
|
|
227
|
+
timestamp: /* @__PURE__ */ new Date(),
|
|
228
|
+
identity: context.identity,
|
|
229
|
+
action: context.action,
|
|
230
|
+
resource: context.resource,
|
|
231
|
+
allowed: false,
|
|
232
|
+
reason
|
|
233
|
+
};
|
|
234
|
+
this.emit("auth:forbidden", event);
|
|
235
|
+
this.logger?.warn("Action denied", {
|
|
236
|
+
action: context.action,
|
|
237
|
+
resource: context.resource,
|
|
238
|
+
reason,
|
|
239
|
+
identity: context.identity?.id,
|
|
240
|
+
role: context.identity?.role
|
|
241
|
+
});
|
|
242
|
+
return {
|
|
243
|
+
allowed: false,
|
|
244
|
+
reason
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
/**
|
|
249
|
+
* Create an AuthorizationService instance.
|
|
250
|
+
*/
|
|
251
|
+
function createAuthorizationService(options) {
|
|
252
|
+
return new AuthorizationService(options);
|
|
253
|
+
}
|
|
254
|
+
//#endregion
|
|
255
|
+
export { AuthorizationService, createAuthorizationService };
|
|
256
|
+
|
|
257
|
+
//# sourceMappingURL=authorization.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authorization.service.js","names":[],"sources":["../../../src/services/auth/authorization.service.ts"],"sourcesContent":["/**\n * Authorization Service\n *\n * Handles RBAC (Role-Based Access Control) for Invect resources.\n * This service is stateless - all identity information comes from the host app\n * via the resolveUser callback at request time.\n */\n\nimport { EventEmitter } from 'events';\nimport {\n InvectIdentity,\n InvectPermission,\n InvectRole,\n InvectResourceType,\n InvectAuthConfig,\n AuthorizationContext,\n AuthorizationResult,\n AuthAuthorizedEvent,\n AuthForbiddenEvent,\n AuthUnauthenticatedEvent,\n DEFAULT_ROLE_PERMISSIONS,\n} from '../../types/auth.types';\nimport type { Logger } from '../../types/schemas-fresh/invect-config';\n\n/**\n * Options for creating the AuthorizationService\n */\nexport interface AuthorizationServiceOptions {\n config?: InvectAuthConfig;\n logger?: Logger;\n}\n\n/**\n * AuthorizationService - Stateless RBAC authorization for Invect\n *\n * Key design decisions:\n * - No database tables for users/roles (BYO Auth pattern)\n * - All identity information resolved at request time\n * - Emits events for host app audit logging\n * - Supports custom roles and permission overrides\n */\nexport class AuthorizationService extends EventEmitter {\n private readonly config: InvectAuthConfig;\n private readonly rolePermissions: Map<string, InvectPermission[]>;\n private readonly logger?: Logger;\n\n constructor(options: AuthorizationServiceOptions = {}) {\n super();\n\n this.config = {\n enabled: false, // RBAC disabled by default\n defaultRole: 'viewer',\n onAuthFailure: 'throw',\n ...options.config,\n };\n\n this.logger = options.logger;\n\n // Initialize role → permissions map with defaults + custom roles\n this.rolePermissions = new Map();\n\n // Add built-in roles\n for (const [role, permissions] of Object.entries(DEFAULT_ROLE_PERMISSIONS)) {\n this.rolePermissions.set(role, permissions);\n }\n\n // Add custom roles from config\n if (this.config.customRoles) {\n for (const [role, permissions] of Object.entries(this.config.customRoles)) {\n this.rolePermissions.set(role, permissions);\n }\n }\n }\n\n /**\n * Check if authentication is enabled.\n */\n isEnabled(): boolean {\n return this.config.enabled ?? true;\n }\n\n /**\n * Check if a route is public (no auth required).\n */\n isPublicRoute(path: string): boolean {\n if (!this.config.publicRoutes) {\n return false;\n }\n\n return this.config.publicRoutes.some((pattern) => {\n // Support simple wildcard matching\n if (pattern.endsWith('/*')) {\n const prefix = pattern.slice(0, -2);\n return path.startsWith(prefix);\n }\n return path === pattern;\n });\n }\n\n /**\n * Authorize an action for an identity.\n *\n * @param context - Authorization context with identity, action, and optional resource\n * @returns Authorization result with allowed flag and optional reason\n */\n async authorize(context: AuthorizationContext): Promise<AuthorizationResult> {\n const { identity, action, resource } = context;\n\n // If auth is disabled, allow everything\n if (!this.isEnabled()) {\n this.logger?.debug('Auth disabled, allowing action', { action });\n return { allowed: true };\n }\n\n // No identity = not authenticated\n if (!identity) {\n const event: AuthUnauthenticatedEvent = {\n type: 'auth:unauthenticated',\n timestamp: new Date(),\n action,\n resource,\n };\n this.emit('auth:unauthenticated', event);\n this.logger?.warn('Unauthenticated request', { action, resource });\n\n return {\n allowed: false,\n reason: 'Authentication required',\n };\n }\n\n // Check direct permission overrides first\n if (this.hasDirectPermission(identity, action)) {\n return this.allowAction(context, 'direct permission');\n }\n\n // Check role-based permissions\n const role = this.resolveRole(identity);\n const permissions = this.getPermissionsForRole(role);\n\n if (this.permissionMatches(permissions, action)) {\n // If we have permission, also check resource-level access\n if (resource?.id && identity.resourceAccess) {\n const resourceAllowed = this.checkResourceAccess(identity, resource);\n if (!resourceAllowed) {\n return this.denyAction(context, `No access to ${resource.type} '${resource.id}'`);\n }\n }\n return this.allowAction(context, `role '${role}'`);\n }\n\n // Check custom authorization callback\n if (this.config.customAuthorize) {\n try {\n const customResult = await this.config.customAuthorize(context);\n if (customResult === true) {\n return this.allowAction(context, 'custom authorizer');\n }\n if (customResult === false) {\n return this.denyAction(context, 'Denied by custom authorizer');\n }\n // undefined = fall through to default denial\n } catch (error) {\n this.logger?.error('Custom authorizer error', { error, context });\n // On error, fall through to denial\n }\n }\n\n // Default: deny\n return this.denyAction(\n context,\n `Permission '${action}' required. Role '${role}' does not have this permission.`,\n );\n }\n\n /**\n * Get all permissions for an identity.\n */\n getPermissions(identity: InvectIdentity | null): InvectPermission[] {\n if (!identity) {\n return [];\n }\n\n const role = this.resolveRole(identity);\n const rolePerms = this.getPermissionsForRole(role);\n const directPerms = identity.permissions || [];\n\n // Combine and deduplicate\n const allPerms = new Set([...rolePerms, ...directPerms]);\n\n // If admin:*, expand to all permissions\n if (allPerms.has('admin:*')) {\n return ['admin:*'];\n }\n\n return Array.from(allPerms);\n }\n\n /**\n * Check if identity has a specific permission.\n */\n hasPermission(identity: InvectIdentity | null, permission: InvectPermission): boolean {\n if (!identity) {\n return false;\n }\n\n const permissions = this.getPermissions(identity);\n return this.permissionMatches(permissions, permission);\n }\n\n /**\n * Get the resolved role for an identity.\n */\n getResolvedRole(identity: InvectIdentity): InvectRole {\n return this.resolveRole(identity);\n }\n\n /**\n * Get available roles and their permissions.\n * Useful for admin UIs to show role options.\n */\n getAvailableRoles(): Array<{ role: string; permissions: InvectPermission[] }> {\n const roles: Array<{ role: string; permissions: InvectPermission[] }> = [];\n\n for (const [role, permissions] of this.rolePermissions) {\n roles.push({ role, permissions });\n }\n\n return roles;\n }\n\n // ===========================================================================\n // Private Methods\n // ===========================================================================\n\n /**\n * Resolve the effective Invect role for an identity.\n */\n private resolveRole(identity: InvectIdentity): string {\n const identityRole = identity.role;\n\n // No role provided - use default\n if (!identityRole) {\n return this.config.defaultRole ?? 'viewer';\n }\n\n // Check if role needs mapping\n if (this.config.roleMapper && this.config.roleMapper[identityRole]) {\n return this.config.roleMapper[identityRole];\n }\n\n return identityRole;\n }\n\n /**\n * Get permissions for a role.\n */\n private getPermissionsForRole(role: string): InvectPermission[] {\n return this.rolePermissions.get(role) || [];\n }\n\n /**\n * Check if identity has the permission via direct override.\n */\n private hasDirectPermission(identity: InvectIdentity, action: InvectPermission): boolean {\n if (!identity.permissions) {\n return false;\n }\n return this.permissionMatches(identity.permissions, action);\n }\n\n /**\n * Check if a permission list includes the required permission.\n * Handles admin:* wildcard.\n */\n private permissionMatches(permissions: InvectPermission[], required: InvectPermission): boolean {\n // Admin wildcard grants everything\n if (permissions.includes('admin:*')) {\n return true;\n }\n return permissions.includes(required);\n }\n\n /**\n * Check resource-level access control.\n */\n private checkResourceAccess(\n identity: InvectIdentity,\n resource: { type: InvectResourceType; id?: string },\n ): boolean {\n if (!identity.resourceAccess || !resource.id) {\n return true; // No restriction\n }\n\n // Map resource type to resourceAccess key\n const accessKey = this.getResourceAccessKey(resource.type);\n if (!accessKey) {\n return true; // Unknown resource type, allow\n }\n\n const accessList = identity.resourceAccess[accessKey];\n\n // No restriction for this resource type\n if (accessList === undefined) {\n return true;\n }\n\n // Wildcard allows all\n if (accessList === '*') {\n return true;\n }\n\n // Check if resource ID is in the list\n return accessList.includes(resource.id);\n }\n\n /**\n * Map resource type to resourceAccess property key.\n */\n private getResourceAccessKey(\n type: InvectResourceType,\n ): keyof NonNullable<InvectIdentity['resourceAccess']> | null {\n switch (type) {\n case 'flow':\n case 'flow-version':\n case 'flow-run':\n case 'node-execution':\n return 'flows';\n case 'credential':\n return 'credentials';\n case 'agent-tool':\n return null; // No resource-level restriction for tools\n default:\n return null;\n }\n }\n\n /**\n * Allow an action and emit event.\n */\n private allowAction(context: AuthorizationContext, grantedBy: string): AuthorizationResult {\n const event: AuthAuthorizedEvent = {\n type: 'auth:authorized',\n timestamp: new Date(),\n identity: context.identity,\n action: context.action,\n resource: context.resource,\n allowed: true,\n };\n\n this.emit('auth:authorized', event);\n this.logger?.debug('Action authorized', {\n action: context.action,\n resource: context.resource,\n grantedBy,\n identity: context.identity?.id,\n });\n\n return { allowed: true };\n }\n\n /**\n * Deny an action and emit event.\n */\n private denyAction(context: AuthorizationContext, reason: string): AuthorizationResult {\n const event: AuthForbiddenEvent = {\n type: 'auth:forbidden',\n timestamp: new Date(),\n identity: context.identity,\n action: context.action,\n resource: context.resource,\n allowed: false,\n reason,\n };\n\n this.emit('auth:forbidden', event);\n this.logger?.warn('Action denied', {\n action: context.action,\n resource: context.resource,\n reason,\n identity: context.identity?.id,\n role: context.identity?.role,\n });\n\n return { allowed: false, reason };\n }\n}\n\n/**\n * Create an AuthorizationService instance.\n */\nexport function createAuthorizationService(\n options?: AuthorizationServiceOptions,\n): AuthorizationService {\n return new AuthorizationService(options);\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,259 @@
|
|
|
1
|
+
//#region src/services/auth/flow-access.service.ts
|
|
2
|
+
const TABLE = "flow_access";
|
|
3
|
+
/**
|
|
4
|
+
* Permission hierarchy for access checks.
|
|
5
|
+
* Higher number = more permissions.
|
|
6
|
+
*/
|
|
7
|
+
const PERMISSION_LEVELS = {
|
|
8
|
+
viewer: 1,
|
|
9
|
+
operator: 2,
|
|
10
|
+
editor: 3,
|
|
11
|
+
owner: 4
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* FlowAccessService - Manages flow access permissions
|
|
15
|
+
*/
|
|
16
|
+
var FlowAccessService = class {
|
|
17
|
+
adapter;
|
|
18
|
+
logger;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
this.adapter = options.adapter;
|
|
21
|
+
this.logger = options.logger;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Grant access to a flow for a user or team.
|
|
25
|
+
*/
|
|
26
|
+
async grantAccess(input) {
|
|
27
|
+
if (!input.userId && !input.teamId) throw new Error("Either userId or teamId must be provided");
|
|
28
|
+
if (input.userId && input.teamId) throw new Error("Cannot set both userId and teamId - use one or the other");
|
|
29
|
+
this.logger?.debug("Granting flow access", { input });
|
|
30
|
+
const existing = await this.findExistingAccess(input.flowId, input.userId, input.teamId);
|
|
31
|
+
if (existing) {
|
|
32
|
+
const updated = await this.adapter.update({
|
|
33
|
+
model: TABLE,
|
|
34
|
+
where: [{
|
|
35
|
+
field: "id",
|
|
36
|
+
value: existing.id
|
|
37
|
+
}],
|
|
38
|
+
update: {
|
|
39
|
+
permission: input.permission,
|
|
40
|
+
granted_by: input.grantedBy,
|
|
41
|
+
granted_at: /* @__PURE__ */ new Date(),
|
|
42
|
+
expires_at: input.expiresAt ?? null
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
if (!updated) throw new Error(`Flow access ${existing.id} no longer exists`);
|
|
46
|
+
const record = this.normalize(updated);
|
|
47
|
+
this.logger?.info("Updated flow access", {
|
|
48
|
+
id: record.id,
|
|
49
|
+
flowId: input.flowId
|
|
50
|
+
});
|
|
51
|
+
return record;
|
|
52
|
+
}
|
|
53
|
+
const created = await this.adapter.create({
|
|
54
|
+
model: TABLE,
|
|
55
|
+
data: {
|
|
56
|
+
flow_id: input.flowId,
|
|
57
|
+
user_id: input.userId ?? null,
|
|
58
|
+
team_id: input.teamId ?? null,
|
|
59
|
+
permission: input.permission,
|
|
60
|
+
granted_by: input.grantedBy ?? null,
|
|
61
|
+
granted_at: /* @__PURE__ */ new Date(),
|
|
62
|
+
expires_at: input.expiresAt ?? null
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
const record = this.normalize(created);
|
|
66
|
+
this.logger?.info("Granted flow access", {
|
|
67
|
+
id: record.id,
|
|
68
|
+
flowId: input.flowId
|
|
69
|
+
});
|
|
70
|
+
return record;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Revoke access to a flow for a user or team.
|
|
74
|
+
*/
|
|
75
|
+
async revokeAccess(accessId) {
|
|
76
|
+
this.logger?.debug("Revoking flow access", { accessId });
|
|
77
|
+
await this.adapter.delete({
|
|
78
|
+
model: TABLE,
|
|
79
|
+
where: [{
|
|
80
|
+
field: "id",
|
|
81
|
+
value: accessId
|
|
82
|
+
}]
|
|
83
|
+
});
|
|
84
|
+
this.logger?.info("Revoked flow access", { accessId });
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Revoke all access to a flow for a specific user or team.
|
|
88
|
+
*/
|
|
89
|
+
async revokeAccessForUserOrTeam(flowId, userId, teamId) {
|
|
90
|
+
if (!userId && !teamId) throw new Error("Either userId or teamId must be provided");
|
|
91
|
+
const where = [{
|
|
92
|
+
field: "flow_id",
|
|
93
|
+
value: flowId
|
|
94
|
+
}];
|
|
95
|
+
if (userId) where.push({
|
|
96
|
+
field: "user_id",
|
|
97
|
+
value: userId
|
|
98
|
+
});
|
|
99
|
+
if (teamId) where.push({
|
|
100
|
+
field: "team_id",
|
|
101
|
+
value: teamId
|
|
102
|
+
});
|
|
103
|
+
await this.adapter.delete({
|
|
104
|
+
model: TABLE,
|
|
105
|
+
where
|
|
106
|
+
});
|
|
107
|
+
this.logger?.info("Revoked flow access for user/team", {
|
|
108
|
+
flowId,
|
|
109
|
+
userId,
|
|
110
|
+
teamId
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* List all access records for a flow.
|
|
115
|
+
*/
|
|
116
|
+
async listFlowAccess(flowId) {
|
|
117
|
+
return (await this.adapter.findMany({
|
|
118
|
+
model: TABLE,
|
|
119
|
+
where: [{
|
|
120
|
+
field: "flow_id",
|
|
121
|
+
value: flowId
|
|
122
|
+
}]
|
|
123
|
+
})).map((r) => this.normalize(r));
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get all flows a user has access to (directly or via teams).
|
|
127
|
+
* Fetches matching records and filters in application code.
|
|
128
|
+
*/
|
|
129
|
+
async getAccessibleFlowIds(userId, teamIds = []) {
|
|
130
|
+
const userRows = await this.adapter.findMany({
|
|
131
|
+
model: TABLE,
|
|
132
|
+
where: [{
|
|
133
|
+
field: "user_id",
|
|
134
|
+
value: userId
|
|
135
|
+
}],
|
|
136
|
+
select: ["flow_id", "expires_at"]
|
|
137
|
+
});
|
|
138
|
+
let teamRows = [];
|
|
139
|
+
if (teamIds.length > 0) teamRows = await this.adapter.findMany({
|
|
140
|
+
model: TABLE,
|
|
141
|
+
where: [{
|
|
142
|
+
field: "team_id",
|
|
143
|
+
operator: "in",
|
|
144
|
+
value: teamIds
|
|
145
|
+
}],
|
|
146
|
+
select: ["flow_id", "expires_at"]
|
|
147
|
+
});
|
|
148
|
+
const now = /* @__PURE__ */ new Date();
|
|
149
|
+
const flowIds = /* @__PURE__ */ new Set();
|
|
150
|
+
for (const row of [...userRows, ...teamRows]) {
|
|
151
|
+
const expiresAt = row.expires_at ?? row.expiresAt;
|
|
152
|
+
if (expiresAt && new Date(expiresAt) <= now) continue;
|
|
153
|
+
flowIds.add(String(row.flow_id ?? row.flowId));
|
|
154
|
+
}
|
|
155
|
+
return [...flowIds];
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Check if a user has access to a flow with at least the required permission.
|
|
159
|
+
*/
|
|
160
|
+
async hasFlowAccess(flowId, userId, teamIds = [], requiredPermission = "viewer") {
|
|
161
|
+
const records = await this.getFlowAccessRecords(flowId, userId, teamIds);
|
|
162
|
+
const requiredLevel = PERMISSION_LEVELS[requiredPermission];
|
|
163
|
+
return records.some((r) => PERMISSION_LEVELS[r.permission] >= requiredLevel);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get the highest permission level a user has for a flow.
|
|
167
|
+
*/
|
|
168
|
+
async getFlowPermission(flowId, userId, teamIds = []) {
|
|
169
|
+
const records = await this.getFlowAccessRecords(flowId, userId, teamIds);
|
|
170
|
+
if (records.length === 0) return null;
|
|
171
|
+
let highest = "viewer";
|
|
172
|
+
for (const record of records) if (PERMISSION_LEVELS[record.permission] > PERMISSION_LEVELS[highest]) highest = record.permission;
|
|
173
|
+
return highest;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Auto-grant owner access when a flow is created.
|
|
177
|
+
*/
|
|
178
|
+
async grantOwnerAccess(flowId, userId) {
|
|
179
|
+
return this.grantAccess({
|
|
180
|
+
flowId,
|
|
181
|
+
userId,
|
|
182
|
+
permission: "owner",
|
|
183
|
+
grantedBy: userId
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get non-expired access records for a user (direct + teams) on a specific flow.
|
|
188
|
+
*/
|
|
189
|
+
async getFlowAccessRecords(flowId, userId, teamIds) {
|
|
190
|
+
const userRows = await this.adapter.findMany({
|
|
191
|
+
model: TABLE,
|
|
192
|
+
where: [{
|
|
193
|
+
field: "flow_id",
|
|
194
|
+
value: flowId
|
|
195
|
+
}, {
|
|
196
|
+
field: "user_id",
|
|
197
|
+
value: userId
|
|
198
|
+
}]
|
|
199
|
+
});
|
|
200
|
+
let teamRows = [];
|
|
201
|
+
if (teamIds.length > 0) teamRows = await this.adapter.findMany({
|
|
202
|
+
model: TABLE,
|
|
203
|
+
where: [{
|
|
204
|
+
field: "flow_id",
|
|
205
|
+
value: flowId
|
|
206
|
+
}, {
|
|
207
|
+
field: "team_id",
|
|
208
|
+
operator: "in",
|
|
209
|
+
value: teamIds
|
|
210
|
+
}]
|
|
211
|
+
});
|
|
212
|
+
const now = /* @__PURE__ */ new Date();
|
|
213
|
+
return [...userRows, ...teamRows].map((r) => this.normalize(r)).filter((r) => {
|
|
214
|
+
if (!r.expiresAt) return true;
|
|
215
|
+
return new Date(r.expiresAt) > now;
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Find existing access record for a user/team on a flow.
|
|
220
|
+
*/
|
|
221
|
+
async findExistingAccess(flowId, userId, teamId) {
|
|
222
|
+
const where = [{
|
|
223
|
+
field: "flow_id",
|
|
224
|
+
value: flowId
|
|
225
|
+
}];
|
|
226
|
+
if (userId) where.push({
|
|
227
|
+
field: "user_id",
|
|
228
|
+
value: userId
|
|
229
|
+
});
|
|
230
|
+
if (teamId) where.push({
|
|
231
|
+
field: "team_id",
|
|
232
|
+
value: teamId
|
|
233
|
+
});
|
|
234
|
+
const row = await this.adapter.findOne({
|
|
235
|
+
model: TABLE,
|
|
236
|
+
where
|
|
237
|
+
});
|
|
238
|
+
return row ? this.normalize(row) : null;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Normalize a raw database row into a FlowAccessRecord.
|
|
242
|
+
*/
|
|
243
|
+
normalize(raw) {
|
|
244
|
+
return {
|
|
245
|
+
id: String(raw.id),
|
|
246
|
+
flowId: String(raw.flow_id ?? raw.flowId),
|
|
247
|
+
userId: raw.user_id ?? raw.userId ?? null,
|
|
248
|
+
teamId: raw.team_id ?? raw.teamId ?? null,
|
|
249
|
+
permission: String(raw.permission),
|
|
250
|
+
grantedBy: raw.granted_by ?? raw.grantedBy ?? null,
|
|
251
|
+
grantedAt: raw.granted_at ?? raw.grantedAt ?? /* @__PURE__ */ new Date(),
|
|
252
|
+
expiresAt: raw.expires_at ?? raw.expiresAt ?? null
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
};
|
|
256
|
+
//#endregion
|
|
257
|
+
exports.FlowAccessService = FlowAccessService;
|
|
258
|
+
|
|
259
|
+
//# sourceMappingURL=flow-access.service.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-access.service.cjs","names":[],"sources":["../../../src/services/auth/flow-access.service.ts"],"sourcesContent":["/**\n * Flow Access Service\n *\n * Manages flow-level access permissions stored in the Invect database.\n * Supports both user-level and team-level access control.\n *\n * Uses the InvectAdapter for database operations (no direct Drizzle usage).\n */\n\nimport type { Logger } from '../../types/schemas-fresh/invect-config';\nimport type { InvectAdapter, WhereClause } from '../../database/adapter';\n\n// Types for the service\nexport type FlowAccessPermission = 'owner' | 'editor' | 'operator' | 'viewer';\n\nexport interface FlowAccessRecord {\n id: string;\n flowId: string;\n userId?: string | null;\n teamId?: string | null;\n permission: FlowAccessPermission;\n grantedBy?: string | null;\n grantedAt: Date | string;\n expiresAt?: Date | string | null;\n}\n\nexport interface GrantFlowAccessInput {\n flowId: string;\n userId?: string;\n teamId?: string;\n permission: FlowAccessPermission;\n grantedBy?: string;\n expiresAt?: Date | string;\n}\n\nexport interface FlowAccessQuery {\n userId?: string;\n teamIds?: string[];\n flowId?: string;\n includeExpired?: boolean;\n}\n\nexport interface FlowAccessServiceOptions {\n adapter: InvectAdapter;\n logger?: Logger;\n}\n\nconst TABLE = 'flow_access';\n\n/**\n * Permission hierarchy for access checks.\n * Higher number = more permissions.\n */\nconst PERMISSION_LEVELS: Record<FlowAccessPermission, number> = {\n viewer: 1,\n operator: 2,\n editor: 3,\n owner: 4,\n};\n\n/**\n * FlowAccessService - Manages flow access permissions\n */\nexport class FlowAccessService {\n private readonly adapter: InvectAdapter;\n private readonly logger?: Logger;\n\n constructor(options: FlowAccessServiceOptions) {\n this.adapter = options.adapter;\n this.logger = options.logger;\n }\n\n /**\n * Grant access to a flow for a user or team.\n */\n async grantAccess(input: GrantFlowAccessInput): Promise<FlowAccessRecord> {\n if (!input.userId && !input.teamId) {\n throw new Error('Either userId or teamId must be provided');\n }\n if (input.userId && input.teamId) {\n throw new Error('Cannot set both userId and teamId - use one or the other');\n }\n\n this.logger?.debug('Granting flow access', { input });\n\n // Check if access already exists\n const existing = await this.findExistingAccess(input.flowId, input.userId, input.teamId);\n\n if (existing) {\n // Update existing access\n const updated = await this.adapter.update<Record<string, unknown>>({\n model: TABLE,\n where: [{ field: 'id', value: existing.id }],\n update: {\n permission: input.permission,\n granted_by: input.grantedBy,\n granted_at: new Date(),\n expires_at: input.expiresAt ?? null,\n },\n });\n\n if (!updated) {\n throw new Error(`Flow access ${existing.id} no longer exists`);\n }\n\n const record = this.normalize(updated);\n this.logger?.info('Updated flow access', { id: record.id, flowId: input.flowId });\n return record;\n }\n\n // Create new access\n const created = await this.adapter.create({\n model: TABLE,\n data: {\n flow_id: input.flowId,\n user_id: input.userId ?? null,\n team_id: input.teamId ?? null,\n permission: input.permission,\n granted_by: input.grantedBy ?? null,\n granted_at: new Date(),\n expires_at: input.expiresAt ?? null,\n },\n });\n\n const record = this.normalize(created);\n this.logger?.info('Granted flow access', { id: record.id, flowId: input.flowId });\n return record;\n }\n\n /**\n * Revoke access to a flow for a user or team.\n */\n async revokeAccess(accessId: string): Promise<void> {\n this.logger?.debug('Revoking flow access', { accessId });\n\n await this.adapter.delete({\n model: TABLE,\n where: [{ field: 'id', value: accessId }],\n });\n\n this.logger?.info('Revoked flow access', { accessId });\n }\n\n /**\n * Revoke all access to a flow for a specific user or team.\n */\n async revokeAccessForUserOrTeam(flowId: string, userId?: string, teamId?: string): Promise<void> {\n if (!userId && !teamId) {\n throw new Error('Either userId or teamId must be provided');\n }\n\n const where: WhereClause[] = [{ field: 'flow_id', value: flowId }];\n if (userId) {\n where.push({ field: 'user_id', value: userId });\n }\n if (teamId) {\n where.push({ field: 'team_id', value: teamId });\n }\n\n await this.adapter.delete({ model: TABLE, where });\n\n this.logger?.info('Revoked flow access for user/team', { flowId, userId, teamId });\n }\n\n /**\n * List all access records for a flow.\n */\n async listFlowAccess(flowId: string): Promise<FlowAccessRecord[]> {\n const rows = await this.adapter.findMany<Record<string, unknown>>({\n model: TABLE,\n where: [{ field: 'flow_id', value: flowId }],\n });\n return rows.map((r) => this.normalize(r));\n }\n\n /**\n * Get all flows a user has access to (directly or via teams).\n * Fetches matching records and filters in application code.\n */\n async getAccessibleFlowIds(userId: string, teamIds: string[] = []): Promise<string[]> {\n // Fetch user-level access\n const userRows = await this.adapter.findMany<Record<string, unknown>>({\n model: TABLE,\n where: [{ field: 'user_id', value: userId }],\n select: ['flow_id', 'expires_at'],\n });\n\n // Fetch team-level access\n let teamRows: Record<string, unknown>[] = [];\n if (teamIds.length > 0) {\n teamRows = await this.adapter.findMany<Record<string, unknown>>({\n model: TABLE,\n where: [{ field: 'team_id', operator: 'in', value: teamIds }],\n select: ['flow_id', 'expires_at'],\n });\n }\n\n const now = new Date();\n const flowIds = new Set<string>();\n\n for (const row of [...userRows, ...teamRows]) {\n const expiresAt = row.expires_at ?? row.expiresAt;\n if (expiresAt && new Date(expiresAt as string) <= now) {\n continue;\n }\n flowIds.add(String(row.flow_id ?? row.flowId));\n }\n\n return [...flowIds];\n }\n\n /**\n * Check if a user has access to a flow with at least the required permission.\n */\n async hasFlowAccess(\n flowId: string,\n userId: string,\n teamIds: string[] = [],\n requiredPermission: FlowAccessPermission = 'viewer',\n ): Promise<boolean> {\n const records = await this.getFlowAccessRecords(flowId, userId, teamIds);\n const requiredLevel = PERMISSION_LEVELS[requiredPermission];\n return records.some((r) => PERMISSION_LEVELS[r.permission] >= requiredLevel);\n }\n\n /**\n * Get the highest permission level a user has for a flow.\n */\n async getFlowPermission(\n flowId: string,\n userId: string,\n teamIds: string[] = [],\n ): Promise<FlowAccessPermission | null> {\n const records = await this.getFlowAccessRecords(flowId, userId, teamIds);\n\n if (records.length === 0) {\n return null;\n }\n\n let highest: FlowAccessPermission = 'viewer';\n for (const record of records) {\n if (PERMISSION_LEVELS[record.permission] > PERMISSION_LEVELS[highest]) {\n highest = record.permission;\n }\n }\n return highest;\n }\n\n /**\n * Auto-grant owner access when a flow is created.\n */\n async grantOwnerAccess(flowId: string, userId: string): Promise<FlowAccessRecord> {\n return this.grantAccess({\n flowId,\n userId,\n permission: 'owner',\n grantedBy: userId,\n });\n }\n\n // ─── Private helpers ─────────────────────────────────────────────\n\n /**\n * Get non-expired access records for a user (direct + teams) on a specific flow.\n */\n private async getFlowAccessRecords(\n flowId: string,\n userId: string,\n teamIds: string[],\n ): Promise<FlowAccessRecord[]> {\n // User-level records for this flow\n const userRows = await this.adapter.findMany<Record<string, unknown>>({\n model: TABLE,\n where: [\n { field: 'flow_id', value: flowId },\n { field: 'user_id', value: userId },\n ],\n });\n\n // Team-level records for this flow\n let teamRows: Record<string, unknown>[] = [];\n if (teamIds.length > 0) {\n teamRows = await this.adapter.findMany<Record<string, unknown>>({\n model: TABLE,\n where: [\n { field: 'flow_id', value: flowId },\n { field: 'team_id', operator: 'in', value: teamIds },\n ],\n });\n }\n\n const now = new Date();\n return [...userRows, ...teamRows]\n .map((r) => this.normalize(r))\n .filter((r) => {\n if (!r.expiresAt) {\n return true;\n }\n return new Date(r.expiresAt as string) > now;\n });\n }\n\n /**\n * Find existing access record for a user/team on a flow.\n */\n private async findExistingAccess(\n flowId: string,\n userId?: string,\n teamId?: string,\n ): Promise<FlowAccessRecord | null> {\n const where: WhereClause[] = [{ field: 'flow_id', value: flowId }];\n if (userId) {\n where.push({ field: 'user_id', value: userId });\n }\n if (teamId) {\n where.push({ field: 'team_id', value: teamId });\n }\n\n const row = await this.adapter.findOne<Record<string, unknown>>({\n model: TABLE,\n where,\n });\n\n return row ? this.normalize(row) : null;\n }\n\n /**\n * Normalize a raw database row into a FlowAccessRecord.\n */\n private normalize(raw: Record<string, unknown>): FlowAccessRecord {\n return {\n id: String(raw.id),\n flowId: String(raw.flow_id ?? raw.flowId),\n userId: (raw.user_id ?? raw.userId ?? null) as string | null,\n teamId: (raw.team_id ?? raw.teamId ?? null) as string | null,\n permission: String(raw.permission) as FlowAccessPermission,\n grantedBy: (raw.granted_by ?? raw.grantedBy ?? null) as string | null,\n grantedAt: (raw.granted_at ?? raw.grantedAt ?? new Date()) as Date | string,\n expiresAt: (raw.expires_at ?? raw.expiresAt ?? null) as Date | string | null,\n };\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { Logger } from "../../types/schemas-fresh/invect-config.cjs";
|
|
2
|
+
import { InvectAdapter } from "../../database/adapter.cjs";
|
|
3
|
+
|
|
4
|
+
//#region src/services/auth/flow-access.service.d.ts
|
|
5
|
+
type FlowAccessPermission = 'owner' | 'editor' | 'operator' | 'viewer';
|
|
6
|
+
interface FlowAccessRecord {
|
|
7
|
+
id: string;
|
|
8
|
+
flowId: string;
|
|
9
|
+
userId?: string | null;
|
|
10
|
+
teamId?: string | null;
|
|
11
|
+
permission: FlowAccessPermission;
|
|
12
|
+
grantedBy?: string | null;
|
|
13
|
+
grantedAt: Date | string;
|
|
14
|
+
expiresAt?: Date | string | null;
|
|
15
|
+
}
|
|
16
|
+
interface GrantFlowAccessInput {
|
|
17
|
+
flowId: string;
|
|
18
|
+
userId?: string;
|
|
19
|
+
teamId?: string;
|
|
20
|
+
permission: FlowAccessPermission;
|
|
21
|
+
grantedBy?: string;
|
|
22
|
+
expiresAt?: Date | string;
|
|
23
|
+
}
|
|
24
|
+
interface FlowAccessQuery {
|
|
25
|
+
userId?: string;
|
|
26
|
+
teamIds?: string[];
|
|
27
|
+
flowId?: string;
|
|
28
|
+
includeExpired?: boolean;
|
|
29
|
+
}
|
|
30
|
+
interface FlowAccessServiceOptions {
|
|
31
|
+
adapter: InvectAdapter;
|
|
32
|
+
logger?: Logger;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* FlowAccessService - Manages flow access permissions
|
|
36
|
+
*/
|
|
37
|
+
declare class FlowAccessService {
|
|
38
|
+
private readonly adapter;
|
|
39
|
+
private readonly logger?;
|
|
40
|
+
constructor(options: FlowAccessServiceOptions);
|
|
41
|
+
/**
|
|
42
|
+
* Grant access to a flow for a user or team.
|
|
43
|
+
*/
|
|
44
|
+
grantAccess(input: GrantFlowAccessInput): Promise<FlowAccessRecord>;
|
|
45
|
+
/**
|
|
46
|
+
* Revoke access to a flow for a user or team.
|
|
47
|
+
*/
|
|
48
|
+
revokeAccess(accessId: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Revoke all access to a flow for a specific user or team.
|
|
51
|
+
*/
|
|
52
|
+
revokeAccessForUserOrTeam(flowId: string, userId?: string, teamId?: string): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* List all access records for a flow.
|
|
55
|
+
*/
|
|
56
|
+
listFlowAccess(flowId: string): Promise<FlowAccessRecord[]>;
|
|
57
|
+
/**
|
|
58
|
+
* Get all flows a user has access to (directly or via teams).
|
|
59
|
+
* Fetches matching records and filters in application code.
|
|
60
|
+
*/
|
|
61
|
+
getAccessibleFlowIds(userId: string, teamIds?: string[]): Promise<string[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Check if a user has access to a flow with at least the required permission.
|
|
64
|
+
*/
|
|
65
|
+
hasFlowAccess(flowId: string, userId: string, teamIds?: string[], requiredPermission?: FlowAccessPermission): Promise<boolean>;
|
|
66
|
+
/**
|
|
67
|
+
* Get the highest permission level a user has for a flow.
|
|
68
|
+
*/
|
|
69
|
+
getFlowPermission(flowId: string, userId: string, teamIds?: string[]): Promise<FlowAccessPermission | null>;
|
|
70
|
+
/**
|
|
71
|
+
* Auto-grant owner access when a flow is created.
|
|
72
|
+
*/
|
|
73
|
+
grantOwnerAccess(flowId: string, userId: string): Promise<FlowAccessRecord>;
|
|
74
|
+
/**
|
|
75
|
+
* Get non-expired access records for a user (direct + teams) on a specific flow.
|
|
76
|
+
*/
|
|
77
|
+
private getFlowAccessRecords;
|
|
78
|
+
/**
|
|
79
|
+
* Find existing access record for a user/team on a flow.
|
|
80
|
+
*/
|
|
81
|
+
private findExistingAccess;
|
|
82
|
+
/**
|
|
83
|
+
* Normalize a raw database row into a FlowAccessRecord.
|
|
84
|
+
*/
|
|
85
|
+
private normalize;
|
|
86
|
+
}
|
|
87
|
+
//#endregion
|
|
88
|
+
export { FlowAccessPermission, FlowAccessQuery, FlowAccessRecord, FlowAccessService, FlowAccessServiceOptions, GrantFlowAccessInput };
|
|
89
|
+
//# sourceMappingURL=flow-access.service.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flow-access.service.d.cts","names":[],"sources":["../../../src/services/auth/flow-access.service.ts"],"mappings":";;;;KAaY,oBAAA;AAAA,UAEK,gBAAA;EACf,EAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;EACA,UAAA,EAAY,oBAAA;EACZ,SAAA;EACA,SAAA,EAAW,IAAA;EACX,SAAA,GAAY,IAAA;AAAA;AAAA,UAGG,oBAAA;EACf,MAAA;EACA,MAAA;EACA,MAAA;EACA,UAAA,EAAY,oBAAA;EACZ,SAAA;EACA,SAAA,GAAY,IAAA;AAAA;AAAA,UAGG,eAAA;EACf,MAAA;EACA,OAAA;EACA,MAAA;EACA,cAAA;AAAA;AAAA,UAGe,wBAAA;EACf,OAAA,EAAS,aAAA;EACT,MAAA,GAAS,MAAA;AAAA;;;;cAmBE,iBAAA;EAAA,iBACM,OAAA;EAAA,iBACA,MAAA;cAEL,OAAA,EAAS,wBAAA;;;;EAQf,WAAA,CAAY,KAAA,EAAO,oBAAA,GAAuB,OAAA,CAAQ,gBAAA;EArCxD;;;EA8FM,YAAA,CAAa,QAAA,WAAmB,OAAA;EA1FvB;;;EAwGT,yBAAA,CAA0B,MAAA,UAAgB,MAAA,WAAiB,MAAA,YAAkB,OAAA;EAvGnF;;;EA4HM,cAAA,CAAe,MAAA,WAAiB,OAAA,CAAQ,gBAAA;EA3H/B;;AAmBjB;;EAoHQ,oBAAA,CAAqB,MAAA,UAAgB,OAAA,cAAyB,OAAA;EAhH/C;;;EAmJf,aAAA,CACJ,MAAA,UACA,MAAA,UACA,OAAA,aACA,kBAAA,GAAoB,oBAAA,GACnB,OAAA;EAvFmC;;;EAgGhC,iBAAA,CACJ,MAAA,UACA,MAAA,UACA,OAAA,cACC,OAAA,CAAQ,oBAAA;EArDyD;;;EAwE9D,gBAAA,CAAiB,MAAA,UAAgB,MAAA,WAAiB,OAAA,CAAQ,gBAAA;EAnB7D;;;EAAA,QAiCW,oBAAA;EAdiD;;;EAAA,QAsDjD,kBAAA;EA9OO;;;EAAA,QAsQb,SAAA;AAAA"}
|