@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":"service-factory.js","names":[],"sources":["../../src/services/service-factory.ts"],"sourcesContent":["// Framework-agnostic Service Factory for Invect core\nimport { FlowsService } from './flows/flows.service';\nimport { FlowRunsService } from './flow-runs/flow-runs.service';\nimport { NodeExecutionService } from './node-executions/node-execution.service';\nimport { FlowOrchestrationService } from './flow-orchestration.service';\nimport { DatabaseService } from './database/database.service';\nimport { NodeDataService } from './node-data.service';\nimport { GraphService } from './graph.service';\nimport { BatchJobsService } from './batch-jobs/batch-jobs.service';\nimport { BaseAIClient } from './ai/base-client';\nimport { CredentialsService } from './credentials/credentials.service';\nimport { EncryptionService } from './credentials/encryption.service';\nimport { AgentToolExecutionService } from './agent-tool-executions/agent-tool-execution.service';\nimport { FlowAccessService } from './auth/flow-access.service';\nimport { FlowTriggersService } from './triggers/flow-triggers.service';\nimport { CronSchedulerService } from './triggers/cron-scheduler.service';\nimport { ChatStreamService } from './chat/chat-stream.service';\nimport { ExecutionEventBus, getExecutionEventBus } from './execution-event-bus';\nimport { DatabaseError } from 'src/types/common/errors.types';\nimport { Logger, InvectConfig } from 'src/types/schemas';\nimport { NodeExecutorRegistry } from 'src/nodes/executor-registry';\nimport { FlowVersionsService } from './flow-versions/flow-versions.service';\nimport { ReactFlowRendererService } from './react-flow-renderer.service';\nimport type { PluginHookRunner } from 'src/types/plugin.types';\n\n/**\n * Core Services container\n */\nexport interface CoreServices {\n flowsService: FlowsService;\n flowVersionsService: FlowVersionsService;\n flowRunsService: FlowRunsService;\n nodeExecutionsService: NodeExecutionService;\n orchestrationService: FlowOrchestrationService;\n databaseService: DatabaseService;\n nodeDataService: NodeDataService;\n graphService: GraphService;\n batchJobsService: BatchJobsService;\n baseAIClient: BaseAIClient;\n reactFlowRendererService: ReactFlowRendererService;\n credentialsService: CredentialsService;\n agentToolExecutionService: AgentToolExecutionService;\n flowAccessService: FlowAccessService | null;\n triggersService: FlowTriggersService;\n cronScheduler: CronSchedulerService;\n chatStreamService: ChatStreamService;\n executionEventBus: ExecutionEventBus;\n}\n\n/**\n * Service Factory for creating and managing core services\n */\nexport class ServiceFactory {\n private services: CoreServices | null = null;\n private initialized = false;\n logger: Logger;\n\n constructor(\n private readonly config: InvectConfig,\n private readonly nodeRegistry: NodeExecutorRegistry,\n /** The Invect core instance (for passing to ChatStreamService → tools) */\n private readonly invectRef?: unknown,\n /** Action registry for chat system prompt context */\n private readonly actionRegistryRef?: unknown,\n /** Plugin hook runner for lifecycle hooks */\n private readonly pluginHookRunner?: PluginHookRunner,\n /** JS expression service for data mapper (sandbox) */\n private readonly jsExpressionServiceRef?: import('./templating/js-expression.service').JsExpressionService,\n /** Template service for resolving {{ }} expressions in node params */\n private readonly templateServiceRef?: import('./templating/template.service').TemplateService,\n ) {\n this.logger = config.logger; // Fallback to console if no logger provided\n if (!this.nodeRegistry) {\n throw new Error('Node registry is not provided, cannot initialize services without it');\n } else {\n this.logger.debug('Node registry provided, will register default executors');\n }\n }\n\n /**\n * Initialize all services\n */\n async initialize(): Promise<void> {\n if (this.initialized) {\n this.logger.debug('Service factory already initialized');\n return;\n }\n\n this.logger.info('Initializing service factory');\n\n try {\n // 1. Create database service first (no dependencies)\n // Schema verification is opt-in via config.schemaVerification.\n // It only checks that required tables/columns exist — does NOT run migrations.\n const schemaVerification = this.config.schemaVerification;\n const verificationOpts = schemaVerification\n ? {\n strict: typeof schemaVerification === 'object' ? schemaVerification.strict : false,\n plugins: (this.config.plugins || []) as import('src/types/plugin.types').InvectPlugin[],\n }\n : undefined;\n const databaseService = new DatabaseService(\n this.config.baseDatabaseConfig,\n this.logger,\n verificationOpts,\n (this.config.plugins || []) as import('src/types/plugin.types').InvectPlugin[],\n );\n await databaseService.initialize();\n\n // 3. Create BatchJobsService (database only, no AI client)\n const batchJobsService = new BatchJobsService(this.logger, databaseService);\n\n // 4. Create BaseAIClient (adapters are registered dynamically from credentials)\n const baseAIClient = new BaseAIClient(this.logger, batchJobsService);\n\n // 5. Create other services\n const flowVersionsService = new FlowVersionsService(this.logger, databaseService);\n const flowsService = new FlowsService(this.logger, databaseService);\n const nodeExecutionsService = new NodeExecutionService(this.logger, databaseService);\n const flowRunsService = new FlowRunsService(this.logger, databaseService, flowsService);\n const nodeDataService = new NodeDataService(\n this.config,\n this.logger,\n databaseService,\n baseAIClient,\n this.templateServiceRef,\n );\n const graphService = new GraphService(this.logger, nodeExecutionsService);\n const reactFlowRendererService = new ReactFlowRendererService(\n this.logger,\n flowsService,\n flowVersionsService,\n flowRunsService,\n nodeExecutionsService,\n );\n\n // 5b. Create credentials service with encryption\n const encryptionService = new EncryptionService({\n masterKey: process.env.ENCRYPTION_KEY || 'default-dev-key-change-in-production',\n });\n const credentialsService = new CredentialsService(\n databaseService.adapter,\n encryptionService,\n this.logger,\n );\n\n // 5c. Create agent tool execution service\n const agentToolExecutionService = new AgentToolExecutionService(this.logger, databaseService);\n\n // 5d. Create flow access service if enabled\n let flowAccessService: FlowAccessService | null = null;\n if (this.config.auth?.useFlowAccessTable) {\n flowAccessService = new FlowAccessService({\n adapter: databaseService.adapter,\n logger: this.logger,\n });\n this.logger.info('Flow access table enabled - using Invect-managed flow permissions');\n }\n\n // 5e. Create triggers service (needs orchestration, wired after orchestration is created)\n // Placeholder — we wire the real orchestrationService reference below.\n\n // 6. Create orchestration service with proper dependencies\n const orchestrationService = new FlowOrchestrationService(\n this.logger,\n flowRunsService,\n nodeExecutionsService,\n flowsService,\n nodeDataService,\n graphService,\n this.nodeRegistry,\n batchJobsService,\n credentialsService, // Add credentials service\n baseAIClient, // Add baseAIClient for agent prompt support\n agentToolExecutionService, // Add agent tool execution service\n // Execution config: heartbeat, flow timeout, stale-run detection\n {\n heartbeatIntervalMs: this.config.execution?.heartbeatIntervalMs ?? 30_000,\n flowTimeoutMs: this.config.execution?.flowTimeoutMs ?? 600_000,\n staleRunCheckIntervalMs: this.config.execution?.staleRunCheckIntervalMs ?? 60_000,\n },\n this.pluginHookRunner, // Plugin hooks for flow/node execution lifecycle\n this.jsExpressionServiceRef, // JS expression engine for data mapper\n this.templateServiceRef, // Template service for {{ }} expression resolution\n );\n\n // 6b. Create triggers service (depends on orchestration)\n const triggersService = new FlowTriggersService(\n this.logger,\n databaseService,\n flowsService,\n flowVersionsService,\n orchestrationService,\n );\n\n // 6c. Create cron scheduler (depends on triggers service)\n const cronScheduler = new CronSchedulerService(this.logger, triggersService);\n\n // 6d. Create chat stream service\n const chatStreamService = new ChatStreamService(\n this.logger,\n this.config,\n credentialsService,\n flowsService,\n flowVersionsService,\n (this.actionRegistryRef as import('src/actions').ActionRegistry) ?? null,\n this.invectRef,\n );\n\n // 6e. Wire execution event bus to services that write state\n const executionEventBus = getExecutionEventBus();\n flowRunsService.setEventBus(executionEventBus);\n nodeExecutionsService.setEventBus(executionEventBus);\n\n // Initialize services\n await Promise.all([\n batchJobsService.initialize(),\n flowsService.initialize(),\n flowRunsService.initialize(),\n nodeExecutionsService.initialize(),\n orchestrationService.initialize(),\n nodeDataService.initialize(),\n reactFlowRendererService.initialize(),\n agentToolExecutionService.initialize(),\n triggersService.initialize(),\n ]);\n\n // Store services\n this.services = {\n flowsService,\n flowVersionsService,\n flowRunsService,\n nodeExecutionsService,\n orchestrationService,\n databaseService,\n nodeDataService,\n graphService,\n batchJobsService,\n baseAIClient,\n reactFlowRendererService,\n credentialsService,\n agentToolExecutionService,\n flowAccessService,\n triggersService,\n cronScheduler,\n chatStreamService,\n executionEventBus,\n };\n\n this.initialized = true;\n this.logger.info('Service factory initialized successfully');\n } catch (error) {\n this.logger.error('Failed to initialize service factory', error);\n throw new DatabaseError('Failed to initialize service factory', { error });\n }\n }\n\n /**\n * Get all services\n */\n getServices(): CoreServices {\n if (!this.services) {\n throw new Error('Service factory not initialized');\n }\n return this.services;\n }\n\n /**\n * Get flow service\n */\n getFlowService(): FlowsService {\n return this.getServices().flowsService;\n }\n\n /**\n * Get execution service\n */\n getFlowRunsService(): FlowRunsService {\n return this.getServices().flowRunsService;\n }\n\n /**\n * Get execution trace service\n */\n getNodeExecutionsService(): NodeExecutionService {\n return this.getServices().nodeExecutionsService;\n }\n\n /**\n * Get orchestration service\n */\n getOrchestrationService(): FlowOrchestrationService {\n return this.getServices().orchestrationService;\n }\n\n getFlowVersionsService() {\n return this.getServices().flowVersionsService;\n }\n\n /**\n * Get database service\n */\n getDatabaseService(): DatabaseService {\n return this.getServices().databaseService;\n }\n\n /**\n * Get node data service\n */\n getNodeDataService(): NodeDataService {\n return this.getServices().nodeDataService;\n }\n\n /**\n * Get graph service\n */\n getGraphService(): GraphService {\n return this.getServices().graphService;\n }\n\n /**\n * Get base AI client\n */\n getBaseAIClient(): BaseAIClient {\n return this.getServices().baseAIClient;\n }\n\n /**\n * Get React Flow renderer service\n */\n getReactFlowRendererService(): ReactFlowRendererService {\n return this.getServices().reactFlowRendererService;\n }\n\n /**\n * Get credentials service\n */\n getCredentialsService(): CredentialsService {\n return this.getServices().credentialsService;\n }\n\n /**\n * Get agent tool execution service\n */\n getAgentToolExecutionService(): AgentToolExecutionService {\n return this.getServices().agentToolExecutionService;\n }\n\n /**\n * Get flow access service (for Invect-managed flow permissions).\n * Returns null if useFlowAccessTable is not enabled.\n */\n getFlowAccessService(): FlowAccessService | null {\n return this.getServices().flowAccessService;\n }\n\n /**\n * Get triggers service\n */\n getTriggersService(): FlowTriggersService {\n return this.getServices().triggersService;\n }\n\n /**\n * Get cron scheduler service\n */\n getCronScheduler(): CronSchedulerService {\n return this.getServices().cronScheduler;\n }\n\n /**\n * Get chat stream service\n */\n getChatStreamService(): ChatStreamService {\n return this.getServices().chatStreamService;\n }\n\n /**\n * Get execution event bus for SSE streaming\n */\n getExecutionEventBus(): ExecutionEventBus {\n return this.getServices().executionEventBus;\n }\n\n /**\n * Health check for all services\n */\n async healthCheck(): Promise<{\n healthy: boolean;\n services: Record<string, boolean>;\n timestamp: string;\n }> {\n const serviceResults: Record<string, boolean> = {};\n let allHealthy = true;\n\n if (!this.services) {\n return {\n healthy: false,\n services: { factory: false },\n timestamp: new Date().toISOString(),\n };\n }\n\n try {\n // Test database connectivity\n await this.services.databaseService.healthCheck();\n serviceResults.database = true;\n } catch (error) {\n this.logger.error('Database health check failed', error);\n serviceResults.database = false;\n allHealthy = false;\n }\n\n // For other services, we'll just check if they're initialized\n serviceResults.nodeData = !!this.services.nodeDataService;\n serviceResults.flow = !!this.services.flowsService;\n serviceResults.execution = !!this.services.flowRunsService;\n serviceResults.executionTrace = !!this.services.nodeExecutionsService;\n serviceResults.orchestration = !!this.services.orchestrationService;\n serviceResults.graph = !!this.services.graphService;\n\n return {\n healthy: allHealthy,\n services: serviceResults,\n timestamp: new Date().toISOString(),\n };\n }\n\n /**\n * Close all services and cleanup\n */\n async close(): Promise<void> {\n if (!this.services) {\n this.logger.debug('Service factory not initialized, nothing to close');\n return;\n }\n\n this.logger.info('Closing service factory');\n\n try {\n await Promise.all([\n this.services.flowsService.close(),\n this.services.flowRunsService.close(),\n this.services.nodeExecutionsService.close(),\n this.services.orchestrationService.close(),\n this.services.databaseService.close(),\n this.services.nodeDataService.close(),\n // Note: GraphService doesn't have a close method as it's stateless\n ]);\n\n this.services = null;\n this.initialized = false;\n this.logger.info('Service factory closed successfully');\n } catch (error) {\n this.logger.error('Error closing service factory', error);\n throw new DatabaseError('Error closing service factory', { error });\n }\n }\n\n /**\n * Check if the factory is initialized\n */\n isInitialized(): boolean {\n return this.initialized;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAoDA,IAAa,iBAAb,MAA4B;CAC1B,WAAwC;CACxC,cAAsB;CACtB;CAEA,YACE,QACA,cAEA,WAEA,mBAEA,kBAEA,wBAEA,oBACA;AAZiB,OAAA,SAAA;AACA,OAAA,eAAA;AAEA,OAAA,YAAA;AAEA,OAAA,oBAAA;AAEA,OAAA,mBAAA;AAEA,OAAA,yBAAA;AAEA,OAAA,qBAAA;AAEjB,OAAK,SAAS,OAAO;AACrB,MAAI,CAAC,KAAK,aACR,OAAM,IAAI,MAAM,uEAAuE;MAEvF,MAAK,OAAO,MAAM,0DAA0D;;;;;CAOhF,MAAM,aAA4B;AAChC,MAAI,KAAK,aAAa;AACpB,QAAK,OAAO,MAAM,sCAAsC;AACxD;;AAGF,OAAK,OAAO,KAAK,+BAA+B;AAEhD,MAAI;GAIF,MAAM,qBAAqB,KAAK,OAAO;GACvC,MAAM,mBAAmB,qBACrB;IACE,QAAQ,OAAO,uBAAuB,WAAW,mBAAmB,SAAS;IAC7E,SAAU,KAAK,OAAO,WAAW,EAAE;IACpC,GACD,KAAA;GACJ,MAAM,kBAAkB,IAAI,gBAC1B,KAAK,OAAO,oBACZ,KAAK,QACL,kBACC,KAAK,OAAO,WAAW,EAAE,CAC3B;AACD,SAAM,gBAAgB,YAAY;GAGlC,MAAM,mBAAmB,IAAI,iBAAiB,KAAK,QAAQ,gBAAgB;GAG3E,MAAM,eAAe,IAAI,aAAa,KAAK,QAAQ,iBAAiB;GAGpE,MAAM,sBAAsB,IAAI,oBAAoB,KAAK,QAAQ,gBAAgB;GACjF,MAAM,eAAe,IAAI,aAAa,KAAK,QAAQ,gBAAgB;GACnE,MAAM,wBAAwB,IAAI,qBAAqB,KAAK,QAAQ,gBAAgB;GACpF,MAAM,kBAAkB,IAAI,gBAAgB,KAAK,QAAQ,iBAAiB,aAAa;GACvF,MAAM,kBAAkB,IAAI,gBAC1B,KAAK,QACL,KAAK,QACL,iBACA,cACA,KAAK,mBACN;GACD,MAAM,eAAe,IAAI,aAAa,KAAK,QAAQ,sBAAsB;GACzE,MAAM,2BAA2B,IAAI,yBACnC,KAAK,QACL,cACA,qBACA,iBACA,sBACD;GAGD,MAAM,oBAAoB,IAAI,kBAAkB,EAC9C,WAAW,QAAQ,IAAI,kBAAkB,wCAC1C,CAAC;GACF,MAAM,qBAAqB,IAAI,mBAC7B,gBAAgB,SAChB,mBACA,KAAK,OACN;GAGD,MAAM,4BAA4B,IAAI,0BAA0B,KAAK,QAAQ,gBAAgB;GAG7F,IAAI,oBAA8C;AAClD,OAAI,KAAK,OAAO,MAAM,oBAAoB;AACxC,wBAAoB,IAAI,kBAAkB;KACxC,SAAS,gBAAgB;KACzB,QAAQ,KAAK;KACd,CAAC;AACF,SAAK,OAAO,KAAK,oEAAoE;;GAOvF,MAAM,uBAAuB,IAAI,yBAC/B,KAAK,QACL,iBACA,uBACA,cACA,iBACA,cACA,KAAK,cACL,kBACA,oBACA,cACA,2BAEA;IACE,qBAAqB,KAAK,OAAO,WAAW,uBAAuB;IACnE,eAAe,KAAK,OAAO,WAAW,iBAAiB;IACvD,yBAAyB,KAAK,OAAO,WAAW,2BAA2B;IAC5E,EACD,KAAK,kBACL,KAAK,wBACL,KAAK,mBACN;GAGD,MAAM,kBAAkB,IAAI,oBAC1B,KAAK,QACL,iBACA,cACA,qBACA,qBACD;GAGD,MAAM,gBAAgB,IAAI,qBAAqB,KAAK,QAAQ,gBAAgB;GAG5E,MAAM,oBAAoB,IAAI,kBAC5B,KAAK,QACL,KAAK,QACL,oBACA,cACA,qBACC,KAAK,qBAA8D,MACpE,KAAK,UACN;GAGD,MAAM,oBAAoB,sBAAsB;AAChD,mBAAgB,YAAY,kBAAkB;AAC9C,yBAAsB,YAAY,kBAAkB;AAGpD,SAAM,QAAQ,IAAI;IAChB,iBAAiB,YAAY;IAC7B,aAAa,YAAY;IACzB,gBAAgB,YAAY;IAC5B,sBAAsB,YAAY;IAClC,qBAAqB,YAAY;IACjC,gBAAgB,YAAY;IAC5B,yBAAyB,YAAY;IACrC,0BAA0B,YAAY;IACtC,gBAAgB,YAAY;IAC7B,CAAC;AAGF,QAAK,WAAW;IACd;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACD;AAED,QAAK,cAAc;AACnB,QAAK,OAAO,KAAK,2CAA2C;WACrD,OAAO;AACd,QAAK,OAAO,MAAM,wCAAwC,MAAM;AAChE,SAAM,IAAI,cAAc,wCAAwC,EAAE,OAAO,CAAC;;;;;;CAO9E,cAA4B;AAC1B,MAAI,CAAC,KAAK,SACR,OAAM,IAAI,MAAM,kCAAkC;AAEpD,SAAO,KAAK;;;;;CAMd,iBAA+B;AAC7B,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,qBAAsC;AACpC,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,2BAAiD;AAC/C,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,0BAAoD;AAClD,SAAO,KAAK,aAAa,CAAC;;CAG5B,yBAAyB;AACvB,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,qBAAsC;AACpC,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,qBAAsC;AACpC,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,kBAAgC;AAC9B,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,kBAAgC;AAC9B,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,8BAAwD;AACtD,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,wBAA4C;AAC1C,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,+BAA0D;AACxD,SAAO,KAAK,aAAa,CAAC;;;;;;CAO5B,uBAAiD;AAC/C,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,qBAA0C;AACxC,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,mBAAyC;AACvC,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,uBAA0C;AACxC,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,uBAA0C;AACxC,SAAO,KAAK,aAAa,CAAC;;;;;CAM5B,MAAM,cAIH;EACD,MAAM,iBAA0C,EAAE;EAClD,IAAI,aAAa;AAEjB,MAAI,CAAC,KAAK,SACR,QAAO;GACL,SAAS;GACT,UAAU,EAAE,SAAS,OAAO;GAC5B,4BAAW,IAAI,MAAM,EAAC,aAAa;GACpC;AAGH,MAAI;AAEF,SAAM,KAAK,SAAS,gBAAgB,aAAa;AACjD,kBAAe,WAAW;WACnB,OAAO;AACd,QAAK,OAAO,MAAM,gCAAgC,MAAM;AACxD,kBAAe,WAAW;AAC1B,gBAAa;;AAIf,iBAAe,WAAW,CAAC,CAAC,KAAK,SAAS;AAC1C,iBAAe,OAAO,CAAC,CAAC,KAAK,SAAS;AACtC,iBAAe,YAAY,CAAC,CAAC,KAAK,SAAS;AAC3C,iBAAe,iBAAiB,CAAC,CAAC,KAAK,SAAS;AAChD,iBAAe,gBAAgB,CAAC,CAAC,KAAK,SAAS;AAC/C,iBAAe,QAAQ,CAAC,CAAC,KAAK,SAAS;AAEvC,SAAO;GACL,SAAS;GACT,UAAU;GACV,4BAAW,IAAI,MAAM,EAAC,aAAa;GACpC;;;;;CAMH,MAAM,QAAuB;AAC3B,MAAI,CAAC,KAAK,UAAU;AAClB,QAAK,OAAO,MAAM,oDAAoD;AACtE;;AAGF,OAAK,OAAO,KAAK,0BAA0B;AAE3C,MAAI;AACF,SAAM,QAAQ,IAAI;IAChB,KAAK,SAAS,aAAa,OAAO;IAClC,KAAK,SAAS,gBAAgB,OAAO;IACrC,KAAK,SAAS,sBAAsB,OAAO;IAC3C,KAAK,SAAS,qBAAqB,OAAO;IAC1C,KAAK,SAAS,gBAAgB,OAAO;IACrC,KAAK,SAAS,gBAAgB,OAAO;IAEtC,CAAC;AAEF,QAAK,WAAW;AAChB,QAAK,cAAc;AACnB,QAAK,OAAO,KAAK,sCAAsC;WAChD,OAAO;AACd,QAAK,OAAO,MAAM,iCAAiC,MAAM;AACzD,SAAM,IAAI,cAAc,iCAAiC,EAAE,OAAO,CAAC;;;;;;CAOvE,gBAAyB;AACvB,SAAO,KAAK"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { JsExpressionError, JsExpressionService, JsExpressionServiceConfig, createJsExpressionService, disposeJsExpressionService, getJsExpressionService } from "./js-expression.service.js";
|
|
2
|
+
import { TemplateRenderResult, TemplateService, TemplateValidationResult, createTemplateService, getTemplateService } from "./template.service.js";
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
require("../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
let quickjs_emscripten = require("quickjs-emscripten");
|
|
3
|
+
//#region src/services/templating/js-expression.service.ts
|
|
4
|
+
/**
|
|
5
|
+
* JS Expression Service
|
|
6
|
+
*
|
|
7
|
+
* Provides sandboxed JavaScript evaluation for data mapper expressions.
|
|
8
|
+
* Uses QuickJS (via quickjs-emscripten) for safe, isolated execution.
|
|
9
|
+
*
|
|
10
|
+
* User code is wrapped in a function body — use `return` to produce a value.
|
|
11
|
+
* For single-expression one-liners (no `return` keyword), `return` is auto-prepended.
|
|
12
|
+
*
|
|
13
|
+
* Context keys from upstream nodes are injected as local variables.
|
|
14
|
+
* `$input` is always available as the full context object (escape hatch for name collisions).
|
|
15
|
+
*/
|
|
16
|
+
const DEFAULT_MEMORY_LIMIT = 16 * 1024 * 1024;
|
|
17
|
+
const DEFAULT_MAX_STACK_SIZE = 1024 * 1024;
|
|
18
|
+
var JsExpressionService = class {
|
|
19
|
+
module = null;
|
|
20
|
+
runtime = null;
|
|
21
|
+
logger;
|
|
22
|
+
config;
|
|
23
|
+
constructor(config = {}, logger) {
|
|
24
|
+
this.logger = logger;
|
|
25
|
+
this.config = {
|
|
26
|
+
memoryLimitBytes: config.memoryLimitBytes ?? DEFAULT_MEMORY_LIMIT,
|
|
27
|
+
maxStackSizeBytes: config.maxStackSizeBytes ?? DEFAULT_MAX_STACK_SIZE
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Initialize the QuickJS WASM module and runtime.
|
|
32
|
+
* Must be called before evaluate(). Safe to call multiple times.
|
|
33
|
+
*/
|
|
34
|
+
async initialize() {
|
|
35
|
+
if (this.runtime) return;
|
|
36
|
+
this.module = await (0, quickjs_emscripten.newQuickJSWASMModule)();
|
|
37
|
+
this.runtime = this.module.newRuntime();
|
|
38
|
+
this.runtime.setMemoryLimit(this.config.memoryLimitBytes);
|
|
39
|
+
this.runtime.setMaxStackSize(this.config.maxStackSizeBytes);
|
|
40
|
+
this.logger?.debug("JsExpressionService initialized", {
|
|
41
|
+
memoryLimit: this.config.memoryLimitBytes,
|
|
42
|
+
maxStackSize: this.config.maxStackSizeBytes
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Evaluate JS code against a context object.
|
|
47
|
+
*
|
|
48
|
+
* User code is wrapped in a function body. Use `return` to produce a value.
|
|
49
|
+
* For one-liners without `return`, the service auto-prepends it.
|
|
50
|
+
*
|
|
51
|
+
* Context keys are available as local variables. `$input` is the full context.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* // Auto-return (one-liner):
|
|
55
|
+
* evaluate("users.filter(u => u.active)", { users: [...] })
|
|
56
|
+
*
|
|
57
|
+
* // Explicit return (multi-statement):
|
|
58
|
+
* evaluate(`
|
|
59
|
+
* const active = users.filter(u => u.active);
|
|
60
|
+
* return active.map(u => ({ ...u, rank: 1 }));
|
|
61
|
+
* `, { users: [...] })
|
|
62
|
+
*/
|
|
63
|
+
evaluate(expression, context) {
|
|
64
|
+
if (!this.runtime) throw new Error("JsExpressionService not initialized. Call initialize() first.");
|
|
65
|
+
const vm = this.runtime.newContext();
|
|
66
|
+
try {
|
|
67
|
+
const contextJson = JSON.stringify(context);
|
|
68
|
+
const contextKeys = Object.keys(context);
|
|
69
|
+
const userBody = needsAutoReturn(expression) ? `return (${expression})` : expression;
|
|
70
|
+
const destructure = contextKeys.length > 0 ? `const {${contextKeys.join(",")}} = $input;` : "";
|
|
71
|
+
const wrapped = `(function(){const $input = JSON.parse(${JSON.stringify(contextJson)});${destructure}${userBody}})()`;
|
|
72
|
+
const result = vm.evalCode(wrapped);
|
|
73
|
+
if (result.error) {
|
|
74
|
+
const errorObj = vm.dump(result.error);
|
|
75
|
+
result.error.dispose();
|
|
76
|
+
throw new JsExpressionError(typeof errorObj === "object" && errorObj !== null && "message" in errorObj ? errorObj.message : String(errorObj), expression);
|
|
77
|
+
}
|
|
78
|
+
const value = vm.dump(result.value);
|
|
79
|
+
result.value.dispose();
|
|
80
|
+
return value;
|
|
81
|
+
} finally {
|
|
82
|
+
vm.dispose();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Dispose the QuickJS runtime. Call on Invect shutdown.
|
|
87
|
+
*/
|
|
88
|
+
dispose() {
|
|
89
|
+
if (this.runtime) {
|
|
90
|
+
this.runtime.dispose();
|
|
91
|
+
this.runtime = null;
|
|
92
|
+
}
|
|
93
|
+
this.module = null;
|
|
94
|
+
this.logger?.debug("JsExpressionService disposed");
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Determine if user code needs auto-return wrapping.
|
|
99
|
+
*
|
|
100
|
+
* Auto-return is applied when the code does NOT contain a `return` keyword
|
|
101
|
+
* (as a word boundary match, to avoid false positives in strings like "returns").
|
|
102
|
+
*
|
|
103
|
+
* This means one-liners like `users.filter(u => u.active)` work without typing `return`,
|
|
104
|
+
* while multi-statement code requires explicit `return`.
|
|
105
|
+
*/
|
|
106
|
+
function needsAutoReturn(code) {
|
|
107
|
+
const stripped = code.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "").replace(/'(?:[^'\\]|\\.)*'/g, "").replace(/"(?:[^"\\]|\\.)*"/g, "").replace(/`(?:[^`\\]|\\.)*`/g, "");
|
|
108
|
+
return !/\breturn\b/.test(stripped);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Custom error class for mapper expression errors.
|
|
112
|
+
* Includes the original expression for debugging.
|
|
113
|
+
*/
|
|
114
|
+
var JsExpressionError = class extends Error {
|
|
115
|
+
constructor(message, expression) {
|
|
116
|
+
super(`Mapper expression error: ${message}`);
|
|
117
|
+
this.expression = expression;
|
|
118
|
+
this.name = "JsExpressionError";
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
let defaultInstance = null;
|
|
122
|
+
async function getJsExpressionService(logger) {
|
|
123
|
+
if (!defaultInstance) {
|
|
124
|
+
defaultInstance = new JsExpressionService({}, logger);
|
|
125
|
+
await defaultInstance.initialize();
|
|
126
|
+
}
|
|
127
|
+
return defaultInstance;
|
|
128
|
+
}
|
|
129
|
+
function createJsExpressionService(config, logger) {
|
|
130
|
+
return new JsExpressionService(config, logger);
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Dispose the global singleton (call during shutdown).
|
|
134
|
+
*/
|
|
135
|
+
function disposeJsExpressionService() {
|
|
136
|
+
if (defaultInstance) {
|
|
137
|
+
defaultInstance.dispose();
|
|
138
|
+
defaultInstance = null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
//#endregion
|
|
142
|
+
exports.JsExpressionError = JsExpressionError;
|
|
143
|
+
exports.JsExpressionService = JsExpressionService;
|
|
144
|
+
exports.createJsExpressionService = createJsExpressionService;
|
|
145
|
+
exports.disposeJsExpressionService = disposeJsExpressionService;
|
|
146
|
+
exports.getJsExpressionService = getJsExpressionService;
|
|
147
|
+
|
|
148
|
+
//# sourceMappingURL=js-expression.service.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-expression.service.cjs","names":[],"sources":["../../../src/services/templating/js-expression.service.ts"],"sourcesContent":["/**\n * JS Expression Service\n *\n * Provides sandboxed JavaScript evaluation for data mapper expressions.\n * Uses QuickJS (via quickjs-emscripten) for safe, isolated execution.\n *\n * User code is wrapped in a function body — use `return` to produce a value.\n * For single-expression one-liners (no `return` keyword), `return` is auto-prepended.\n *\n * Context keys from upstream nodes are injected as local variables.\n * `$input` is always available as the full context object (escape hatch for name collisions).\n */\nimport { newQuickJSWASMModule } from 'quickjs-emscripten';\nimport type { QuickJSWASMModule, QuickJSRuntime } from 'quickjs-emscripten';\nimport type { Logger } from 'src/types/schemas';\n\nexport interface JsExpressionServiceConfig {\n /** Memory limit for the QuickJS runtime in bytes. Default: 16MB */\n memoryLimitBytes?: number;\n /** Max stack size in bytes. Default: 1MB */\n maxStackSizeBytes?: number;\n}\n\nconst DEFAULT_MEMORY_LIMIT = 16 * 1024 * 1024; // 16 MB\nconst DEFAULT_MAX_STACK_SIZE = 1024 * 1024; // 1 MB\n\nexport class JsExpressionService {\n private module: QuickJSWASMModule | null = null;\n private runtime: QuickJSRuntime | null = null;\n private logger?: Logger;\n private config: Required<JsExpressionServiceConfig>;\n\n constructor(config: JsExpressionServiceConfig = {}, logger?: Logger) {\n this.logger = logger;\n this.config = {\n memoryLimitBytes: config.memoryLimitBytes ?? DEFAULT_MEMORY_LIMIT,\n maxStackSizeBytes: config.maxStackSizeBytes ?? DEFAULT_MAX_STACK_SIZE,\n };\n }\n\n /**\n * Initialize the QuickJS WASM module and runtime.\n * Must be called before evaluate(). Safe to call multiple times.\n */\n async initialize(): Promise<void> {\n if (this.runtime) {\n return;\n }\n\n this.module = await newQuickJSWASMModule();\n this.runtime = this.module.newRuntime();\n this.runtime.setMemoryLimit(this.config.memoryLimitBytes);\n this.runtime.setMaxStackSize(this.config.maxStackSizeBytes);\n\n this.logger?.debug('JsExpressionService initialized', {\n memoryLimit: this.config.memoryLimitBytes,\n maxStackSize: this.config.maxStackSizeBytes,\n });\n }\n\n /**\n * Evaluate JS code against a context object.\n *\n * User code is wrapped in a function body. Use `return` to produce a value.\n * For one-liners without `return`, the service auto-prepends it.\n *\n * Context keys are available as local variables. `$input` is the full context.\n *\n * @example\n * // Auto-return (one-liner):\n * evaluate(\"users.filter(u => u.active)\", { users: [...] })\n *\n * // Explicit return (multi-statement):\n * evaluate(`\n * const active = users.filter(u => u.active);\n * return active.map(u => ({ ...u, rank: 1 }));\n * `, { users: [...] })\n */\n evaluate(expression: string, context: Record<string, unknown>): unknown {\n if (!this.runtime) {\n throw new Error('JsExpressionService not initialized. Call initialize() first.');\n }\n\n const vm = this.runtime.newContext();\n try {\n // Inject context as a JSON-serialized global, then destructure into locals.\n // This avoids per-key handle creation and is faster for large contexts.\n const contextJson = JSON.stringify(context);\n const contextKeys = Object.keys(context);\n\n // Build the wrapped code:\n // 1. Parse the serialized context into $input\n // 2. Destructure context keys into local variables\n // 3. Execute user code in a function body (with auto-return for one-liners)\n const userBody = needsAutoReturn(expression) ? `return (${expression})` : expression;\n const destructure =\n contextKeys.length > 0 ? `const {${contextKeys.join(',')}} = $input;` : '';\n const wrapped = `(function(){const $input = JSON.parse(${JSON.stringify(contextJson)});${destructure}${userBody}})()`;\n\n const result = vm.evalCode(wrapped);\n if (result.error) {\n const errorObj = vm.dump(result.error);\n result.error.dispose();\n const message =\n typeof errorObj === 'object' && errorObj !== null && 'message' in errorObj\n ? (errorObj as { message: string }).message\n : String(errorObj);\n throw new JsExpressionError(message, expression);\n }\n\n const value = vm.dump(result.value);\n result.value.dispose();\n return value;\n } finally {\n vm.dispose();\n }\n }\n\n /**\n * Dispose the QuickJS runtime. Call on Invect shutdown.\n */\n dispose(): void {\n if (this.runtime) {\n this.runtime.dispose();\n this.runtime = null;\n }\n this.module = null;\n this.logger?.debug('JsExpressionService disposed');\n }\n}\n\n/**\n * Determine if user code needs auto-return wrapping.\n *\n * Auto-return is applied when the code does NOT contain a `return` keyword\n * (as a word boundary match, to avoid false positives in strings like \"returns\").\n *\n * This means one-liners like `users.filter(u => u.active)` work without typing `return`,\n * while multi-statement code requires explicit `return`.\n */\nfunction needsAutoReturn(code: string): boolean {\n // Strip string literals and comments to avoid false positives,\n // then check for `return` as a keyword boundary\n const stripped = code\n .replace(/\\/\\/.*$/gm, '') // line comments\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // block comments\n .replace(/'(?:[^'\\\\]|\\\\.)*'/g, '') // single-quoted strings\n .replace(/\"(?:[^\"\\\\]|\\\\.)*\"/g, '') // double-quoted strings\n .replace(/`(?:[^`\\\\]|\\\\.)*`/g, ''); // template literals\n\n return !/\\breturn\\b/.test(stripped);\n}\n\n/**\n * Custom error class for mapper expression errors.\n * Includes the original expression for debugging.\n */\nexport class JsExpressionError extends Error {\n constructor(\n message: string,\n public readonly expression: string,\n ) {\n super(`Mapper expression error: ${message}`);\n this.name = 'JsExpressionError';\n }\n}\n\n// ── Singleton helpers ──────────────────────────────────────────────────────────\n\nlet defaultInstance: JsExpressionService | null = null;\n\nexport async function getJsExpressionService(logger?: Logger): Promise<JsExpressionService> {\n if (!defaultInstance) {\n defaultInstance = new JsExpressionService({}, logger);\n await defaultInstance.initialize();\n }\n return defaultInstance;\n}\n\nexport function createJsExpressionService(\n config?: JsExpressionServiceConfig,\n logger?: Logger,\n): JsExpressionService {\n return new JsExpressionService(config, logger);\n}\n\n/**\n * Dispose the global singleton (call during shutdown).\n */\nexport function disposeJsExpressionService(): void {\n if (defaultInstance) {\n defaultInstance.dispose();\n defaultInstance = null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAuBA,MAAM,uBAAuB,KAAK,OAAO;AACzC,MAAM,yBAAyB,OAAO;AAEtC,IAAa,sBAAb,MAAiC;CAC/B,SAA2C;CAC3C,UAAyC;CACzC;CACA;CAEA,YAAY,SAAoC,EAAE,EAAE,QAAiB;AACnE,OAAK,SAAS;AACd,OAAK,SAAS;GACZ,kBAAkB,OAAO,oBAAoB;GAC7C,mBAAmB,OAAO,qBAAqB;GAChD;;;;;;CAOH,MAAM,aAA4B;AAChC,MAAI,KAAK,QACP;AAGF,OAAK,SAAS,OAAA,GAAA,mBAAA,uBAA4B;AAC1C,OAAK,UAAU,KAAK,OAAO,YAAY;AACvC,OAAK,QAAQ,eAAe,KAAK,OAAO,iBAAiB;AACzD,OAAK,QAAQ,gBAAgB,KAAK,OAAO,kBAAkB;AAE3D,OAAK,QAAQ,MAAM,mCAAmC;GACpD,aAAa,KAAK,OAAO;GACzB,cAAc,KAAK,OAAO;GAC3B,CAAC;;;;;;;;;;;;;;;;;;;;CAqBJ,SAAS,YAAoB,SAA2C;AACtE,MAAI,CAAC,KAAK,QACR,OAAM,IAAI,MAAM,gEAAgE;EAGlF,MAAM,KAAK,KAAK,QAAQ,YAAY;AACpC,MAAI;GAGF,MAAM,cAAc,KAAK,UAAU,QAAQ;GAC3C,MAAM,cAAc,OAAO,KAAK,QAAQ;GAMxC,MAAM,WAAW,gBAAgB,WAAW,GAAG,WAAW,WAAW,KAAK;GAC1E,MAAM,cACJ,YAAY,SAAS,IAAI,UAAU,YAAY,KAAK,IAAI,CAAC,eAAe;GAC1E,MAAM,UAAU,yCAAyC,KAAK,UAAU,YAAY,CAAC,IAAI,cAAc,SAAS;GAEhH,MAAM,SAAS,GAAG,SAAS,QAAQ;AACnC,OAAI,OAAO,OAAO;IAChB,MAAM,WAAW,GAAG,KAAK,OAAO,MAAM;AACtC,WAAO,MAAM,SAAS;AAKtB,UAAM,IAAI,kBAHR,OAAO,aAAa,YAAY,aAAa,QAAQ,aAAa,WAC7D,SAAiC,UAClC,OAAO,SAAS,EACe,WAAW;;GAGlD,MAAM,QAAQ,GAAG,KAAK,OAAO,MAAM;AACnC,UAAO,MAAM,SAAS;AACtB,UAAO;YACC;AACR,MAAG,SAAS;;;;;;CAOhB,UAAgB;AACd,MAAI,KAAK,SAAS;AAChB,QAAK,QAAQ,SAAS;AACtB,QAAK,UAAU;;AAEjB,OAAK,SAAS;AACd,OAAK,QAAQ,MAAM,+BAA+B;;;;;;;;;;;;AAatD,SAAS,gBAAgB,MAAuB;CAG9C,MAAM,WAAW,KACd,QAAQ,aAAa,GAAG,CACxB,QAAQ,qBAAqB,GAAG,CAChC,QAAQ,sBAAsB,GAAG,CACjC,QAAQ,sBAAsB,GAAG,CACjC,QAAQ,sBAAsB,GAAG;AAEpC,QAAO,CAAC,aAAa,KAAK,SAAS;;;;;;AAOrC,IAAa,oBAAb,cAAuC,MAAM;CAC3C,YACE,SACA,YACA;AACA,QAAM,4BAA4B,UAAU;AAF5B,OAAA,aAAA;AAGhB,OAAK,OAAO;;;AAMhB,IAAI,kBAA8C;AAElD,eAAsB,uBAAuB,QAA+C;AAC1F,KAAI,CAAC,iBAAiB;AACpB,oBAAkB,IAAI,oBAAoB,EAAE,EAAE,OAAO;AACrD,QAAM,gBAAgB,YAAY;;AAEpC,QAAO;;AAGT,SAAgB,0BACd,QACA,QACqB;AACrB,QAAO,IAAI,oBAAoB,QAAQ,OAAO;;;;;AAMhD,SAAgB,6BAAmC;AACjD,KAAI,iBAAiB;AACnB,kBAAgB,SAAS;AACzB,oBAAkB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Logger } from "../../types/schemas-fresh/invect-config.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/services/templating/js-expression.service.d.ts
|
|
4
|
+
interface JsExpressionServiceConfig {
|
|
5
|
+
/** Memory limit for the QuickJS runtime in bytes. Default: 16MB */
|
|
6
|
+
memoryLimitBytes?: number;
|
|
7
|
+
/** Max stack size in bytes. Default: 1MB */
|
|
8
|
+
maxStackSizeBytes?: number;
|
|
9
|
+
}
|
|
10
|
+
declare class JsExpressionService {
|
|
11
|
+
private module;
|
|
12
|
+
private runtime;
|
|
13
|
+
private logger?;
|
|
14
|
+
private config;
|
|
15
|
+
constructor(config?: JsExpressionServiceConfig, logger?: Logger);
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the QuickJS WASM module and runtime.
|
|
18
|
+
* Must be called before evaluate(). Safe to call multiple times.
|
|
19
|
+
*/
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Evaluate JS code against a context object.
|
|
23
|
+
*
|
|
24
|
+
* User code is wrapped in a function body. Use `return` to produce a value.
|
|
25
|
+
* For one-liners without `return`, the service auto-prepends it.
|
|
26
|
+
*
|
|
27
|
+
* Context keys are available as local variables. `$input` is the full context.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* // Auto-return (one-liner):
|
|
31
|
+
* evaluate("users.filter(u => u.active)", { users: [...] })
|
|
32
|
+
*
|
|
33
|
+
* // Explicit return (multi-statement):
|
|
34
|
+
* evaluate(`
|
|
35
|
+
* const active = users.filter(u => u.active);
|
|
36
|
+
* return active.map(u => ({ ...u, rank: 1 }));
|
|
37
|
+
* `, { users: [...] })
|
|
38
|
+
*/
|
|
39
|
+
evaluate(expression: string, context: Record<string, unknown>): unknown;
|
|
40
|
+
/**
|
|
41
|
+
* Dispose the QuickJS runtime. Call on Invect shutdown.
|
|
42
|
+
*/
|
|
43
|
+
dispose(): void;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Custom error class for mapper expression errors.
|
|
47
|
+
* Includes the original expression for debugging.
|
|
48
|
+
*/
|
|
49
|
+
declare class JsExpressionError extends Error {
|
|
50
|
+
readonly expression: string;
|
|
51
|
+
constructor(message: string, expression: string);
|
|
52
|
+
}
|
|
53
|
+
declare function getJsExpressionService(logger?: Logger): Promise<JsExpressionService>;
|
|
54
|
+
declare function createJsExpressionService(config?: JsExpressionServiceConfig, logger?: Logger): JsExpressionService;
|
|
55
|
+
/**
|
|
56
|
+
* Dispose the global singleton (call during shutdown).
|
|
57
|
+
*/
|
|
58
|
+
declare function disposeJsExpressionService(): void;
|
|
59
|
+
//#endregion
|
|
60
|
+
export { JsExpressionError, JsExpressionService, JsExpressionServiceConfig, createJsExpressionService, disposeJsExpressionService, getJsExpressionService };
|
|
61
|
+
//# sourceMappingURL=js-expression.service.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-expression.service.d.cts","names":[],"sources":["../../../src/services/templating/js-expression.service.ts"],"mappings":";;;UAgBiB,yBAAA;;EAEf,gBAAA;EAFwC;EAIxC,iBAAA;AAAA;AAAA,cAMW,mBAAA;EAAA,QACH,MAAA;EAAA,QACA,OAAA;EAAA,QACA,MAAA;EAAA,QACA,MAAA;cAEI,MAAA,GAAQ,yBAAA,EAAgC,MAAA,GAAS,MAAA;EAYzC;;;;EAAd,UAAA,CAAA,GAAc,OAAA;EAhBZ;;;;;;;;;;;;;;;;;AAiIV;EA/EE,QAAA,CAAS,UAAA,UAAoB,OAAA,EAAS,MAAA;;;;EA2CtC,OAAA,CAAA;AAAA;;;;;cAoCW,iBAAA,SAA0B,KAAA;EAAA,SAGnB,UAAA;cADhB,OAAA,UACgB,UAAA;AAAA;AAAA,iBAWE,sBAAA,CAAuB,MAAA,GAAS,MAAA,GAAS,OAAA,CAAQ,mBAAA;AAAA,iBAQvD,yBAAA,CACd,MAAA,GAAS,yBAAA,EACT,MAAA,GAAS,MAAA,GACR,mBAAA;;;;iBAOa,0BAAA,CAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Logger } from "../../types/schemas-fresh/invect-config.js";
|
|
2
|
+
//#region src/services/templating/js-expression.service.d.ts
|
|
3
|
+
interface JsExpressionServiceConfig {
|
|
4
|
+
/** Memory limit for the QuickJS runtime in bytes. Default: 16MB */
|
|
5
|
+
memoryLimitBytes?: number;
|
|
6
|
+
/** Max stack size in bytes. Default: 1MB */
|
|
7
|
+
maxStackSizeBytes?: number;
|
|
8
|
+
}
|
|
9
|
+
declare class JsExpressionService {
|
|
10
|
+
private module;
|
|
11
|
+
private runtime;
|
|
12
|
+
private logger?;
|
|
13
|
+
private config;
|
|
14
|
+
constructor(config?: JsExpressionServiceConfig, logger?: Logger);
|
|
15
|
+
/**
|
|
16
|
+
* Initialize the QuickJS WASM module and runtime.
|
|
17
|
+
* Must be called before evaluate(). Safe to call multiple times.
|
|
18
|
+
*/
|
|
19
|
+
initialize(): Promise<void>;
|
|
20
|
+
/**
|
|
21
|
+
* Evaluate JS code against a context object.
|
|
22
|
+
*
|
|
23
|
+
* User code is wrapped in a function body. Use `return` to produce a value.
|
|
24
|
+
* For one-liners without `return`, the service auto-prepends it.
|
|
25
|
+
*
|
|
26
|
+
* Context keys are available as local variables. `$input` is the full context.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* // Auto-return (one-liner):
|
|
30
|
+
* evaluate("users.filter(u => u.active)", { users: [...] })
|
|
31
|
+
*
|
|
32
|
+
* // Explicit return (multi-statement):
|
|
33
|
+
* evaluate(`
|
|
34
|
+
* const active = users.filter(u => u.active);
|
|
35
|
+
* return active.map(u => ({ ...u, rank: 1 }));
|
|
36
|
+
* `, { users: [...] })
|
|
37
|
+
*/
|
|
38
|
+
evaluate(expression: string, context: Record<string, unknown>): unknown;
|
|
39
|
+
/**
|
|
40
|
+
* Dispose the QuickJS runtime. Call on Invect shutdown.
|
|
41
|
+
*/
|
|
42
|
+
dispose(): void;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Custom error class for mapper expression errors.
|
|
46
|
+
* Includes the original expression for debugging.
|
|
47
|
+
*/
|
|
48
|
+
declare class JsExpressionError extends Error {
|
|
49
|
+
readonly expression: string;
|
|
50
|
+
constructor(message: string, expression: string);
|
|
51
|
+
}
|
|
52
|
+
declare function getJsExpressionService(logger?: Logger): Promise<JsExpressionService>;
|
|
53
|
+
declare function createJsExpressionService(config?: JsExpressionServiceConfig, logger?: Logger): JsExpressionService;
|
|
54
|
+
/**
|
|
55
|
+
* Dispose the global singleton (call during shutdown).
|
|
56
|
+
*/
|
|
57
|
+
declare function disposeJsExpressionService(): void;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { JsExpressionError, JsExpressionService, JsExpressionServiceConfig, createJsExpressionService, disposeJsExpressionService, getJsExpressionService };
|
|
60
|
+
//# sourceMappingURL=js-expression.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-expression.service.d.ts","names":[],"sources":["../../../src/services/templating/js-expression.service.ts"],"mappings":";;UAgBiB,yBAAA;;EAEf,gBAAA;EAFe;EAIf,iBAAA;AAAA;AAAA,cAMW,mBAAA;EAAA,QACH,MAAA;EAAA,QACA,OAAA;EAAA,QACA,MAAA;EAAA,QACA,MAAA;cAEI,MAAA,GAAQ,yBAAA,EAAgC,MAAA,GAAS,MAAA;EAAA;;;;EAYvD,UAAA,CAAA,GAAc,OAAA;EAjBZ;;;;;;;;;;;;;;;;;;EAmDR,QAAA,CAAS,UAAA,UAAoB,OAAA,EAAS,MAAA;EA+ET;;;EApC7B,OAAA,CAAA;AAAA;;;;;cAoCW,iBAAA,SAA0B,KAAA;EAAA,SAGnB,UAAA;cADhB,OAAA,UACgB,UAAA;AAAA;AAAA,iBAWE,sBAAA,CAAuB,MAAA,GAAS,MAAA,GAAS,OAAA,CAAQ,mBAAA;AAAA,iBAQvD,yBAAA,CACd,MAAA,GAAS,yBAAA,EACT,MAAA,GAAS,MAAA,GACR,mBAAA;;;;iBAOa,0BAAA,CAAA"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { newQuickJSWASMModule } from "quickjs-emscripten";
|
|
2
|
+
//#region src/services/templating/js-expression.service.ts
|
|
3
|
+
/**
|
|
4
|
+
* JS Expression Service
|
|
5
|
+
*
|
|
6
|
+
* Provides sandboxed JavaScript evaluation for data mapper expressions.
|
|
7
|
+
* Uses QuickJS (via quickjs-emscripten) for safe, isolated execution.
|
|
8
|
+
*
|
|
9
|
+
* User code is wrapped in a function body — use `return` to produce a value.
|
|
10
|
+
* For single-expression one-liners (no `return` keyword), `return` is auto-prepended.
|
|
11
|
+
*
|
|
12
|
+
* Context keys from upstream nodes are injected as local variables.
|
|
13
|
+
* `$input` is always available as the full context object (escape hatch for name collisions).
|
|
14
|
+
*/
|
|
15
|
+
const DEFAULT_MEMORY_LIMIT = 16 * 1024 * 1024;
|
|
16
|
+
const DEFAULT_MAX_STACK_SIZE = 1024 * 1024;
|
|
17
|
+
var JsExpressionService = class {
|
|
18
|
+
module = null;
|
|
19
|
+
runtime = null;
|
|
20
|
+
logger;
|
|
21
|
+
config;
|
|
22
|
+
constructor(config = {}, logger) {
|
|
23
|
+
this.logger = logger;
|
|
24
|
+
this.config = {
|
|
25
|
+
memoryLimitBytes: config.memoryLimitBytes ?? DEFAULT_MEMORY_LIMIT,
|
|
26
|
+
maxStackSizeBytes: config.maxStackSizeBytes ?? DEFAULT_MAX_STACK_SIZE
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Initialize the QuickJS WASM module and runtime.
|
|
31
|
+
* Must be called before evaluate(). Safe to call multiple times.
|
|
32
|
+
*/
|
|
33
|
+
async initialize() {
|
|
34
|
+
if (this.runtime) return;
|
|
35
|
+
this.module = await newQuickJSWASMModule();
|
|
36
|
+
this.runtime = this.module.newRuntime();
|
|
37
|
+
this.runtime.setMemoryLimit(this.config.memoryLimitBytes);
|
|
38
|
+
this.runtime.setMaxStackSize(this.config.maxStackSizeBytes);
|
|
39
|
+
this.logger?.debug("JsExpressionService initialized", {
|
|
40
|
+
memoryLimit: this.config.memoryLimitBytes,
|
|
41
|
+
maxStackSize: this.config.maxStackSizeBytes
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Evaluate JS code against a context object.
|
|
46
|
+
*
|
|
47
|
+
* User code is wrapped in a function body. Use `return` to produce a value.
|
|
48
|
+
* For one-liners without `return`, the service auto-prepends it.
|
|
49
|
+
*
|
|
50
|
+
* Context keys are available as local variables. `$input` is the full context.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* // Auto-return (one-liner):
|
|
54
|
+
* evaluate("users.filter(u => u.active)", { users: [...] })
|
|
55
|
+
*
|
|
56
|
+
* // Explicit return (multi-statement):
|
|
57
|
+
* evaluate(`
|
|
58
|
+
* const active = users.filter(u => u.active);
|
|
59
|
+
* return active.map(u => ({ ...u, rank: 1 }));
|
|
60
|
+
* `, { users: [...] })
|
|
61
|
+
*/
|
|
62
|
+
evaluate(expression, context) {
|
|
63
|
+
if (!this.runtime) throw new Error("JsExpressionService not initialized. Call initialize() first.");
|
|
64
|
+
const vm = this.runtime.newContext();
|
|
65
|
+
try {
|
|
66
|
+
const contextJson = JSON.stringify(context);
|
|
67
|
+
const contextKeys = Object.keys(context);
|
|
68
|
+
const userBody = needsAutoReturn(expression) ? `return (${expression})` : expression;
|
|
69
|
+
const destructure = contextKeys.length > 0 ? `const {${contextKeys.join(",")}} = $input;` : "";
|
|
70
|
+
const wrapped = `(function(){const $input = JSON.parse(${JSON.stringify(contextJson)});${destructure}${userBody}})()`;
|
|
71
|
+
const result = vm.evalCode(wrapped);
|
|
72
|
+
if (result.error) {
|
|
73
|
+
const errorObj = vm.dump(result.error);
|
|
74
|
+
result.error.dispose();
|
|
75
|
+
throw new JsExpressionError(typeof errorObj === "object" && errorObj !== null && "message" in errorObj ? errorObj.message : String(errorObj), expression);
|
|
76
|
+
}
|
|
77
|
+
const value = vm.dump(result.value);
|
|
78
|
+
result.value.dispose();
|
|
79
|
+
return value;
|
|
80
|
+
} finally {
|
|
81
|
+
vm.dispose();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Dispose the QuickJS runtime. Call on Invect shutdown.
|
|
86
|
+
*/
|
|
87
|
+
dispose() {
|
|
88
|
+
if (this.runtime) {
|
|
89
|
+
this.runtime.dispose();
|
|
90
|
+
this.runtime = null;
|
|
91
|
+
}
|
|
92
|
+
this.module = null;
|
|
93
|
+
this.logger?.debug("JsExpressionService disposed");
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Determine if user code needs auto-return wrapping.
|
|
98
|
+
*
|
|
99
|
+
* Auto-return is applied when the code does NOT contain a `return` keyword
|
|
100
|
+
* (as a word boundary match, to avoid false positives in strings like "returns").
|
|
101
|
+
*
|
|
102
|
+
* This means one-liners like `users.filter(u => u.active)` work without typing `return`,
|
|
103
|
+
* while multi-statement code requires explicit `return`.
|
|
104
|
+
*/
|
|
105
|
+
function needsAutoReturn(code) {
|
|
106
|
+
const stripped = code.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "").replace(/'(?:[^'\\]|\\.)*'/g, "").replace(/"(?:[^"\\]|\\.)*"/g, "").replace(/`(?:[^`\\]|\\.)*`/g, "");
|
|
107
|
+
return !/\breturn\b/.test(stripped);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Custom error class for mapper expression errors.
|
|
111
|
+
* Includes the original expression for debugging.
|
|
112
|
+
*/
|
|
113
|
+
var JsExpressionError = class extends Error {
|
|
114
|
+
constructor(message, expression) {
|
|
115
|
+
super(`Mapper expression error: ${message}`);
|
|
116
|
+
this.expression = expression;
|
|
117
|
+
this.name = "JsExpressionError";
|
|
118
|
+
}
|
|
119
|
+
};
|
|
120
|
+
let defaultInstance = null;
|
|
121
|
+
async function getJsExpressionService(logger) {
|
|
122
|
+
if (!defaultInstance) {
|
|
123
|
+
defaultInstance = new JsExpressionService({}, logger);
|
|
124
|
+
await defaultInstance.initialize();
|
|
125
|
+
}
|
|
126
|
+
return defaultInstance;
|
|
127
|
+
}
|
|
128
|
+
function createJsExpressionService(config, logger) {
|
|
129
|
+
return new JsExpressionService(config, logger);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Dispose the global singleton (call during shutdown).
|
|
133
|
+
*/
|
|
134
|
+
function disposeJsExpressionService() {
|
|
135
|
+
if (defaultInstance) {
|
|
136
|
+
defaultInstance.dispose();
|
|
137
|
+
defaultInstance = null;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
//#endregion
|
|
141
|
+
export { JsExpressionError, JsExpressionService, createJsExpressionService, disposeJsExpressionService, getJsExpressionService };
|
|
142
|
+
|
|
143
|
+
//# sourceMappingURL=js-expression.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js-expression.service.js","names":[],"sources":["../../../src/services/templating/js-expression.service.ts"],"sourcesContent":["/**\n * JS Expression Service\n *\n * Provides sandboxed JavaScript evaluation for data mapper expressions.\n * Uses QuickJS (via quickjs-emscripten) for safe, isolated execution.\n *\n * User code is wrapped in a function body — use `return` to produce a value.\n * For single-expression one-liners (no `return` keyword), `return` is auto-prepended.\n *\n * Context keys from upstream nodes are injected as local variables.\n * `$input` is always available as the full context object (escape hatch for name collisions).\n */\nimport { newQuickJSWASMModule } from 'quickjs-emscripten';\nimport type { QuickJSWASMModule, QuickJSRuntime } from 'quickjs-emscripten';\nimport type { Logger } from 'src/types/schemas';\n\nexport interface JsExpressionServiceConfig {\n /** Memory limit for the QuickJS runtime in bytes. Default: 16MB */\n memoryLimitBytes?: number;\n /** Max stack size in bytes. Default: 1MB */\n maxStackSizeBytes?: number;\n}\n\nconst DEFAULT_MEMORY_LIMIT = 16 * 1024 * 1024; // 16 MB\nconst DEFAULT_MAX_STACK_SIZE = 1024 * 1024; // 1 MB\n\nexport class JsExpressionService {\n private module: QuickJSWASMModule | null = null;\n private runtime: QuickJSRuntime | null = null;\n private logger?: Logger;\n private config: Required<JsExpressionServiceConfig>;\n\n constructor(config: JsExpressionServiceConfig = {}, logger?: Logger) {\n this.logger = logger;\n this.config = {\n memoryLimitBytes: config.memoryLimitBytes ?? DEFAULT_MEMORY_LIMIT,\n maxStackSizeBytes: config.maxStackSizeBytes ?? DEFAULT_MAX_STACK_SIZE,\n };\n }\n\n /**\n * Initialize the QuickJS WASM module and runtime.\n * Must be called before evaluate(). Safe to call multiple times.\n */\n async initialize(): Promise<void> {\n if (this.runtime) {\n return;\n }\n\n this.module = await newQuickJSWASMModule();\n this.runtime = this.module.newRuntime();\n this.runtime.setMemoryLimit(this.config.memoryLimitBytes);\n this.runtime.setMaxStackSize(this.config.maxStackSizeBytes);\n\n this.logger?.debug('JsExpressionService initialized', {\n memoryLimit: this.config.memoryLimitBytes,\n maxStackSize: this.config.maxStackSizeBytes,\n });\n }\n\n /**\n * Evaluate JS code against a context object.\n *\n * User code is wrapped in a function body. Use `return` to produce a value.\n * For one-liners without `return`, the service auto-prepends it.\n *\n * Context keys are available as local variables. `$input` is the full context.\n *\n * @example\n * // Auto-return (one-liner):\n * evaluate(\"users.filter(u => u.active)\", { users: [...] })\n *\n * // Explicit return (multi-statement):\n * evaluate(`\n * const active = users.filter(u => u.active);\n * return active.map(u => ({ ...u, rank: 1 }));\n * `, { users: [...] })\n */\n evaluate(expression: string, context: Record<string, unknown>): unknown {\n if (!this.runtime) {\n throw new Error('JsExpressionService not initialized. Call initialize() first.');\n }\n\n const vm = this.runtime.newContext();\n try {\n // Inject context as a JSON-serialized global, then destructure into locals.\n // This avoids per-key handle creation and is faster for large contexts.\n const contextJson = JSON.stringify(context);\n const contextKeys = Object.keys(context);\n\n // Build the wrapped code:\n // 1. Parse the serialized context into $input\n // 2. Destructure context keys into local variables\n // 3. Execute user code in a function body (with auto-return for one-liners)\n const userBody = needsAutoReturn(expression) ? `return (${expression})` : expression;\n const destructure =\n contextKeys.length > 0 ? `const {${contextKeys.join(',')}} = $input;` : '';\n const wrapped = `(function(){const $input = JSON.parse(${JSON.stringify(contextJson)});${destructure}${userBody}})()`;\n\n const result = vm.evalCode(wrapped);\n if (result.error) {\n const errorObj = vm.dump(result.error);\n result.error.dispose();\n const message =\n typeof errorObj === 'object' && errorObj !== null && 'message' in errorObj\n ? (errorObj as { message: string }).message\n : String(errorObj);\n throw new JsExpressionError(message, expression);\n }\n\n const value = vm.dump(result.value);\n result.value.dispose();\n return value;\n } finally {\n vm.dispose();\n }\n }\n\n /**\n * Dispose the QuickJS runtime. Call on Invect shutdown.\n */\n dispose(): void {\n if (this.runtime) {\n this.runtime.dispose();\n this.runtime = null;\n }\n this.module = null;\n this.logger?.debug('JsExpressionService disposed');\n }\n}\n\n/**\n * Determine if user code needs auto-return wrapping.\n *\n * Auto-return is applied when the code does NOT contain a `return` keyword\n * (as a word boundary match, to avoid false positives in strings like \"returns\").\n *\n * This means one-liners like `users.filter(u => u.active)` work without typing `return`,\n * while multi-statement code requires explicit `return`.\n */\nfunction needsAutoReturn(code: string): boolean {\n // Strip string literals and comments to avoid false positives,\n // then check for `return` as a keyword boundary\n const stripped = code\n .replace(/\\/\\/.*$/gm, '') // line comments\n .replace(/\\/\\*[\\s\\S]*?\\*\\//g, '') // block comments\n .replace(/'(?:[^'\\\\]|\\\\.)*'/g, '') // single-quoted strings\n .replace(/\"(?:[^\"\\\\]|\\\\.)*\"/g, '') // double-quoted strings\n .replace(/`(?:[^`\\\\]|\\\\.)*`/g, ''); // template literals\n\n return !/\\breturn\\b/.test(stripped);\n}\n\n/**\n * Custom error class for mapper expression errors.\n * Includes the original expression for debugging.\n */\nexport class JsExpressionError extends Error {\n constructor(\n message: string,\n public readonly expression: string,\n ) {\n super(`Mapper expression error: ${message}`);\n this.name = 'JsExpressionError';\n }\n}\n\n// ── Singleton helpers ──────────────────────────────────────────────────────────\n\nlet defaultInstance: JsExpressionService | null = null;\n\nexport async function getJsExpressionService(logger?: Logger): Promise<JsExpressionService> {\n if (!defaultInstance) {\n defaultInstance = new JsExpressionService({}, logger);\n await defaultInstance.initialize();\n }\n return defaultInstance;\n}\n\nexport function createJsExpressionService(\n config?: JsExpressionServiceConfig,\n logger?: Logger,\n): JsExpressionService {\n return new JsExpressionService(config, logger);\n}\n\n/**\n * Dispose the global singleton (call during shutdown).\n */\nexport function disposeJsExpressionService(): void {\n if (defaultInstance) {\n defaultInstance.dispose();\n defaultInstance = null;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAuBA,MAAM,uBAAuB,KAAK,OAAO;AACzC,MAAM,yBAAyB,OAAO;AAEtC,IAAa,sBAAb,MAAiC;CAC/B,SAA2C;CAC3C,UAAyC;CACzC;CACA;CAEA,YAAY,SAAoC,EAAE,EAAE,QAAiB;AACnE,OAAK,SAAS;AACd,OAAK,SAAS;GACZ,kBAAkB,OAAO,oBAAoB;GAC7C,mBAAmB,OAAO,qBAAqB;GAChD;;;;;;CAOH,MAAM,aAA4B;AAChC,MAAI,KAAK,QACP;AAGF,OAAK,SAAS,MAAM,sBAAsB;AAC1C,OAAK,UAAU,KAAK,OAAO,YAAY;AACvC,OAAK,QAAQ,eAAe,KAAK,OAAO,iBAAiB;AACzD,OAAK,QAAQ,gBAAgB,KAAK,OAAO,kBAAkB;AAE3D,OAAK,QAAQ,MAAM,mCAAmC;GACpD,aAAa,KAAK,OAAO;GACzB,cAAc,KAAK,OAAO;GAC3B,CAAC;;;;;;;;;;;;;;;;;;;;CAqBJ,SAAS,YAAoB,SAA2C;AACtE,MAAI,CAAC,KAAK,QACR,OAAM,IAAI,MAAM,gEAAgE;EAGlF,MAAM,KAAK,KAAK,QAAQ,YAAY;AACpC,MAAI;GAGF,MAAM,cAAc,KAAK,UAAU,QAAQ;GAC3C,MAAM,cAAc,OAAO,KAAK,QAAQ;GAMxC,MAAM,WAAW,gBAAgB,WAAW,GAAG,WAAW,WAAW,KAAK;GAC1E,MAAM,cACJ,YAAY,SAAS,IAAI,UAAU,YAAY,KAAK,IAAI,CAAC,eAAe;GAC1E,MAAM,UAAU,yCAAyC,KAAK,UAAU,YAAY,CAAC,IAAI,cAAc,SAAS;GAEhH,MAAM,SAAS,GAAG,SAAS,QAAQ;AACnC,OAAI,OAAO,OAAO;IAChB,MAAM,WAAW,GAAG,KAAK,OAAO,MAAM;AACtC,WAAO,MAAM,SAAS;AAKtB,UAAM,IAAI,kBAHR,OAAO,aAAa,YAAY,aAAa,QAAQ,aAAa,WAC7D,SAAiC,UAClC,OAAO,SAAS,EACe,WAAW;;GAGlD,MAAM,QAAQ,GAAG,KAAK,OAAO,MAAM;AACnC,UAAO,MAAM,SAAS;AACtB,UAAO;YACC;AACR,MAAG,SAAS;;;;;;CAOhB,UAAgB;AACd,MAAI,KAAK,SAAS;AAChB,QAAK,QAAQ,SAAS;AACtB,QAAK,UAAU;;AAEjB,OAAK,SAAS;AACd,OAAK,QAAQ,MAAM,+BAA+B;;;;;;;;;;;;AAatD,SAAS,gBAAgB,MAAuB;CAG9C,MAAM,WAAW,KACd,QAAQ,aAAa,GAAG,CACxB,QAAQ,qBAAqB,GAAG,CAChC,QAAQ,sBAAsB,GAAG,CACjC,QAAQ,sBAAsB,GAAG,CACjC,QAAQ,sBAAsB,GAAG;AAEpC,QAAO,CAAC,aAAa,KAAK,SAAS;;;;;;AAOrC,IAAa,oBAAb,cAAuC,MAAM;CAC3C,YACE,SACA,YACA;AACA,QAAM,4BAA4B,UAAU;AAF5B,OAAA,aAAA;AAGhB,OAAK,OAAO;;;AAMhB,IAAI,kBAA8C;AAElD,eAAsB,uBAAuB,QAA+C;AAC1F,KAAI,CAAC,iBAAiB;AACpB,oBAAkB,IAAI,oBAAoB,EAAE,EAAE,OAAO;AACrD,QAAM,gBAAgB,YAAY;;AAEpC,QAAO;;AAGT,SAAgB,0BACd,QACA,QACqB;AACrB,QAAO,IAAI,oBAAoB,QAAQ,OAAO;;;;;AAMhD,SAAgB,6BAAmC;AACjD,KAAI,iBAAiB;AACnB,kBAAgB,SAAS;AACzB,oBAAkB"}
|