@mastra/factory 0.0.0-aggregate-trace-20261015182851
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.md +32 -0
- package/README.md +671 -0
- package/dist/auth.d.ts +201 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +623 -0
- package/dist/auth.js.map +1 -0
- package/dist/boards/define-board.d.ts +111 -0
- package/dist/boards/define-board.d.ts.map +1 -0
- package/dist/boards/define-board.js +156 -0
- package/dist/boards/define-board.js.map +1 -0
- package/dist/boards/index.d.ts +14 -0
- package/dist/boards/index.d.ts.map +1 -0
- package/dist/boards/index.js +21 -0
- package/dist/boards/index.js.map +1 -0
- package/dist/boards/registry.d.ts +16 -0
- package/dist/boards/registry.d.ts.map +1 -0
- package/dist/boards/registry.js +25 -0
- package/dist/boards/registry.js.map +1 -0
- package/dist/boards/relocate.d.ts +21 -0
- package/dist/boards/relocate.d.ts.map +1 -0
- package/dist/boards/relocate.js +58 -0
- package/dist/boards/relocate.js.map +1 -0
- package/dist/boards/review.d.ts +6 -0
- package/dist/boards/review.d.ts.map +1 -0
- package/dist/boards/review.js +104 -0
- package/dist/boards/review.js.map +1 -0
- package/dist/boards/semantics.d.ts +68 -0
- package/dist/boards/semantics.d.ts.map +1 -0
- package/dist/boards/semantics.js +119 -0
- package/dist/boards/semantics.js.map +1 -0
- package/dist/boards/transition-policy.d.ts +67 -0
- package/dist/boards/transition-policy.d.ts.map +1 -0
- package/dist/boards/transition-policy.js +36 -0
- package/dist/boards/transition-policy.js.map +1 -0
- package/dist/boards/work-tool-rules.d.ts +8 -0
- package/dist/boards/work-tool-rules.d.ts.map +1 -0
- package/dist/boards/work-tool-rules.js +20 -0
- package/dist/boards/work-tool-rules.js.map +1 -0
- package/dist/boards/work-transition-policy.d.ts +3 -0
- package/dist/boards/work-transition-policy.d.ts.map +1 -0
- package/dist/boards/work-transition-policy.js +46 -0
- package/dist/boards/work-transition-policy.js.map +1 -0
- package/dist/boards/work.d.ts +4 -0
- package/dist/boards/work.d.ts.map +1 -0
- package/dist/boards/work.js +222 -0
- package/dist/boards/work.js.map +1 -0
- package/dist/capabilities/connection.d.ts +9 -0
- package/dist/capabilities/connection.d.ts.map +1 -0
- package/dist/capabilities/connection.js +1 -0
- package/dist/capabilities/intake.d.ts +153 -0
- package/dist/capabilities/intake.d.ts.map +1 -0
- package/dist/capabilities/intake.js +1 -0
- package/dist/capabilities/version-control.d.ts +268 -0
- package/dist/capabilities/version-control.d.ts.map +1 -0
- package/dist/capabilities/version-control.js +1 -0
- package/dist/environment/build-runner.d.ts +72 -0
- package/dist/environment/build-runner.d.ts.map +1 -0
- package/dist/environment/build-runner.js +131 -0
- package/dist/environment/build-runner.js.map +1 -0
- package/dist/environment/build-schedule.d.ts +40 -0
- package/dist/environment/build-schedule.d.ts.map +1 -0
- package/dist/environment/build-schedule.js +94 -0
- package/dist/environment/build-schedule.js.map +1 -0
- package/dist/environment/build-workflow.d.ts +62 -0
- package/dist/environment/build-workflow.d.ts.map +1 -0
- package/dist/environment/build-workflow.js +149 -0
- package/dist/environment/build-workflow.js.map +1 -0
- package/dist/environment/build.d.ts +111 -0
- package/dist/environment/build.d.ts.map +1 -0
- package/dist/environment/build.js +344 -0
- package/dist/environment/build.js.map +1 -0
- package/dist/environment/heads.d.ts +36 -0
- package/dist/environment/heads.d.ts.map +1 -0
- package/dist/environment/heads.js +60 -0
- package/dist/environment/heads.js.map +1 -0
- package/dist/factory.d.ts +225 -0
- package/dist/factory.d.ts.map +1 -0
- package/dist/factory.js +1006 -0
- package/dist/factory.js.map +1 -0
- package/dist/feed-events.d.ts +13 -0
- package/dist/feed-events.d.ts.map +1 -0
- package/dist/feed-events.js +25 -0
- package/dist/feed-events.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/integrations/base.d.ts +302 -0
- package/dist/integrations/base.d.ts.map +1 -0
- package/dist/integrations/base.js +1 -0
- package/dist/integrations/github/acceptance-labels.d.ts +16 -0
- package/dist/integrations/github/acceptance-labels.d.ts.map +1 -0
- package/dist/integrations/github/acceptance-labels.js +55 -0
- package/dist/integrations/github/acceptance-labels.js.map +1 -0
- package/dist/integrations/github/app-identity.d.ts +43 -0
- package/dist/integrations/github/app-identity.d.ts.map +1 -0
- package/dist/integrations/github/app-identity.js +62 -0
- package/dist/integrations/github/app-identity.js.map +1 -0
- package/dist/integrations/github/commits.d.ts +40 -0
- package/dist/integrations/github/commits.d.ts.map +1 -0
- package/dist/integrations/github/commits.js +48 -0
- package/dist/integrations/github/commits.js.map +1 -0
- package/dist/integrations/github/config.d.ts +60 -0
- package/dist/integrations/github/config.d.ts.map +1 -0
- package/dist/integrations/github/config.js +42 -0
- package/dist/integrations/github/config.js.map +1 -0
- package/dist/integrations/github/default-rules.d.ts +218 -0
- package/dist/integrations/github/default-rules.d.ts.map +1 -0
- package/dist/integrations/github/default-rules.js +296 -0
- package/dist/integrations/github/default-rules.js.map +1 -0
- package/dist/integrations/github/integration.d.ts +270 -0
- package/dist/integrations/github/integration.d.ts.map +1 -0
- package/dist/integrations/github/integration.js +1375 -0
- package/dist/integrations/github/integration.js.map +1 -0
- package/dist/integrations/github/issue-reconciler.d.ts +28 -0
- package/dist/integrations/github/issue-reconciler.d.ts.map +1 -0
- package/dist/integrations/github/issue-reconciler.js +138 -0
- package/dist/integrations/github/issue-reconciler.js.map +1 -0
- package/dist/integrations/github/pat.d.ts +38 -0
- package/dist/integrations/github/pat.d.ts.map +1 -0
- package/dist/integrations/github/pat.js +59 -0
- package/dist/integrations/github/pat.js.map +1 -0
- package/dist/integrations/github/provenance.d.ts +34 -0
- package/dist/integrations/github/provenance.d.ts.map +1 -0
- package/dist/integrations/github/provenance.js +91 -0
- package/dist/integrations/github/provenance.js.map +1 -0
- package/dist/integrations/github/reconcile-worker.d.ts +45 -0
- package/dist/integrations/github/reconcile-worker.d.ts.map +1 -0
- package/dist/integrations/github/reconcile-worker.js +189 -0
- package/dist/integrations/github/reconcile-worker.js.map +1 -0
- package/dist/integrations/github/reconciliation-config.d.ts +3 -0
- package/dist/integrations/github/reconciliation-config.d.ts.map +1 -0
- package/dist/integrations/github/reconciliation-config.js +19 -0
- package/dist/integrations/github/reconciliation-config.js.map +1 -0
- package/dist/integrations/github/routes.d.ts +90 -0
- package/dist/integrations/github/routes.d.ts.map +1 -0
- package/dist/integrations/github/routes.js +1362 -0
- package/dist/integrations/github/routes.js.map +1 -0
- package/dist/integrations/github/rules.d.ts +173 -0
- package/dist/integrations/github/rules.d.ts.map +1 -0
- package/dist/integrations/github/rules.js +1021 -0
- package/dist/integrations/github/rules.js.map +1 -0
- package/dist/integrations/github/sandbox-release.d.ts +25 -0
- package/dist/integrations/github/sandbox-release.d.ts.map +1 -0
- package/dist/integrations/github/sandbox-release.js +38 -0
- package/dist/integrations/github/sandbox-release.js.map +1 -0
- package/dist/integrations/github/sandbox.d.ts +234 -0
- package/dist/integrations/github/sandbox.d.ts.map +1 -0
- package/dist/integrations/github/sandbox.js +947 -0
- package/dist/integrations/github/sandbox.js.map +1 -0
- package/dist/integrations/github/session-subscriptions.d.ts +28 -0
- package/dist/integrations/github/session-subscriptions.d.ts.map +1 -0
- package/dist/integrations/github/session-subscriptions.js +283 -0
- package/dist/integrations/github/session-subscriptions.js.map +1 -0
- package/dist/integrations/github/settle-or-abort.d.ts +7 -0
- package/dist/integrations/github/settle-or-abort.d.ts.map +1 -0
- package/dist/integrations/github/settle-or-abort.js +25 -0
- package/dist/integrations/github/settle-or-abort.js.map +1 -0
- package/dist/integrations/github/stale-reviews.d.ts +22 -0
- package/dist/integrations/github/stale-reviews.d.ts.map +1 -0
- package/dist/integrations/github/stale-reviews.js +70 -0
- package/dist/integrations/github/stale-reviews.js.map +1 -0
- package/dist/integrations/github/subscriptions.d.ts +54 -0
- package/dist/integrations/github/subscriptions.d.ts.map +1 -0
- package/dist/integrations/github/subscriptions.js +64 -0
- package/dist/integrations/github/subscriptions.js.map +1 -0
- package/dist/integrations/github/token-refresh.d.ts +31 -0
- package/dist/integrations/github/token-refresh.d.ts.map +1 -0
- package/dist/integrations/github/token-refresh.js +42 -0
- package/dist/integrations/github/token-refresh.js.map +1 -0
- package/dist/integrations/github/webhook.d.ts +139 -0
- package/dist/integrations/github/webhook.d.ts.map +1 -0
- package/dist/integrations/github/webhook.js +432 -0
- package/dist/integrations/github/webhook.js.map +1 -0
- package/dist/integrations/gitlab/agent-tools.d.ts +14 -0
- package/dist/integrations/gitlab/agent-tools.d.ts.map +1 -0
- package/dist/integrations/gitlab/agent-tools.js +42 -0
- package/dist/integrations/gitlab/agent-tools.js.map +1 -0
- package/dist/integrations/gitlab/api.d.ts +222 -0
- package/dist/integrations/gitlab/api.d.ts.map +1 -0
- package/dist/integrations/gitlab/api.js +274 -0
- package/dist/integrations/gitlab/api.js.map +1 -0
- package/dist/integrations/gitlab/default-rules.d.ts +125 -0
- package/dist/integrations/gitlab/default-rules.d.ts.map +1 -0
- package/dist/integrations/gitlab/default-rules.js +180 -0
- package/dist/integrations/gitlab/default-rules.js.map +1 -0
- package/dist/integrations/gitlab/integration.d.ts +138 -0
- package/dist/integrations/gitlab/integration.d.ts.map +1 -0
- package/dist/integrations/gitlab/integration.js +705 -0
- package/dist/integrations/gitlab/integration.js.map +1 -0
- package/dist/integrations/gitlab/issue-reconciler.d.ts +6 -0
- package/dist/integrations/gitlab/issue-reconciler.d.ts.map +1 -0
- package/dist/integrations/gitlab/issue-reconciler.js +123 -0
- package/dist/integrations/gitlab/issue-reconciler.js.map +1 -0
- package/dist/integrations/gitlab/merge-request-reconciler.d.ts +6 -0
- package/dist/integrations/gitlab/merge-request-reconciler.d.ts.map +1 -0
- package/dist/integrations/gitlab/merge-request-reconciler.js +267 -0
- package/dist/integrations/gitlab/merge-request-reconciler.js.map +1 -0
- package/dist/integrations/gitlab/reconciler.d.ts +5 -0
- package/dist/integrations/gitlab/reconciler.d.ts.map +1 -0
- package/dist/integrations/gitlab/reconciler.js +31 -0
- package/dist/integrations/gitlab/reconciler.js.map +1 -0
- package/dist/integrations/gitlab/reconciliation-config.d.ts +3 -0
- package/dist/integrations/gitlab/reconciliation-config.d.ts.map +1 -0
- package/dist/integrations/gitlab/reconciliation-config.js +17 -0
- package/dist/integrations/gitlab/reconciliation-config.js.map +1 -0
- package/dist/integrations/gitlab/routes.d.ts +20 -0
- package/dist/integrations/gitlab/routes.d.ts.map +1 -0
- package/dist/integrations/gitlab/routes.js +474 -0
- package/dist/integrations/gitlab/routes.js.map +1 -0
- package/dist/integrations/gitlab/rules.d.ts +35 -0
- package/dist/integrations/gitlab/rules.d.ts.map +1 -0
- package/dist/integrations/gitlab/rules.js +502 -0
- package/dist/integrations/gitlab/rules.js.map +1 -0
- package/dist/integrations/gitlab/session-subscriptions.d.ts +32 -0
- package/dist/integrations/gitlab/session-subscriptions.d.ts.map +1 -0
- package/dist/integrations/gitlab/session-subscriptions.js +193 -0
- package/dist/integrations/gitlab/session-subscriptions.js.map +1 -0
- package/dist/integrations/gitlab/subscriptions.d.ts +70 -0
- package/dist/integrations/gitlab/subscriptions.d.ts.map +1 -0
- package/dist/integrations/gitlab/subscriptions.js +76 -0
- package/dist/integrations/gitlab/subscriptions.js.map +1 -0
- package/dist/integrations/gitlab/version-control.d.ts +16 -0
- package/dist/integrations/gitlab/version-control.d.ts.map +1 -0
- package/dist/integrations/gitlab/version-control.js +621 -0
- package/dist/integrations/gitlab/version-control.js.map +1 -0
- package/dist/integrations/gitlab/webhook-dispatch.d.ts +75 -0
- package/dist/integrations/gitlab/webhook-dispatch.d.ts.map +1 -0
- package/dist/integrations/gitlab/webhook-dispatch.js +235 -0
- package/dist/integrations/gitlab/webhook-dispatch.js.map +1 -0
- package/dist/integrations/gitlab/webhook.d.ts +72 -0
- package/dist/integrations/gitlab/webhook.d.ts.map +1 -0
- package/dist/integrations/gitlab/webhook.js +201 -0
- package/dist/integrations/gitlab/webhook.js.map +1 -0
- package/dist/integrations/incidentio/agent-tools.d.ts +49 -0
- package/dist/integrations/incidentio/agent-tools.d.ts.map +1 -0
- package/dist/integrations/incidentio/agent-tools.js +90 -0
- package/dist/integrations/incidentio/agent-tools.js.map +1 -0
- package/dist/integrations/incidentio/api.d.ts +400 -0
- package/dist/integrations/incidentio/api.d.ts.map +1 -0
- package/dist/integrations/incidentio/api.js +192 -0
- package/dist/integrations/incidentio/api.js.map +1 -0
- package/dist/integrations/incidentio/claim.d.ts +8 -0
- package/dist/integrations/incidentio/claim.d.ts.map +1 -0
- package/dist/integrations/incidentio/claim.js +14 -0
- package/dist/integrations/incidentio/claim.js.map +1 -0
- package/dist/integrations/incidentio/default-rules.d.ts +46 -0
- package/dist/integrations/incidentio/default-rules.d.ts.map +1 -0
- package/dist/integrations/incidentio/default-rules.js +68 -0
- package/dist/integrations/incidentio/default-rules.js.map +1 -0
- package/dist/integrations/incidentio/intake.d.ts +10 -0
- package/dist/integrations/incidentio/intake.d.ts.map +1 -0
- package/dist/integrations/incidentio/intake.js +307 -0
- package/dist/integrations/incidentio/intake.js.map +1 -0
- package/dist/integrations/incidentio/integration.d.ts +63 -0
- package/dist/integrations/incidentio/integration.d.ts.map +1 -0
- package/dist/integrations/incidentio/integration.js +141 -0
- package/dist/integrations/incidentio/integration.js.map +1 -0
- package/dist/integrations/incidentio/issue-reconciler.d.ts +10 -0
- package/dist/integrations/incidentio/issue-reconciler.d.ts.map +1 -0
- package/dist/integrations/incidentio/issue-reconciler.js +75 -0
- package/dist/integrations/incidentio/issue-reconciler.js.map +1 -0
- package/dist/integrations/incidentio/reconciliation-config.d.ts +3 -0
- package/dist/integrations/incidentio/reconciliation-config.d.ts.map +1 -0
- package/dist/integrations/incidentio/reconciliation-config.js +17 -0
- package/dist/integrations/incidentio/reconciliation-config.js.map +1 -0
- package/dist/integrations/incidentio/routes.d.ts +76 -0
- package/dist/integrations/incidentio/routes.d.ts.map +1 -0
- package/dist/integrations/incidentio/routes.js +249 -0
- package/dist/integrations/incidentio/routes.js.map +1 -0
- package/dist/integrations/incidentio/rules.d.ts +55 -0
- package/dist/integrations/incidentio/rules.d.ts.map +1 -0
- package/dist/integrations/incidentio/rules.js +189 -0
- package/dist/integrations/incidentio/rules.js.map +1 -0
- package/dist/integrations/issue-reconcile-worker.d.ts +19 -0
- package/dist/integrations/issue-reconcile-worker.d.ts.map +1 -0
- package/dist/integrations/issue-reconcile-worker.js +97 -0
- package/dist/integrations/issue-reconcile-worker.js.map +1 -0
- package/dist/integrations/issue-reconciler.d.ts +51 -0
- package/dist/integrations/issue-reconciler.d.ts.map +1 -0
- package/dist/integrations/issue-reconciler.js +158 -0
- package/dist/integrations/issue-reconciler.js.map +1 -0
- package/dist/integrations/jira/adf.d.ts +26 -0
- package/dist/integrations/jira/adf.d.ts.map +1 -0
- package/dist/integrations/jira/adf.js +73 -0
- package/dist/integrations/jira/adf.js.map +1 -0
- package/dist/integrations/jira/agent-tools.d.ts +45 -0
- package/dist/integrations/jira/agent-tools.d.ts.map +1 -0
- package/dist/integrations/jira/agent-tools.js +87 -0
- package/dist/integrations/jira/agent-tools.js.map +1 -0
- package/dist/integrations/jira/api.d.ts +157 -0
- package/dist/integrations/jira/api.d.ts.map +1 -0
- package/dist/integrations/jira/api.js +141 -0
- package/dist/integrations/jira/api.js.map +1 -0
- package/dist/integrations/jira/claim.d.ts +9 -0
- package/dist/integrations/jira/claim.d.ts.map +1 -0
- package/dist/integrations/jira/claim.js +15 -0
- package/dist/integrations/jira/claim.js.map +1 -0
- package/dist/integrations/jira/default-rules.d.ts +47 -0
- package/dist/integrations/jira/default-rules.d.ts.map +1 -0
- package/dist/integrations/jira/default-rules.js +69 -0
- package/dist/integrations/jira/default-rules.js.map +1 -0
- package/dist/integrations/jira/integration.d.ts +114 -0
- package/dist/integrations/jira/integration.d.ts.map +1 -0
- package/dist/integrations/jira/integration.js +407 -0
- package/dist/integrations/jira/integration.js.map +1 -0
- package/dist/integrations/jira/issue-reconciler.d.ts +10 -0
- package/dist/integrations/jira/issue-reconciler.d.ts.map +1 -0
- package/dist/integrations/jira/issue-reconciler.js +70 -0
- package/dist/integrations/jira/issue-reconciler.js.map +1 -0
- package/dist/integrations/jira/reconciliation-config.d.ts +3 -0
- package/dist/integrations/jira/reconciliation-config.d.ts.map +1 -0
- package/dist/integrations/jira/reconciliation-config.js +17 -0
- package/dist/integrations/jira/reconciliation-config.js.map +1 -0
- package/dist/integrations/jira/routes.d.ts +54 -0
- package/dist/integrations/jira/routes.d.ts.map +1 -0
- package/dist/integrations/jira/routes.js +260 -0
- package/dist/integrations/jira/routes.js.map +1 -0
- package/dist/integrations/jira/rules.d.ts +57 -0
- package/dist/integrations/jira/rules.d.ts.map +1 -0
- package/dist/integrations/jira/rules.js +189 -0
- package/dist/integrations/jira/rules.js.map +1 -0
- package/dist/integrations/linear/agent-tools.d.ts +34 -0
- package/dist/integrations/linear/agent-tools.d.ts.map +1 -0
- package/dist/integrations/linear/agent-tools.js +87 -0
- package/dist/integrations/linear/agent-tools.js.map +1 -0
- package/dist/integrations/linear/claim.d.ts +8 -0
- package/dist/integrations/linear/claim.d.ts.map +1 -0
- package/dist/integrations/linear/claim.js +14 -0
- package/dist/integrations/linear/claim.js.map +1 -0
- package/dist/integrations/linear/default-rules.d.ts +46 -0
- package/dist/integrations/linear/default-rules.d.ts.map +1 -0
- package/dist/integrations/linear/default-rules.js +70 -0
- package/dist/integrations/linear/default-rules.js.map +1 -0
- package/dist/integrations/linear/integration.d.ts +260 -0
- package/dist/integrations/linear/integration.d.ts.map +1 -0
- package/dist/integrations/linear/integration.js +900 -0
- package/dist/integrations/linear/integration.js.map +1 -0
- package/dist/integrations/linear/issue-reconciler.d.ts +8 -0
- package/dist/integrations/linear/issue-reconciler.d.ts.map +1 -0
- package/dist/integrations/linear/issue-reconciler.js +73 -0
- package/dist/integrations/linear/issue-reconciler.js.map +1 -0
- package/dist/integrations/linear/reconciliation-config.d.ts +3 -0
- package/dist/integrations/linear/reconciliation-config.d.ts.map +1 -0
- package/dist/integrations/linear/reconciliation-config.js +21 -0
- package/dist/integrations/linear/reconciliation-config.js.map +1 -0
- package/dist/integrations/linear/routes.d.ts +81 -0
- package/dist/integrations/linear/routes.d.ts.map +1 -0
- package/dist/integrations/linear/routes.js +380 -0
- package/dist/integrations/linear/routes.js.map +1 -0
- package/dist/integrations/linear/rules.d.ts +54 -0
- package/dist/integrations/linear/rules.d.ts.map +1 -0
- package/dist/integrations/linear/rules.js +189 -0
- package/dist/integrations/linear/rules.js.map +1 -0
- package/dist/integrations/linear/storage.d.ts +65 -0
- package/dist/integrations/linear/storage.d.ts.map +1 -0
- package/dist/integrations/linear/storage.js +1 -0
- package/dist/integrations/platform/api-client.d.ts +26 -0
- package/dist/integrations/platform/api-client.d.ts.map +1 -0
- package/dist/integrations/platform/api-client.js +177 -0
- package/dist/integrations/platform/api-client.js.map +1 -0
- package/dist/integrations/platform/connect/routes.d.ts +39 -0
- package/dist/integrations/platform/connect/routes.d.ts.map +1 -0
- package/dist/integrations/platform/connect/routes.js +133 -0
- package/dist/integrations/platform/connect/routes.js.map +1 -0
- package/dist/integrations/platform/github/event-worker.d.ts +58 -0
- package/dist/integrations/platform/github/event-worker.d.ts.map +1 -0
- package/dist/integrations/platform/github/event-worker.js +449 -0
- package/dist/integrations/platform/github/event-worker.js.map +1 -0
- package/dist/integrations/platform/github/integration.d.ts +89 -0
- package/dist/integrations/platform/github/integration.d.ts.map +1 -0
- package/dist/integrations/platform/github/integration.js +1266 -0
- package/dist/integrations/platform/github/integration.js.map +1 -0
- package/dist/integrations/platform/gitlab/event-worker.d.ts +64 -0
- package/dist/integrations/platform/gitlab/event-worker.d.ts.map +1 -0
- package/dist/integrations/platform/gitlab/event-worker.js +305 -0
- package/dist/integrations/platform/gitlab/event-worker.js.map +1 -0
- package/dist/integrations/platform/gitlab/integration.d.ts +57 -0
- package/dist/integrations/platform/gitlab/integration.d.ts.map +1 -0
- package/dist/integrations/platform/gitlab/integration.js +113 -0
- package/dist/integrations/platform/gitlab/integration.js.map +1 -0
- package/dist/integrations/platform/incidentio/integration.d.ts +74 -0
- package/dist/integrations/platform/incidentio/integration.d.ts.map +1 -0
- package/dist/integrations/platform/incidentio/integration.js +406 -0
- package/dist/integrations/platform/incidentio/integration.js.map +1 -0
- package/dist/integrations/platform/jira/agent-tools.d.ts +36 -0
- package/dist/integrations/platform/jira/agent-tools.d.ts.map +1 -0
- package/dist/integrations/platform/jira/agent-tools.js +85 -0
- package/dist/integrations/platform/jira/agent-tools.js.map +1 -0
- package/dist/integrations/platform/jira/integration.d.ts +65 -0
- package/dist/integrations/platform/jira/integration.d.ts.map +1 -0
- package/dist/integrations/platform/jira/integration.js +546 -0
- package/dist/integrations/platform/jira/integration.js.map +1 -0
- package/dist/integrations/platform/jira/routes.d.ts +55 -0
- package/dist/integrations/platform/jira/routes.d.ts.map +1 -0
- package/dist/integrations/platform/jira/routes.js +274 -0
- package/dist/integrations/platform/jira/routes.js.map +1 -0
- package/dist/integrations/platform/linear/event-worker.d.ts +105 -0
- package/dist/integrations/platform/linear/event-worker.d.ts.map +1 -0
- package/dist/integrations/platform/linear/event-worker.js +379 -0
- package/dist/integrations/platform/linear/event-worker.js.map +1 -0
- package/dist/integrations/platform/linear/integration.d.ts +92 -0
- package/dist/integrations/platform/linear/integration.d.ts.map +1 -0
- package/dist/integrations/platform/linear/integration.js +754 -0
- package/dist/integrations/platform/linear/integration.js.map +1 -0
- package/dist/integrations/pull-request-head.d.ts +18 -0
- package/dist/integrations/pull-request-head.d.ts.map +1 -0
- package/dist/integrations/pull-request-head.js +45 -0
- package/dist/integrations/pull-request-head.js.map +1 -0
- package/dist/integrations/reconciliation-config.d.ts +3 -0
- package/dist/integrations/reconciliation-config.d.ts.map +1 -0
- package/dist/integrations/reconciliation-config.js +16 -0
- package/dist/integrations/reconciliation-config.js.map +1 -0
- package/dist/integrations/slack/connect-route.d.ts +46 -0
- package/dist/integrations/slack/connect-route.d.ts.map +1 -0
- package/dist/integrations/slack/connect-route.js +186 -0
- package/dist/integrations/slack/connect-route.js.map +1 -0
- package/dist/integrations/slack/emoji-shortcodes.generated.d.ts +8 -0
- package/dist/integrations/slack/emoji-shortcodes.generated.d.ts.map +1 -0
- package/dist/integrations/slack/emoji-shortcodes.generated.js +1985 -0
- package/dist/integrations/slack/emoji-shortcodes.generated.js.map +1 -0
- package/dist/integrations/slack/emoji.d.ts +3 -0
- package/dist/integrations/slack/emoji.d.ts.map +1 -0
- package/dist/integrations/slack/emoji.js +12 -0
- package/dist/integrations/slack/emoji.js.map +1 -0
- package/dist/integrations/slack/feed-publisher.d.ts +26 -0
- package/dist/integrations/slack/feed-publisher.d.ts.map +1 -0
- package/dist/integrations/slack/feed-publisher.js +44 -0
- package/dist/integrations/slack/feed-publisher.js.map +1 -0
- package/dist/integrations/slack/integration.d.ts +80 -0
- package/dist/integrations/slack/integration.d.ts.map +1 -0
- package/dist/integrations/slack/integration.js +93 -0
- package/dist/integrations/slack/integration.js.map +1 -0
- package/dist/integrations/slack/slack.d.ts +205 -0
- package/dist/integrations/slack/slack.d.ts.map +1 -0
- package/dist/integrations/slack/slack.js +653 -0
- package/dist/integrations/slack/slack.js.map +1 -0
- package/dist/integrations/subscription-session.d.ts +49 -0
- package/dist/integrations/subscription-session.d.ts.map +1 -0
- package/dist/integrations/subscription-session.js +103 -0
- package/dist/integrations/subscription-session.js.map +1 -0
- package/dist/integrations/workos/integration.d.ts +39 -0
- package/dist/integrations/workos/integration.d.ts.map +1 -0
- package/dist/integrations/workos/integration.js +91 -0
- package/dist/integrations/workos/integration.js.map +1 -0
- package/dist/packages/_internals/workspace/dist/index.js +48 -0
- package/dist/packages/_internals/workspace/dist/index.js.map +1 -0
- package/dist/platform-auth-host.d.ts +4 -0
- package/dist/platform-auth-host.d.ts.map +1 -0
- package/dist/platform-auth-host.js +18 -0
- package/dist/platform-auth-host.js.map +1 -0
- package/dist/review-verdict.d.ts +6 -0
- package/dist/review-verdict.d.ts.map +1 -0
- package/dist/review-verdict.js +14 -0
- package/dist/review-verdict.js.map +1 -0
- package/dist/routes/attention-activity.d.ts +23 -0
- package/dist/routes/attention-activity.d.ts.map +1 -0
- package/dist/routes/attention-activity.js +152 -0
- package/dist/routes/attention-activity.js.map +1 -0
- package/dist/routes/attention-parked.d.ts +22 -0
- package/dist/routes/attention-parked.d.ts.map +1 -0
- package/dist/routes/attention-parked.js +136 -0
- package/dist/routes/attention-parked.js.map +1 -0
- package/dist/routes/attention-proposed.d.ts +3 -0
- package/dist/routes/attention-proposed.d.ts.map +1 -0
- package/dist/routes/attention-proposed.js +21 -0
- package/dist/routes/attention-proposed.js.map +1 -0
- package/dist/routes/attention-providers.d.ts +159 -0
- package/dist/routes/attention-providers.d.ts.map +1 -0
- package/dist/routes/attention-providers.js +524 -0
- package/dist/routes/attention-providers.js.map +1 -0
- package/dist/routes/attention.d.ts +23 -0
- package/dist/routes/attention.d.ts.map +1 -0
- package/dist/routes/attention.js +219 -0
- package/dist/routes/attention.js.map +1 -0
- package/dist/routes/automation-runs.d.ts +37 -0
- package/dist/routes/automation-runs.d.ts.map +1 -0
- package/dist/routes/automation-runs.js +196 -0
- package/dist/routes/automation-runs.js.map +1 -0
- package/dist/routes/config.d.ts +238 -0
- package/dist/routes/config.d.ts.map +1 -0
- package/dist/routes/config.js +1011 -0
- package/dist/routes/config.js.map +1 -0
- package/dist/routes/contracts.d.ts +1080 -0
- package/dist/routes/contracts.d.ts.map +1 -0
- package/dist/routes/contracts.js +673 -0
- package/dist/routes/contracts.js.map +1 -0
- package/dist/routes/custom-provider-source.d.ts +52 -0
- package/dist/routes/custom-provider-source.d.ts.map +1 -0
- package/dist/routes/custom-provider-source.js +124 -0
- package/dist/routes/custom-provider-source.js.map +1 -0
- package/dist/routes/fs.d.ts +189 -0
- package/dist/routes/fs.d.ts.map +1 -0
- package/dist/routes/fs.js +916 -0
- package/dist/routes/fs.js.map +1 -0
- package/dist/routes/intake.d.ts +64 -0
- package/dist/routes/intake.d.ts.map +1 -0
- package/dist/routes/intake.js +627 -0
- package/dist/routes/intake.js.map +1 -0
- package/dist/routes/knowledge.d.ts +247 -0
- package/dist/routes/knowledge.d.ts.map +1 -0
- package/dist/routes/knowledge.js +1128 -0
- package/dist/routes/knowledge.js.map +1 -0
- package/dist/routes/oauth.d.ts +43 -0
- package/dist/routes/oauth.d.ts.map +1 -0
- package/dist/routes/oauth.js +477 -0
- package/dist/routes/oauth.js.map +1 -0
- package/dist/routes/projects.d.ts +68 -0
- package/dist/routes/projects.d.ts.map +1 -0
- package/dist/routes/projects.js +919 -0
- package/dist/routes/projects.js.map +1 -0
- package/dist/routes/provider-credentials.d.ts +82 -0
- package/dist/routes/provider-credentials.d.ts.map +1 -0
- package/dist/routes/provider-credentials.js +80 -0
- package/dist/routes/provider-credentials.js.map +1 -0
- package/dist/routes/route.d.ts +48 -0
- package/dist/routes/route.d.ts.map +1 -0
- package/dist/routes/route.js +15 -0
- package/dist/routes/route.js.map +1 -0
- package/dist/routes/skills.d.ts +30 -0
- package/dist/routes/skills.d.ts.map +1 -0
- package/dist/routes/skills.js +198 -0
- package/dist/routes/skills.js.map +1 -0
- package/dist/routes/source-control-sessions.d.ts +22 -0
- package/dist/routes/source-control-sessions.d.ts.map +1 -0
- package/dist/routes/source-control-sessions.js +356 -0
- package/dist/routes/source-control-sessions.js.map +1 -0
- package/dist/routes/source-control-settings.d.ts +10 -0
- package/dist/routes/source-control-settings.d.ts.map +1 -0
- package/dist/routes/source-control-settings.js +87 -0
- package/dist/routes/source-control-settings.js.map +1 -0
- package/dist/routes/supervisor.d.ts +25 -0
- package/dist/routes/supervisor.d.ts.map +1 -0
- package/dist/routes/supervisor.js +35 -0
- package/dist/routes/supervisor.js.map +1 -0
- package/dist/routes/surface.d.ts +133 -0
- package/dist/routes/surface.d.ts.map +1 -0
- package/dist/routes/surface.js +518 -0
- package/dist/routes/surface.js.map +1 -0
- package/dist/routes/telemetry.d.ts +13 -0
- package/dist/routes/telemetry.d.ts.map +1 -0
- package/dist/routes/telemetry.js +60 -0
- package/dist/routes/telemetry.js.map +1 -0
- package/dist/routes/tenant-credentials.d.ts +87 -0
- package/dist/routes/tenant-credentials.d.ts.map +1 -0
- package/dist/routes/tenant-credentials.js +219 -0
- package/dist/routes/tenant-credentials.js.map +1 -0
- package/dist/routes/work-items.d.ts +49 -0
- package/dist/routes/work-items.d.ts.map +1 -0
- package/dist/routes/work-items.js +633 -0
- package/dist/routes/work-items.js.map +1 -0
- package/dist/rules/binding-context.d.ts +59 -0
- package/dist/rules/binding-context.d.ts.map +1 -0
- package/dist/rules/binding-context.js +134 -0
- package/dist/rules/binding-context.js.map +1 -0
- package/dist/rules/decision-applicability.d.ts +32 -0
- package/dist/rules/decision-applicability.d.ts.map +1 -0
- package/dist/rules/decision-applicability.js +56 -0
- package/dist/rules/decision-applicability.js.map +1 -0
- package/dist/rules/dispatch-errors.d.ts +13 -0
- package/dist/rules/dispatch-errors.d.ts.map +1 -0
- package/dist/rules/dispatch-errors.js +105 -0
- package/dist/rules/dispatch-errors.js.map +1 -0
- package/dist/rules/dispatcher.d.ts +86 -0
- package/dist/rules/dispatcher.d.ts.map +1 -0
- package/dist/rules/dispatcher.js +1159 -0
- package/dist/rules/dispatcher.js.map +1 -0
- package/dist/rules/event-rules.d.ts +23 -0
- package/dist/rules/event-rules.d.ts.map +1 -0
- package/dist/rules/event-rules.js +46 -0
- package/dist/rules/event-rules.js.map +1 -0
- package/dist/rules/index.d.ts +6 -0
- package/dist/rules/index.d.ts.map +1 -0
- package/dist/rules/index.js +4 -0
- package/dist/rules/processor.d.ts +90 -0
- package/dist/rules/processor.d.ts.map +1 -0
- package/dist/rules/processor.js +486 -0
- package/dist/rules/processor.js.map +1 -0
- package/dist/rules/resolve.d.ts +15 -0
- package/dist/rules/resolve.d.ts.map +1 -0
- package/dist/rules/resolve.js +23 -0
- package/dist/rules/resolve.js.map +1 -0
- package/dist/rules/review-source-tool.d.ts +105 -0
- package/dist/rules/review-source-tool.d.ts.map +1 -0
- package/dist/rules/review-source-tool.js +109 -0
- package/dist/rules/review-source-tool.js.map +1 -0
- package/dist/rules/start-coordinator.d.ts +64 -0
- package/dist/rules/start-coordinator.d.ts.map +1 -0
- package/dist/rules/start-coordinator.js +246 -0
- package/dist/rules/start-coordinator.js.map +1 -0
- package/dist/rules/terminal-cleanup.d.ts +38 -0
- package/dist/rules/terminal-cleanup.d.ts.map +1 -0
- package/dist/rules/terminal-cleanup.js +68 -0
- package/dist/rules/terminal-cleanup.js.map +1 -0
- package/dist/rules/tools.d.ts +15 -0
- package/dist/rules/tools.d.ts.map +1 -0
- package/dist/rules/tools.js +185 -0
- package/dist/rules/tools.js.map +1 -0
- package/dist/rules/transition-service.d.ts +93 -0
- package/dist/rules/transition-service.d.ts.map +1 -0
- package/dist/rules/transition-service.js +402 -0
- package/dist/rules/transition-service.js.map +1 -0
- package/dist/rules/types.d.ts +553 -0
- package/dist/rules/types.d.ts.map +1 -0
- package/dist/rules/types.js +154 -0
- package/dist/rules/types.js.map +1 -0
- package/dist/rules/validation.d.ts +21 -0
- package/dist/rules/validation.d.ts.map +1 -0
- package/dist/rules/validation.js +327 -0
- package/dist/rules/validation.js.map +1 -0
- package/dist/sandbox/callback-factory-sandbox.d.ts +15 -0
- package/dist/sandbox/callback-factory-sandbox.d.ts.map +1 -0
- package/dist/sandbox/callback-factory-sandbox.js +22 -0
- package/dist/sandbox/callback-factory-sandbox.js.map +1 -0
- package/dist/sandbox/git-ref.d.ts +7 -0
- package/dist/sandbox/git-ref.d.ts.map +1 -0
- package/dist/sandbox/git-ref.js +15 -0
- package/dist/sandbox/git-ref.js.map +1 -0
- package/dist/sandbox/local-factory-sandbox.d.ts +20 -0
- package/dist/sandbox/local-factory-sandbox.d.ts.map +1 -0
- package/dist/sandbox/local-factory-sandbox.js +27 -0
- package/dist/sandbox/local-factory-sandbox.js.map +1 -0
- package/dist/sandbox/materialization.d.ts +41 -0
- package/dist/sandbox/materialization.d.ts.map +1 -0
- package/dist/sandbox/materialization.js +18 -0
- package/dist/sandbox/materialization.js.map +1 -0
- package/dist/sandbox/session-retirement.d.ts +45 -0
- package/dist/sandbox/session-retirement.d.ts.map +1 -0
- package/dist/sandbox/session-retirement.js +153 -0
- package/dist/sandbox/session-retirement.js.map +1 -0
- package/dist/sandbox/session-sandbox.d.ts +185 -0
- package/dist/sandbox/session-sandbox.d.ts.map +1 -0
- package/dist/sandbox/session-sandbox.js +248 -0
- package/dist/sandbox/session-sandbox.js.map +1 -0
- package/dist/sandbox/workdir.d.ts +45 -0
- package/dist/sandbox/workdir.d.ts.map +1 -0
- package/dist/sandbox/workdir.js +64 -0
- package/dist/sandbox/workdir.js.map +1 -0
- package/dist/secret-encryption.d.ts +25 -0
- package/dist/secret-encryption.d.ts.map +1 -0
- package/dist/secret-encryption.js +107 -0
- package/dist/secret-encryption.js.map +1 -0
- package/dist/server-error.d.ts +12 -0
- package/dist/server-error.d.ts.map +1 -0
- package/dist/server-error.js +16 -0
- package/dist/server-error.js.map +1 -0
- package/dist/session/credential-policy.d.ts +20 -0
- package/dist/session/credential-policy.d.ts.map +1 -0
- package/dist/session/credential-policy.js +70 -0
- package/dist/session/credential-policy.js.map +1 -0
- package/dist/session/default-model-hydration.d.ts +46 -0
- package/dist/session/default-model-hydration.d.ts.map +1 -0
- package/dist/session/default-model-hydration.js +85 -0
- package/dist/session/default-model-hydration.js.map +1 -0
- package/dist/session/environment-repositories.d.ts +31 -0
- package/dist/session/environment-repositories.d.ts.map +1 -0
- package/dist/session/environment-repositories.js +89 -0
- package/dist/session/environment-repositories.js.map +1 -0
- package/dist/session/environment-state-processor.d.ts +59 -0
- package/dist/session/environment-state-processor.d.ts.map +1 -0
- package/dist/session/environment-state-processor.js +105 -0
- package/dist/session/environment-state-processor.js.map +1 -0
- package/dist/session/factory-session.d.ts +159 -0
- package/dist/session/factory-session.d.ts.map +1 -0
- package/dist/session/factory-session.js +226 -0
- package/dist/session/factory-session.js.map +1 -0
- package/dist/session/filesystem-capture.d.ts +50 -0
- package/dist/session/filesystem-capture.d.ts.map +1 -0
- package/dist/session/filesystem-capture.js +231 -0
- package/dist/session/filesystem-capture.js.map +1 -0
- package/dist/session/first-exec-capture.d.ts +38 -0
- package/dist/session/first-exec-capture.d.ts.map +1 -0
- package/dist/session/first-exec-capture.js +91 -0
- package/dist/session/first-exec-capture.js.map +1 -0
- package/dist/session/first-message-capture.d.ts +33 -0
- package/dist/session/first-message-capture.d.ts.map +1 -0
- package/dist/session/first-message-capture.js +35 -0
- package/dist/session/first-message-capture.js.map +1 -0
- package/dist/session/live-sessions.d.ts +63 -0
- package/dist/session/live-sessions.d.ts.map +1 -0
- package/dist/session/live-sessions.js +90 -0
- package/dist/session/live-sessions.js.map +1 -0
- package/dist/session/memory-settings-hydration.d.ts +36 -0
- package/dist/session/memory-settings-hydration.d.ts.map +1 -0
- package/dist/session/memory-settings-hydration.js +43 -0
- package/dist/session/memory-settings-hydration.js.map +1 -0
- package/dist/session/org-seed.d.ts +67 -0
- package/dist/session/org-seed.d.ts.map +1 -0
- package/dist/session/org-seed.js +53 -0
- package/dist/session/org-seed.js.map +1 -0
- package/dist/session/run-audit.d.ts +54 -0
- package/dist/session/run-audit.d.ts.map +1 -0
- package/dist/session/run-audit.js +124 -0
- package/dist/session/run-audit.js.map +1 -0
- package/dist/session/session-title.d.ts +7 -0
- package/dist/session/session-title.d.ts.map +1 -0
- package/dist/session/session-title.js +14 -0
- package/dist/session/session-title.js.map +1 -0
- package/dist/session/shell-commands.d.ts +5 -0
- package/dist/session/shell-commands.d.ts.map +1 -0
- package/dist/session/shell-commands.js +25 -0
- package/dist/session/shell-commands.js.map +1 -0
- package/dist/session/source-control-tools.d.ts +25 -0
- package/dist/session/source-control-tools.d.ts.map +1 -0
- package/dist/session/source-control-tools.js +594 -0
- package/dist/session/source-control-tools.js.map +1 -0
- package/dist/session/thread-title-mirror.d.ts +35 -0
- package/dist/session/thread-title-mirror.d.ts.map +1 -0
- package/dist/session/thread-title-mirror.js +51 -0
- package/dist/session/thread-title-mirror.js.map +1 -0
- package/dist/session/work-item-repository.d.ts +21 -0
- package/dist/session/work-item-repository.d.ts.map +1 -0
- package/dist/session/work-item-repository.js +113 -0
- package/dist/session/work-item-repository.js.map +1 -0
- package/dist/skills/catalog.d.ts +14 -0
- package/dist/skills/catalog.d.ts.map +1 -0
- package/dist/skills/catalog.js +62 -0
- package/dist/skills/catalog.js.map +1 -0
- package/dist/skills/service.d.ts +70 -0
- package/dist/skills/service.d.ts.map +1 -0
- package/dist/skills/service.js +88 -0
- package/dist/skills/service.js.map +1 -0
- package/dist/spa-static.d.ts +33 -0
- package/dist/spa-static.d.ts.map +1 -0
- package/dist/spa-static.js +104 -0
- package/dist/spa-static.js.map +1 -0
- package/dist/state-signing.d.ts +59 -0
- package/dist/state-signing.d.ts.map +1 -0
- package/dist/state-signing.js +83 -0
- package/dist/state-signing.js.map +1 -0
- package/dist/storage/domains/audit/actions.d.ts +24 -0
- package/dist/storage/domains/audit/actions.d.ts.map +1 -0
- package/dist/storage/domains/audit/actions.js +69 -0
- package/dist/storage/domains/audit/actions.js.map +1 -0
- package/dist/storage/domains/audit/actors.d.ts +5 -0
- package/dist/storage/domains/audit/actors.d.ts.map +1 -0
- package/dist/storage/domains/audit/actors.js +25 -0
- package/dist/storage/domains/audit/actors.js.map +1 -0
- package/dist/storage/domains/audit/agent-audit.d.ts +30 -0
- package/dist/storage/domains/audit/agent-audit.d.ts.map +1 -0
- package/dist/storage/domains/audit/agent-audit.js +93 -0
- package/dist/storage/domains/audit/agent-audit.js.map +1 -0
- package/dist/storage/domains/audit/base.d.ts +133 -0
- package/dist/storage/domains/audit/base.d.ts.map +1 -0
- package/dist/storage/domains/audit/base.js +206 -0
- package/dist/storage/domains/audit/base.js.map +1 -0
- package/dist/storage/domains/audit/domain.d.ts +79 -0
- package/dist/storage/domains/audit/domain.d.ts.map +1 -0
- package/dist/storage/domains/audit/domain.js +248 -0
- package/dist/storage/domains/audit/domain.js.map +1 -0
- package/dist/storage/domains/audit/wire.d.ts +24 -0
- package/dist/storage/domains/audit/wire.d.ts.map +1 -0
- package/dist/storage/domains/audit/wire.js +16 -0
- package/dist/storage/domains/audit/wire.js.map +1 -0
- package/dist/storage/domains/channel-identity/base.d.ts +100 -0
- package/dist/storage/domains/channel-identity/base.d.ts.map +1 -0
- package/dist/storage/domains/channel-identity/base.js +164 -0
- package/dist/storage/domains/channel-identity/base.js.map +1 -0
- package/dist/storage/domains/comments/activity.d.ts +40 -0
- package/dist/storage/domains/comments/activity.d.ts.map +1 -0
- package/dist/storage/domains/comments/activity.js +94 -0
- package/dist/storage/domains/comments/activity.js.map +1 -0
- package/dist/storage/domains/comments/actor.d.ts +51 -0
- package/dist/storage/domains/comments/actor.d.ts.map +1 -0
- package/dist/storage/domains/comments/actor.js +38 -0
- package/dist/storage/domains/comments/actor.js.map +1 -0
- package/dist/storage/domains/comments/base.d.ts +245 -0
- package/dist/storage/domains/comments/base.d.ts.map +1 -0
- package/dist/storage/domains/comments/base.js +533 -0
- package/dist/storage/domains/comments/base.js.map +1 -0
- package/dist/storage/domains/comments/domain.d.ts +135 -0
- package/dist/storage/domains/comments/domain.d.ts.map +1 -0
- package/dist/storage/domains/comments/domain.js +285 -0
- package/dist/storage/domains/comments/domain.js.map +1 -0
- package/dist/storage/domains/comments/feed-context.d.ts +22 -0
- package/dist/storage/domains/comments/feed-context.d.ts.map +1 -0
- package/dist/storage/domains/comments/feed-context.js +89 -0
- package/dist/storage/domains/comments/feed-context.js.map +1 -0
- package/dist/storage/domains/comments/feed-sync.d.ts +21 -0
- package/dist/storage/domains/comments/feed-sync.d.ts.map +1 -0
- package/dist/storage/domains/comments/feed-sync.js +1 -0
- package/dist/storage/domains/comments/parse.d.ts +23 -0
- package/dist/storage/domains/comments/parse.d.ts.map +1 -0
- package/dist/storage/domains/comments/parse.js +90 -0
- package/dist/storage/domains/comments/parse.js.map +1 -0
- package/dist/storage/domains/comments/routes.d.ts +24 -0
- package/dist/storage/domains/comments/routes.d.ts.map +1 -0
- package/dist/storage/domains/comments/routes.js +302 -0
- package/dist/storage/domains/comments/routes.js.map +1 -0
- package/dist/storage/domains/comments/schema.d.ts +5 -0
- package/dist/storage/domains/comments/schema.d.ts.map +1 -0
- package/dist/storage/domains/comments/schema.js +179 -0
- package/dist/storage/domains/comments/schema.js.map +1 -0
- package/dist/storage/domains/comments/wire.d.ts +40 -0
- package/dist/storage/domains/comments/wire.d.ts.map +1 -0
- package/dist/storage/domains/comments/wire.js +37 -0
- package/dist/storage/domains/comments/wire.js.map +1 -0
- package/dist/storage/domains/credentials/base.d.ts +136 -0
- package/dist/storage/domains/credentials/base.d.ts.map +1 -0
- package/dist/storage/domains/credentials/base.js +294 -0
- package/dist/storage/domains/credentials/base.js.map +1 -0
- package/dist/storage/domains/custom-providers/base.d.ts +59 -0
- package/dist/storage/domains/custom-providers/base.d.ts.map +1 -0
- package/dist/storage/domains/custom-providers/base.js +176 -0
- package/dist/storage/domains/custom-providers/base.js.map +1 -0
- package/dist/storage/domains/filesystem/base.d.ts +26 -0
- package/dist/storage/domains/filesystem/base.d.ts.map +1 -0
- package/dist/storage/domains/filesystem/base.js +74 -0
- package/dist/storage/domains/filesystem/base.js.map +1 -0
- package/dist/storage/domains/intake/base.d.ts +150 -0
- package/dist/storage/domains/intake/base.d.ts.map +1 -0
- package/dist/storage/domains/intake/base.js +431 -0
- package/dist/storage/domains/intake/base.js.map +1 -0
- package/dist/storage/domains/integrations/base.d.ts +128 -0
- package/dist/storage/domains/integrations/base.d.ts.map +1 -0
- package/dist/storage/domains/integrations/base.js +333 -0
- package/dist/storage/domains/integrations/base.js.map +1 -0
- package/dist/storage/domains/memory-settings/base.d.ts +58 -0
- package/dist/storage/domains/memory-settings/base.d.ts.map +1 -0
- package/dist/storage/domains/memory-settings/base.js +129 -0
- package/dist/storage/domains/memory-settings/base.js.map +1 -0
- package/dist/storage/domains/model-defaults/base.d.ts +29 -0
- package/dist/storage/domains/model-defaults/base.d.ts.map +1 -0
- package/dist/storage/domains/model-defaults/base.js +79 -0
- package/dist/storage/domains/model-defaults/base.js.map +1 -0
- package/dist/storage/domains/projects/base.d.ts +191 -0
- package/dist/storage/domains/projects/base.d.ts.map +1 -0
- package/dist/storage/domains/projects/base.js +352 -0
- package/dist/storage/domains/projects/base.js.map +1 -0
- package/dist/storage/domains/queue-health/base.d.ts +52 -0
- package/dist/storage/domains/queue-health/base.d.ts.map +1 -0
- package/dist/storage/domains/queue-health/base.js +122 -0
- package/dist/storage/domains/queue-health/base.js.map +1 -0
- package/dist/storage/domains/source-control/base.d.ts +422 -0
- package/dist/storage/domains/source-control/base.d.ts.map +1 -0
- package/dist/storage/domains/source-control/base.js +1114 -0
- package/dist/storage/domains/source-control/base.js.map +1 -0
- package/dist/storage/domains/source-control/inmemory.d.ts +147 -0
- package/dist/storage/domains/source-control/inmemory.d.ts.map +1 -0
- package/dist/storage/domains/source-control/inmemory.js +416 -0
- package/dist/storage/domains/source-control/inmemory.js.map +1 -0
- package/dist/storage/domains/work-items/base.d.ts +794 -0
- package/dist/storage/domains/work-items/base.d.ts.map +1 -0
- package/dist/storage/domains/work-items/base.js +2747 -0
- package/dist/storage/domains/work-items/base.js.map +1 -0
- package/dist/storage/domains/work-items/board-version.d.ts +26 -0
- package/dist/storage/domains/work-items/board-version.d.ts.map +1 -0
- package/dist/storage/domains/work-items/board-version.js +110 -0
- package/dist/storage/domains/work-items/board-version.js.map +1 -0
- package/dist/storage/domains/work-items/metrics.d.ts +97 -0
- package/dist/storage/domains/work-items/metrics.d.ts.map +1 -0
- package/dist/storage/domains/work-items/metrics.js +226 -0
- package/dist/storage/domains/work-items/metrics.js.map +1 -0
- package/dist/supervisor/health-worker.d.ts +19 -0
- package/dist/supervisor/health-worker.d.ts.map +1 -0
- package/dist/supervisor/health-worker.js +74 -0
- package/dist/supervisor/health-worker.js.map +1 -0
- package/dist/supervisor/health.d.ts +79 -0
- package/dist/supervisor/health.d.ts.map +1 -0
- package/dist/supervisor/health.js +228 -0
- package/dist/supervisor/health.js.map +1 -0
- package/dist/supervisor/instructions.d.ts +6 -0
- package/dist/supervisor/instructions.d.ts.map +1 -0
- package/dist/supervisor/instructions.js +66 -0
- package/dist/supervisor/instructions.js.map +1 -0
- package/dist/supervisor/read-tools.d.ts +43 -0
- package/dist/supervisor/read-tools.d.ts.map +1 -0
- package/dist/supervisor/read-tools.js +343 -0
- package/dist/supervisor/read-tools.js.map +1 -0
- package/dist/supervisor/session-messaging.d.ts +26 -0
- package/dist/supervisor/session-messaging.d.ts.map +1 -0
- package/dist/supervisor/session-messaging.js +21 -0
- package/dist/supervisor/session-messaging.js.map +1 -0
- package/dist/supervisor/session.d.ts +38 -0
- package/dist/supervisor/session.d.ts.map +1 -0
- package/dist/supervisor/session.js +79 -0
- package/dist/supervisor/session.js.map +1 -0
- package/dist/supervisor/write-tools.d.ts +30 -0
- package/dist/supervisor/write-tools.d.ts.map +1 -0
- package/dist/supervisor/write-tools.js +231 -0
- package/dist/supervisor/write-tools.js.map +1 -0
- package/dist/telemetry-types.d.ts +7 -0
- package/dist/telemetry-types.d.ts.map +1 -0
- package/dist/telemetry-types.js +24 -0
- package/dist/telemetry-types.js.map +1 -0
- package/dist/telemetry.d.ts +9 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +47 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/timing.d.ts +15 -0
- package/dist/timing.d.ts.map +1 -0
- package/dist/timing.js +34 -0
- package/dist/timing.js.map +1 -0
- package/dist/work-item-branch.d.ts +33 -0
- package/dist/work-item-branch.d.ts.map +1 -0
- package/dist/work-item-branch.js +70 -0
- package/dist/work-item-branch.js.map +1 -0
- package/dist/workspace.d.ts +131 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +995 -0
- package/dist/workspace.js.map +1 -0
- package/factory-skills/configure-factory-rules/SKILL.md +122 -0
- package/factory-skills/factory-complete-issue/SKILL.md +24 -0
- package/factory-skills/factory-gitlab-rereview/SKILL.md +22 -0
- package/factory-skills/factory-gitlab-review/SKILL.md +48 -0
- package/factory-skills/factory-plan/SKILL.md +72 -0
- package/factory-skills/factory-rereview/SKILL.md +225 -0
- package/factory-skills/factory-review/SKILL.md +214 -0
- package/factory-skills/factory-review/references/archaeology.md +225 -0
- package/factory-skills/factory-review/references/categories/README.md +34 -0
- package/factory-skills/factory-review/references/categories/behavior-change.md +36 -0
- package/factory-skills/factory-review/references/categories/bug-fix.md +37 -0
- package/factory-skills/factory-review/references/categories/docs.md +32 -0
- package/factory-skills/factory-review/references/categories/experimental-flagged.md +34 -0
- package/factory-skills/factory-review/references/categories/infra-tooling.md +37 -0
- package/factory-skills/factory-review/references/categories/internal-capability.md +35 -0
- package/factory-skills/factory-review/references/categories/large-cross-cutting.md +35 -0
- package/factory-skills/factory-review/references/categories/mechanical.md +36 -0
- package/factory-skills/factory-review/references/categories/performance.md +33 -0
- package/factory-skills/factory-review/references/categories/public-api.md +38 -0
- package/factory-skills/factory-review/references/categories/refactor.md +35 -0
- package/factory-skills/factory-review/references/categories/revert.md +31 -0
- package/factory-skills/factory-review/references/categories/schema-storage.md +39 -0
- package/factory-skills/factory-review/references/categories/security.md +35 -0
- package/factory-skills/factory-review/references/categories/tests-only.md +38 -0
- package/factory-skills/factory-triage/SKILL.md +197 -0
- package/package.json +92 -0
|
@@ -0,0 +1,621 @@
|
|
|
1
|
+
import { GitLabApiError } from "./api.js";
|
|
2
|
+
//#region src/integrations/gitlab/version-control.ts
|
|
3
|
+
function buildGitLabVersionControl(deps) {
|
|
4
|
+
let storage;
|
|
5
|
+
const sourceControlStorage = () => {
|
|
6
|
+
if (!storage) throw new Error("GitLab VersionControl is not initialized.");
|
|
7
|
+
return storage;
|
|
8
|
+
};
|
|
9
|
+
const listPullRequests = async (input) => {
|
|
10
|
+
const context = await deps.contextForConnection(input.connection);
|
|
11
|
+
const page = parsePositiveCursor(input.cursor);
|
|
12
|
+
const state = input.state === "open" ? "opened" : input.state === "closed" ? "all" : input.state ?? "opened";
|
|
13
|
+
const mergeRequests = await context.api.listMergeRequests(input.sourceId, {
|
|
14
|
+
page,
|
|
15
|
+
state
|
|
16
|
+
});
|
|
17
|
+
return {
|
|
18
|
+
pullRequests: mergeRequests.filter((mergeRequest) => input.state !== "closed" || mergeRequest.state === "closed" || mergeRequest.state === "merged").filter((mergeRequest) => input.includeDrafts !== false || !isDraft(mergeRequest)).map(toPullRequest),
|
|
19
|
+
nextCursor: mergeRequests.length === 30 ? String(page + 1) : null
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
const getPullRequest = async (input) => {
|
|
23
|
+
const context = await deps.contextForConnection(input.connection);
|
|
24
|
+
try {
|
|
25
|
+
return toPullRequest(await context.api.getMergeRequest(input.sourceId, requirePositiveId(input.pullRequestId, "merge request")));
|
|
26
|
+
} catch (error) {
|
|
27
|
+
if (error instanceof GitLabApiError && error.status === 404) return null;
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
const createPullRequest = async (input) => {
|
|
32
|
+
const context = await deps.contextForConnection(input.connection);
|
|
33
|
+
const title = input.draft && !/^(?:draft:|\[draft\])/i.test(input.title) ? `Draft: ${input.title}` : input.title;
|
|
34
|
+
return toPullRequest(await context.api.createMergeRequest(input.sourceId, {
|
|
35
|
+
sourceBranch: input.headBranch,
|
|
36
|
+
targetBranch: input.baseBranch,
|
|
37
|
+
title,
|
|
38
|
+
description: input.body
|
|
39
|
+
}));
|
|
40
|
+
};
|
|
41
|
+
const updatePullRequest = async (input) => {
|
|
42
|
+
return toPullRequest(await (await deps.contextForConnection(input.connection)).api.updateMergeRequest(input.sourceId, requirePositiveId(input.pullRequestId, "merge request"), {
|
|
43
|
+
title: input.title,
|
|
44
|
+
description: input.body === null ? "" : input.body,
|
|
45
|
+
targetBranch: input.baseBranch,
|
|
46
|
+
stateEvent: input.state === "closed" ? "close" : input.state === "open" ? "reopen" : void 0
|
|
47
|
+
}));
|
|
48
|
+
};
|
|
49
|
+
const closePullRequest = (input) => updatePullRequest({
|
|
50
|
+
...input,
|
|
51
|
+
state: "closed"
|
|
52
|
+
});
|
|
53
|
+
const mergePullRequest = async (input) => {
|
|
54
|
+
if (input.method === "rebase") throw notSupported("GitLab rebases merge requests asynchronously; rebase-and-merge is not supported.");
|
|
55
|
+
const context = await deps.contextForConnection(input.connection);
|
|
56
|
+
const commitMessage = combinedCommitMessage(input.commitTitle, input.commitMessage);
|
|
57
|
+
const result = await context.api.mergeMergeRequest(input.sourceId, requirePositiveId(input.pullRequestId, "merge request"), {
|
|
58
|
+
squash: input.method === "squash",
|
|
59
|
+
mergeCommitMessage: input.method === "squash" ? void 0 : commitMessage,
|
|
60
|
+
squashCommitMessage: input.method === "squash" ? commitMessage : void 0
|
|
61
|
+
});
|
|
62
|
+
const merged = result.state === "merged" || Boolean(result.merged_at);
|
|
63
|
+
return {
|
|
64
|
+
merged,
|
|
65
|
+
message: result.message ?? (merged ? "Merge request merged." : "Merge request was not merged."),
|
|
66
|
+
sha: result.squash_commit_sha ?? result.merge_commit_sha ?? result.sha ?? null
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
const listComments = async (input) => {
|
|
70
|
+
const context = await deps.contextForConnection(input.connection);
|
|
71
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
72
|
+
const page = parsePositiveCursor(input.cursor);
|
|
73
|
+
const notes = await context.api.listMergeRequestNotes(input.sourceId, mergeRequestIid, { page });
|
|
74
|
+
return {
|
|
75
|
+
comments: notes.filter((note) => !note.system && note.type !== "DiffNote").map((note) => toPullRequestComment(webBaseUrl(context), input.sourceId, mergeRequestIid, note)),
|
|
76
|
+
nextCursor: notes.length === 100 ? String(page + 1) : null
|
|
77
|
+
};
|
|
78
|
+
};
|
|
79
|
+
const createComment = async (input) => {
|
|
80
|
+
const context = await deps.contextForConnection(input.connection);
|
|
81
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
82
|
+
const note = await context.api.createMergeRequestNote(input.sourceId, mergeRequestIid, input.body);
|
|
83
|
+
return toPullRequestComment(webBaseUrl(context), input.sourceId, mergeRequestIid, note);
|
|
84
|
+
};
|
|
85
|
+
const updateComment = async (input) => {
|
|
86
|
+
const context = await deps.contextForConnection(input.connection);
|
|
87
|
+
const { mergeRequestIid, noteId } = parseNoteId(input.commentId);
|
|
88
|
+
const note = await context.api.updateMergeRequestNote(input.sourceId, mergeRequestIid, noteId, input.body);
|
|
89
|
+
return toPullRequestComment(webBaseUrl(context), input.sourceId, mergeRequestIid, note);
|
|
90
|
+
};
|
|
91
|
+
const deleteComment = async (input) => {
|
|
92
|
+
const context = await deps.contextForConnection(input.connection);
|
|
93
|
+
const { mergeRequestIid, noteId } = parseNoteId(input.commentId);
|
|
94
|
+
await context.api.deleteMergeRequestNote(input.sourceId, mergeRequestIid, noteId);
|
|
95
|
+
};
|
|
96
|
+
const listReviews = async (input) => {
|
|
97
|
+
const context = await deps.contextForConnection(input.connection);
|
|
98
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
99
|
+
return {
|
|
100
|
+
reviews: ((await context.api.getMergeRequestApprovals(input.sourceId, mergeRequestIid)).approved_by ?? []).map(({ user }) => toApprovalReview(webBaseUrl(context), input.sourceId, mergeRequestIid, user)),
|
|
101
|
+
nextCursor: null
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
const getReview = async (input) => {
|
|
105
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
106
|
+
const approvalPrefix = `${mergeRequestIid}:approval`;
|
|
107
|
+
const commentPrefix = `${mergeRequestIid}:comment:`;
|
|
108
|
+
if (input.reviewId !== approvalPrefix && !input.reviewId.startsWith(`${approvalPrefix}:`) && !input.reviewId.startsWith(commentPrefix)) return null;
|
|
109
|
+
const context = await deps.contextForConnection(input.connection);
|
|
110
|
+
if (input.reviewId === approvalPrefix || input.reviewId.startsWith(`${approvalPrefix}:`)) {
|
|
111
|
+
const reviewerKey = input.reviewId === approvalPrefix ? null : input.reviewId.slice(approvalPrefix.length + 1);
|
|
112
|
+
if (reviewerKey === "") return null;
|
|
113
|
+
const currentUser = reviewerKey === null ? await context.api.getCurrentUser() : null;
|
|
114
|
+
const user = ((await context.api.getMergeRequestApprovals(input.sourceId, mergeRequestIid)).approved_by ?? []).map((entry) => entry.user).find((candidate) => reviewerKey === null ? currentUser?.id !== void 0 && candidate.id === currentUser.id || candidate.username === currentUser?.username : String(candidate.id ?? candidate.username) === reviewerKey);
|
|
115
|
+
return user ? toApprovalReview(webBaseUrl(context), input.sourceId, mergeRequestIid, user) : null;
|
|
116
|
+
}
|
|
117
|
+
const noteId = parsePositiveInteger(input.reviewId.slice(commentPrefix.length));
|
|
118
|
+
if (noteId === null) return null;
|
|
119
|
+
try {
|
|
120
|
+
const note = await context.api.getMergeRequestNote(input.sourceId, mergeRequestIid, noteId);
|
|
121
|
+
if (note.system || note.type === "DiffNote") return null;
|
|
122
|
+
return toCommentReview(webBaseUrl(context), input.sourceId, mergeRequestIid, note);
|
|
123
|
+
} catch (error) {
|
|
124
|
+
if (error instanceof GitLabApiError && error.status === 404) return null;
|
|
125
|
+
throw error;
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
const createReview = async (input) => submitReviewAction(deps, {
|
|
129
|
+
connection: input.connection,
|
|
130
|
+
sourceId: input.sourceId,
|
|
131
|
+
pullRequestId: input.pullRequestId,
|
|
132
|
+
event: input.event,
|
|
133
|
+
body: input.body,
|
|
134
|
+
commitId: input.commitId
|
|
135
|
+
});
|
|
136
|
+
const updateReview = async () => {
|
|
137
|
+
throw notSupported("GitLab does not expose mutable pending review objects.");
|
|
138
|
+
};
|
|
139
|
+
const submitReview = async (input) => submitReviewAction(deps, {
|
|
140
|
+
connection: input.connection,
|
|
141
|
+
sourceId: input.sourceId,
|
|
142
|
+
pullRequestId: input.pullRequestId,
|
|
143
|
+
event: input.event,
|
|
144
|
+
body: input.body
|
|
145
|
+
});
|
|
146
|
+
const dismissReview = async () => {
|
|
147
|
+
throw notSupported("GitLab approval dismissal has no GitHub review equivalent.");
|
|
148
|
+
};
|
|
149
|
+
const deletePendingReview = async () => {
|
|
150
|
+
throw notSupported("GitLab does not expose pending review objects.");
|
|
151
|
+
};
|
|
152
|
+
const listReviewComments = async (input) => {
|
|
153
|
+
const context = await deps.contextForConnection(input.connection);
|
|
154
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
155
|
+
const page = parsePositiveCursor(input.cursor);
|
|
156
|
+
const discussions = await context.api.listMergeRequestDiscussions(input.sourceId, mergeRequestIid, { page });
|
|
157
|
+
return {
|
|
158
|
+
comments: discussions.flatMap((discussion) => {
|
|
159
|
+
const position = discussionPosition(discussion.notes);
|
|
160
|
+
if (!position) return [];
|
|
161
|
+
const root = discussion.notes.find((note) => note.position) ?? discussion.notes[0];
|
|
162
|
+
const replyToId = root ? packDiscussionNoteId(mergeRequestIid, discussion.id, root.id) : null;
|
|
163
|
+
return discussion.notes.filter((note) => !note.system).map((note) => toReviewComment(webBaseUrl(context), input.sourceId, mergeRequestIid, discussion.id, note, note === root ? null : replyToId, position));
|
|
164
|
+
}),
|
|
165
|
+
nextCursor: discussions.length === 100 ? String(page + 1) : null
|
|
166
|
+
};
|
|
167
|
+
};
|
|
168
|
+
const createReviewComment = async (input) => {
|
|
169
|
+
const context = await deps.contextForConnection(input.connection);
|
|
170
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
171
|
+
if (input.replyToId) {
|
|
172
|
+
const thread = parseReviewReplyId(input.replyToId);
|
|
173
|
+
if (thread.mergeRequestIid !== mergeRequestIid) throw new GitLabApiError("GitLab discussion does not belong to the requested merge request.", 400);
|
|
174
|
+
const discussion = await context.api.getMergeRequestDiscussion(input.sourceId, mergeRequestIid, thread.discussionId);
|
|
175
|
+
const position = discussionPosition(discussion.notes);
|
|
176
|
+
if (!position) throw new GitLabApiError("GitLab discussion is not anchored to a diff.", 400);
|
|
177
|
+
const root = discussion.notes.find((note) => note.position) ?? discussion.notes[0];
|
|
178
|
+
if (!root) throw new GitLabApiError("GitLab discussion response did not include a note.", 502);
|
|
179
|
+
const note = await context.api.addMergeRequestDiscussionNote(input.sourceId, mergeRequestIid, thread.discussionId, input.body);
|
|
180
|
+
return toReviewComment(webBaseUrl(context), input.sourceId, mergeRequestIid, thread.discussionId, note, packDiscussionNoteId(mergeRequestIid, thread.discussionId, root.id), position);
|
|
181
|
+
}
|
|
182
|
+
const mergeRequest = await context.api.getMergeRequest(input.sourceId, mergeRequestIid);
|
|
183
|
+
if (!mergeRequest.diff_refs) throw new GitLabApiError("GitLab merge request diff refs are not ready.", 409);
|
|
184
|
+
if (mergeRequest.diff_refs.head_sha !== input.commitId) throw new GitLabApiError("GitLab merge request changed since this review comment was prepared.", 409);
|
|
185
|
+
const { path, line, side } = input;
|
|
186
|
+
if (typeof path !== "string" || typeof line !== "number" || side !== "left" && side !== "right") throw new GitLabApiError("GitLab diff review comment position is invalid.", 400);
|
|
187
|
+
if (input.startLine === void 0 !== (input.startSide === void 0)) throw new GitLabApiError("A multi-line GitLab review comment requires both startLine and startSide.", 400);
|
|
188
|
+
const position = {
|
|
189
|
+
position_type: "text",
|
|
190
|
+
...mergeRequest.diff_refs,
|
|
191
|
+
old_path: path,
|
|
192
|
+
new_path: path,
|
|
193
|
+
old_line: side === "left" ? line : void 0,
|
|
194
|
+
new_line: side === "right" ? line : void 0,
|
|
195
|
+
...input.startLine !== void 0 && input.startSide ? { line_range: {
|
|
196
|
+
start: await discussionLine(path, input.startLine, input.startSide),
|
|
197
|
+
end: await discussionLine(path, line, side)
|
|
198
|
+
} } : {}
|
|
199
|
+
};
|
|
200
|
+
const discussion = await context.api.createMergeRequestDiscussion(input.sourceId, mergeRequestIid, {
|
|
201
|
+
body: input.body,
|
|
202
|
+
commitId: input.commitId,
|
|
203
|
+
position
|
|
204
|
+
});
|
|
205
|
+
const note = discussion.notes.find((candidate) => candidate.position) ?? discussion.notes[0];
|
|
206
|
+
if (!note) throw new GitLabApiError("GitLab discussion response did not include a note.", 502);
|
|
207
|
+
return toReviewComment(webBaseUrl(context), input.sourceId, mergeRequestIid, discussion.id, note, null, position);
|
|
208
|
+
};
|
|
209
|
+
const updateReviewComment = async (input) => {
|
|
210
|
+
const context = await deps.contextForConnection(input.connection);
|
|
211
|
+
const reference = parseDiscussionNoteId(input.commentId);
|
|
212
|
+
const discussion = await context.api.getMergeRequestDiscussion(input.sourceId, reference.mergeRequestIid, reference.discussionId);
|
|
213
|
+
const position = discussionPosition(discussion.notes);
|
|
214
|
+
if (!position) throw new GitLabApiError("GitLab discussion is not anchored to a diff.", 400);
|
|
215
|
+
const root = discussion.notes.find((candidate) => candidate.position) ?? discussion.notes[0];
|
|
216
|
+
if (!root) throw new GitLabApiError("GitLab discussion response did not include a note.", 502);
|
|
217
|
+
const note = await context.api.updateMergeRequestDiscussionNote(input.sourceId, reference.mergeRequestIid, reference.discussionId, reference.noteId, input.body);
|
|
218
|
+
return toReviewComment(webBaseUrl(context), input.sourceId, reference.mergeRequestIid, reference.discussionId, note, note.id === root.id ? null : packDiscussionNoteId(reference.mergeRequestIid, reference.discussionId, root.id), position);
|
|
219
|
+
};
|
|
220
|
+
const deleteReviewComment = async (input) => {
|
|
221
|
+
const context = await deps.contextForConnection(input.connection);
|
|
222
|
+
const reference = parseDiscussionNoteId(input.commentId);
|
|
223
|
+
await context.api.deleteMergeRequestDiscussionNote(input.sourceId, reference.mergeRequestIid, reference.discussionId, reference.noteId);
|
|
224
|
+
};
|
|
225
|
+
const resolveReviewThread = async (input) => {
|
|
226
|
+
const context = await deps.contextForConnection(input.connection);
|
|
227
|
+
const reference = parseDiscussionNoteId(input.commentId);
|
|
228
|
+
await context.api.resolveMergeRequestDiscussion(input.sourceId, reference.mergeRequestIid, reference.discussionId, input.resolved);
|
|
229
|
+
};
|
|
230
|
+
const listRequestedReviewers = async (input) => {
|
|
231
|
+
return toRequestedReviewers(await (await deps.contextForConnection(input.connection)).api.getMergeRequest(input.sourceId, requirePositiveId(input.pullRequestId, "merge request")));
|
|
232
|
+
};
|
|
233
|
+
const requestReviewers = async (input) => {
|
|
234
|
+
rejectTeamReviewers(input.teams);
|
|
235
|
+
const context = await deps.contextForConnection(input.connection);
|
|
236
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
237
|
+
const mergeRequest = await context.api.getMergeRequest(input.sourceId, mergeRequestIid);
|
|
238
|
+
const requestedMembers = await resolveMembers(context.api, input.sourceId, input.users ?? []);
|
|
239
|
+
const currentIds = await reviewerIds(context.api, input.sourceId, mergeRequest.reviewers ?? []);
|
|
240
|
+
const reviewerIdsToSet = [.../* @__PURE__ */ new Set([...currentIds, ...requestedMembers.map((member) => member.id)])];
|
|
241
|
+
return toRequestedReviewers(await context.api.setMergeRequestReviewers(input.sourceId, mergeRequestIid, reviewerIdsToSet));
|
|
242
|
+
};
|
|
243
|
+
const removeRequestedReviewers = async (input) => {
|
|
244
|
+
rejectTeamReviewers(input.teams);
|
|
245
|
+
const context = await deps.contextForConnection(input.connection);
|
|
246
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
247
|
+
const mergeRequest = await context.api.getMergeRequest(input.sourceId, mergeRequestIid);
|
|
248
|
+
const removals = new Set((input.users ?? []).map((username) => username.toLowerCase()));
|
|
249
|
+
const retained = (mergeRequest.reviewers ?? []).filter((user) => !removals.has(user.username.toLowerCase()));
|
|
250
|
+
const retainedIds = await reviewerIds(context.api, input.sourceId, retained);
|
|
251
|
+
return toRequestedReviewers(await context.api.setMergeRequestReviewers(input.sourceId, mergeRequestIid, retainedIds));
|
|
252
|
+
};
|
|
253
|
+
return {
|
|
254
|
+
initialize: (input) => {
|
|
255
|
+
storage = input.storage;
|
|
256
|
+
},
|
|
257
|
+
registerInstallation: async ({ orgId, userId, installation }) => {
|
|
258
|
+
const requestedConnection = parseConnection(installation.metadata?.connection);
|
|
259
|
+
if (!requestedConnection) throw new GitLabApiError("GitLab installation metadata must include a valid connection.", 400);
|
|
260
|
+
const context = await deps.contextForConnection(requestedConnection);
|
|
261
|
+
return sourceControlStorage().installations.upsert({
|
|
262
|
+
orgId,
|
|
263
|
+
connectedByUserId: userId,
|
|
264
|
+
externalId: installation.externalId,
|
|
265
|
+
accountName: installation.accountName,
|
|
266
|
+
accountType: installation.accountType,
|
|
267
|
+
providerMetadata: {
|
|
268
|
+
...installation.metadata,
|
|
269
|
+
connection: context.connection,
|
|
270
|
+
host: normalizeHost(context.host)
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
},
|
|
274
|
+
registerRepositories: async ({ orgId, installationId, repositories }) => {
|
|
275
|
+
const normalizedRepositories = repositories.map((repository) => ({
|
|
276
|
+
...repository,
|
|
277
|
+
slug: normalizeSlug(repository.slug)
|
|
278
|
+
}));
|
|
279
|
+
return await Promise.all(normalizedRepositories.map((repository) => sourceControlStorage().repositories.upsert({
|
|
280
|
+
orgId,
|
|
281
|
+
input: {
|
|
282
|
+
installationId,
|
|
283
|
+
externalId: repository.externalId,
|
|
284
|
+
slug: repository.slug,
|
|
285
|
+
defaultBranch: repository.defaultBranch,
|
|
286
|
+
providerMetadata: repository.metadata
|
|
287
|
+
}
|
|
288
|
+
})));
|
|
289
|
+
},
|
|
290
|
+
getRepositoryTarget: async ({ orgId, repositoryId }) => {
|
|
291
|
+
const repository = await sourceControlStorage().repositories.get({
|
|
292
|
+
orgId,
|
|
293
|
+
id: repositoryId
|
|
294
|
+
});
|
|
295
|
+
if (!repository) throw new Error("Version-control repository not found.");
|
|
296
|
+
const installation = await sourceControlStorage().installations.get({
|
|
297
|
+
orgId,
|
|
298
|
+
id: repository.installationId
|
|
299
|
+
});
|
|
300
|
+
if (!installation) throw new Error("Version-control installation not found.");
|
|
301
|
+
const connection = parseConnection(installation.providerMetadata.connection);
|
|
302
|
+
if (!connection) throw new GitLabApiError("GitLab installation connection metadata is invalid.", 500);
|
|
303
|
+
return {
|
|
304
|
+
connection: (await (deps.contextForStoredInstallation ?? deps.contextForConnection)(connection, typeof installation.providerMetadata.host === "string" ? installation.providerMetadata.host : void 0)).connection,
|
|
305
|
+
sourceId: `${repository.externalId}:${repository.slug}`
|
|
306
|
+
};
|
|
307
|
+
},
|
|
308
|
+
getRepositoryAccess: async ({ orgId, repositoryId }) => {
|
|
309
|
+
const repository = await sourceControlStorage().repositories.get({
|
|
310
|
+
orgId,
|
|
311
|
+
id: repositoryId
|
|
312
|
+
});
|
|
313
|
+
if (!repository) throw new Error("Version-control repository not found.");
|
|
314
|
+
const installation = await sourceControlStorage().installations.get({
|
|
315
|
+
orgId,
|
|
316
|
+
id: repository.installationId
|
|
317
|
+
});
|
|
318
|
+
if (!installation) throw new Error("Version-control installation not found.");
|
|
319
|
+
const connection = parseConnection(installation.providerMetadata.connection);
|
|
320
|
+
if (!connection) throw new GitLabApiError("GitLab installation connection metadata is invalid.", 500);
|
|
321
|
+
const context = await (deps.contextForStoredInstallation ?? deps.contextForConnection)(connection, typeof installation.providerMetadata.host === "string" ? installation.providerMetadata.host : void 0);
|
|
322
|
+
if (!context.repositoryAccessToken) throw notSupported("This GitLab connection does not expose credentials for repository cloning.");
|
|
323
|
+
const token = await context.repositoryAccessToken();
|
|
324
|
+
return {
|
|
325
|
+
cloneUrl: `${webBaseUrl(context)}/${normalizeSlug(repository.slug)}.git`,
|
|
326
|
+
authorization: {
|
|
327
|
+
scheme: "bearer",
|
|
328
|
+
token,
|
|
329
|
+
username: "oauth2"
|
|
330
|
+
}
|
|
331
|
+
};
|
|
332
|
+
},
|
|
333
|
+
listPullRequests,
|
|
334
|
+
getPullRequest,
|
|
335
|
+
createPullRequest,
|
|
336
|
+
updatePullRequest,
|
|
337
|
+
closePullRequest,
|
|
338
|
+
mergePullRequest,
|
|
339
|
+
listComments,
|
|
340
|
+
resolveReviewThread,
|
|
341
|
+
createComment,
|
|
342
|
+
updateComment,
|
|
343
|
+
deleteComment,
|
|
344
|
+
listReviews,
|
|
345
|
+
getReview,
|
|
346
|
+
createReview,
|
|
347
|
+
updateReview,
|
|
348
|
+
submitReview,
|
|
349
|
+
dismissReview,
|
|
350
|
+
deletePendingReview,
|
|
351
|
+
listReviewComments,
|
|
352
|
+
createReviewComment,
|
|
353
|
+
updateReviewComment,
|
|
354
|
+
deleteReviewComment,
|
|
355
|
+
listRequestedReviewers,
|
|
356
|
+
requestReviewers,
|
|
357
|
+
removeRequestedReviewers
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
async function submitReviewAction(deps, input) {
|
|
361
|
+
const context = await deps.contextForConnection(input.connection);
|
|
362
|
+
const mergeRequestIid = requirePositiveId(input.pullRequestId, "merge request");
|
|
363
|
+
if (input.event === "request-changes") throw notSupported("GitLab has no first-class request-changes review event.");
|
|
364
|
+
if (input.event === void 0) throw notSupported("GitLab has no first-class pending review object.");
|
|
365
|
+
if (input.event === "approve") {
|
|
366
|
+
const body = input.body?.trim();
|
|
367
|
+
await context.api.approveMergeRequest(input.sourceId, mergeRequestIid, input.commitId);
|
|
368
|
+
const comment = body ? toPullRequestComment(webBaseUrl(context), input.sourceId, mergeRequestIid, await context.api.createMergeRequestNote(input.sourceId, mergeRequestIid, body)) : null;
|
|
369
|
+
return {
|
|
370
|
+
id: String(mergeRequestIid) + ":approval",
|
|
371
|
+
url: comment?.url ?? mergeRequestUrl(webBaseUrl(context), input.sourceId, mergeRequestIid),
|
|
372
|
+
author: comment?.author ?? null,
|
|
373
|
+
body: comment?.body ?? null,
|
|
374
|
+
state: "approved",
|
|
375
|
+
commitId: null,
|
|
376
|
+
submittedAt: comment?.createdAt ?? null
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
const body = input.body?.trim();
|
|
380
|
+
if (!body) throw new GitLabApiError("GitLab comment reviews require a body.", 400);
|
|
381
|
+
const note = await context.api.createMergeRequestNote(input.sourceId, mergeRequestIid, body);
|
|
382
|
+
return toCommentReview(webBaseUrl(context), input.sourceId, mergeRequestIid, note);
|
|
383
|
+
}
|
|
384
|
+
function toCommentReview(host, sourceId, mergeRequestIid, note) {
|
|
385
|
+
const comment = toPullRequestComment(host, sourceId, mergeRequestIid, note);
|
|
386
|
+
return {
|
|
387
|
+
id: `${mergeRequestIid}:comment:${note.id}`,
|
|
388
|
+
url: comment.url,
|
|
389
|
+
author: comment.author,
|
|
390
|
+
body: comment.body,
|
|
391
|
+
state: "commented",
|
|
392
|
+
commitId: null,
|
|
393
|
+
submittedAt: note.created_at
|
|
394
|
+
};
|
|
395
|
+
}
|
|
396
|
+
function toApprovalReview(host, sourceId, mergeRequestIid, user) {
|
|
397
|
+
return {
|
|
398
|
+
id: `${mergeRequestIid}:approval:${user.id ?? user.username}`,
|
|
399
|
+
url: mergeRequestUrl(host, sourceId, mergeRequestIid),
|
|
400
|
+
author: displayName(user),
|
|
401
|
+
body: null,
|
|
402
|
+
state: "approved",
|
|
403
|
+
commitId: null,
|
|
404
|
+
submittedAt: null
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
function toReviewComment(host, sourceId, mergeRequestIid, discussionId, note, replyToId, fallbackPosition) {
|
|
408
|
+
const position = note.position ?? fallbackPosition;
|
|
409
|
+
if (!position) throw new GitLabApiError("GitLab review comment is missing its diff position.", 502);
|
|
410
|
+
const base = toPullRequestComment(host, sourceId, mergeRequestIid, note);
|
|
411
|
+
const side = position.new_line !== null && position.new_line !== void 0 ? "right" : "left";
|
|
412
|
+
return {
|
|
413
|
+
...base,
|
|
414
|
+
id: packDiscussionNoteId(mergeRequestIid, discussionId, note.id),
|
|
415
|
+
path: side === "right" ? position.new_path : position.old_path,
|
|
416
|
+
line: side === "right" ? position.new_line ?? null : position.old_line ?? null,
|
|
417
|
+
side,
|
|
418
|
+
commitId: position.head_sha,
|
|
419
|
+
replyToId
|
|
420
|
+
};
|
|
421
|
+
}
|
|
422
|
+
function mergeRequestUrl(host, sourceId, mergeRequestIid) {
|
|
423
|
+
return `${host}/${sourcePath(sourceId)}/-/merge_requests/${mergeRequestIid}`;
|
|
424
|
+
}
|
|
425
|
+
function webBaseUrl(context) {
|
|
426
|
+
const host = normalizeHost(context.host);
|
|
427
|
+
if (!context.webBaseUrl) return `https://${host}`;
|
|
428
|
+
let url;
|
|
429
|
+
try {
|
|
430
|
+
url = new URL(context.webBaseUrl);
|
|
431
|
+
} catch {
|
|
432
|
+
throw new GitLabApiError("GitLab web base URL is invalid.", 400);
|
|
433
|
+
}
|
|
434
|
+
const loopback = url.hostname === "localhost" || url.hostname === "[::1]" || /^127(?:\.\d{1,3}){3}$/.test(url.hostname);
|
|
435
|
+
if (url.host !== host || url.protocol !== "https:" && !(url.protocol === "http:" && loopback) || url.username || url.password || url.search || url.hash) throw new GitLabApiError("GitLab web base URL is invalid.", 400);
|
|
436
|
+
return `${url.origin}${url.pathname.replace(/\/+$/, "")}`;
|
|
437
|
+
}
|
|
438
|
+
function sourcePath(sourceId) {
|
|
439
|
+
return normalizeSlug(/^\d+:(.+)$/.exec(sourceId)?.[1] ?? sourceId);
|
|
440
|
+
}
|
|
441
|
+
function packDiscussionId(mergeRequestIid, discussionId) {
|
|
442
|
+
if (!discussionId || discussionId.includes(":")) throw new GitLabApiError("GitLab discussion id is invalid.", 400);
|
|
443
|
+
return `${mergeRequestIid}:${discussionId}`;
|
|
444
|
+
}
|
|
445
|
+
function packDiscussionNoteId(mergeRequestIid, discussionId, noteId) {
|
|
446
|
+
return `${packDiscussionId(mergeRequestIid, discussionId)}:${noteId}`;
|
|
447
|
+
}
|
|
448
|
+
function parseReviewReplyId(value) {
|
|
449
|
+
const parts = value.split(":");
|
|
450
|
+
if (parts.length === 2) return parseDiscussionId(value);
|
|
451
|
+
if (parts.length === 3 && parts[1]) {
|
|
452
|
+
requirePositiveId(parts[2], "discussion note");
|
|
453
|
+
return {
|
|
454
|
+
mergeRequestIid: requirePositiveId(parts[0], "merge request"),
|
|
455
|
+
discussionId: parts[1]
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
throw new GitLabApiError("GitLab review reply id is invalid.", 400);
|
|
459
|
+
}
|
|
460
|
+
function parseDiscussionId(value) {
|
|
461
|
+
const parts = value.split(":");
|
|
462
|
+
if (parts.length !== 2 || !parts[1]) throw new GitLabApiError("GitLab discussion id is invalid.", 400);
|
|
463
|
+
return {
|
|
464
|
+
mergeRequestIid: requirePositiveId(parts[0], "merge request"),
|
|
465
|
+
discussionId: parts[1]
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
function parseDiscussionNoteId(value) {
|
|
469
|
+
const parts = value.split(":");
|
|
470
|
+
if (parts.length !== 3 || !parts[1]) throw new GitLabApiError("GitLab discussion note id is invalid.", 400);
|
|
471
|
+
return {
|
|
472
|
+
mergeRequestIid: requirePositiveId(parts[0], "merge request"),
|
|
473
|
+
discussionId: parts[1],
|
|
474
|
+
noteId: requirePositiveId(parts[2], "discussion note")
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
function discussionPosition(notes) {
|
|
478
|
+
return notes.find((note) => note.position)?.position ?? void 0;
|
|
479
|
+
}
|
|
480
|
+
async function discussionLine(path, line, side) {
|
|
481
|
+
const pathHash = Buffer.from(await globalThis.crypto.subtle.digest("SHA-1", new TextEncoder().encode(path))).toString("hex");
|
|
482
|
+
const oldLine = side === "left" ? line : void 0;
|
|
483
|
+
const newLine = side === "right" ? line : void 0;
|
|
484
|
+
return {
|
|
485
|
+
line_code: `${pathHash}_${oldLine ?? 0}_${newLine ?? 0}`,
|
|
486
|
+
type: side === "left" ? "old" : "new",
|
|
487
|
+
old_line: oldLine,
|
|
488
|
+
new_line: newLine
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
function toRequestedReviewers(mergeRequest) {
|
|
492
|
+
return {
|
|
493
|
+
users: (mergeRequest.reviewers ?? []).map((user) => user.username),
|
|
494
|
+
teams: []
|
|
495
|
+
};
|
|
496
|
+
}
|
|
497
|
+
async function resolveMembers(api, sourceId, usernames) {
|
|
498
|
+
return Promise.all(usernames.map((username) => resolveMember(api, sourceId, username)));
|
|
499
|
+
}
|
|
500
|
+
async function resolveMember(api, sourceId, username) {
|
|
501
|
+
const normalized = username.trim();
|
|
502
|
+
if (!normalized) throw new GitLabApiError("GitLab reviewer username is invalid.", 400);
|
|
503
|
+
const member = (await api.listProjectMembers(sourceId, { query: normalized })).find((candidate) => candidate.username.toLowerCase() === normalized.toLowerCase());
|
|
504
|
+
if (!member) throw new GitLabApiError(`GitLab reviewer ${normalized} is not a project member.`, 404);
|
|
505
|
+
return member;
|
|
506
|
+
}
|
|
507
|
+
async function reviewerIds(api, sourceId, users) {
|
|
508
|
+
return Promise.all(users.map(async (user) => user.id ?? (await resolveMember(api, sourceId, user.username)).id));
|
|
509
|
+
}
|
|
510
|
+
function rejectTeamReviewers(teams) {
|
|
511
|
+
if (!teams?.length) return;
|
|
512
|
+
throw notSupported("GitLab merge requests do not have a direct team-reviewer equivalent.");
|
|
513
|
+
}
|
|
514
|
+
function notSupported(message) {
|
|
515
|
+
return new GitLabApiError(message, 501);
|
|
516
|
+
}
|
|
517
|
+
function toPullRequest(mergeRequest) {
|
|
518
|
+
return {
|
|
519
|
+
id: String(mergeRequest.iid),
|
|
520
|
+
title: mergeRequest.title,
|
|
521
|
+
url: mergeRequest.web_url,
|
|
522
|
+
author: displayName(mergeRequest.author),
|
|
523
|
+
assignees: mergeRequest.assignees?.map((user) => user.username),
|
|
524
|
+
requestedReviewers: mergeRequest.reviewers?.map((user) => user.username),
|
|
525
|
+
labels: mergeRequest.labels,
|
|
526
|
+
body: mergeRequest.description?.trim() ? mergeRequest.description : null,
|
|
527
|
+
state: mergeRequest.state === "closed" || mergeRequest.state === "merged" ? "closed" : "open",
|
|
528
|
+
draft: isDraft(mergeRequest),
|
|
529
|
+
merged: mergeRequest.state === "merged" || Boolean(mergeRequest.merged_at),
|
|
530
|
+
mergeable: mergeableState(mergeRequest.merge_status),
|
|
531
|
+
baseBranch: mergeRequest.target_branch,
|
|
532
|
+
headBranch: mergeRequest.source_branch,
|
|
533
|
+
headSha: mergeRequest.sha,
|
|
534
|
+
createdAt: mergeRequest.created_at,
|
|
535
|
+
updatedAt: mergeRequest.updated_at
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
function toPullRequestComment(host, sourceId, mergeRequestIid, note) {
|
|
539
|
+
return {
|
|
540
|
+
id: `${mergeRequestIid}:${note.id}`,
|
|
541
|
+
url: `${mergeRequestUrl(host, sourceId, mergeRequestIid)}#note_${note.id}`,
|
|
542
|
+
author: displayName(note.author),
|
|
543
|
+
body: note.body,
|
|
544
|
+
createdAt: note.created_at,
|
|
545
|
+
updatedAt: note.updated_at ?? note.created_at
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
function displayName(user) {
|
|
549
|
+
return user?.username || user?.name?.trim() || null;
|
|
550
|
+
}
|
|
551
|
+
function isDraft(mergeRequest) {
|
|
552
|
+
return mergeRequest.draft ?? mergeRequest.work_in_progress ?? /^(?:draft:|\[draft\])/i.test(mergeRequest.title);
|
|
553
|
+
}
|
|
554
|
+
function mergeableState(status) {
|
|
555
|
+
if (status === "can_be_merged") return true;
|
|
556
|
+
if (status === "cannot_be_merged") return false;
|
|
557
|
+
return null;
|
|
558
|
+
}
|
|
559
|
+
function combinedCommitMessage(title, body) {
|
|
560
|
+
const parts = [title?.trim(), body?.trim()].filter((part) => Boolean(part));
|
|
561
|
+
return parts.length > 0 ? parts.join("\n\n") : void 0;
|
|
562
|
+
}
|
|
563
|
+
function parseNoteId(value) {
|
|
564
|
+
const parts = value.split(":");
|
|
565
|
+
if (parts.length !== 2) throw new GitLabApiError("GitLab merge request note id is invalid.", 400);
|
|
566
|
+
return {
|
|
567
|
+
mergeRequestIid: requirePositiveId(parts[0], "merge request"),
|
|
568
|
+
noteId: requirePositiveId(parts[1], "note")
|
|
569
|
+
};
|
|
570
|
+
}
|
|
571
|
+
function parsePositiveCursor(cursor) {
|
|
572
|
+
if (cursor === void 0) return 1;
|
|
573
|
+
const page = parsePositiveInteger(cursor);
|
|
574
|
+
if (page === null) throw new GitLabApiError("GitLab cursor must be a positive page number.", 400);
|
|
575
|
+
return page;
|
|
576
|
+
}
|
|
577
|
+
function requirePositiveId(value, resource) {
|
|
578
|
+
const parsed = parsePositiveInteger(value);
|
|
579
|
+
if (parsed === null) throw new GitLabApiError(`GitLab ${resource} id must be a positive integer.`, 400);
|
|
580
|
+
return parsed;
|
|
581
|
+
}
|
|
582
|
+
function parsePositiveInteger(value) {
|
|
583
|
+
if (!/^\d+$/.test(value)) return null;
|
|
584
|
+
const parsed = Number(value);
|
|
585
|
+
return Number.isSafeInteger(parsed) && parsed > 0 ? parsed : null;
|
|
586
|
+
}
|
|
587
|
+
function parseConnection(value) {
|
|
588
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return null;
|
|
589
|
+
const connection = value;
|
|
590
|
+
if (connection.type === "oauth" && typeof connection.accessToken === "string" && connection.accessToken.length > 0) return {
|
|
591
|
+
type: "oauth",
|
|
592
|
+
accessToken: connection.accessToken
|
|
593
|
+
};
|
|
594
|
+
if (connection.type === "app-installation" && Number.isSafeInteger(connection.installationId) && Number(connection.installationId) > 0) return {
|
|
595
|
+
type: "app-installation",
|
|
596
|
+
installationId: Number(connection.installationId)
|
|
597
|
+
};
|
|
598
|
+
return null;
|
|
599
|
+
}
|
|
600
|
+
function normalizeHost(value) {
|
|
601
|
+
const host = value.trim();
|
|
602
|
+
if (!host || host.includes("/") || host.includes("@")) throw new GitLabApiError("GitLab host is invalid.", 400);
|
|
603
|
+
let parsed;
|
|
604
|
+
try {
|
|
605
|
+
parsed = new URL(`https://${host}`);
|
|
606
|
+
} catch {
|
|
607
|
+
throw new GitLabApiError("GitLab host is invalid.", 400);
|
|
608
|
+
}
|
|
609
|
+
if (parsed.host !== host) throw new GitLabApiError("GitLab host is invalid.", 400);
|
|
610
|
+
return host;
|
|
611
|
+
}
|
|
612
|
+
function normalizeSlug(value) {
|
|
613
|
+
const slug = value.replace(/^\/+|\/+$/g, "");
|
|
614
|
+
const segments = slug.split("/");
|
|
615
|
+
if (!slug || segments.some((segment) => !/^[A-Za-z0-9_.-]+$/.test(segment) || segment === "." || segment === "..")) throw new GitLabApiError("GitLab repository slug is invalid.", 400);
|
|
616
|
+
return slug;
|
|
617
|
+
}
|
|
618
|
+
//#endregion
|
|
619
|
+
export { buildGitLabVersionControl };
|
|
620
|
+
|
|
621
|
+
//# sourceMappingURL=version-control.js.map
|