@invect/core 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +103 -0
- package/dist/_virtual/_rolldown/runtime.cjs +33 -0
- package/dist/_virtual/_rolldown/runtime.js +13 -0
- package/dist/actions/action-executor.cjs +166 -0
- package/dist/actions/action-executor.cjs.map +1 -0
- package/dist/actions/action-executor.d.cts +33 -0
- package/dist/actions/action-executor.d.cts.map +1 -0
- package/dist/actions/action-executor.d.ts +33 -0
- package/dist/actions/action-executor.d.ts.map +1 -0
- package/dist/actions/action-executor.js +164 -0
- package/dist/actions/action-executor.js.map +1 -0
- package/dist/actions/action-registry.cjs +236 -0
- package/dist/actions/action-registry.cjs.map +1 -0
- package/dist/actions/action-registry.d.cts +58 -0
- package/dist/actions/action-registry.d.cts.map +1 -0
- package/dist/actions/action-registry.d.ts +58 -0
- package/dist/actions/action-registry.d.ts.map +1 -0
- package/dist/actions/action-registry.js +233 -0
- package/dist/actions/action-registry.js.map +1 -0
- package/dist/actions/core/if-else.cjs +111 -0
- package/dist/actions/core/if-else.cjs.map +1 -0
- package/dist/actions/core/if-else.d.cts +1 -0
- package/dist/actions/core/if-else.d.ts +1 -0
- package/dist/actions/core/if-else.js +98 -0
- package/dist/actions/core/if-else.js.map +1 -0
- package/dist/actions/core/index.cjs +20 -0
- package/dist/actions/core/index.cjs.map +1 -0
- package/dist/actions/core/index.d.cts +7 -0
- package/dist/actions/core/index.d.cts.map +1 -0
- package/dist/actions/core/index.d.ts +7 -0
- package/dist/actions/core/index.d.ts.map +1 -0
- package/dist/actions/core/index.js +20 -0
- package/dist/actions/core/index.js.map +1 -0
- package/dist/actions/core/input.cjs +73 -0
- package/dist/actions/core/input.cjs.map +1 -0
- package/dist/actions/core/input.d.cts +1 -0
- package/dist/actions/core/input.d.ts +1 -0
- package/dist/actions/core/input.js +72 -0
- package/dist/actions/core/input.js.map +1 -0
- package/dist/actions/core/javascript.cjs +77 -0
- package/dist/actions/core/javascript.cjs.map +1 -0
- package/dist/actions/core/javascript.d.cts +1 -0
- package/dist/actions/core/javascript.d.ts +1 -0
- package/dist/actions/core/javascript.js +62 -0
- package/dist/actions/core/javascript.js.map +1 -0
- package/dist/actions/core/model.cjs +285 -0
- package/dist/actions/core/model.cjs.map +1 -0
- package/dist/actions/core/model.d.cts +1 -0
- package/dist/actions/core/model.d.ts +1 -0
- package/dist/actions/core/model.js +276 -0
- package/dist/actions/core/model.js.map +1 -0
- package/dist/actions/core/output.cjs +66 -0
- package/dist/actions/core/output.cjs.map +1 -0
- package/dist/actions/core/output.d.cts +1 -0
- package/dist/actions/core/output.d.ts +1 -0
- package/dist/actions/core/output.js +57 -0
- package/dist/actions/core/output.js.map +1 -0
- package/dist/actions/core/template-string.cjs +85 -0
- package/dist/actions/core/template-string.cjs.map +1 -0
- package/dist/actions/core/template-string.d.cts +1 -0
- package/dist/actions/core/template-string.d.ts +1 -0
- package/dist/actions/core/template-string.js +76 -0
- package/dist/actions/core/template-string.js.map +1 -0
- package/dist/actions/define-action.cjs +14 -0
- package/dist/actions/define-action.cjs.map +1 -0
- package/dist/actions/define-action.d.cts +13 -0
- package/dist/actions/define-action.d.cts.map +1 -0
- package/dist/actions/define-action.d.ts +13 -0
- package/dist/actions/define-action.d.ts.map +1 -0
- package/dist/actions/define-action.js +14 -0
- package/dist/actions/define-action.js.map +1 -0
- package/dist/actions/github/add-issue-comment.cjs +152 -0
- package/dist/actions/github/add-issue-comment.cjs.map +1 -0
- package/dist/actions/github/add-issue-comment.d.cts +1 -0
- package/dist/actions/github/add-issue-comment.d.ts +1 -0
- package/dist/actions/github/add-issue-comment.js +150 -0
- package/dist/actions/github/add-issue-comment.js.map +1 -0
- package/dist/actions/github/create-branch.cjs +201 -0
- package/dist/actions/github/create-branch.cjs.map +1 -0
- package/dist/actions/github/create-branch.d.cts +1 -0
- package/dist/actions/github/create-branch.d.ts +1 -0
- package/dist/actions/github/create-branch.js +199 -0
- package/dist/actions/github/create-branch.js.map +1 -0
- package/dist/actions/github/create-issue.cjs +190 -0
- package/dist/actions/github/create-issue.cjs.map +1 -0
- package/dist/actions/github/create-issue.d.cts +1 -0
- package/dist/actions/github/create-issue.d.ts +1 -0
- package/dist/actions/github/create-issue.js +188 -0
- package/dist/actions/github/create-issue.js.map +1 -0
- package/dist/actions/github/create-or-update-file.cjs +216 -0
- package/dist/actions/github/create-or-update-file.cjs.map +1 -0
- package/dist/actions/github/create-or-update-file.d.cts +1 -0
- package/dist/actions/github/create-or-update-file.d.ts +1 -0
- package/dist/actions/github/create-or-update-file.js +214 -0
- package/dist/actions/github/create-or-update-file.js.map +1 -0
- package/dist/actions/github/create-pull-request.cjs +206 -0
- package/dist/actions/github/create-pull-request.cjs.map +1 -0
- package/dist/actions/github/create-pull-request.d.cts +1 -0
- package/dist/actions/github/create-pull-request.d.ts +1 -0
- package/dist/actions/github/create-pull-request.js +204 -0
- package/dist/actions/github/create-pull-request.js.map +1 -0
- package/dist/actions/github/create-release.cjs +218 -0
- package/dist/actions/github/create-release.cjs.map +1 -0
- package/dist/actions/github/create-release.d.cts +1 -0
- package/dist/actions/github/create-release.d.ts +1 -0
- package/dist/actions/github/create-release.js +216 -0
- package/dist/actions/github/create-release.js.map +1 -0
- package/dist/actions/github/get-file-content.cjs +164 -0
- package/dist/actions/github/get-file-content.cjs.map +1 -0
- package/dist/actions/github/get-file-content.d.cts +1 -0
- package/dist/actions/github/get-file-content.d.ts +1 -0
- package/dist/actions/github/get-file-content.js +162 -0
- package/dist/actions/github/get-file-content.js.map +1 -0
- package/dist/actions/github/get-issue.cjs +149 -0
- package/dist/actions/github/get-issue.cjs.map +1 -0
- package/dist/actions/github/get-issue.d.cts +1 -0
- package/dist/actions/github/get-issue.d.ts +1 -0
- package/dist/actions/github/get-issue.js +147 -0
- package/dist/actions/github/get-issue.js.map +1 -0
- package/dist/actions/github/get-pull-request.cjs +160 -0
- package/dist/actions/github/get-pull-request.cjs.map +1 -0
- package/dist/actions/github/get-pull-request.d.cts +1 -0
- package/dist/actions/github/get-pull-request.d.ts +1 -0
- package/dist/actions/github/get-pull-request.js +158 -0
- package/dist/actions/github/get-pull-request.js.map +1 -0
- package/dist/actions/github/get-repo.cjs +144 -0
- package/dist/actions/github/get-repo.cjs.map +1 -0
- package/dist/actions/github/get-repo.d.cts +1 -0
- package/dist/actions/github/get-repo.d.ts +1 -0
- package/dist/actions/github/get-repo.js +142 -0
- package/dist/actions/github/get-repo.js.map +1 -0
- package/dist/actions/github/index.cjs +48 -0
- package/dist/actions/github/index.cjs.map +1 -0
- package/dist/actions/github/index.d.cts +7 -0
- package/dist/actions/github/index.d.cts.map +1 -0
- package/dist/actions/github/index.d.ts +7 -0
- package/dist/actions/github/index.d.ts.map +1 -0
- package/dist/actions/github/index.js +48 -0
- package/dist/actions/github/index.js.map +1 -0
- package/dist/actions/github/list-branches.cjs +149 -0
- package/dist/actions/github/list-branches.cjs.map +1 -0
- package/dist/actions/github/list-branches.d.cts +1 -0
- package/dist/actions/github/list-branches.d.ts +1 -0
- package/dist/actions/github/list-branches.js +147 -0
- package/dist/actions/github/list-branches.js.map +1 -0
- package/dist/actions/github/list-commits.cjs +200 -0
- package/dist/actions/github/list-commits.cjs.map +1 -0
- package/dist/actions/github/list-commits.d.cts +1 -0
- package/dist/actions/github/list-commits.d.ts +1 -0
- package/dist/actions/github/list-commits.js +198 -0
- package/dist/actions/github/list-commits.js.map +1 -0
- package/dist/actions/github/list-issue-comments.cjs +153 -0
- package/dist/actions/github/list-issue-comments.cjs.map +1 -0
- package/dist/actions/github/list-issue-comments.d.cts +1 -0
- package/dist/actions/github/list-issue-comments.d.ts +1 -0
- package/dist/actions/github/list-issue-comments.js +151 -0
- package/dist/actions/github/list-issue-comments.js.map +1 -0
- package/dist/actions/github/list-issues.cjs +244 -0
- package/dist/actions/github/list-issues.cjs.map +1 -0
- package/dist/actions/github/list-issues.d.cts +1 -0
- package/dist/actions/github/list-issues.d.ts +1 -0
- package/dist/actions/github/list-issues.js +242 -0
- package/dist/actions/github/list-issues.js.map +1 -0
- package/dist/actions/github/list-pull-requests.cjs +252 -0
- package/dist/actions/github/list-pull-requests.cjs.map +1 -0
- package/dist/actions/github/list-pull-requests.d.cts +1 -0
- package/dist/actions/github/list-pull-requests.d.ts +1 -0
- package/dist/actions/github/list-pull-requests.js +250 -0
- package/dist/actions/github/list-pull-requests.js.map +1 -0
- package/dist/actions/github/list-releases.cjs +152 -0
- package/dist/actions/github/list-releases.cjs.map +1 -0
- package/dist/actions/github/list-releases.d.cts +1 -0
- package/dist/actions/github/list-releases.d.ts +1 -0
- package/dist/actions/github/list-releases.js +150 -0
- package/dist/actions/github/list-releases.js.map +1 -0
- package/dist/actions/github/list-repos.cjs +227 -0
- package/dist/actions/github/list-repos.cjs.map +1 -0
- package/dist/actions/github/list-repos.d.cts +1 -0
- package/dist/actions/github/list-repos.d.ts +1 -0
- package/dist/actions/github/list-repos.js +225 -0
- package/dist/actions/github/list-repos.js.map +1 -0
- package/dist/actions/github/merge-pull-request.cjs +204 -0
- package/dist/actions/github/merge-pull-request.cjs.map +1 -0
- package/dist/actions/github/merge-pull-request.d.cts +1 -0
- package/dist/actions/github/merge-pull-request.d.ts +1 -0
- package/dist/actions/github/merge-pull-request.js +202 -0
- package/dist/actions/github/merge-pull-request.js.map +1 -0
- package/dist/actions/github/search-issues.cjs +200 -0
- package/dist/actions/github/search-issues.cjs.map +1 -0
- package/dist/actions/github/search-issues.d.cts +1 -0
- package/dist/actions/github/search-issues.d.ts +1 -0
- package/dist/actions/github/search-issues.js +198 -0
- package/dist/actions/github/search-issues.js.map +1 -0
- package/dist/actions/github/update-issue.cjs +243 -0
- package/dist/actions/github/update-issue.cjs.map +1 -0
- package/dist/actions/github/update-issue.d.cts +1 -0
- package/dist/actions/github/update-issue.d.ts +1 -0
- package/dist/actions/github/update-issue.js +241 -0
- package/dist/actions/github/update-issue.js.map +1 -0
- package/dist/actions/gmail/create-draft.cjs +228 -0
- package/dist/actions/gmail/create-draft.cjs.map +1 -0
- package/dist/actions/gmail/create-draft.d.cts +1 -0
- package/dist/actions/gmail/create-draft.d.ts +1 -0
- package/dist/actions/gmail/create-draft.js +226 -0
- package/dist/actions/gmail/create-draft.js.map +1 -0
- package/dist/actions/gmail/get-message.cjs +205 -0
- package/dist/actions/gmail/get-message.cjs.map +1 -0
- package/dist/actions/gmail/get-message.d.cts +1 -0
- package/dist/actions/gmail/get-message.d.ts +1 -0
- package/dist/actions/gmail/get-message.js +203 -0
- package/dist/actions/gmail/get-message.js.map +1 -0
- package/dist/actions/gmail/index.cjs +18 -0
- package/dist/actions/gmail/index.cjs.map +1 -0
- package/dist/actions/gmail/index.d.cts +7 -0
- package/dist/actions/gmail/index.d.cts.map +1 -0
- package/dist/actions/gmail/index.d.ts +7 -0
- package/dist/actions/gmail/index.d.ts.map +1 -0
- package/dist/actions/gmail/index.js +18 -0
- package/dist/actions/gmail/index.js.map +1 -0
- package/dist/actions/gmail/list-messages.cjs +195 -0
- package/dist/actions/gmail/list-messages.cjs.map +1 -0
- package/dist/actions/gmail/list-messages.d.cts +1 -0
- package/dist/actions/gmail/list-messages.d.ts +1 -0
- package/dist/actions/gmail/list-messages.js +193 -0
- package/dist/actions/gmail/list-messages.js.map +1 -0
- package/dist/actions/gmail/modify-labels.cjs +163 -0
- package/dist/actions/gmail/modify-labels.cjs.map +1 -0
- package/dist/actions/gmail/modify-labels.d.cts +1 -0
- package/dist/actions/gmail/modify-labels.d.ts +1 -0
- package/dist/actions/gmail/modify-labels.js +161 -0
- package/dist/actions/gmail/modify-labels.js.map +1 -0
- package/dist/actions/gmail/send-message.cjs +233 -0
- package/dist/actions/gmail/send-message.cjs.map +1 -0
- package/dist/actions/gmail/send-message.d.cts +1 -0
- package/dist/actions/gmail/send-message.d.ts +1 -0
- package/dist/actions/gmail/send-message.js +231 -0
- package/dist/actions/gmail/send-message.js.map +1 -0
- package/dist/actions/google-calendar/create-event.cjs +274 -0
- package/dist/actions/google-calendar/create-event.cjs.map +1 -0
- package/dist/actions/google-calendar/create-event.d.cts +1 -0
- package/dist/actions/google-calendar/create-event.d.ts +1 -0
- package/dist/actions/google-calendar/create-event.js +272 -0
- package/dist/actions/google-calendar/create-event.js.map +1 -0
- package/dist/actions/google-calendar/delete-event.cjs +145 -0
- package/dist/actions/google-calendar/delete-event.cjs.map +1 -0
- package/dist/actions/google-calendar/delete-event.d.cts +1 -0
- package/dist/actions/google-calendar/delete-event.d.ts +1 -0
- package/dist/actions/google-calendar/delete-event.js +143 -0
- package/dist/actions/google-calendar/delete-event.js.map +1 -0
- package/dist/actions/google-calendar/get-event.cjs +128 -0
- package/dist/actions/google-calendar/get-event.cjs.map +1 -0
- package/dist/actions/google-calendar/get-event.d.cts +1 -0
- package/dist/actions/google-calendar/get-event.d.ts +1 -0
- package/dist/actions/google-calendar/get-event.js +126 -0
- package/dist/actions/google-calendar/get-event.js.map +1 -0
- package/dist/actions/google-calendar/index.cjs +20 -0
- package/dist/actions/google-calendar/index.cjs.map +1 -0
- package/dist/actions/google-calendar/index.d.cts +7 -0
- package/dist/actions/google-calendar/index.d.cts.map +1 -0
- package/dist/actions/google-calendar/index.d.ts +7 -0
- package/dist/actions/google-calendar/index.d.ts.map +1 -0
- package/dist/actions/google-calendar/index.js +20 -0
- package/dist/actions/google-calendar/index.js.map +1 -0
- package/dist/actions/google-calendar/list-events.cjs +193 -0
- package/dist/actions/google-calendar/list-events.cjs.map +1 -0
- package/dist/actions/google-calendar/list-events.d.cts +1 -0
- package/dist/actions/google-calendar/list-events.d.ts +1 -0
- package/dist/actions/google-calendar/list-events.js +191 -0
- package/dist/actions/google-calendar/list-events.js.map +1 -0
- package/dist/actions/google-calendar/query-freebusy.cjs +160 -0
- package/dist/actions/google-calendar/query-freebusy.cjs.map +1 -0
- package/dist/actions/google-calendar/query-freebusy.d.cts +1 -0
- package/dist/actions/google-calendar/query-freebusy.d.ts +1 -0
- package/dist/actions/google-calendar/query-freebusy.js +158 -0
- package/dist/actions/google-calendar/query-freebusy.js.map +1 -0
- package/dist/actions/google-calendar/update-event.cjs +221 -0
- package/dist/actions/google-calendar/update-event.cjs.map +1 -0
- package/dist/actions/google-calendar/update-event.d.cts +1 -0
- package/dist/actions/google-calendar/update-event.d.ts +1 -0
- package/dist/actions/google-calendar/update-event.js +219 -0
- package/dist/actions/google-calendar/update-event.js.map +1 -0
- package/dist/actions/google-docs/append-text.cjs +138 -0
- package/dist/actions/google-docs/append-text.cjs.map +1 -0
- package/dist/actions/google-docs/append-text.d.cts +1 -0
- package/dist/actions/google-docs/append-text.d.ts +1 -0
- package/dist/actions/google-docs/append-text.js +136 -0
- package/dist/actions/google-docs/append-text.js.map +1 -0
- package/dist/actions/google-docs/create-document.cjs +138 -0
- package/dist/actions/google-docs/create-document.cjs.map +1 -0
- package/dist/actions/google-docs/create-document.d.cts +1 -0
- package/dist/actions/google-docs/create-document.d.ts +1 -0
- package/dist/actions/google-docs/create-document.js +136 -0
- package/dist/actions/google-docs/create-document.js.map +1 -0
- package/dist/actions/google-docs/get-document.cjs +118 -0
- package/dist/actions/google-docs/get-document.cjs.map +1 -0
- package/dist/actions/google-docs/get-document.d.cts +1 -0
- package/dist/actions/google-docs/get-document.d.ts +1 -0
- package/dist/actions/google-docs/get-document.js +116 -0
- package/dist/actions/google-docs/get-document.js.map +1 -0
- package/dist/actions/google-docs/index.cjs +18 -0
- package/dist/actions/google-docs/index.cjs.map +1 -0
- package/dist/actions/google-docs/index.d.cts +7 -0
- package/dist/actions/google-docs/index.d.cts.map +1 -0
- package/dist/actions/google-docs/index.d.ts +7 -0
- package/dist/actions/google-docs/index.d.ts.map +1 -0
- package/dist/actions/google-docs/index.js +18 -0
- package/dist/actions/google-docs/index.js.map +1 -0
- package/dist/actions/google-docs/insert-text.cjs +136 -0
- package/dist/actions/google-docs/insert-text.cjs.map +1 -0
- package/dist/actions/google-docs/insert-text.d.cts +1 -0
- package/dist/actions/google-docs/insert-text.d.ts +1 -0
- package/dist/actions/google-docs/insert-text.js +134 -0
- package/dist/actions/google-docs/insert-text.js.map +1 -0
- package/dist/actions/google-docs/replace-text.cjs +152 -0
- package/dist/actions/google-docs/replace-text.cjs.map +1 -0
- package/dist/actions/google-docs/replace-text.d.cts +1 -0
- package/dist/actions/google-docs/replace-text.d.ts +1 -0
- package/dist/actions/google-docs/replace-text.js +150 -0
- package/dist/actions/google-docs/replace-text.js.map +1 -0
- package/dist/actions/google-drive/create-file.cjs +155 -0
- package/dist/actions/google-drive/create-file.cjs.map +1 -0
- package/dist/actions/google-drive/create-file.d.cts +1 -0
- package/dist/actions/google-drive/create-file.d.ts +1 -0
- package/dist/actions/google-drive/create-file.js +153 -0
- package/dist/actions/google-drive/create-file.js.map +1 -0
- package/dist/actions/google-drive/create-folder.cjs +130 -0
- package/dist/actions/google-drive/create-folder.cjs.map +1 -0
- package/dist/actions/google-drive/create-folder.d.cts +1 -0
- package/dist/actions/google-drive/create-folder.d.ts +1 -0
- package/dist/actions/google-drive/create-folder.js +128 -0
- package/dist/actions/google-drive/create-folder.js.map +1 -0
- package/dist/actions/google-drive/delete-file.cjs +98 -0
- package/dist/actions/google-drive/delete-file.cjs.map +1 -0
- package/dist/actions/google-drive/delete-file.d.cts +1 -0
- package/dist/actions/google-drive/delete-file.d.ts +1 -0
- package/dist/actions/google-drive/delete-file.js +96 -0
- package/dist/actions/google-drive/delete-file.js.map +1 -0
- package/dist/actions/google-drive/get-file.cjs +103 -0
- package/dist/actions/google-drive/get-file.cjs.map +1 -0
- package/dist/actions/google-drive/get-file.d.cts +1 -0
- package/dist/actions/google-drive/get-file.d.ts +1 -0
- package/dist/actions/google-drive/get-file.js +101 -0
- package/dist/actions/google-drive/get-file.js.map +1 -0
- package/dist/actions/google-drive/index.cjs +22 -0
- package/dist/actions/google-drive/index.cjs.map +1 -0
- package/dist/actions/google-drive/index.d.cts +7 -0
- package/dist/actions/google-drive/index.d.cts.map +1 -0
- package/dist/actions/google-drive/index.d.ts +7 -0
- package/dist/actions/google-drive/index.d.ts.map +1 -0
- package/dist/actions/google-drive/index.js +22 -0
- package/dist/actions/google-drive/index.js.map +1 -0
- package/dist/actions/google-drive/list-files.cjs +156 -0
- package/dist/actions/google-drive/list-files.cjs.map +1 -0
- package/dist/actions/google-drive/list-files.d.cts +1 -0
- package/dist/actions/google-drive/list-files.d.ts +1 -0
- package/dist/actions/google-drive/list-files.js +154 -0
- package/dist/actions/google-drive/list-files.js.map +1 -0
- package/dist/actions/google-drive/search-files.cjs +138 -0
- package/dist/actions/google-drive/search-files.cjs.map +1 -0
- package/dist/actions/google-drive/search-files.d.cts +1 -0
- package/dist/actions/google-drive/search-files.d.ts +1 -0
- package/dist/actions/google-drive/search-files.js +136 -0
- package/dist/actions/google-drive/search-files.js.map +1 -0
- package/dist/actions/google-drive/share-file.cjs +226 -0
- package/dist/actions/google-drive/share-file.cjs.map +1 -0
- package/dist/actions/google-drive/share-file.d.cts +1 -0
- package/dist/actions/google-drive/share-file.d.ts +1 -0
- package/dist/actions/google-drive/share-file.js +224 -0
- package/dist/actions/google-drive/share-file.js.map +1 -0
- package/dist/actions/google-sheets/append-values.cjs +175 -0
- package/dist/actions/google-sheets/append-values.cjs.map +1 -0
- package/dist/actions/google-sheets/append-values.d.cts +1 -0
- package/dist/actions/google-sheets/append-values.d.ts +1 -0
- package/dist/actions/google-sheets/append-values.js +173 -0
- package/dist/actions/google-sheets/append-values.js.map +1 -0
- package/dist/actions/google-sheets/clear-values.cjs +118 -0
- package/dist/actions/google-sheets/clear-values.cjs.map +1 -0
- package/dist/actions/google-sheets/clear-values.d.cts +1 -0
- package/dist/actions/google-sheets/clear-values.d.ts +1 -0
- package/dist/actions/google-sheets/clear-values.js +116 -0
- package/dist/actions/google-sheets/clear-values.js.map +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.cjs +128 -0
- package/dist/actions/google-sheets/create-spreadsheet.cjs.map +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.d.cts +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.d.ts +1 -0
- package/dist/actions/google-sheets/create-spreadsheet.js +126 -0
- package/dist/actions/google-sheets/create-spreadsheet.js.map +1 -0
- package/dist/actions/google-sheets/get-values.cjs +168 -0
- package/dist/actions/google-sheets/get-values.cjs.map +1 -0
- package/dist/actions/google-sheets/get-values.d.cts +1 -0
- package/dist/actions/google-sheets/get-values.d.ts +1 -0
- package/dist/actions/google-sheets/get-values.js +166 -0
- package/dist/actions/google-sheets/get-values.js.map +1 -0
- package/dist/actions/google-sheets/index.cjs +18 -0
- package/dist/actions/google-sheets/index.cjs.map +1 -0
- package/dist/actions/google-sheets/index.d.cts +7 -0
- package/dist/actions/google-sheets/index.d.cts.map +1 -0
- package/dist/actions/google-sheets/index.d.ts +7 -0
- package/dist/actions/google-sheets/index.d.ts.map +1 -0
- package/dist/actions/google-sheets/index.js +18 -0
- package/dist/actions/google-sheets/index.js.map +1 -0
- package/dist/actions/google-sheets/update-values.cjs +158 -0
- package/dist/actions/google-sheets/update-values.cjs.map +1 -0
- package/dist/actions/google-sheets/update-values.d.cts +1 -0
- package/dist/actions/google-sheets/update-values.d.ts +1 -0
- package/dist/actions/google-sheets/update-values.js +156 -0
- package/dist/actions/google-sheets/update-values.js.map +1 -0
- package/dist/actions/http/index.cjs +7 -0
- package/dist/actions/http/index.cjs.map +1 -0
- package/dist/actions/http/index.d.cts +7 -0
- package/dist/actions/http/index.d.cts.map +1 -0
- package/dist/actions/http/index.d.ts +7 -0
- package/dist/actions/http/index.d.ts.map +1 -0
- package/dist/actions/http/index.js +8 -0
- package/dist/actions/http/index.js.map +1 -0
- package/dist/actions/http/request.cjs +223 -0
- package/dist/actions/http/request.cjs.map +1 -0
- package/dist/actions/http/request.d.cts +1 -0
- package/dist/actions/http/request.d.ts +1 -0
- package/dist/actions/http/request.js +222 -0
- package/dist/actions/http/request.js.map +1 -0
- package/dist/actions/index.cjs +46 -0
- package/dist/actions/index.cjs.map +1 -0
- package/dist/actions/index.d.cts +27 -0
- package/dist/actions/index.d.cts.map +1 -0
- package/dist/actions/index.d.ts +27 -0
- package/dist/actions/index.d.ts.map +1 -0
- package/dist/actions/index.js +45 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/actions/linear/create-issue.cjs +296 -0
- package/dist/actions/linear/create-issue.cjs.map +1 -0
- package/dist/actions/linear/create-issue.d.cts +1 -0
- package/dist/actions/linear/create-issue.d.ts +1 -0
- package/dist/actions/linear/create-issue.js +294 -0
- package/dist/actions/linear/create-issue.js.map +1 -0
- package/dist/actions/linear/index.cjs +16 -0
- package/dist/actions/linear/index.cjs.map +1 -0
- package/dist/actions/linear/index.d.cts +7 -0
- package/dist/actions/linear/index.d.cts.map +1 -0
- package/dist/actions/linear/index.d.ts +7 -0
- package/dist/actions/linear/index.d.ts.map +1 -0
- package/dist/actions/linear/index.js +16 -0
- package/dist/actions/linear/index.js.map +1 -0
- package/dist/actions/linear/list-issues.cjs +239 -0
- package/dist/actions/linear/list-issues.cjs.map +1 -0
- package/dist/actions/linear/list-issues.d.cts +1 -0
- package/dist/actions/linear/list-issues.d.ts +1 -0
- package/dist/actions/linear/list-issues.js +237 -0
- package/dist/actions/linear/list-issues.js.map +1 -0
- package/dist/actions/linear/list-teams.cjs +183 -0
- package/dist/actions/linear/list-teams.cjs.map +1 -0
- package/dist/actions/linear/list-teams.d.cts +1 -0
- package/dist/actions/linear/list-teams.d.ts +1 -0
- package/dist/actions/linear/list-teams.js +181 -0
- package/dist/actions/linear/list-teams.js.map +1 -0
- package/dist/actions/linear/update-issue.cjs +282 -0
- package/dist/actions/linear/update-issue.cjs.map +1 -0
- package/dist/actions/linear/update-issue.d.cts +1 -0
- package/dist/actions/linear/update-issue.d.ts +1 -0
- package/dist/actions/linear/update-issue.js +280 -0
- package/dist/actions/linear/update-issue.js.map +1 -0
- package/dist/actions/microsoft/get-calendar-event.cjs +139 -0
- package/dist/actions/microsoft/get-calendar-event.cjs.map +1 -0
- package/dist/actions/microsoft/get-calendar-event.d.cts +1 -0
- package/dist/actions/microsoft/get-calendar-event.d.ts +1 -0
- package/dist/actions/microsoft/get-calendar-event.js +137 -0
- package/dist/actions/microsoft/get-calendar-event.js.map +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.cjs +221 -0
- package/dist/actions/microsoft/get-meeting-transcript.cjs.map +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.d.cts +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.d.ts +1 -0
- package/dist/actions/microsoft/get-meeting-transcript.js +219 -0
- package/dist/actions/microsoft/get-meeting-transcript.js.map +1 -0
- package/dist/actions/microsoft/get-message.cjs +173 -0
- package/dist/actions/microsoft/get-message.cjs.map +1 -0
- package/dist/actions/microsoft/get-message.d.cts +1 -0
- package/dist/actions/microsoft/get-message.d.ts +1 -0
- package/dist/actions/microsoft/get-message.js +171 -0
- package/dist/actions/microsoft/get-message.js.map +1 -0
- package/dist/actions/microsoft/index.cjs +22 -0
- package/dist/actions/microsoft/index.cjs.map +1 -0
- package/dist/actions/microsoft/index.d.cts +1 -0
- package/dist/actions/microsoft/index.d.ts +1 -0
- package/dist/actions/microsoft/index.js +22 -0
- package/dist/actions/microsoft/index.js.map +1 -0
- package/dist/actions/microsoft/list-calendar-events.cjs +202 -0
- package/dist/actions/microsoft/list-calendar-events.cjs.map +1 -0
- package/dist/actions/microsoft/list-calendar-events.d.cts +1 -0
- package/dist/actions/microsoft/list-calendar-events.d.ts +1 -0
- package/dist/actions/microsoft/list-calendar-events.js +200 -0
- package/dist/actions/microsoft/list-calendar-events.js.map +1 -0
- package/dist/actions/microsoft/list-calendars.cjs +99 -0
- package/dist/actions/microsoft/list-calendars.cjs.map +1 -0
- package/dist/actions/microsoft/list-calendars.d.cts +1 -0
- package/dist/actions/microsoft/list-calendars.d.ts +1 -0
- package/dist/actions/microsoft/list-calendars.js +97 -0
- package/dist/actions/microsoft/list-calendars.js.map +1 -0
- package/dist/actions/microsoft/list-messages.cjs +223 -0
- package/dist/actions/microsoft/list-messages.cjs.map +1 -0
- package/dist/actions/microsoft/list-messages.d.cts +1 -0
- package/dist/actions/microsoft/list-messages.d.ts +1 -0
- package/dist/actions/microsoft/list-messages.js +221 -0
- package/dist/actions/microsoft/list-messages.js.map +1 -0
- package/dist/actions/microsoft/list-online-meetings.cjs +132 -0
- package/dist/actions/microsoft/list-online-meetings.cjs.map +1 -0
- package/dist/actions/microsoft/list-online-meetings.d.cts +1 -0
- package/dist/actions/microsoft/list-online-meetings.d.ts +1 -0
- package/dist/actions/microsoft/list-online-meetings.js +130 -0
- package/dist/actions/microsoft/list-online-meetings.js.map +1 -0
- package/dist/actions/postgres/describe-table.cjs +175 -0
- package/dist/actions/postgres/describe-table.cjs.map +1 -0
- package/dist/actions/postgres/describe-table.d.cts +1 -0
- package/dist/actions/postgres/describe-table.d.ts +1 -0
- package/dist/actions/postgres/describe-table.js +165 -0
- package/dist/actions/postgres/describe-table.js.map +1 -0
- package/dist/actions/postgres/execute-query.cjs +120 -0
- package/dist/actions/postgres/execute-query.cjs.map +1 -0
- package/dist/actions/postgres/execute-query.d.cts +1 -0
- package/dist/actions/postgres/execute-query.d.ts +1 -0
- package/dist/actions/postgres/execute-query.js +110 -0
- package/dist/actions/postgres/execute-query.js.map +1 -0
- package/dist/actions/postgres/index.cjs +16 -0
- package/dist/actions/postgres/index.cjs.map +1 -0
- package/dist/actions/postgres/index.d.cts +7 -0
- package/dist/actions/postgres/index.d.cts.map +1 -0
- package/dist/actions/postgres/index.d.ts +7 -0
- package/dist/actions/postgres/index.d.ts.map +1 -0
- package/dist/actions/postgres/index.js +16 -0
- package/dist/actions/postgres/index.js.map +1 -0
- package/dist/actions/postgres/insert-rows.cjs +168 -0
- package/dist/actions/postgres/insert-rows.cjs.map +1 -0
- package/dist/actions/postgres/insert-rows.d.cts +1 -0
- package/dist/actions/postgres/insert-rows.d.ts +1 -0
- package/dist/actions/postgres/insert-rows.js +158 -0
- package/dist/actions/postgres/insert-rows.js.map +1 -0
- package/dist/actions/postgres/list-tables.cjs +133 -0
- package/dist/actions/postgres/list-tables.cjs.map +1 -0
- package/dist/actions/postgres/list-tables.d.cts +1 -0
- package/dist/actions/postgres/list-tables.d.ts +1 -0
- package/dist/actions/postgres/list-tables.js +123 -0
- package/dist/actions/postgres/list-tables.js.map +1 -0
- package/dist/actions/providers.cjs +128 -0
- package/dist/actions/providers.cjs.map +1 -0
- package/dist/actions/providers.d.cts +22 -0
- package/dist/actions/providers.d.cts.map +1 -0
- package/dist/actions/providers.d.ts +22 -0
- package/dist/actions/providers.d.ts.map +1 -0
- package/dist/actions/providers.js +116 -0
- package/dist/actions/providers.js.map +1 -0
- package/dist/actions/slack/index.cjs +9 -0
- package/dist/actions/slack/index.cjs.map +1 -0
- package/dist/actions/slack/index.d.cts +7 -0
- package/dist/actions/slack/index.d.cts.map +1 -0
- package/dist/actions/slack/index.d.ts +7 -0
- package/dist/actions/slack/index.d.ts.map +1 -0
- package/dist/actions/slack/index.js +9 -0
- package/dist/actions/slack/index.js.map +1 -0
- package/dist/actions/slack/list-channels.cjs +157 -0
- package/dist/actions/slack/list-channels.cjs.map +1 -0
- package/dist/actions/slack/list-channels.d.cts +1 -0
- package/dist/actions/slack/list-channels.d.ts +1 -0
- package/dist/actions/slack/list-channels.js +155 -0
- package/dist/actions/slack/list-channels.js.map +1 -0
- package/dist/actions/slack/send-message.cjs +157 -0
- package/dist/actions/slack/send-message.cjs.map +1 -0
- package/dist/actions/slack/send-message.d.cts +1 -0
- package/dist/actions/slack/send-message.d.ts +1 -0
- package/dist/actions/slack/send-message.js +155 -0
- package/dist/actions/slack/send-message.js.map +1 -0
- package/dist/actions/triggers/cron.cjs +95 -0
- package/dist/actions/triggers/cron.cjs.map +1 -0
- package/dist/actions/triggers/cron.d.cts +1 -0
- package/dist/actions/triggers/cron.d.ts +1 -0
- package/dist/actions/triggers/cron.js +83 -0
- package/dist/actions/triggers/cron.js.map +1 -0
- package/dist/actions/triggers/index.cjs +9 -0
- package/dist/actions/triggers/index.cjs.map +1 -0
- package/dist/actions/triggers/index.d.cts +1 -0
- package/dist/actions/triggers/index.d.ts +1 -0
- package/dist/actions/triggers/index.js +9 -0
- package/dist/actions/triggers/index.js.map +1 -0
- package/dist/actions/triggers/manual.cjs +105 -0
- package/dist/actions/triggers/manual.cjs.map +1 -0
- package/dist/actions/triggers/manual.d.cts +1 -0
- package/dist/actions/triggers/manual.d.ts +1 -0
- package/dist/actions/triggers/manual.js +103 -0
- package/dist/actions/triggers/manual.js.map +1 -0
- package/dist/actions/types.d.cts +373 -0
- package/dist/actions/types.d.cts.map +1 -0
- package/dist/actions/types.d.ts +373 -0
- package/dist/actions/types.d.ts.map +1 -0
- package/dist/database/adapter-factory.cjs +188 -0
- package/dist/database/adapter-factory.cjs.map +1 -0
- package/dist/database/adapter-factory.js +187 -0
- package/dist/database/adapter-factory.js.map +1 -0
- package/dist/database/adapter.cjs +33 -0
- package/dist/database/adapter.cjs.map +1 -0
- package/dist/database/adapter.d.cts +76 -0
- package/dist/database/adapter.d.cts.map +1 -0
- package/dist/database/adapter.d.ts +76 -0
- package/dist/database/adapter.d.ts.map +1 -0
- package/dist/database/adapter.js +33 -0
- package/dist/database/adapter.js.map +1 -0
- package/dist/database/adapters/connection-bridge.cjs +119 -0
- package/dist/database/adapters/connection-bridge.cjs.map +1 -0
- package/dist/database/adapters/connection-bridge.js +118 -0
- package/dist/database/adapters/connection-bridge.js.map +1 -0
- package/dist/database/adapters/kysely-adapter.cjs +138 -0
- package/dist/database/adapters/kysely-adapter.cjs.map +1 -0
- package/dist/database/adapters/kysely-adapter.js +137 -0
- package/dist/database/adapters/kysely-adapter.js.map +1 -0
- package/dist/database/connection.cjs +277 -0
- package/dist/database/connection.cjs.map +1 -0
- package/dist/database/connection.d.cts +115 -0
- package/dist/database/connection.d.cts.map +1 -0
- package/dist/database/connection.d.ts +115 -0
- package/dist/database/connection.d.ts.map +1 -0
- package/dist/database/connection.js +271 -0
- package/dist/database/connection.js.map +1 -0
- package/dist/database/core-schema.cjs +644 -0
- package/dist/database/core-schema.cjs.map +1 -0
- package/dist/database/core-schema.d.cts +22 -0
- package/dist/database/core-schema.d.cts.map +1 -0
- package/dist/database/core-schema.d.ts +22 -0
- package/dist/database/core-schema.d.ts.map +1 -0
- package/dist/database/core-schema.js +642 -0
- package/dist/database/core-schema.js.map +1 -0
- package/dist/database/index.cjs +4 -0
- package/dist/database/index.d.cts +10 -0
- package/dist/database/index.d.cts.map +1 -0
- package/dist/database/index.d.ts +10 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +5 -0
- package/dist/database/prisma-schema-generator.cjs +219 -0
- package/dist/database/prisma-schema-generator.cjs.map +1 -0
- package/dist/database/prisma-schema-generator.d.cts +19 -0
- package/dist/database/prisma-schema-generator.d.cts.map +1 -0
- package/dist/database/prisma-schema-generator.d.ts +19 -0
- package/dist/database/prisma-schema-generator.d.ts.map +1 -0
- package/dist/database/prisma-schema-generator.js +218 -0
- package/dist/database/prisma-schema-generator.js.map +1 -0
- package/dist/database/schema-generator.cjs +576 -0
- package/dist/database/schema-generator.cjs.map +1 -0
- package/dist/database/schema-generator.d.cts +18 -0
- package/dist/database/schema-generator.d.cts.map +1 -0
- package/dist/database/schema-generator.d.ts +18 -0
- package/dist/database/schema-generator.d.ts.map +1 -0
- package/dist/database/schema-generator.js +571 -0
- package/dist/database/schema-generator.js.map +1 -0
- package/dist/database/schema-merger.cjs +153 -0
- package/dist/database/schema-merger.cjs.map +1 -0
- package/dist/database/schema-merger.d.cts +53 -0
- package/dist/database/schema-merger.d.cts.map +1 -0
- package/dist/database/schema-merger.d.ts +53 -0
- package/dist/database/schema-merger.d.ts.map +1 -0
- package/dist/database/schema-merger.js +152 -0
- package/dist/database/schema-merger.js.map +1 -0
- package/dist/database/schema-metadata.cjs +98 -0
- package/dist/database/schema-metadata.cjs.map +1 -0
- package/dist/database/schema-metadata.js +98 -0
- package/dist/database/schema-metadata.js.map +1 -0
- package/dist/database/schema-mysql.cjs +288 -0
- package/dist/database/schema-mysql.cjs.map +1 -0
- package/dist/database/schema-mysql.d.cts +2117 -0
- package/dist/database/schema-mysql.d.cts.map +1 -0
- package/dist/database/schema-mysql.d.ts +2117 -0
- package/dist/database/schema-mysql.d.ts.map +1 -0
- package/dist/database/schema-mysql.js +263 -0
- package/dist/database/schema-mysql.js.map +1 -0
- package/dist/database/schema-postgres.cjs +312 -0
- package/dist/database/schema-postgres.cjs.map +1 -0
- package/dist/database/schema-postgres.d.cts +2127 -0
- package/dist/database/schema-postgres.d.cts.map +1 -0
- package/dist/database/schema-postgres.d.ts +2127 -0
- package/dist/database/schema-postgres.d.ts.map +1 -0
- package/dist/database/schema-postgres.js +280 -0
- package/dist/database/schema-postgres.js.map +1 -0
- package/dist/database/schema-sqlite.cjs +247 -0
- package/dist/database/schema-sqlite.cjs.map +1 -0
- package/dist/database/schema-sqlite.d.cts +2294 -0
- package/dist/database/schema-sqlite.d.cts.map +1 -0
- package/dist/database/schema-sqlite.d.ts +2294 -0
- package/dist/database/schema-sqlite.d.ts.map +1 -0
- package/dist/database/schema-sqlite.js +222 -0
- package/dist/database/schema-sqlite.js.map +1 -0
- package/dist/database/schema-verification.cjs +123 -0
- package/dist/database/schema-verification.cjs.map +1 -0
- package/dist/database/schema-verification.d.cts +40 -0
- package/dist/database/schema-verification.d.cts.map +1 -0
- package/dist/database/schema-verification.d.ts +40 -0
- package/dist/database/schema-verification.d.ts.map +1 -0
- package/dist/database/schema-verification.js +123 -0
- package/dist/database/schema-verification.js.map +1 -0
- package/dist/database/schema.cjs +3 -0
- package/dist/database/schema.d.cts +3 -0
- package/dist/database/schema.d.ts +3 -0
- package/dist/database/schema.js +4 -0
- package/dist/index.cjs +199 -0
- package/dist/index.d.cts +70 -0
- package/dist/index.d.ts +70 -0
- package/dist/index.js +56 -0
- package/dist/invect-core.cjs +1688 -0
- package/dist/invect-core.cjs.map +1 -0
- package/dist/invect-core.d.cts +846 -0
- package/dist/invect-core.d.cts.map +1 -0
- package/dist/invect-core.d.ts +846 -0
- package/dist/invect-core.d.ts.map +1 -0
- package/dist/invect-core.js +1688 -0
- package/dist/invect-core.js.map +1 -0
- package/dist/nodes/agent-executor.cjs +881 -0
- package/dist/nodes/agent-executor.cjs.map +1 -0
- package/dist/nodes/agent-executor.d.cts +243 -0
- package/dist/nodes/agent-executor.d.cts.map +1 -0
- package/dist/nodes/agent-executor.d.ts +243 -0
- package/dist/nodes/agent-executor.d.ts.map +1 -0
- package/dist/nodes/agent-executor.js +877 -0
- package/dist/nodes/agent-executor.js.map +1 -0
- package/dist/nodes/base-node.cjs +174 -0
- package/dist/nodes/base-node.cjs.map +1 -0
- package/dist/nodes/base-node.d.cts +125 -0
- package/dist/nodes/base-node.d.cts.map +1 -0
- package/dist/nodes/base-node.d.ts +125 -0
- package/dist/nodes/base-node.d.ts.map +1 -0
- package/dist/nodes/base-node.js +170 -0
- package/dist/nodes/base-node.js.map +1 -0
- package/dist/nodes/executor-registry.cjs +46 -0
- package/dist/nodes/executor-registry.cjs.map +1 -0
- package/dist/nodes/executor-registry.d.cts +18 -0
- package/dist/nodes/executor-registry.d.cts.map +1 -0
- package/dist/nodes/executor-registry.d.ts +18 -0
- package/dist/nodes/executor-registry.d.ts.map +1 -0
- package/dist/nodes/executor-registry.js +46 -0
- package/dist/nodes/executor-registry.js.map +1 -0
- package/dist/nodes/index.cjs +2 -0
- package/dist/nodes/index.d.cts +3 -0
- package/dist/nodes/index.d.ts +3 -0
- package/dist/nodes/index.js +3 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.cjs +110 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.cjs.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.cts +42 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.cts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.ts +42 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.d.ts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.js +110 -0
- package/dist/services/agent-tool-executions/agent-tool-execution.service.js.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.cjs +152 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.cjs.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.cts +71 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.cts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.ts +71 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.d.ts.map +1 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.js +152 -0
- package/dist/services/agent-tool-executions/agent-tool-executions.model.js.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.cjs +101 -0
- package/dist/services/agent-tools/agent-tool-registry.cjs.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.d.cts +51 -0
- package/dist/services/agent-tools/agent-tool-registry.d.cts.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.d.ts +51 -0
- package/dist/services/agent-tools/agent-tool-registry.d.ts.map +1 -0
- package/dist/services/agent-tools/agent-tool-registry.js +98 -0
- package/dist/services/agent-tools/agent-tool-registry.js.map +1 -0
- package/dist/services/agent-tools/builtin/index.cjs +17 -0
- package/dist/services/agent-tools/builtin/index.cjs.map +1 -0
- package/dist/services/agent-tools/builtin/index.js +17 -0
- package/dist/services/agent-tools/builtin/index.js.map +1 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.cjs +73 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.cjs.map +1 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.js +70 -0
- package/dist/services/agent-tools/builtin/json-logic-tool.js.map +1 -0
- package/dist/services/agent-tools/builtin/math-tool.cjs +117 -0
- package/dist/services/agent-tools/builtin/math-tool.cjs.map +1 -0
- package/dist/services/agent-tools/builtin/math-tool.js +116 -0
- package/dist/services/agent-tools/builtin/math-tool.js.map +1 -0
- package/dist/services/agent-tools/index.cjs +2 -0
- package/dist/services/agent-tools/index.js +3 -0
- package/dist/services/ai/ai-types.cjs +37 -0
- package/dist/services/ai/ai-types.cjs.map +1 -0
- package/dist/services/ai/ai-types.d.cts +105 -0
- package/dist/services/ai/ai-types.d.cts.map +1 -0
- package/dist/services/ai/ai-types.d.ts +105 -0
- package/dist/services/ai/ai-types.d.ts.map +1 -0
- package/dist/services/ai/ai-types.js +35 -0
- package/dist/services/ai/ai-types.js.map +1 -0
- package/dist/services/ai/anthropic-adapter.cjs +411 -0
- package/dist/services/ai/anthropic-adapter.cjs.map +1 -0
- package/dist/services/ai/anthropic-adapter.d.cts +1 -0
- package/dist/services/ai/anthropic-adapter.d.ts +1 -0
- package/dist/services/ai/anthropic-adapter.js +409 -0
- package/dist/services/ai/anthropic-adapter.js.map +1 -0
- package/dist/services/ai/base-client.cjs +345 -0
- package/dist/services/ai/base-client.cjs.map +1 -0
- package/dist/services/ai/base-client.d.cts +138 -0
- package/dist/services/ai/base-client.d.cts.map +1 -0
- package/dist/services/ai/base-client.d.ts +138 -0
- package/dist/services/ai/base-client.d.ts.map +1 -0
- package/dist/services/ai/base-client.js +345 -0
- package/dist/services/ai/base-client.js.map +1 -0
- package/dist/services/ai/openai-adapter.cjs +460 -0
- package/dist/services/ai/openai-adapter.cjs.map +1 -0
- package/dist/services/ai/openai-adapter.d.cts +1 -0
- package/dist/services/ai/openai-adapter.d.ts +1 -0
- package/dist/services/ai/openai-adapter.js +458 -0
- package/dist/services/ai/openai-adapter.js.map +1 -0
- package/dist/services/ai/openrouter-adapter.cjs +124 -0
- package/dist/services/ai/openrouter-adapter.cjs.map +1 -0
- package/dist/services/ai/openrouter-adapter.d.cts +1 -0
- package/dist/services/ai/openrouter-adapter.d.ts +1 -0
- package/dist/services/ai/openrouter-adapter.js +122 -0
- package/dist/services/ai/openrouter-adapter.js.map +1 -0
- package/dist/services/ai/provider-adapter.cjs +72 -0
- package/dist/services/ai/provider-adapter.cjs.map +1 -0
- package/dist/services/ai/provider-adapter.d.cts +81 -0
- package/dist/services/ai/provider-adapter.d.cts.map +1 -0
- package/dist/services/ai/provider-adapter.d.ts +81 -0
- package/dist/services/ai/provider-adapter.d.ts.map +1 -0
- package/dist/services/ai/provider-adapter.js +72 -0
- package/dist/services/ai/provider-adapter.js.map +1 -0
- package/dist/services/auth/authorization.service.cjs +259 -0
- package/dist/services/auth/authorization.service.cjs.map +1 -0
- package/dist/services/auth/authorization.service.d.cts +102 -0
- package/dist/services/auth/authorization.service.d.cts.map +1 -0
- package/dist/services/auth/authorization.service.d.ts +102 -0
- package/dist/services/auth/authorization.service.d.ts.map +1 -0
- package/dist/services/auth/authorization.service.js +257 -0
- package/dist/services/auth/authorization.service.js.map +1 -0
- package/dist/services/auth/flow-access.service.cjs +259 -0
- package/dist/services/auth/flow-access.service.cjs.map +1 -0
- package/dist/services/auth/flow-access.service.d.cts +89 -0
- package/dist/services/auth/flow-access.service.d.cts.map +1 -0
- package/dist/services/auth/flow-access.service.d.ts +89 -0
- package/dist/services/auth/flow-access.service.d.ts.map +1 -0
- package/dist/services/auth/flow-access.service.js +259 -0
- package/dist/services/auth/flow-access.service.js.map +1 -0
- package/dist/services/auth/index.d.ts +2 -0
- package/dist/services/batch-jobs/batch-jobs.model.cjs +213 -0
- package/dist/services/batch-jobs/batch-jobs.model.cjs.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.cts +79 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.cts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.ts +79 -0
- package/dist/services/batch-jobs/batch-jobs.model.d.ts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.model.js +213 -0
- package/dist/services/batch-jobs/batch-jobs.model.js.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.cjs +178 -0
- package/dist/services/batch-jobs/batch-jobs.service.cjs.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.cts +83 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.cts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.ts +83 -0
- package/dist/services/batch-jobs/batch-jobs.service.d.ts.map +1 -0
- package/dist/services/batch-jobs/batch-jobs.service.js +178 -0
- package/dist/services/batch-jobs/batch-jobs.service.js.map +1 -0
- package/dist/services/chat/chat-messages.model.cjs +143 -0
- package/dist/services/chat/chat-messages.model.cjs.map +1 -0
- package/dist/services/chat/chat-messages.model.d.cts +43 -0
- package/dist/services/chat/chat-messages.model.d.cts.map +1 -0
- package/dist/services/chat/chat-messages.model.d.ts +43 -0
- package/dist/services/chat/chat-messages.model.d.ts.map +1 -0
- package/dist/services/chat/chat-messages.model.js +142 -0
- package/dist/services/chat/chat-messages.model.js.map +1 -0
- package/dist/services/chat/chat-stream-session.cjs +181 -0
- package/dist/services/chat/chat-stream-session.cjs.map +1 -0
- package/dist/services/chat/chat-stream-session.d.cts +1 -0
- package/dist/services/chat/chat-stream-session.d.ts +1 -0
- package/dist/services/chat/chat-stream-session.js +181 -0
- package/dist/services/chat/chat-stream-session.js.map +1 -0
- package/dist/services/chat/chat-stream.service.cjs +205 -0
- package/dist/services/chat/chat-stream.service.cjs.map +1 -0
- package/dist/services/chat/chat-stream.service.d.cts +84 -0
- package/dist/services/chat/chat-stream.service.d.cts.map +1 -0
- package/dist/services/chat/chat-stream.service.d.ts +84 -0
- package/dist/services/chat/chat-stream.service.d.ts.map +1 -0
- package/dist/services/chat/chat-stream.service.js +205 -0
- package/dist/services/chat/chat-stream.service.js.map +1 -0
- package/dist/services/chat/chat-toolkit.cjs +125 -0
- package/dist/services/chat/chat-toolkit.cjs.map +1 -0
- package/dist/services/chat/chat-toolkit.d.cts +58 -0
- package/dist/services/chat/chat-toolkit.d.cts.map +1 -0
- package/dist/services/chat/chat-toolkit.d.ts +58 -0
- package/dist/services/chat/chat-toolkit.d.ts.map +1 -0
- package/dist/services/chat/chat-toolkit.js +124 -0
- package/dist/services/chat/chat-toolkit.js.map +1 -0
- package/dist/services/chat/chat-types.cjs +24 -0
- package/dist/services/chat/chat-types.cjs.map +1 -0
- package/dist/services/chat/chat-types.d.cts +134 -0
- package/dist/services/chat/chat-types.d.cts.map +1 -0
- package/dist/services/chat/chat-types.d.ts +134 -0
- package/dist/services/chat/chat-types.d.ts.map +1 -0
- package/dist/services/chat/chat-types.js +23 -0
- package/dist/services/chat/chat-types.js.map +1 -0
- package/dist/services/chat/index.cjs +5 -0
- package/dist/services/chat/index.d.cts +3 -0
- package/dist/services/chat/index.d.ts +3 -0
- package/dist/services/chat/index.js +6 -0
- package/dist/services/chat/system-prompt.cjs +223 -0
- package/dist/services/chat/system-prompt.cjs.map +1 -0
- package/dist/services/chat/system-prompt.d.cts +1 -0
- package/dist/services/chat/system-prompt.d.ts +1 -0
- package/dist/services/chat/system-prompt.js +223 -0
- package/dist/services/chat/system-prompt.js.map +1 -0
- package/dist/services/chat/tools/agent-tools.cjs +472 -0
- package/dist/services/chat/tools/agent-tools.cjs.map +1 -0
- package/dist/services/chat/tools/agent-tools.js +471 -0
- package/dist/services/chat/tools/agent-tools.js.map +1 -0
- package/dist/services/chat/tools/context-tools.cjs +252 -0
- package/dist/services/chat/tools/context-tools.cjs.map +1 -0
- package/dist/services/chat/tools/context-tools.js +251 -0
- package/dist/services/chat/tools/context-tools.js.map +1 -0
- package/dist/services/chat/tools/flow-tools.cjs +244 -0
- package/dist/services/chat/tools/flow-tools.cjs.map +1 -0
- package/dist/services/chat/tools/flow-tools.js +243 -0
- package/dist/services/chat/tools/flow-tools.js.map +1 -0
- package/dist/services/chat/tools/index.cjs +22 -0
- package/dist/services/chat/tools/index.cjs.map +1 -0
- package/dist/services/chat/tools/index.js +22 -0
- package/dist/services/chat/tools/index.js.map +1 -0
- package/dist/services/chat/tools/node-tools.cjs +323 -0
- package/dist/services/chat/tools/node-tools.cjs.map +1 -0
- package/dist/services/chat/tools/node-tools.js +322 -0
- package/dist/services/chat/tools/node-tools.js.map +1 -0
- package/dist/services/chat/tools/plan-tools.cjs +94 -0
- package/dist/services/chat/tools/plan-tools.cjs.map +1 -0
- package/dist/services/chat/tools/plan-tools.js +93 -0
- package/dist/services/chat/tools/plan-tools.js.map +1 -0
- package/dist/services/chat/tools/run-tools.cjs +121 -0
- package/dist/services/chat/tools/run-tools.cjs.map +1 -0
- package/dist/services/chat/tools/run-tools.js +120 -0
- package/dist/services/chat/tools/run-tools.js.map +1 -0
- package/dist/services/credentials/credentials.model.cjs +313 -0
- package/dist/services/credentials/credentials.model.cjs.map +1 -0
- package/dist/services/credentials/credentials.model.d.cts +27 -0
- package/dist/services/credentials/credentials.model.d.cts.map +1 -0
- package/dist/services/credentials/credentials.model.d.ts +27 -0
- package/dist/services/credentials/credentials.model.d.ts.map +1 -0
- package/dist/services/credentials/credentials.model.js +312 -0
- package/dist/services/credentials/credentials.model.js.map +1 -0
- package/dist/services/credentials/credentials.service.cjs +358 -0
- package/dist/services/credentials/credentials.service.cjs.map +1 -0
- package/dist/services/credentials/credentials.service.d.cts +156 -0
- package/dist/services/credentials/credentials.service.d.cts.map +1 -0
- package/dist/services/credentials/credentials.service.d.ts +156 -0
- package/dist/services/credentials/credentials.service.d.ts.map +1 -0
- package/dist/services/credentials/credentials.service.js +357 -0
- package/dist/services/credentials/credentials.service.js.map +1 -0
- package/dist/services/credentials/encryption.service.cjs +121 -0
- package/dist/services/credentials/encryption.service.cjs.map +1 -0
- package/dist/services/credentials/encryption.service.d.cts +70 -0
- package/dist/services/credentials/encryption.service.d.cts.map +1 -0
- package/dist/services/credentials/encryption.service.d.ts +70 -0
- package/dist/services/credentials/encryption.service.d.ts.map +1 -0
- package/dist/services/credentials/encryption.service.js +119 -0
- package/dist/services/credentials/encryption.service.js.map +1 -0
- package/dist/services/credentials/index.d.cts +4 -0
- package/dist/services/credentials/index.d.ts +4 -0
- package/dist/services/credentials/oauth2-providers.cjs +668 -0
- package/dist/services/credentials/oauth2-providers.cjs.map +1 -0
- package/dist/services/credentials/oauth2-providers.d.cts +39 -0
- package/dist/services/credentials/oauth2-providers.d.cts.map +1 -0
- package/dist/services/credentials/oauth2-providers.d.ts +39 -0
- package/dist/services/credentials/oauth2-providers.d.ts.map +1 -0
- package/dist/services/credentials/oauth2-providers.js +667 -0
- package/dist/services/credentials/oauth2-providers.js.map +1 -0
- package/dist/services/credentials/oauth2.service.cjs +252 -0
- package/dist/services/credentials/oauth2.service.cjs.map +1 -0
- package/dist/services/credentials/oauth2.service.d.cts +132 -0
- package/dist/services/credentials/oauth2.service.d.cts.map +1 -0
- package/dist/services/credentials/oauth2.service.d.ts +132 -0
- package/dist/services/credentials/oauth2.service.d.ts.map +1 -0
- package/dist/services/credentials/oauth2.service.js +251 -0
- package/dist/services/credentials/oauth2.service.js.map +1 -0
- package/dist/services/database/database.service.cjs +469 -0
- package/dist/services/database/database.service.cjs.map +1 -0
- package/dist/services/database/database.service.d.cts +162 -0
- package/dist/services/database/database.service.d.cts.map +1 -0
- package/dist/services/database/database.service.d.ts +162 -0
- package/dist/services/database/database.service.d.ts.map +1 -0
- package/dist/services/database/database.service.js +469 -0
- package/dist/services/database/database.service.js.map +1 -0
- package/dist/services/execution-event-bus.cjs +80 -0
- package/dist/services/execution-event-bus.cjs.map +1 -0
- package/dist/services/execution-event-bus.d.cts +57 -0
- package/dist/services/execution-event-bus.d.cts.map +1 -0
- package/dist/services/execution-event-bus.d.ts +57 -0
- package/dist/services/execution-event-bus.d.ts.map +1 -0
- package/dist/services/execution-event-bus.js +77 -0
- package/dist/services/execution-event-bus.js.map +1 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.cjs +499 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.cjs.map +1 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.js +499 -0
- package/dist/services/flow-orchestration/flow-run-coordinator.js.map +1 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.cjs +657 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.cjs.map +1 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.js +657 -0
- package/dist/services/flow-orchestration/node-execution-coordinator.js.map +1 -0
- package/dist/services/flow-orchestration.service.cjs +493 -0
- package/dist/services/flow-orchestration.service.cjs.map +1 -0
- package/dist/services/flow-orchestration.service.d.cts +149 -0
- package/dist/services/flow-orchestration.service.d.cts.map +1 -0
- package/dist/services/flow-orchestration.service.d.ts +149 -0
- package/dist/services/flow-orchestration.service.d.ts.map +1 -0
- package/dist/services/flow-orchestration.service.js +493 -0
- package/dist/services/flow-orchestration.service.js.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.cjs +403 -0
- package/dist/services/flow-runs/flow-runs.model.cjs.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.d.cts +113 -0
- package/dist/services/flow-runs/flow-runs.model.d.cts.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.d.ts +113 -0
- package/dist/services/flow-runs/flow-runs.model.d.ts.map +1 -0
- package/dist/services/flow-runs/flow-runs.model.js +403 -0
- package/dist/services/flow-runs/flow-runs.model.js.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.cjs +273 -0
- package/dist/services/flow-runs/flow-runs.service.cjs.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.d.cts +129 -0
- package/dist/services/flow-runs/flow-runs.service.d.cts.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.d.ts +129 -0
- package/dist/services/flow-runs/flow-runs.service.d.ts.map +1 -0
- package/dist/services/flow-runs/flow-runs.service.js +273 -0
- package/dist/services/flow-runs/flow-runs.service.js.map +1 -0
- package/dist/services/flow-validator.cjs +149 -0
- package/dist/services/flow-validator.cjs.map +1 -0
- package/dist/services/flow-validator.js +149 -0
- package/dist/services/flow-validator.js.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.cjs +231 -0
- package/dist/services/flow-versions/flow-versions.model.cjs.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.d.cts +55 -0
- package/dist/services/flow-versions/flow-versions.model.d.cts.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.d.ts +55 -0
- package/dist/services/flow-versions/flow-versions.model.d.ts.map +1 -0
- package/dist/services/flow-versions/flow-versions.model.js +231 -0
- package/dist/services/flow-versions/flow-versions.model.js.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.cjs +72 -0
- package/dist/services/flow-versions/flow-versions.service.cjs.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.d.cts +63 -0
- package/dist/services/flow-versions/flow-versions.service.d.cts.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.d.ts +63 -0
- package/dist/services/flow-versions/flow-versions.service.d.ts.map +1 -0
- package/dist/services/flow-versions/flow-versions.service.js +72 -0
- package/dist/services/flow-versions/flow-versions.service.js.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.cjs +90 -0
- package/dist/services/flow-versions/schemas-fresh.cjs.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.d.cts +201 -0
- package/dist/services/flow-versions/schemas-fresh.d.cts.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.d.ts +201 -0
- package/dist/services/flow-versions/schemas-fresh.d.ts.map +1 -0
- package/dist/services/flow-versions/schemas-fresh.js +85 -0
- package/dist/services/flow-versions/schemas-fresh.js.map +1 -0
- package/dist/services/flows/flows.model.cjs +273 -0
- package/dist/services/flows/flows.model.cjs.map +1 -0
- package/dist/services/flows/flows.model.d.cts +105 -0
- package/dist/services/flows/flows.model.d.cts.map +1 -0
- package/dist/services/flows/flows.model.d.ts +105 -0
- package/dist/services/flows/flows.model.d.ts.map +1 -0
- package/dist/services/flows/flows.model.js +273 -0
- package/dist/services/flows/flows.model.js.map +1 -0
- package/dist/services/flows/flows.service.cjs +134 -0
- package/dist/services/flows/flows.service.cjs.map +1 -0
- package/dist/services/flows/flows.service.d.cts +105 -0
- package/dist/services/flows/flows.service.d.cts.map +1 -0
- package/dist/services/flows/flows.service.d.ts +105 -0
- package/dist/services/flows/flows.service.d.ts.map +1 -0
- package/dist/services/flows/flows.service.js +134 -0
- package/dist/services/flows/flows.service.js.map +1 -0
- package/dist/services/graph.service.cjs +375 -0
- package/dist/services/graph.service.cjs.map +1 -0
- package/dist/services/graph.service.d.cts +90 -0
- package/dist/services/graph.service.d.cts.map +1 -0
- package/dist/services/graph.service.d.ts +90 -0
- package/dist/services/graph.service.d.ts.map +1 -0
- package/dist/services/graph.service.js +375 -0
- package/dist/services/graph.service.js.map +1 -0
- package/dist/services/node-data.service.cjs +232 -0
- package/dist/services/node-data.service.cjs.map +1 -0
- package/dist/services/node-data.service.d.cts +119 -0
- package/dist/services/node-data.service.d.cts.map +1 -0
- package/dist/services/node-data.service.d.ts +119 -0
- package/dist/services/node-data.service.d.ts.map +1 -0
- package/dist/services/node-data.service.js +230 -0
- package/dist/services/node-data.service.js.map +1 -0
- package/dist/services/node-executions/node-execution.service.cjs +236 -0
- package/dist/services/node-executions/node-execution.service.cjs.map +1 -0
- package/dist/services/node-executions/node-execution.service.d.cts +126 -0
- package/dist/services/node-executions/node-execution.service.d.cts.map +1 -0
- package/dist/services/node-executions/node-execution.service.d.ts +126 -0
- package/dist/services/node-executions/node-execution.service.d.ts.map +1 -0
- package/dist/services/node-executions/node-execution.service.js +236 -0
- package/dist/services/node-executions/node-execution.service.js.map +1 -0
- package/dist/services/node-executions/node-executions.model.cjs +300 -0
- package/dist/services/node-executions/node-executions.model.cjs.map +1 -0
- package/dist/services/node-executions/node-executions.model.d.cts +102 -0
- package/dist/services/node-executions/node-executions.model.d.cts.map +1 -0
- package/dist/services/node-executions/node-executions.model.d.ts +102 -0
- package/dist/services/node-executions/node-executions.model.d.ts.map +1 -0
- package/dist/services/node-executions/node-executions.model.js +300 -0
- package/dist/services/node-executions/node-executions.model.js.map +1 -0
- package/dist/services/plugin-manager.cjs +205 -0
- package/dist/services/plugin-manager.cjs.map +1 -0
- package/dist/services/plugin-manager.js +205 -0
- package/dist/services/plugin-manager.js.map +1 -0
- package/dist/services/react-flow-renderer.service.cjs +236 -0
- package/dist/services/react-flow-renderer.service.cjs.map +1 -0
- package/dist/services/react-flow-renderer.service.d.cts +149 -0
- package/dist/services/react-flow-renderer.service.d.cts.map +1 -0
- package/dist/services/react-flow-renderer.service.d.ts +149 -0
- package/dist/services/react-flow-renderer.service.d.ts.map +1 -0
- package/dist/services/react-flow-renderer.service.js +235 -0
- package/dist/services/react-flow-renderer.service.js.map +1 -0
- package/dist/services/service-factory.cjs +301 -0
- package/dist/services/service-factory.cjs.map +1 -0
- package/dist/services/service-factory.d.cts +172 -0
- package/dist/services/service-factory.d.cts.map +1 -0
- package/dist/services/service-factory.d.ts +172 -0
- package/dist/services/service-factory.d.ts.map +1 -0
- package/dist/services/service-factory.js +301 -0
- package/dist/services/service-factory.js.map +1 -0
- package/dist/services/templating/index.cjs +2 -0
- package/dist/services/templating/index.d.ts +2 -0
- package/dist/services/templating/index.js +3 -0
- package/dist/services/templating/js-expression.service.cjs +148 -0
- package/dist/services/templating/js-expression.service.cjs.map +1 -0
- package/dist/services/templating/js-expression.service.d.cts +61 -0
- package/dist/services/templating/js-expression.service.d.cts.map +1 -0
- package/dist/services/templating/js-expression.service.d.ts +60 -0
- package/dist/services/templating/js-expression.service.d.ts.map +1 -0
- package/dist/services/templating/js-expression.service.js +143 -0
- package/dist/services/templating/js-expression.service.js.map +1 -0
- package/dist/services/templating/template.service.cjs +182 -0
- package/dist/services/templating/template.service.cjs.map +1 -0
- package/dist/services/templating/template.service.d.cts +62 -0
- package/dist/services/templating/template.service.d.cts.map +1 -0
- package/dist/services/templating/template.service.d.ts +62 -0
- package/dist/services/templating/template.service.d.ts.map +1 -0
- package/dist/services/templating/template.service.js +180 -0
- package/dist/services/templating/template.service.js.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.cjs +141 -0
- package/dist/services/triggers/cron-scheduler.service.cjs.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.d.cts +36 -0
- package/dist/services/triggers/cron-scheduler.service.d.cts.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.d.ts +36 -0
- package/dist/services/triggers/cron-scheduler.service.d.ts.map +1 -0
- package/dist/services/triggers/cron-scheduler.service.js +140 -0
- package/dist/services/triggers/cron-scheduler.service.js.map +1 -0
- package/dist/services/triggers/flow-triggers.model.cjs +241 -0
- package/dist/services/triggers/flow-triggers.model.cjs.map +1 -0
- package/dist/services/triggers/flow-triggers.model.d.cts +53 -0
- package/dist/services/triggers/flow-triggers.model.d.cts.map +1 -0
- package/dist/services/triggers/flow-triggers.model.d.ts +53 -0
- package/dist/services/triggers/flow-triggers.model.d.ts.map +1 -0
- package/dist/services/triggers/flow-triggers.model.js +241 -0
- package/dist/services/triggers/flow-triggers.model.js.map +1 -0
- package/dist/services/triggers/flow-triggers.service.cjs +218 -0
- package/dist/services/triggers/flow-triggers.service.cjs.map +1 -0
- package/dist/services/triggers/flow-triggers.service.d.cts +77 -0
- package/dist/services/triggers/flow-triggers.service.d.cts.map +1 -0
- package/dist/services/triggers/flow-triggers.service.d.ts +77 -0
- package/dist/services/triggers/flow-triggers.service.d.ts.map +1 -0
- package/dist/services/triggers/flow-triggers.service.js +217 -0
- package/dist/services/triggers/flow-triggers.service.js.map +1 -0
- package/dist/services/triggers/index.cjs +3 -0
- package/dist/services/triggers/index.d.cts +4 -0
- package/dist/services/triggers/index.d.ts +4 -0
- package/dist/services/triggers/index.js +4 -0
- package/dist/services/triggers/trigger.types.d.cts +63 -0
- package/dist/services/triggers/trigger.types.d.cts.map +1 -0
- package/dist/services/triggers/trigger.types.d.ts +63 -0
- package/dist/services/triggers/trigger.types.d.ts.map +1 -0
- package/dist/types/agent-tool.types.cjs +20 -0
- package/dist/types/agent-tool.types.cjs.map +1 -0
- package/dist/types/agent-tool.types.d.cts +211 -0
- package/dist/types/agent-tool.types.d.cts.map +1 -0
- package/dist/types/agent-tool.types.d.ts +211 -0
- package/dist/types/agent-tool.types.d.ts.map +1 -0
- package/dist/types/agent-tool.types.js +18 -0
- package/dist/types/agent-tool.types.js.map +1 -0
- package/dist/types/auth.types.cjs +76 -0
- package/dist/types/auth.types.cjs.map +1 -0
- package/dist/types/auth.types.d.cts +235 -0
- package/dist/types/auth.types.d.cts.map +1 -0
- package/dist/types/auth.types.d.ts +235 -0
- package/dist/types/auth.types.d.ts.map +1 -0
- package/dist/types/auth.types.js +75 -0
- package/dist/types/auth.types.js.map +1 -0
- package/dist/types/base.cjs +25 -0
- package/dist/types/base.cjs.map +1 -0
- package/dist/types/base.d.cts +21 -0
- package/dist/types/base.d.cts.map +1 -0
- package/dist/types/base.d.ts +21 -0
- package/dist/types/base.d.ts.map +1 -0
- package/dist/types/base.js +24 -0
- package/dist/types/base.js.map +1 -0
- package/dist/types/common/errors.types.cjs +46 -0
- package/dist/types/common/errors.types.cjs.map +1 -0
- package/dist/types/common/errors.types.js +44 -0
- package/dist/types/common/errors.types.js.map +1 -0
- package/dist/types/graph-node-types.cjs +46 -0
- package/dist/types/graph-node-types.cjs.map +1 -0
- package/dist/types/graph-node-types.d.cts +32 -0
- package/dist/types/graph-node-types.d.cts.map +1 -0
- package/dist/types/graph-node-types.d.ts +32 -0
- package/dist/types/graph-node-types.d.ts.map +1 -0
- package/dist/types/graph-node-types.js +45 -0
- package/dist/types/graph-node-types.js.map +1 -0
- package/dist/types/node-config-update.types.d.cts +33 -0
- package/dist/types/node-config-update.types.d.cts.map +1 -0
- package/dist/types/node-config-update.types.d.ts +33 -0
- package/dist/types/node-config-update.types.d.ts.map +1 -0
- package/dist/types/node-definition.types.d.cts +88 -0
- package/dist/types/node-definition.types.d.cts.map +1 -0
- package/dist/types/node-definition.types.d.ts +88 -0
- package/dist/types/node-definition.types.d.ts.map +1 -0
- package/dist/types/node-execution.types.d.cts +39 -0
- package/dist/types/node-execution.types.d.cts.map +1 -0
- package/dist/types/node-execution.types.d.ts +39 -0
- package/dist/types/node-execution.types.d.ts.map +1 -0
- package/dist/types/node-io-types.cjs +19 -0
- package/dist/types/node-io-types.cjs.map +1 -0
- package/dist/types/node-io-types.d.cts +65 -0
- package/dist/types/node-io-types.d.cts.map +1 -0
- package/dist/types/node-io-types.d.ts +65 -0
- package/dist/types/node-io-types.d.ts.map +1 -0
- package/dist/types/node-io-types.js +18 -0
- package/dist/types/node-io-types.js.map +1 -0
- package/dist/types/node-output-schemas.cjs +51 -0
- package/dist/types/node-output-schemas.cjs.map +1 -0
- package/dist/types/node-output-schemas.js +50 -0
- package/dist/types/node-output-schemas.js.map +1 -0
- package/dist/types/plugin.types.d.cts +654 -0
- package/dist/types/plugin.types.d.cts.map +1 -0
- package/dist/types/plugin.types.d.ts +654 -0
- package/dist/types/plugin.types.d.ts.map +1 -0
- package/dist/types/schemas/flow/create-flow-version.schema.cjs +1 -0
- package/dist/types/schemas/flow/create-flow-version.schema.d.ts +1 -0
- package/dist/types/schemas/flow/create-flow-version.schema.js +2 -0
- package/dist/types/schemas/flow/create-flow.schema.cjs +9 -0
- package/dist/types/schemas/flow/create-flow.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/create-flow.schema.d.cts +14 -0
- package/dist/types/schemas/flow/create-flow.schema.d.cts.map +1 -0
- package/dist/types/schemas/flow/create-flow.schema.d.ts +14 -0
- package/dist/types/schemas/flow/create-flow.schema.d.ts.map +1 -0
- package/dist/types/schemas/flow/create-flow.schema.js +10 -0
- package/dist/types/schemas/flow/create-flow.schema.js.map +1 -0
- package/dist/types/schemas/flow/delete-flow.schema.cjs +11 -0
- package/dist/types/schemas/flow/delete-flow.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/delete-flow.schema.d.ts +1 -0
- package/dist/types/schemas/flow/delete-flow.schema.js +11 -0
- package/dist/types/schemas/flow/delete-flow.schema.js.map +1 -0
- package/dist/types/schemas/flow/flow-executions.schema.cjs +36 -0
- package/dist/types/schemas/flow/flow-executions.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/flow-executions.schema.d.ts +1 -0
- package/dist/types/schemas/flow/flow-executions.schema.js +35 -0
- package/dist/types/schemas/flow/flow-executions.schema.js.map +1 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.cjs +7 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.d.ts +1 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.js +7 -0
- package/dist/types/schemas/flow/get-flow-by-id-response.schema.js.map +1 -0
- package/dist/types/schemas/flow/get-flow-versions-response.schema.cjs +1 -0
- package/dist/types/schemas/flow/get-flow-versions-response.schema.d.ts +1 -0
- package/dist/types/schemas/flow/get-flow-versions-response.schema.js +2 -0
- package/dist/types/schemas/flow/get-flows-response.schema.cjs +6 -0
- package/dist/types/schemas/flow/get-flows-response.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/get-flows-response.schema.d.ts +1 -0
- package/dist/types/schemas/flow/get-flows-response.schema.js +7 -0
- package/dist/types/schemas/flow/get-flows-response.schema.js.map +1 -0
- package/dist/types/schemas/flow/index.cjs +9 -0
- package/dist/types/schemas/flow/index.d.ts +1 -0
- package/dist/types/schemas/flow/index.js +10 -0
- package/dist/types/schemas/flow/update-flow.schema.cjs +1 -0
- package/dist/types/schemas/flow/update-flow.schema.d.ts +1 -0
- package/dist/types/schemas/flow/update-flow.schema.js +2 -0
- package/dist/types/schemas/flow/validate-flow.schema.cjs +19 -0
- package/dist/types/schemas/flow/validate-flow.schema.cjs.map +1 -0
- package/dist/types/schemas/flow/validate-flow.schema.d.ts +1 -0
- package/dist/types/schemas/flow/validate-flow.schema.js +19 -0
- package/dist/types/schemas/flow/validate-flow.schema.js.map +1 -0
- package/dist/types/schemas/index.cjs +3 -0
- package/dist/types/schemas/index.d.ts +2 -0
- package/dist/types/schemas/index.js +4 -0
- package/dist/types/schemas/pagination-sort-filter.cjs +56 -0
- package/dist/types/schemas/pagination-sort-filter.cjs.map +1 -0
- package/dist/types/schemas/pagination-sort-filter.d.cts +38 -0
- package/dist/types/schemas/pagination-sort-filter.d.cts.map +1 -0
- package/dist/types/schemas/pagination-sort-filter.d.ts +38 -0
- package/dist/types/schemas/pagination-sort-filter.d.ts.map +1 -0
- package/dist/types/schemas/pagination-sort-filter.js +50 -0
- package/dist/types/schemas/pagination-sort-filter.js.map +1 -0
- package/dist/types/schemas-fresh/invect-config.cjs +181 -0
- package/dist/types/schemas-fresh/invect-config.cjs.map +1 -0
- package/dist/types/schemas-fresh/invect-config.d.cts +207 -0
- package/dist/types/schemas-fresh/invect-config.d.cts.map +1 -0
- package/dist/types/schemas-fresh/invect-config.d.ts +207 -0
- package/dist/types/schemas-fresh/invect-config.d.ts.map +1 -0
- package/dist/types/schemas-fresh/invect-config.js +174 -0
- package/dist/types/schemas-fresh/invect-config.js.map +1 -0
- package/dist/types/validation/common.schemas.cjs +41 -0
- package/dist/types/validation/common.schemas.cjs.map +1 -0
- package/dist/types/validation/common.schemas.js +39 -0
- package/dist/types/validation/common.schemas.js.map +1 -0
- package/dist/types/validation/flow.schemas.cjs +49 -0
- package/dist/types/validation/flow.schemas.cjs.map +1 -0
- package/dist/types/validation/flow.schemas.js +46 -0
- package/dist/types/validation/flow.schemas.js.map +1 -0
- package/dist/types/validation.cjs +49 -0
- package/dist/types/validation.cjs.map +1 -0
- package/dist/types/validation.d.cts +49 -0
- package/dist/types/validation.d.cts.map +1 -0
- package/dist/types/validation.d.ts +49 -0
- package/dist/types/validation.d.ts.map +1 -0
- package/dist/types/validation.js +48 -0
- package/dist/types/validation.js.map +1 -0
- package/dist/types-export.cjs +11 -0
- package/dist/types-export.d.cts +25 -0
- package/dist/types-export.d.ts +25 -0
- package/dist/types-export.js +5 -0
- package/dist/types-fresh.cjs +9 -0
- package/dist/types-fresh.cjs.map +1 -0
- package/dist/types-fresh.d.cts +129 -0
- package/dist/types-fresh.d.cts.map +1 -0
- package/dist/types-fresh.d.ts +129 -0
- package/dist/types-fresh.d.ts.map +1 -0
- package/dist/types-fresh.js +8 -0
- package/dist/types-fresh.js.map +1 -0
- package/dist/utils/id-generator.cjs +34 -0
- package/dist/utils/id-generator.cjs.map +1 -0
- package/dist/utils/id-generator.js +34 -0
- package/dist/utils/id-generator.js.map +1 -0
- package/dist/utils/logger.cjs +285 -0
- package/dist/utils/logger.cjs.map +1 -0
- package/dist/utils/logger.d.cts +161 -0
- package/dist/utils/logger.d.cts.map +1 -0
- package/dist/utils/logger.d.ts +160 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +282 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/node-slug.cjs +13 -0
- package/dist/utils/node-slug.cjs.map +1 -0
- package/dist/utils/node-slug.d.cts +8 -0
- package/dist/utils/node-slug.d.cts.map +1 -0
- package/dist/utils/node-slug.d.ts +8 -0
- package/dist/utils/node-slug.d.ts.map +1 -0
- package/dist/utils/node-slug.js +13 -0
- package/dist/utils/node-slug.js.map +1 -0
- package/dist/utils/provider-detection.cjs +72 -0
- package/dist/utils/provider-detection.cjs.map +1 -0
- package/dist/utils/provider-detection.js +72 -0
- package/dist/utils/provider-detection.js.map +1 -0
- package/dist/utils/url-safe-id.cjs +52 -0
- package/dist/utils/url-safe-id.cjs.map +1 -0
- package/dist/utils/url-safe-id.js +52 -0
- package/dist/utils/url-safe-id.js.map +1 -0
- package/package.json +121 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"node-execution-coordinator.js","names":[],"sources":["../../../src/services/flow-orchestration/node-execution-coordinator.ts"],"sourcesContent":["import { NodeExecutionStatus } from 'src/types/base';\nimport { NodeExecutionContext, GraphNodeType } from 'src/types-fresh';\nimport { InvectDefinition, FlowEdge, FlowNodeDefinitions } from '../flow-versions/schemas-fresh';\nimport { NodeOutput, NodeIncomingDataObject } from 'src/types/node-io-types';\nimport { generateNodeSlug } from 'src/utils/node-slug';\nimport type { NodeExecution } from '../node-executions/node-executions.model';\nimport type { NodeExecutionService } from '../node-executions/node-execution.service';\nimport type { NodeDataService } from '../node-data.service';\nimport type { NodeExecutorRegistry } from 'src/nodes/executor-registry';\nimport type { Logger } from 'src/types/schemas';\nimport type { GraphService } from '../graph.service';\nimport type { CredentialsService } from '../credentials/credentials.service';\nimport type { AgentToolExecutionService } from '../agent-tool-executions/agent-tool-execution.service';\nimport type { BaseAIClient } from '../ai/base-client';\nimport { BatchProvider } from '../ai/base-client';\nimport type { PluginHookRunner } from 'src/types/plugin.types';\nimport { detectProviderFromCredential } from 'src/utils/provider-detection';\nimport { TemplateService, createTemplateService } from '../templating/template.service';\nimport { JsExpressionService, JsExpressionError } from '../templating/js-expression.service';\nimport type { MapperConfig } from '../flow-versions/schemas-fresh';\nimport { getGlobalActionRegistry } from 'src/actions/action-registry';\nimport { executeActionAsNode } from 'src/actions/action-executor';\n\nexport type NodeExecutionCoordinatorDeps = {\n logger: Logger;\n nodeExecutionService: NodeExecutionService;\n nodeRegistry: NodeExecutorRegistry;\n nodeDataService: NodeDataService;\n graphService: GraphService;\n credentialsService?: CredentialsService;\n agentToolExecutionService?: AgentToolExecutionService;\n templateService?: TemplateService;\n jsExpressionService?: JsExpressionService;\n baseAIClient: BaseAIClient;\n /** Plugin hook runner for node execution hooks (optional for backward compat). */\n pluginHookRunner?: PluginHookRunner;\n};\n\n/**\n * Coordinates the execution of individual nodes within a flow run.\n */\nexport class NodeExecutionCoordinator {\n private templateService: TemplateService;\n\n constructor(private readonly deps: NodeExecutionCoordinatorDeps) {\n if (deps.templateService) {\n this.templateService = deps.templateService;\n } else if (deps.jsExpressionService) {\n this.templateService = createTemplateService(deps.jsExpressionService, deps.logger);\n } else {\n // Fallback: TemplateService requires JsExpressionService. If neither is\n // provided the service will throw at render time — but construction\n // should not fail so tests that never call resolveTemplateParams still work.\n this.templateService = createTemplateService(\n undefined as unknown as JsExpressionService,\n deps.logger,\n );\n }\n }\n\n /**\n * Ensure a provider adapter is registered in BaseAIClient for the given\n * provider. If the adapter doesn't exist yet, the credential is resolved\n * and its API key is used to create one on-the-fly.\n */\n private async ensureAdapterRegistered(\n provider: BatchProvider,\n credentialId?: string,\n ): Promise<void> {\n if (this.deps.baseAIClient.hasAdapter(provider)) {\n return;\n }\n\n if (!credentialId) {\n throw new Error(\n `No adapter registered for provider \"${provider}\" and no credentialId provided to create one.`,\n );\n }\n\n const { credentialsService, logger } = this.deps;\n if (!credentialsService) {\n throw new Error(\n 'Credentials service not available — cannot resolve API key for adapter registration.',\n );\n }\n\n const credential = await credentialsService.getDecryptedWithRefresh(credentialId);\n const apiKey = (credential.config as Record<string, unknown>)?.apiKey as string | undefined;\n if (!apiKey) {\n throw new Error(\n `Credential \"${credentialId}\" does not contain an apiKey — cannot register adapter.`,\n );\n }\n\n const detectedProvider = detectProviderFromCredential(credential) ?? provider;\n\n // Map BatchProvider enum to the string literal registerAdapter expects\n const providerLabel =\n detectedProvider === BatchProvider.OPENAI\n ? 'OPENAI'\n : detectedProvider === BatchProvider.ANTHROPIC\n ? 'ANTHROPIC'\n : detectedProvider === BatchProvider.OPENROUTER\n ? 'OPENROUTER'\n : (detectedProvider as 'OPENAI' | 'ANTHROPIC' | 'OPENROUTER');\n\n logger.debug('Auto-registering adapter from credential', {\n provider: providerLabel,\n credentialId,\n });\n\n this.deps.baseAIClient.registerAdapter(providerLabel, apiKey);\n }\n\n /**\n * Build the node-keyed incoming data object for template resolution.\n * This aggregates outputs from all source nodes connected to the target node.\n *\n * Structure:\n * {\n * \"source_node_slug\": {\n * nodeId: \"abc-123\",\n * nodeType: GraphNodeType.TEMPLATE_STRING,\n * label: \"Source Node\",\n * slug: \"source_node_slug\",\n * output: \"the value\", // flattened from data.variables.output.value\n * data: { variables: { ... } },\n * _rawOutput: { nodeType: ..., data: { ... } },\n * toString(): string // returns primary output value for direct template use\n * },\n * ...\n * }\n *\n * Input data structure matches the execution-process.md documentation:\n * - Keys: upstream node reference_id (or slug from label), normalized to snake_case\n * - Values: direct output value (the node's primary output, JSON-parsed if valid)\n *\n * Example: { \"fetch_user\": { \"id\": 123, \"name\": \"Alice\" }, \"get_config\": \"production\" }\n *\n * Template usage:\n * - {{ fetch_user }} renders the full output object/value\n * - {{ fetch_user.id }} accesses nested properties directly\n */\n buildIncomingDataObject(\n node: FlowNodeDefinitions,\n nodeOutputs: Map<FlowNodeDefinitions['id'], NodeOutput | undefined>,\n edges: readonly FlowEdge[],\n nodeMap: Map<string, FlowNodeDefinitions>,\n ): NodeIncomingDataObject {\n const incomingData: NodeIncomingDataObject = {};\n const incomingEdges = edges.filter((edge) => edge.target === node.id);\n\n for (const edge of incomingEdges) {\n const sourceNode = nodeMap.get(edge.source);\n const sourceOutput = nodeOutputs.get(edge.source);\n\n if (!sourceNode) {\n continue;\n }\n\n // Generate slug from label or fall back to node ID\n const nodeLabel = sourceNode.label ?? '';\n const referenceId = sourceNode.referenceId ?? '';\n const nodeId = sourceNode.id;\n const nodeType = sourceNode.type;\n const label = nodeLabel || nodeType || nodeId;\n // Prefer referenceId if available, otherwise generate slug from label\n const slug = referenceId || generateNodeSlug(label, nodeId);\n\n // Extract the primary output value directly\n // Most nodes have a single \"output\" variable - we use that as the direct value\n let outputValue: unknown = null;\n const variables = sourceOutput?.data?.variables;\n\n if (variables && typeof variables === 'object') {\n // Get the \"output\" variable's value (primary output)\n const outputVar = (variables as Record<string, { value?: unknown }>).output;\n if (outputVar && typeof outputVar === 'object' && 'value' in outputVar) {\n outputValue = outputVar.value;\n } else if (outputVar !== undefined) {\n outputValue = outputVar;\n } else {\n // If no \"output\" key, try to get the first variable's value\n const firstKey = Object.keys(variables)[0];\n if (firstKey) {\n const firstVar = (variables as Record<string, { value?: unknown }>)[firstKey];\n if (firstVar && typeof firstVar === 'object' && 'value' in firstVar) {\n outputValue = firstVar.value;\n } else {\n outputValue = firstVar;\n }\n }\n }\n }\n\n // Per documentation: \"JSON-parsed if valid, else string\"\n // If the output is a JSON string, parse it to allow {{ slug.property }} access\n if (typeof outputValue === 'string') {\n try {\n const parsed = JSON.parse(outputValue);\n // Only use parsed value if it's an object/array (not primitives)\n if (typeof parsed === 'object' && parsed !== null) {\n outputValue = parsed;\n }\n } catch {\n // Not valid JSON, keep as string\n }\n }\n\n // Store the direct output value (not a complex wrapper object)\n // This matches the documentation: { \"fetch_user\": { \"id\": 123 } }\n incomingData[slug] = outputValue;\n }\n\n this.deps.logger.debug('Built incoming data object', {\n nodeId: node.id,\n nodeType: node.type,\n incomingNodeCount: Object.keys(incomingData).length,\n incomingKeys: Object.keys(incomingData),\n });\n\n return incomingData;\n }\n\n /**\n * Resolve {{ expression }} templates in node params using the incoming data context.\n * Returns the params with all templatable string values resolved.\n *\n * @param params - Node parameters to resolve\n * @param incomingData - Context data keyed by source node reference IDs\n * @param skipKeys - Param keys to skip (their values should not be resolved as templates)\n */\n resolveTemplateParams(\n params: Record<string, unknown>,\n incomingData: NodeIncomingDataObject,\n skipKeys: string[] = [],\n ): Record<string, unknown> {\n const resolved: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(params)) {\n // Skip keys that shouldn't have their templates resolved\n if (skipKeys.includes(key)) {\n resolved[key] = value;\n continue;\n }\n\n if (typeof value === 'string' && this.templateService.isTemplate(value)) {\n try {\n const renderedValue = this.templateService.render(value, incomingData);\n resolved[key] = renderedValue;\n this.deps.logger.debug('Resolved template param', {\n param: key,\n template: value,\n resolved: renderedValue,\n });\n } catch (error) {\n // On error, keep original value and log warning\n this.deps.logger.warn('Failed to resolve template param', {\n param: key,\n template: value,\n error: error instanceof Error ? error.message : String(error),\n });\n resolved[key] = value;\n }\n } else {\n resolved[key] = value;\n }\n }\n\n return resolved;\n }\n\n prepareNodeInputs(\n node: FlowNodeDefinitions,\n nodeOutputs: Map<FlowNodeDefinitions['id'], NodeOutput | undefined>,\n edges: readonly FlowEdge[],\n nodeMap?: Map<string, FlowNodeDefinitions>,\n ): Record<string, unknown> {\n const nodeInputs: Record<string, unknown> = {};\n const missingInputs: string[] = [];\n const handleValidationErrors: string[] = [];\n\n const incomingEdges = edges.filter((edge) => edge.target === node.id);\n\n for (const edge of incomingEdges) {\n const sourceNodeOutput = nodeOutputs.get(edge.source);\n const sourceNode = nodeMap?.get(edge.source);\n\n if (sourceNode) {\n const validation = this.validateEdgeHandles(edge, sourceNode, node);\n if (!validation.isValid) {\n handleValidationErrors.push(...validation.errors);\n }\n }\n\n if (sourceNodeOutput) {\n const targetInputKey = edge.targetHandle || 'input';\n const sourceOutputKey = edge.sourceHandle || 'output';\n\n const outputValue = this.getOutputValue(\n sourceNodeOutput,\n sourceOutputKey,\n sourceNode?.type as GraphNodeType | undefined,\n edge.source,\n );\n\n if (outputValue !== undefined) {\n nodeInputs[targetInputKey] = outputValue;\n } else {\n missingInputs.push(`${edge.source}:${sourceOutputKey} -> ${targetInputKey}`);\n }\n } else {\n missingInputs.push(\n `${edge.source} (no output available) -> ${edge.targetHandle || 'input'}`,\n );\n }\n }\n\n if (handleValidationErrors.length > 0) {\n this.deps.logger.error('Edge handle validation errors detected', {\n nodeId: node.id,\n nodeType: node.type,\n errors: handleValidationErrors,\n });\n }\n\n if (missingInputs.length > 0) {\n this.deps.logger.warn('Node has missing inputs', {\n nodeId: node.id,\n nodeType: node.type,\n missingInputs,\n availableInputs: Object.keys(nodeInputs),\n });\n }\n\n this.deps.logger.debug('Prepared node inputs', {\n nodeId: node.id,\n nodeType: node.type,\n incomingEdgeCount: incomingEdges.length,\n inputKeys: Object.keys(nodeInputs),\n inputs: nodeInputs,\n missingInputCount: missingInputs.length,\n handleValidationErrorCount: handleValidationErrors.length,\n });\n\n return nodeInputs;\n }\n\n async executeNode(\n flowRunId: string,\n node: FlowNodeDefinitions,\n inputs: Record<string, unknown>,\n flowInputs: Record<string, unknown> = {},\n definition?: InvectDefinition,\n skippedNodeIds?: Set<string>,\n useBatchProcessing?: boolean,\n incomingData?: NodeIncomingDataObject,\n ): Promise<NodeExecution> {\n const { logger } = this.deps;\n\n logger.debug('Executing node', { flowRunId: flowRunId, nodeId: node.id, nodeType: node.type });\n\n // ── Step 1: Check for mapper configuration (new system) ──────────\n const mapperConfig = node.mapper;\n if (mapperConfig?.enabled && mapperConfig?.expression && this.deps.jsExpressionService) {\n logger.debug('Node has mapper configuration, evaluating mapper expression', {\n flowRunId,\n nodeId: node.id,\n mode: mapperConfig.mode,\n });\n return this.executeNodeWithMapper(\n flowRunId,\n node,\n inputs,\n flowInputs,\n definition,\n skippedNodeIds,\n useBatchProcessing,\n incomingData ?? {},\n mapperConfig,\n );\n }\n\n // Standard single execution\n return this.executeNodeOnce(\n flowRunId,\n node,\n inputs,\n flowInputs,\n definition,\n skippedNodeIds,\n useBatchProcessing,\n incomingData,\n );\n }\n\n /**\n * Execute a node once (standard execution without looping).\n */\n private async executeNodeOnce(\n flowRunId: string,\n node: FlowNodeDefinitions,\n inputs: Record<string, unknown>,\n flowInputs: Record<string, unknown> = {},\n definition?: InvectDefinition,\n skippedNodeIds?: Set<string>,\n useBatchProcessing?: boolean,\n incomingData?: NodeIncomingDataObject,\n ): Promise<NodeExecution> {\n const {\n logger,\n nodeExecutionService,\n nodeRegistry,\n nodeDataService,\n graphService,\n credentialsService,\n } = this.deps;\n\n const safeInputs = inputs || {};\n\n // Look up executor / action for this node type.\n // Legacy executors are only used for AGENT; all others go through the action registry.\n const executor = nodeRegistry.get(node.type as GraphNodeType);\n const actionRegistry = getGlobalActionRegistry();\n const action = !executor ? actionRegistry.get(node.type) : undefined;\n\n if (!executor && !action) {\n throw new Error(`No executor or action found for node type: ${node.type}`);\n }\n\n // Merge default params with node params (node params take precedence)\n let defaultParams: Record<string, unknown> = {};\n if (executor) {\n defaultParams = executor.getDefinition().defaultParams ?? {};\n } else if (action) {\n defaultParams = Object.fromEntries(\n (action.params.fields ?? [])\n .filter((f) => f.defaultValue !== undefined)\n .map((f) => [f.name, f.defaultValue]),\n );\n }\n const nodeParams = { ...defaultParams, ...((node.params ?? {}) as Record<string, unknown>) };\n\n // Determine which params should NOT be pre-resolved as templates\n // For Template String node, the 'template' param is the actual template content\n // that the executor will process - it should not be pre-resolved\n const skipTemplateResolutionKeys: string[] = [];\n const nodeTypeStr = node.type as string;\n if (nodeTypeStr === GraphNodeType.TEMPLATE_STRING || nodeTypeStr === 'core.template_string') {\n skipTemplateResolutionKeys.push('template');\n }\n\n // Resolve templates in node params using incoming data (keyed by source node reference IDs)\n // Templates should use {{ source_node_ref }} format to access upstream node outputs\n const resolvedParams = incomingData\n ? this.resolveTemplateParams(nodeParams, incomingData, skipTemplateResolutionKeys)\n : nodeParams;\n\n logger.debug('Resolved node params', {\n nodeId: node.id,\n nodeType: node.type,\n defaultParamKeys: Object.keys(defaultParams),\n nodeParamKeys: Object.keys(node.params ?? {}),\n resolvedParamKeys: Object.keys(resolvedParams),\n skippedKeys: skipTemplateResolutionKeys,\n });\n\n // Create a node copy with resolved params for execution\n const _nodeWithResolvedParams: FlowNodeDefinitions = {\n ...node,\n params: resolvedParams,\n } as FlowNodeDefinitions;\n\n // Store incomingData in the trace (uses reference_id-based keys like \"user_data\")\n // This matches what users see in the config panel and use in templates\n // Fall back to safeInputs only if incomingData is not available\n const traceInputs =\n incomingData && Object.keys(incomingData).length > 0\n ? (incomingData as Record<string, unknown>)\n : safeInputs;\n\n const trace = await nodeExecutionService.createNodeExecution(\n flowRunId,\n node.id,\n node.type,\n traceInputs,\n );\n\n try {\n await nodeExecutionService.updateNodeExecutionStatus(trace.id, NodeExecutionStatus.RUNNING);\n\n const executionContext: NodeExecutionContext = {\n nodeId: node.id,\n flowRunId: flowRunId,\n logger,\n globalConfig: {},\n flowInputs,\n functions: {\n markDownstreamNodesAsSkipped: (\n nodeId: string,\n edges: readonly FlowEdge[],\n skippedNodes: Set<string>,\n isFromIfElse?: boolean,\n ) => {\n logger.debug('Marking downstream nodes as skipped', {\n nodeId,\n edges: edges.length,\n skippedNodes: Array.from(skippedNodes),\n isFromIfElse,\n });\n\n graphService.markDownstreamNodesAsSkipped(nodeId, edges, skippedNodes, isFromIfElse);\n },\n runTemplateReplacement: (template: string, variables: Record<string, unknown>) => {\n return nodeDataService.runTemplateReplacement(template, variables);\n },\n getCredential: async (credentialId: string) => {\n if (!credentialsService) {\n logger.warn('Credentials service not available', { credentialId });\n return null;\n }\n try {\n // Use getDecryptedWithRefresh for OAuth2 auto-refresh support\n const credential = await credentialsService.getDecryptedWithRefresh(credentialId);\n return credential;\n } catch (error) {\n logger.error('Failed to retrieve credential', {\n credentialId,\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n },\n submitPrompt: async (request) => {\n logger.debug('Submitting model prompt', {\n model: request.model,\n provider: request.provider,\n useBatchProcessing: request.useBatchProcessing,\n });\n await this.ensureAdapterRegistered(request.provider, request.credentialId);\n return this.deps.baseAIClient.executePrompt(request);\n },\n submitAgentPrompt: async (request) => {\n logger.debug('Submitting agent prompt', {\n model: request.model,\n toolCount: request.tools.length,\n messageCount: request.messages.length,\n });\n await this.ensureAdapterRegistered(request.provider, request.credentialId);\n return this.deps.baseAIClient.runAgentPrompt(request, request.provider);\n },\n recordToolExecution: async (input) => {\n const { agentToolExecutionService } = this.deps;\n if (!agentToolExecutionService) {\n logger.warn('Agent tool execution service not available');\n return null;\n }\n try {\n const record = await agentToolExecutionService.recordToolExecution(input);\n return { id: record.id };\n } catch (error) {\n logger.error('Failed to record tool execution', {\n toolId: input.toolId,\n error: error instanceof Error ? error.message : String(error),\n });\n return null;\n }\n },\n },\n nodes: definition?.nodes || [],\n edges: definition?.edges || [],\n nodeExecutionResults: new Map(),\n allNodeOutputs: new Map(),\n allNodeInputs: new Map(),\n skippedNodeIds: skippedNodeIds || new Set(),\n startedAt: new Date(),\n flowId: '',\n flowVersion: 1,\n flowParams: {\n useBatchProcessing: useBatchProcessing ?? true,\n },\n // Incoming data from upstream nodes, keyed by reference ID\n // Available for nodes that do their own template processing\n incomingData: incomingData || {},\n };\n\n // ── Plugin hook: beforeNodeExecute ───────────────────────────────────\n let hookResolvedParams = resolvedParams;\n if (this.deps.pluginHookRunner) {\n try {\n const beforeResult = await this.deps.pluginHookRunner.runBeforeNodeExecute({\n flowRun: {\n flowId: executionContext.flowId || '',\n flowRunId: flowRunId,\n flowVersion: executionContext.flowVersion || 1,\n inputs: flowInputs,\n },\n nodeId: node.id,\n nodeType: node.type,\n nodeLabel: node.label,\n inputs: traceInputs,\n params: hookResolvedParams,\n });\n\n if (beforeResult.skipped) {\n logger.info('Node execution skipped by plugin hook', { flowRunId, nodeId: node.id });\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.SKIPPED,\n );\n }\n\n if (beforeResult.params) {\n hookResolvedParams = beforeResult.params;\n }\n } catch (hookError) {\n logger.warn('beforeNodeExecute plugin hook error (non-fatal)', {\n nodeId: node.id,\n error: hookError instanceof Error ? hookError.message : String(hookError),\n });\n }\n }\n\n // Update nodeWithResolvedParams if hooks modified params\n const finalNodeWithParams: FlowNodeDefinitions = {\n ...node,\n params: hookResolvedParams,\n } as FlowNodeDefinitions;\n\n // ── Dispatch: legacy executor vs action ──────────────────────────────\n let executionResult: import('src/types/node-execution.types').NodeExecutionResult;\n const dispatchStartTime = Date.now();\n\n if (executor) {\n // Legacy path: use the BaseNodeExecutor\n const inputValidation = executor.validateInputs(inputs);\n if (!inputValidation.isValid) {\n throw new Error(`Input validation failed: ${inputValidation.error}`);\n }\n\n executionResult = await executor.execute(\n inputValidation.data,\n finalNodeWithParams,\n executionContext,\n );\n } else if (action) {\n // Action path: use the action executor bridge\n executionResult = await executeActionAsNode(action, hookResolvedParams, executionContext);\n } else {\n // Should be unreachable due to the guard above, but satisfies the compiler\n throw new Error(`No executor or action found for node type: ${node.type}`);\n }\n\n const dispatchDuration = Date.now() - dispatchStartTime;\n\n // ── Plugin hook: afterNodeExecute ────────────────────────────────────\n // Extract output only from success results (the union doesn't have .output on all variants)\n const rawOutput =\n executionResult.state === NodeExecutionStatus.SUCCESS ? executionResult.output : undefined;\n let finalOutput = rawOutput;\n if (this.deps.pluginHookRunner && executionResult.state !== NodeExecutionStatus.PENDING) {\n try {\n const afterResult = await this.deps.pluginHookRunner.runAfterNodeExecute({\n flowRun: {\n flowId: executionContext.flowId || '',\n flowRunId: flowRunId,\n flowVersion: executionContext.flowVersion || 1,\n inputs: flowInputs,\n },\n nodeId: node.id,\n nodeType: node.type,\n nodeLabel: node.label,\n inputs: traceInputs,\n params: hookResolvedParams,\n status: executionResult.state === NodeExecutionStatus.FAILED ? 'FAILED' : 'SUCCESS',\n output: rawOutput,\n error:\n executionResult.state === NodeExecutionStatus.FAILED\n ? executionResult.errors.join(', ')\n : undefined,\n duration: dispatchDuration,\n });\n\n if (afterResult.output !== undefined) {\n finalOutput = afterResult.output as typeof finalOutput;\n }\n } catch (hookError) {\n logger.warn('afterNodeExecute plugin hook error (non-fatal)', {\n nodeId: node.id,\n error: hookError instanceof Error ? hookError.message : String(hookError),\n });\n }\n }\n\n if (executionResult.state === NodeExecutionStatus.FAILED) {\n const errorMessage = executionResult.errors.join(', ');\n logger.error('Node execution failed', {\n flowRunId: flowRunId,\n nodeId: node.id,\n error: errorMessage,\n });\n\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.FAILED,\n {\n error: errorMessage,\n },\n );\n } else if (executionResult.state === NodeExecutionStatus.PENDING) {\n logger.debug('Node submitted for batch processing', {\n flowRunId: flowRunId,\n nodeId: node.id,\n batchJobId: executionResult.batchJobId,\n });\n\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.BATCH_SUBMITTED,\n );\n } else {\n logger.debug('Node execution completed successfully', {\n flowRunId: flowRunId,\n nodeId: node.id,\n outputKeys: Object.keys(finalOutput || {}),\n });\n\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.SUCCESS,\n {\n outputs: finalOutput,\n },\n );\n }\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.error('Node execution failed', {\n flowRunId: flowRunId,\n nodeId: node.id,\n error: errorMessage,\n });\n\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.FAILED,\n {\n error: errorMessage,\n },\n );\n }\n }\n\n // ══════════════════════════════════════════════════════════════════════════\n // DATA MAPPER — NEW SYSTEM (replaces _loop)\n // ══════════════════════════════════════════════════════════════════════════\n\n /**\n * Execute a node with a data mapper.\n *\n * 1. Evaluate the mapper JS expression against upstream data\n * 2. If result is array + mode allows → iterate (execute once per item)\n * 3. If result is object → single execution with mapped data as context\n * 4. Primitives → single execution with { item: value } context\n */\n private async executeNodeWithMapper(\n flowRunId: string,\n node: FlowNodeDefinitions,\n inputs: Record<string, unknown>,\n flowInputs: Record<string, unknown>,\n definition: InvectDefinition | undefined,\n skippedNodeIds: Set<string> | undefined,\n useBatchProcessing: boolean | undefined,\n incomingData: NodeIncomingDataObject,\n mapperConfig: MapperConfig,\n ): Promise<NodeExecution> {\n const { logger, nodeExecutionService } = this.deps;\n const jsService = this.deps.jsExpressionService;\n\n if (!jsService) {\n throw new Error('JS expression service is required for mapper execution.');\n }\n\n // ── Evaluate mapper expression ───────────────────────────────────\n let mappedResult: unknown;\n try {\n mappedResult = jsService.evaluate(mapperConfig.expression, incomingData);\n } catch (e) {\n // Mapper expression failed — create a failed trace with the error\n const errorMessage =\n e instanceof JsExpressionError ? e.message : `Mapper expression error: ${String(e)}`;\n logger.error('Mapper expression failed', {\n flowRunId,\n nodeId: node.id,\n expression: mapperConfig.expression,\n error: errorMessage,\n });\n\n const trace = await nodeExecutionService.createNodeExecution(flowRunId, node.id, node.type, {\n ...incomingData,\n _mapper: { expression: mapperConfig.expression, error: errorMessage },\n });\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.FAILED,\n { error: errorMessage },\n );\n }\n\n // ── Mode enforcement ─────────────────────────────────────────────\n const mode = mapperConfig.mode ?? 'auto';\n const isArray = Array.isArray(mappedResult);\n\n if (mode === 'iterate' && !isArray) {\n const errorMessage = `Mapper mode is \"iterate\" but expression returned ${typeof mappedResult}, not an array`;\n logger.error(errorMessage, { flowRunId, nodeId: node.id });\n const trace = await nodeExecutionService.createNodeExecution(flowRunId, node.id, node.type, {\n ...incomingData,\n _mapper: { expression: mapperConfig.expression, error: errorMessage },\n });\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.FAILED,\n { error: errorMessage },\n );\n }\n\n if (mode === 'reshape' && isArray) {\n // Reshape mode: wrap array in object to prevent accidental iteration\n mappedResult = { items: mappedResult };\n }\n\n const shouldIterate = mode === 'iterate' || (mode === 'auto' && isArray);\n\n // ── Branch: iterate vs single ────────────────────────────────────\n if (shouldIterate) {\n return this.executeNodeMapperIterating(\n flowRunId,\n node,\n inputs,\n flowInputs,\n definition,\n skippedNodeIds,\n useBatchProcessing,\n incomingData,\n mappedResult as unknown[],\n mapperConfig,\n );\n }\n\n // Single execution: mapper returned object or primitive\n let mappedData: NodeIncomingDataObject;\n if (mappedResult !== null && typeof mappedResult === 'object' && !isArray) {\n mappedData = mappedResult as NodeIncomingDataObject;\n } else {\n // Primitive — wrap in { item: value }\n mappedData = { item: mappedResult };\n }\n\n // Execute once with mapped data as context (replaces incomingData for template resolution)\n return this.executeNodeOnce(\n flowRunId,\n node,\n inputs,\n flowInputs,\n definition,\n skippedNodeIds,\n useBatchProcessing,\n mappedData,\n );\n }\n\n /**\n * Execute a node repeatedly — once per item from the mapper array result.\n * Handles concurrency, empty array behavior, and result packaging.\n */\n private async executeNodeMapperIterating(\n flowRunId: string,\n node: FlowNodeDefinitions,\n inputs: Record<string, unknown>,\n flowInputs: Record<string, unknown>,\n definition: InvectDefinition | undefined,\n skippedNodeIds: Set<string> | undefined,\n useBatchProcessing: boolean | undefined,\n incomingData: NodeIncomingDataObject,\n items: unknown[],\n mapperConfig: MapperConfig,\n ): Promise<NodeExecution> {\n const { logger, nodeExecutionService } = this.deps;\n\n // ── Handle empty array ───────────────────────────────────────────\n if (items.length === 0) {\n const trace = await nodeExecutionService.createNodeExecution(flowRunId, node.id, node.type, {\n ...incomingData,\n _mapper: { expression: mapperConfig.expression, itemCount: 0 },\n });\n\n if (mapperConfig.onEmpty === 'error') {\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.FAILED,\n { error: 'Mapper returned empty array and onEmpty is \"error\"' },\n );\n }\n\n // Skip: return success with empty output\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.SUCCESS,\n {\n outputs: {\n nodeType: node.type,\n data: {\n variables: {\n output: { value: [], type: 'object' as const },\n },\n },\n },\n },\n );\n }\n\n // ── Create parent trace ──────────────────────────────────────────\n const trace = await nodeExecutionService.createNodeExecution(flowRunId, node.id, node.type, {\n ...incomingData,\n _mapper: { expression: mapperConfig.expression, itemCount: items.length },\n });\n\n try {\n await nodeExecutionService.updateNodeExecutionStatus(trace.id, NodeExecutionStatus.RUNNING);\n\n const results: unknown[] = [];\n const concurrency = mapperConfig.concurrency ?? 1;\n let hasFailure = false;\n let failureError: unknown;\n\n if (concurrency === 1) {\n // Sequential — stop on first failure\n for (let i = 0; i < items.length; i++) {\n const itemContext = this.buildMapperItemContext(items[i], i, items.length, incomingData);\n const result = await this.executeSingleMapperIteration(\n flowRunId,\n node,\n inputs,\n flowInputs,\n definition,\n skippedNodeIds,\n useBatchProcessing,\n itemContext,\n );\n results.push(result);\n }\n } else {\n // Parallel with concurrency limit\n for (let start = 0; start < items.length; start += concurrency) {\n const batch = items.slice(start, start + concurrency);\n const batchResults = await Promise.allSettled(\n batch.map((item, batchIdx) => {\n const globalIdx = start + batchIdx;\n const itemContext = this.buildMapperItemContext(\n item,\n globalIdx,\n items.length,\n incomingData,\n );\n return this.executeSingleMapperIteration(\n flowRunId,\n node,\n inputs,\n flowInputs,\n definition,\n skippedNodeIds,\n useBatchProcessing,\n itemContext,\n );\n }),\n );\n\n for (const r of batchResults) {\n if (r.status === 'fulfilled') {\n results.push(r.value);\n } else {\n hasFailure = true;\n failureError = r.reason;\n }\n }\n if (hasFailure) {\n break;\n }\n }\n }\n\n if (hasFailure) {\n const errorMessage =\n failureError instanceof Error ? failureError.message : String(failureError);\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.FAILED,\n { error: `Mapper iteration failed: ${errorMessage}` },\n );\n }\n\n // ── Package results ────────────────────────────────────────────\n const packagedOutput = this.packageMapperResults(results, mapperConfig);\n\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.SUCCESS,\n {\n outputs: {\n nodeType: node.type,\n data: {\n variables: {\n output: { value: packagedOutput, type: 'object' as const },\n },\n metadata: {\n mapper: true,\n iterationCount: items.length,\n outputMode: mapperConfig.outputMode ?? 'array',\n },\n },\n },\n },\n );\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.error('Mapper iteration failed', { flowRunId, nodeId: node.id, error: errorMessage });\n return await nodeExecutionService.updateNodeExecutionStatus(\n trace.id,\n NodeExecutionStatus.FAILED,\n { error: errorMessage },\n );\n }\n }\n\n /**\n * Execute a single iteration within a mapper loop.\n * Returns the output value from the node execution.\n */\n private async executeSingleMapperIteration(\n flowRunId: string,\n node: FlowNodeDefinitions,\n inputs: Record<string, unknown>,\n flowInputs: Record<string, unknown>,\n definition: InvectDefinition | undefined,\n skippedNodeIds: Set<string> | undefined,\n useBatchProcessing: boolean | undefined,\n itemContext: NodeIncomingDataObject,\n ): Promise<unknown> {\n // Execute the node with the item context as incomingData\n // This means {{ }} expressions in config params resolve against the item\n const trace = await this.executeNodeOnce(\n flowRunId,\n node,\n inputs,\n flowInputs,\n definition,\n skippedNodeIds,\n useBatchProcessing,\n itemContext,\n );\n\n // Extract the output value from the trace\n const outputs = trace.outputs as NodeOutput | undefined;\n const outputVar = outputs?.data?.variables?.output;\n if (outputVar && typeof outputVar === 'object' && 'value' in outputVar) {\n return (outputVar as { value: unknown }).value;\n }\n return outputs?.data ?? null;\n }\n\n /**\n * Build the context object for a single iteration item.\n *\n * Layering (later wins on collision):\n * 1. incomingData — all upstream outputs preserved\n * 2. Item properties spread (if object) or { item: value } for primitives\n * 3. _item metadata (index, total, first/last)\n */\n private buildMapperItemContext(\n item: unknown,\n index: number,\n total: number,\n incomingData: NodeIncomingDataObject,\n ): NodeIncomingDataObject {\n const context: NodeIncomingDataObject = { ...incomingData };\n\n if (item !== null && typeof item === 'object' && !Array.isArray(item)) {\n Object.assign(context, item);\n } else {\n context.item = item;\n }\n\n context._item = {\n value: item,\n index,\n iteration: index + 1,\n first: index === 0,\n last: index === total - 1,\n total,\n };\n\n return context;\n }\n\n /**\n * Package iteration results according to outputMode.\n */\n private packageMapperResults(results: unknown[], config: MapperConfig): unknown {\n const mode = config.outputMode ?? 'array';\n switch (mode) {\n case 'array':\n return results;\n case 'object': {\n const keyField = config.keyField ?? 'id';\n const obj: Record<string, unknown> = {};\n for (const r of results) {\n if (r && typeof r === 'object') {\n const key = String((r as Record<string, unknown>)[keyField] ?? '');\n if (key) {\n obj[key] = r;\n }\n }\n }\n return obj;\n }\n case 'first':\n return results[0] ?? null;\n case 'last':\n return results[results.length - 1] ?? null;\n case 'concat':\n return results.map((r) => String(r ?? '')).join('');\n default:\n return results;\n }\n }\n\n private validateEdgeHandles(\n _edge: FlowEdge,\n _sourceNode: FlowNodeDefinitions,\n _targetNode: FlowNodeDefinitions,\n ): { isValid: boolean; errors: string[] } {\n // Edge handle validation is disabled.\n // In the current architecture, nodes receive all upstream data via reference IDs,\n // and params contain {{ expression }} templates that reference that data.\n // The specific handle IDs on edges are informational only.\n return {\n isValid: true,\n errors: [],\n };\n }\n\n private getOutputValue(\n nodeOutput: NodeOutput,\n outputKey: string,\n sourceNodeType?: GraphNodeType,\n sourceNodeId?: string,\n ): unknown {\n if (!nodeOutput?.data?.variables) {\n this.deps.logger.debug('getOutputValue: Missing variables in nodeOutput', {\n outputKey,\n sourceNodeType,\n sourceNodeId,\n });\n return undefined;\n }\n\n const { variables } = nodeOutput.data;\n\n if (outputKey in variables) {\n const variable = variables[outputKey];\n this.deps.logger.debug('getOutputValue: Found variable', {\n outputKey,\n valueType: typeof variable.value,\n sourceNodeType,\n sourceNodeId,\n });\n return variable.value;\n }\n\n this.deps.logger.warn('getOutputValue: Variable not found', {\n outputKey,\n sourceNodeType,\n sourceNodeId,\n availableVariables: Object.keys(variables),\n });\n\n return undefined;\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,493 @@
|
|
|
1
|
+
const require_errors_types = require("../types/common/errors.types.cjs");
|
|
2
|
+
const require_base = require("../types/base.cjs");
|
|
3
|
+
const require_ai_types = require("./ai/ai-types.cjs");
|
|
4
|
+
require("./ai/base-client.cjs");
|
|
5
|
+
const require_node_execution_coordinator = require("./flow-orchestration/node-execution-coordinator.cjs");
|
|
6
|
+
const require_flow_run_coordinator = require("./flow-orchestration/flow-run-coordinator.cjs");
|
|
7
|
+
//#region src/services/flow-orchestration.service.ts
|
|
8
|
+
/**
|
|
9
|
+
* Core Flow Orchestration Service implementation
|
|
10
|
+
* Manages the complete flow execution lifecycle using service layer abstractions
|
|
11
|
+
*/
|
|
12
|
+
var FlowOrchestrationService = class {
|
|
13
|
+
initialized = false;
|
|
14
|
+
batchPollingInterval;
|
|
15
|
+
staleRunCheckInterval;
|
|
16
|
+
isPollingActive = false;
|
|
17
|
+
nodeExecutionCoordinator;
|
|
18
|
+
flowRunCoordinator;
|
|
19
|
+
flowTimeoutMs;
|
|
20
|
+
staleRunCheckIntervalMs;
|
|
21
|
+
constructor(logger, flowRunsService, nodeExecutionService, flowsService, nodeDataService, graphService, nodeRegistry, batchJobsService, credentialsService, baseAIClient, agentToolExecutionService, executionConfig, pluginHookRunner, jsExpressionService, templateService) {
|
|
22
|
+
this.logger = logger;
|
|
23
|
+
this.flowRunsService = flowRunsService;
|
|
24
|
+
this.nodeExecutionService = nodeExecutionService;
|
|
25
|
+
this.flowsService = flowsService;
|
|
26
|
+
this.nodeDataService = nodeDataService;
|
|
27
|
+
this.graphService = graphService;
|
|
28
|
+
this.nodeRegistry = nodeRegistry;
|
|
29
|
+
this.batchJobsService = batchJobsService;
|
|
30
|
+
this.credentialsService = credentialsService;
|
|
31
|
+
this.baseAIClient = baseAIClient;
|
|
32
|
+
this.agentToolExecutionService = agentToolExecutionService;
|
|
33
|
+
this.pluginHookRunner = pluginHookRunner;
|
|
34
|
+
this.jsExpressionService = jsExpressionService;
|
|
35
|
+
this.templateService = templateService;
|
|
36
|
+
if (!baseAIClient) throw new Error("BaseAIClient is required for FlowOrchestrationService");
|
|
37
|
+
this.flowTimeoutMs = executionConfig?.flowTimeoutMs ?? 6e5;
|
|
38
|
+
this.staleRunCheckIntervalMs = executionConfig?.staleRunCheckIntervalMs ?? 6e4;
|
|
39
|
+
this.nodeExecutionCoordinator = new require_node_execution_coordinator.NodeExecutionCoordinator({
|
|
40
|
+
logger,
|
|
41
|
+
nodeExecutionService,
|
|
42
|
+
nodeRegistry,
|
|
43
|
+
nodeDataService,
|
|
44
|
+
graphService,
|
|
45
|
+
credentialsService,
|
|
46
|
+
agentToolExecutionService,
|
|
47
|
+
templateService,
|
|
48
|
+
jsExpressionService,
|
|
49
|
+
baseAIClient,
|
|
50
|
+
pluginHookRunner
|
|
51
|
+
});
|
|
52
|
+
this.flowRunCoordinator = new require_flow_run_coordinator.FlowRunCoordinator({
|
|
53
|
+
logger,
|
|
54
|
+
flowRunsService,
|
|
55
|
+
nodeExecutionCoordinator: this.nodeExecutionCoordinator,
|
|
56
|
+
graphService,
|
|
57
|
+
nodeExecutionService,
|
|
58
|
+
batchJobsService,
|
|
59
|
+
flowsService,
|
|
60
|
+
heartbeatIntervalMs: executionConfig?.heartbeatIntervalMs ?? 3e4,
|
|
61
|
+
pluginHookRunner
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Initialize the service
|
|
66
|
+
*/
|
|
67
|
+
async initialize() {
|
|
68
|
+
if (this.initialized) {
|
|
69
|
+
this.logger.debug("Flow orchestration service already initialized");
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.logger.debug("Initializing flow orchestration service");
|
|
73
|
+
try {
|
|
74
|
+
await this.flowsService.initialize();
|
|
75
|
+
await this.flowRunsService.initialize();
|
|
76
|
+
await this.nodeExecutionService.initialize();
|
|
77
|
+
await this.batchJobsService.initialize();
|
|
78
|
+
await this.recoverStaleRuns();
|
|
79
|
+
await this.startFlowResumptionPolling();
|
|
80
|
+
this.startStaleRunDetector();
|
|
81
|
+
this.initialized = true;
|
|
82
|
+
this.logger.info("Flow orchestration service initialized successfully");
|
|
83
|
+
} catch (error) {
|
|
84
|
+
this.logger.error("Failed to initialize flow orchestration service", { error });
|
|
85
|
+
throw new require_errors_types.DatabaseError("Failed to initialize flow orchestration service", { error });
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Startup recovery: mark all RUNNING/PENDING runs with stale heartbeats as FAILED.
|
|
90
|
+
* This handles flows that were mid-execution when the server last stopped.
|
|
91
|
+
*/
|
|
92
|
+
async recoverStaleRuns() {
|
|
93
|
+
try {
|
|
94
|
+
const failedCount = await this.flowRunsService.failStaleRuns(this.flowTimeoutMs);
|
|
95
|
+
if (failedCount > 0) this.logger.warn(`Startup recovery: marked ${failedCount} stale flow run(s) as FAILED`);
|
|
96
|
+
} catch (error) {
|
|
97
|
+
this.logger.error("Failed to recover stale runs on startup", { error });
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Start a periodic check for stale flow runs.
|
|
102
|
+
* Runs at the configured `staleRunCheckIntervalMs`.
|
|
103
|
+
*/
|
|
104
|
+
startStaleRunDetector() {
|
|
105
|
+
if (this.staleRunCheckInterval) return;
|
|
106
|
+
this.logger.info("Starting stale run detector", {
|
|
107
|
+
flowTimeoutMs: this.flowTimeoutMs,
|
|
108
|
+
checkIntervalMs: this.staleRunCheckIntervalMs
|
|
109
|
+
});
|
|
110
|
+
this.staleRunCheckInterval = setInterval(async () => {
|
|
111
|
+
try {
|
|
112
|
+
const failedCount = await this.flowRunsService.failStaleRuns(this.flowTimeoutMs);
|
|
113
|
+
if (failedCount > 0) this.logger.warn(`Stale run detector: marked ${failedCount} run(s) as FAILED`);
|
|
114
|
+
} catch (error) {
|
|
115
|
+
this.logger.error("Error in stale run detector", { error });
|
|
116
|
+
}
|
|
117
|
+
}, this.staleRunCheckIntervalMs);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Stop the periodic stale run detector.
|
|
121
|
+
*/
|
|
122
|
+
stopStaleRunDetector() {
|
|
123
|
+
if (this.staleRunCheckInterval) {
|
|
124
|
+
clearInterval(this.staleRunCheckInterval);
|
|
125
|
+
this.staleRunCheckInterval = void 0;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Execute a flow by ID with inputs and options
|
|
130
|
+
*/
|
|
131
|
+
async executeFlow(flowId, inputs = {}, options) {
|
|
132
|
+
this.logger.info("Starting flow execution", {
|
|
133
|
+
flowId,
|
|
134
|
+
inputs
|
|
135
|
+
});
|
|
136
|
+
try {
|
|
137
|
+
this.logger.debug("Getting flow", {
|
|
138
|
+
flowId,
|
|
139
|
+
options
|
|
140
|
+
});
|
|
141
|
+
const flow = await this.flowsService.getFlowById(flowId, { flowVersion: { version: options?.version || "latest" } });
|
|
142
|
+
if (!flow) throw new require_errors_types.ValidationError(`No flow found with ID: ${flowId}`);
|
|
143
|
+
this.logger.debug("Flow version found", {
|
|
144
|
+
flowId,
|
|
145
|
+
version: flow.flowVersion
|
|
146
|
+
});
|
|
147
|
+
return await this.initiateFlowRun(flow, inputs, options?.initiatedBy, options?.useBatchProcessing);
|
|
148
|
+
} catch (error) {
|
|
149
|
+
if (error instanceof require_errors_types.ValidationError) throw error;
|
|
150
|
+
this.logger.error("Failed to execute flow", {
|
|
151
|
+
flowId,
|
|
152
|
+
error: error instanceof Error ? error.message : String(error),
|
|
153
|
+
stack: error instanceof Error ? error.stack : void 0
|
|
154
|
+
});
|
|
155
|
+
throw new require_errors_types.DatabaseError("Failed to execute flow", { error });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Start a flow execution asynchronously - returns immediately with flow run ID.
|
|
160
|
+
* The flow executes in the background.
|
|
161
|
+
*/
|
|
162
|
+
async executeFlowAsync(flowId, inputs = {}, options) {
|
|
163
|
+
this.logger.info("Starting async flow execution", {
|
|
164
|
+
flowId,
|
|
165
|
+
inputs
|
|
166
|
+
});
|
|
167
|
+
try {
|
|
168
|
+
const flow = await this.flowsService.getFlowById(flowId, { flowVersion: { version: options?.version || "latest" } });
|
|
169
|
+
if (!flow) throw new require_errors_types.ValidationError(`No flow found with ID: ${flowId}`);
|
|
170
|
+
if (!flow.flowVersion.invectDefinition) throw new require_errors_types.ValidationError("Flow version does not contain a valid flow definition");
|
|
171
|
+
const execution = await this.flowRunsService.createFlowRun({
|
|
172
|
+
flowId: flow.id,
|
|
173
|
+
flowVersion: flow.flowVersion.version,
|
|
174
|
+
inputs,
|
|
175
|
+
createdBy: options?.initiatedBy,
|
|
176
|
+
triggerType: options?.triggerType,
|
|
177
|
+
triggerId: options?.triggerId,
|
|
178
|
+
triggerNodeId: options?.triggerNodeId,
|
|
179
|
+
triggerData: options?.triggerData
|
|
180
|
+
});
|
|
181
|
+
this.logger.info("Created execution record for async execution", {
|
|
182
|
+
flowRunId: execution.id,
|
|
183
|
+
flowId: flow.id
|
|
184
|
+
});
|
|
185
|
+
const typedDefinition = flow.flowVersion.invectDefinition;
|
|
186
|
+
const augmentedInputs = {
|
|
187
|
+
...execution.inputs,
|
|
188
|
+
...execution.triggerData ? {
|
|
189
|
+
__triggerData: execution.triggerData,
|
|
190
|
+
__triggerNodeId: execution.triggerNodeId
|
|
191
|
+
} : {}
|
|
192
|
+
};
|
|
193
|
+
this.flowRunCoordinator.executeFlowDefinition(execution, typedDefinition, augmentedInputs, options?.useBatchProcessing).then((result) => {
|
|
194
|
+
this.logger.info("Async flow execution completed", {
|
|
195
|
+
flowRunId: execution.id,
|
|
196
|
+
status: result.status
|
|
197
|
+
});
|
|
198
|
+
}).catch(async (error) => {
|
|
199
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
200
|
+
this.logger.error("Async flow execution failed", {
|
|
201
|
+
flowRunId: execution.id,
|
|
202
|
+
error: errorMessage
|
|
203
|
+
});
|
|
204
|
+
await this.flowRunsService.updateRunStatus(execution.id, require_base.FlowRunStatus.FAILED, { error: errorMessage });
|
|
205
|
+
});
|
|
206
|
+
return {
|
|
207
|
+
flowRunId: execution.id,
|
|
208
|
+
status: require_base.FlowRunStatus.PENDING,
|
|
209
|
+
inputs: execution.inputs,
|
|
210
|
+
outputs: {},
|
|
211
|
+
startedAt: typeof execution.startedAt === "string" ? new Date(execution.startedAt) : execution.startedAt,
|
|
212
|
+
traces: []
|
|
213
|
+
};
|
|
214
|
+
} catch (error) {
|
|
215
|
+
if (error instanceof require_errors_types.ValidationError) throw error;
|
|
216
|
+
this.logger.error("Failed to start async flow execution", {
|
|
217
|
+
flowId,
|
|
218
|
+
error: error instanceof Error ? error.message : String(error)
|
|
219
|
+
});
|
|
220
|
+
throw new require_errors_types.DatabaseError("Failed to start flow execution", { error });
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Execute a complete flow (synchronous - waits for completion)
|
|
225
|
+
*/
|
|
226
|
+
async initiateFlowRun(flow, inputs = {}, initiatedBy, useBatchProcessing) {
|
|
227
|
+
this.logger.info("Starting flow orchestration", {
|
|
228
|
+
flowId: flow.id,
|
|
229
|
+
flowVersion: flow.flowVersion.version
|
|
230
|
+
});
|
|
231
|
+
if (!flow.flowVersion.invectDefinition) {
|
|
232
|
+
const error = "Flow version does not contain a valid flow definition";
|
|
233
|
+
this.logger.error(error, {
|
|
234
|
+
flowId: flow.id,
|
|
235
|
+
flowVersion: flow.flowVersion.version
|
|
236
|
+
});
|
|
237
|
+
throw new require_errors_types.ValidationError(error);
|
|
238
|
+
}
|
|
239
|
+
let execution;
|
|
240
|
+
let finalExecutionResult;
|
|
241
|
+
try {
|
|
242
|
+
execution = await this.flowRunsService.createFlowRun({
|
|
243
|
+
flowId: flow.id,
|
|
244
|
+
flowVersion: flow.flowVersion.version,
|
|
245
|
+
inputs,
|
|
246
|
+
createdBy: initiatedBy
|
|
247
|
+
});
|
|
248
|
+
this.logger.info("Created execution record", {
|
|
249
|
+
flowRunId: execution.id,
|
|
250
|
+
flowId: flow.id
|
|
251
|
+
});
|
|
252
|
+
const typedDefinition = flow.flowVersion.invectDefinition;
|
|
253
|
+
finalExecutionResult = await this.flowRunCoordinator.executeFlowDefinition(execution, typedDefinition, execution.inputs, useBatchProcessing);
|
|
254
|
+
this.logger.info("Flow execution completed", {
|
|
255
|
+
flowRunId: execution.id,
|
|
256
|
+
status: finalExecutionResult.status
|
|
257
|
+
});
|
|
258
|
+
return finalExecutionResult;
|
|
259
|
+
} catch (error) {
|
|
260
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
261
|
+
this.logger.error("Flow execution failed", {
|
|
262
|
+
flowRunId: execution?.id,
|
|
263
|
+
flowId: flow.id,
|
|
264
|
+
error: errorMessage
|
|
265
|
+
});
|
|
266
|
+
if (execution) {
|
|
267
|
+
await this.flowRunsService.updateRunStatus(execution.id, require_base.FlowRunStatus.FAILED, { error: errorMessage });
|
|
268
|
+
const traces = await this.nodeExecutionService.listNodeExecutionsByFlowRunId(execution.id);
|
|
269
|
+
finalExecutionResult = {
|
|
270
|
+
flowRunId: execution.id,
|
|
271
|
+
status: require_base.FlowRunStatus.FAILED,
|
|
272
|
+
inputs: execution.inputs,
|
|
273
|
+
outputs: {},
|
|
274
|
+
error: errorMessage,
|
|
275
|
+
startedAt: typeof execution.startedAt === "string" ? new Date(execution.startedAt) : execution.startedAt,
|
|
276
|
+
completedAt: /* @__PURE__ */ new Date(),
|
|
277
|
+
duration: execution.duration || 0,
|
|
278
|
+
traces
|
|
279
|
+
};
|
|
280
|
+
return finalExecutionResult;
|
|
281
|
+
}
|
|
282
|
+
throw new require_errors_types.DatabaseError("Failed to orchestrate flow execution", {
|
|
283
|
+
error,
|
|
284
|
+
flowId: flow.id
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Execute a flow definition
|
|
290
|
+
*/
|
|
291
|
+
/**
|
|
292
|
+
* Execute a flow up to a specific target node.
|
|
293
|
+
* Only executes the upstream nodes required to produce output for the target node.
|
|
294
|
+
*/
|
|
295
|
+
async executeFlowToNode(flowId, targetNodeId, inputs = {}, options) {
|
|
296
|
+
this.logger.info("Starting partial flow execution to node", {
|
|
297
|
+
flowId,
|
|
298
|
+
targetNodeId,
|
|
299
|
+
inputs
|
|
300
|
+
});
|
|
301
|
+
try {
|
|
302
|
+
const flow = await this.flowsService.getFlowById(flowId, { flowVersion: { version: options?.version || "latest" } });
|
|
303
|
+
if (!flow) throw new require_errors_types.ValidationError(`No flow found with ID: ${flowId}`);
|
|
304
|
+
if (!flow.flowVersion.invectDefinition) throw new require_errors_types.ValidationError("Flow version does not contain a valid flow definition");
|
|
305
|
+
const definition = flow.flowVersion.invectDefinition;
|
|
306
|
+
if (!definition.nodes.find((n) => n.id === targetNodeId)) throw new require_errors_types.ValidationError(`Target node not found in flow: ${targetNodeId}`);
|
|
307
|
+
const execution = await this.flowRunsService.createFlowRun({
|
|
308
|
+
flowId: flow.id,
|
|
309
|
+
flowVersion: flow.flowVersion.version,
|
|
310
|
+
inputs,
|
|
311
|
+
createdBy: options?.initiatedBy
|
|
312
|
+
});
|
|
313
|
+
this.logger.info("Created execution record for partial flow", {
|
|
314
|
+
flowRunId: execution.id,
|
|
315
|
+
flowId: flow.id,
|
|
316
|
+
targetNodeId
|
|
317
|
+
});
|
|
318
|
+
const result = await this.flowRunCoordinator.executeFlowToNode(execution, definition, targetNodeId, execution.inputs, options?.useBatchProcessing);
|
|
319
|
+
this.logger.info("Partial flow execution completed", {
|
|
320
|
+
flowRunId: execution.id,
|
|
321
|
+
targetNodeId,
|
|
322
|
+
status: result.status
|
|
323
|
+
});
|
|
324
|
+
return result;
|
|
325
|
+
} catch (error) {
|
|
326
|
+
if (error instanceof require_errors_types.ValidationError) throw error;
|
|
327
|
+
this.logger.error("Failed to execute partial flow", {
|
|
328
|
+
flowId,
|
|
329
|
+
targetNodeId,
|
|
330
|
+
error: error instanceof Error ? error.message : String(error)
|
|
331
|
+
});
|
|
332
|
+
throw new require_errors_types.DatabaseError("Failed to execute partial flow", { error });
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Resume flow execution after batch completion
|
|
337
|
+
*/
|
|
338
|
+
async resumeFromBatchCompletion(flowRunId, completedBatchNodeId, batchResult, batchError) {
|
|
339
|
+
return this.flowRunCoordinator.resumeFromBatchCompletion(flowRunId, completedBatchNodeId, batchResult, batchError);
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Continue flow execution after batch completion
|
|
343
|
+
*/
|
|
344
|
+
async continueFlowRunFromBatch(flowRunId, definition, flowInputs = {}) {
|
|
345
|
+
return this.flowRunCoordinator.continueFlowRunFromBatch(flowRunId, definition, flowInputs);
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get execution with traces
|
|
349
|
+
*/
|
|
350
|
+
async getExecutionWithTraces(flowRunId) {
|
|
351
|
+
try {
|
|
352
|
+
const execution = await this.flowRunsService.getRunById(flowRunId);
|
|
353
|
+
const traces = await this.nodeExecutionService.listNodeExecutionsByFlowRunId(flowRunId);
|
|
354
|
+
return {
|
|
355
|
+
flowRunId: execution.id,
|
|
356
|
+
status: execution.status,
|
|
357
|
+
inputs: execution.inputs,
|
|
358
|
+
outputs: execution.outputs || {},
|
|
359
|
+
error: execution.error,
|
|
360
|
+
startedAt: typeof execution.startedAt === "string" ? new Date(execution.startedAt) : execution.startedAt,
|
|
361
|
+
completedAt: execution.completedAt ? typeof execution.completedAt === "string" ? new Date(execution.completedAt) : execution.completedAt : void 0,
|
|
362
|
+
duration: execution.duration,
|
|
363
|
+
traces
|
|
364
|
+
};
|
|
365
|
+
} catch (error) {
|
|
366
|
+
this.logger.error("Failed to get execution with traces", {
|
|
367
|
+
flowRunId,
|
|
368
|
+
error
|
|
369
|
+
});
|
|
370
|
+
throw new require_errors_types.DatabaseError("Failed to get execution with traces", { error });
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Cancel a running execution
|
|
375
|
+
*/
|
|
376
|
+
async cancelExecution(flowRunId) {
|
|
377
|
+
try {
|
|
378
|
+
const execution = await this.flowRunsService.getRunById(flowRunId);
|
|
379
|
+
if (execution.status !== "RUNNING" && execution.status !== "PENDING") throw new require_errors_types.DatabaseError(`Cannot cancel execution in ${execution.status} state`);
|
|
380
|
+
await this.flowRunsService.updateRunStatus(flowRunId, "CANCELLED");
|
|
381
|
+
this.logger.info("Execution cancelled", { flowRunId });
|
|
382
|
+
} catch (error) {
|
|
383
|
+
this.logger.error("Failed to cancel execution", {
|
|
384
|
+
flowRunId,
|
|
385
|
+
error
|
|
386
|
+
});
|
|
387
|
+
throw error;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Start polling for completed batch jobs to resume flows
|
|
392
|
+
*/
|
|
393
|
+
async startFlowResumptionPolling(intervalMs = 3e4) {
|
|
394
|
+
if (this.isPollingActive) {
|
|
395
|
+
this.logger.debug("Flow resumption polling is already active");
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
this.logger.info("Starting flow resumption polling", { intervalMs });
|
|
399
|
+
this.isPollingActive = true;
|
|
400
|
+
const pollOnce = async () => {
|
|
401
|
+
if (!this.isPollingActive) return;
|
|
402
|
+
try {
|
|
403
|
+
await this.pollForCompletedBatches();
|
|
404
|
+
} catch (error) {
|
|
405
|
+
this.logger.error("Error during flow resumption polling", { error });
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
await pollOnce();
|
|
409
|
+
this.batchPollingInterval = setInterval(pollOnce, intervalMs);
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Stop polling for completed batch jobs
|
|
413
|
+
*/
|
|
414
|
+
async stopFlowResumptionPolling() {
|
|
415
|
+
if (!this.isPollingActive) {
|
|
416
|
+
this.logger.debug("Flow resumption polling is not active");
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
this.logger.info("Stopping flow resumption polling");
|
|
420
|
+
this.isPollingActive = false;
|
|
421
|
+
if (this.batchPollingInterval) {
|
|
422
|
+
clearInterval(this.batchPollingInterval);
|
|
423
|
+
this.batchPollingInterval = void 0;
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Poll for completed batch jobs and resume corresponding flows
|
|
428
|
+
*/
|
|
429
|
+
async pollForCompletedBatches() {
|
|
430
|
+
try {
|
|
431
|
+
const flowsToResume = await this.findFlowsReadyForResumption();
|
|
432
|
+
if (flowsToResume.length === 0) {
|
|
433
|
+
this.logger.debug("No flows found ready for resumption");
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
this.logger.info("Found flows ready for resumption", {
|
|
437
|
+
count: flowsToResume.length,
|
|
438
|
+
flowRunIds: flowsToResume.map((f) => f.flowRunId)
|
|
439
|
+
});
|
|
440
|
+
for (const flowResumption of flowsToResume) try {
|
|
441
|
+
await this.resumeFromBatchCompletion(flowResumption.flowRunId, flowResumption.nodeId, flowResumption.batchResult, flowResumption.batchError);
|
|
442
|
+
this.logger.info("Flow resumed successfully", {
|
|
443
|
+
flowRunId: flowResumption.flowRunId,
|
|
444
|
+
nodeId: flowResumption.nodeId
|
|
445
|
+
});
|
|
446
|
+
} catch (error) {
|
|
447
|
+
this.logger.error("Failed to resume flow", {
|
|
448
|
+
flowRunId: flowResumption.flowRunId,
|
|
449
|
+
nodeId: flowResumption.nodeId,
|
|
450
|
+
error: error instanceof Error ? error.message : String(error)
|
|
451
|
+
});
|
|
452
|
+
}
|
|
453
|
+
} catch (error) {
|
|
454
|
+
this.logger.error("Error polling for completed batches", { error });
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Find flows that are paused for batch processing but have completed batch jobs
|
|
459
|
+
*/
|
|
460
|
+
async findFlowsReadyForResumption() {
|
|
461
|
+
try {
|
|
462
|
+
const pausedFlowsResult = await this.flowRunsService.listRuns({ filter: { status: [require_base.FlowRunStatus.PAUSED_FOR_BATCH] } });
|
|
463
|
+
const flowsToResume = [];
|
|
464
|
+
for (const flowRun of pausedFlowsResult.data) {
|
|
465
|
+
const completedBatchJobs = (await this.batchJobsService.getBatchJobsByFlowRunId(flowRun.id)).filter((job) => job.status === require_ai_types.BatchStatus.COMPLETED || job.status === require_ai_types.BatchStatus.FAILED || job.status === require_ai_types.BatchStatus.CANCELLED);
|
|
466
|
+
for (const batchJob of completedBatchJobs) flowsToResume.push({
|
|
467
|
+
flowRunId: flowRun.id,
|
|
468
|
+
nodeId: batchJob.nodeId,
|
|
469
|
+
batchResult: batchJob.status === require_ai_types.BatchStatus.COMPLETED ? batchJob.responseData : void 0,
|
|
470
|
+
batchError: batchJob.status === require_ai_types.BatchStatus.FAILED || batchJob.status === require_ai_types.BatchStatus.CANCELLED ? batchJob.error : void 0
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
return flowsToResume;
|
|
474
|
+
} catch (error) {
|
|
475
|
+
this.logger.error("Failed to find flows ready for resumption", { error });
|
|
476
|
+
return [];
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
/**
|
|
480
|
+
* Close the service
|
|
481
|
+
*/
|
|
482
|
+
async close() {
|
|
483
|
+
this.logger.debug("Closing flow orchestration service");
|
|
484
|
+
this.flowRunCoordinator.stopAllHeartbeats();
|
|
485
|
+
await this.stopFlowResumptionPolling();
|
|
486
|
+
this.stopStaleRunDetector();
|
|
487
|
+
this.initialized = false;
|
|
488
|
+
}
|
|
489
|
+
};
|
|
490
|
+
//#endregion
|
|
491
|
+
exports.FlowOrchestrationService = FlowOrchestrationService;
|
|
492
|
+
|
|
493
|
+
//# sourceMappingURL=flow-orchestration.service.cjs.map
|