checkly 9.5.0 → 10.0.0-prerelease-4f88d60
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/README.md +10 -0
- package/bin/launch.cjs +12 -0
- package/dist/ai-context/context.js +1 -0
- package/dist/ai-context/context.js.map +1 -1
- package/dist/ai-context/onboarding-boilerplate/checkly-config-template.ts +2 -2
- package/dist/ai-context/public-skills/checkly/SKILL.md +34 -5
- package/dist/ai-context/skills-command/references/communicate.md +8 -5
- package/dist/ai-context/skills-command/references/configure-api-checks.md +1 -9
- package/dist/ai-context/skills-command/references/configure-browser-checks.md +1 -8
- package/dist/ai-context/skills-command/references/configure-check-groups.md +1 -0
- package/dist/ai-context/skills-command/references/configure-dns-monitors.md +1 -9
- package/dist/ai-context/skills-command/references/configure-grpc-monitors.md +24 -0
- package/dist/ai-context/skills-command/references/configure-heartbeat-monitors.md +1 -9
- package/dist/ai-context/skills-command/references/configure-icmp-monitors.md +1 -9
- package/dist/ai-context/skills-command/references/configure-multistep-checks.md +1 -9
- package/dist/ai-context/skills-command/references/configure-playwright-checks.md +2 -2
- package/dist/ai-context/skills-command/references/configure-supporting-constructs.md +6 -2
- package/dist/ai-context/skills-command/references/configure-tcp-monitors.md +1 -10
- package/dist/ai-context/skills-command/references/configure-url-monitors.md +1 -10
- package/dist/ai-context/skills-command/references/configure.md +17 -5
- package/dist/ai-context/skills-command/references/initialize.md +11 -3
- package/dist/ai-context/skills-command/references/investigate-checks.md +1 -1
- package/dist/auth/api-key.d.ts +24 -0
- package/dist/auth/api-key.js +104 -0
- package/dist/auth/api-key.js.map +1 -0
- package/dist/auth/device-flow.d.ts +58 -0
- package/dist/auth/device-flow.js +228 -0
- package/dist/auth/device-flow.js.map +1 -0
- package/dist/auth/index.d.ts +6 -6
- package/dist/auth/index.js +64 -64
- package/dist/auth/index.js.map +1 -1
- package/dist/commands/account/plan.js +1 -1
- package/dist/commands/account/plan.js.map +1 -1
- package/dist/commands/account/usage/projections.d.ts +16 -0
- package/dist/commands/account/usage/projections.js +40 -0
- package/dist/commands/account/usage/projections.js.map +1 -0
- package/dist/commands/account/usage/series.d.ts +7 -3
- package/dist/commands/account/usage/series.js +30 -87
- package/dist/commands/account/usage/series.js.map +1 -1
- package/dist/commands/account/usage/summary.d.ts +4 -1
- package/dist/commands/account/usage/summary.js +19 -27
- package/dist/commands/account/usage/summary.js.map +1 -1
- package/dist/commands/account/usage/term.d.ts +15 -0
- package/dist/commands/account/usage/term.js +32 -0
- package/dist/commands/account/usage/term.js.map +1 -0
- package/dist/commands/account/usage/terms.d.ts +4 -0
- package/dist/commands/account/usage/terms.js +19 -27
- package/dist/commands/account/usage/terms.js.map +1 -1
- package/dist/commands/alert-channels/get.js +2 -1
- package/dist/commands/alert-channels/get.js.map +1 -1
- package/dist/commands/alert-channels/list.js +2 -1
- package/dist/commands/alert-channels/list.js.map +1 -1
- package/dist/commands/alert-channels/logs.js +2 -1
- package/dist/commands/alert-channels/logs.js.map +1 -1
- package/dist/commands/api.js +53 -10
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/assets/download.js +11 -7
- package/dist/commands/assets/download.js.map +1 -1
- package/dist/commands/assets/list.js +2 -3
- package/dist/commands/assets/list.js.map +1 -1
- package/dist/commands/authCommand.d.ts +19 -0
- package/dist/commands/authCommand.js +118 -12
- package/dist/commands/authCommand.js.map +1 -1
- package/dist/commands/baseCommand.d.ts +12 -1
- package/dist/commands/baseCommand.js +24 -5
- package/dist/commands/baseCommand.js.map +1 -1
- package/dist/commands/checks/delete.js +1 -1
- package/dist/commands/checks/delete.js.map +1 -1
- package/dist/commands/checks/run.js +3 -1
- package/dist/commands/checks/run.js.map +1 -1
- package/dist/commands/debug/parse-project.d.ts +1 -0
- package/dist/commands/debug/parse-project.js +5 -2
- package/dist/commands/debug/parse-project.js.map +1 -1
- package/dist/commands/deploy.d.ts +8 -2
- package/dist/commands/deploy.js +735 -274
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/destroy.js +3 -3
- package/dist/commands/destroy.js.map +1 -1
- package/dist/commands/env/add.js +2 -2
- package/dist/commands/env/add.js.map +1 -1
- package/dist/commands/env/ls.js +2 -1
- package/dist/commands/env/ls.js.map +1 -1
- package/dist/commands/env/pull.js +3 -3
- package/dist/commands/env/pull.js.map +1 -1
- package/dist/commands/env/update.js +2 -2
- package/dist/commands/env/update.js.map +1 -1
- package/dist/commands/import/apply.js +12 -10
- package/dist/commands/import/apply.js.map +1 -1
- package/dist/commands/import/cancel.js +4 -4
- package/dist/commands/import/cancel.js.map +1 -1
- package/dist/commands/import/commit.js +11 -9
- package/dist/commands/import/commit.js.map +1 -1
- package/dist/commands/import/plan.js +82 -62
- package/dist/commands/import/plan.js.map +1 -1
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.js +62 -41
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.d.ts +38 -2
- package/dist/commands/login.js +848 -52
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.js +10 -4
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/pw-test.js +6 -3
- package/dist/commands/pw-test.js.map +1 -1
- package/dist/commands/rca/get.js +1 -1
- package/dist/commands/rca/get.js.map +1 -1
- package/dist/commands/rca/run.js +1 -1
- package/dist/commands/rca/run.js.map +1 -1
- package/dist/commands/skills/index.js +1 -1
- package/dist/commands/skills/index.js.map +1 -1
- package/dist/commands/skills/install.js +12 -12
- package/dist/commands/skills/install.js.map +1 -1
- package/dist/commands/switch.d.ts +10 -1
- package/dist/commands/switch.js +75 -13
- package/dist/commands/switch.js.map +1 -1
- package/dist/commands/sync-playwright.js +5 -10
- package/dist/commands/sync-playwright.js.map +1 -1
- package/dist/commands/test.d.ts +2 -0
- package/dist/commands/test.js +58 -29
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/trigger.d.ts +1 -2
- package/dist/commands/trigger.js +27 -20
- package/dist/commands/trigger.js.map +1 -1
- package/dist/commands/validate.js +1 -0
- package/dist/commands/validate.js.map +1 -1
- package/dist/commands/whoami.d.ts +8 -0
- package/dist/commands/whoami.js +57 -6
- package/dist/commands/whoami.js.map +1 -1
- package/dist/constants.d.ts +3 -2
- package/dist/constants.js +8 -1
- package/dist/constants.js.map +1 -1
- package/dist/constructs/alert-channel-codegen.d.ts +6 -1
- package/dist/constructs/alert-channel-codegen.js +12 -6
- package/dist/constructs/alert-channel-codegen.js.map +1 -1
- package/dist/constructs/alert-channel-subscription.d.ts +1 -0
- package/dist/constructs/alert-channel-subscription.js +4 -0
- package/dist/constructs/alert-channel-subscription.js.map +1 -1
- package/dist/constructs/alert-channel.js +8 -5
- package/dist/constructs/alert-channel.js.map +1 -1
- package/dist/constructs/alert-escalation-policy-codegen.d.ts +7 -0
- package/dist/constructs/alert-escalation-policy-codegen.js +25 -8
- package/dist/constructs/alert-escalation-policy-codegen.js.map +1 -1
- package/dist/constructs/api-assertion.d.ts +0 -2
- package/dist/constructs/api-assertion.js +0 -4
- package/dist/constructs/api-assertion.js.map +1 -1
- package/dist/constructs/api-check-bundle.d.ts +4 -124
- package/dist/constructs/api-check-codegen.js +1 -1
- package/dist/constructs/api-check-codegen.js.map +1 -1
- package/dist/constructs/api-check.d.ts +8 -128
- package/dist/constructs/api-check.js +15 -17
- package/dist/constructs/api-check.js.map +1 -1
- package/dist/constructs/api-request-codegen.js +10 -8
- package/dist/constructs/api-request-codegen.js.map +1 -1
- package/dist/constructs/browser-check-bundle.d.ts +11 -125
- package/dist/constructs/browser-check-bundle.js +5 -1
- package/dist/constructs/browser-check-bundle.js.map +1 -1
- package/dist/constructs/browser-check.d.ts +5 -107
- package/dist/constructs/browser-check.js +1 -1
- package/dist/constructs/browser-check.js.map +1 -1
- package/dist/constructs/check-codegen.d.ts +46 -14
- package/dist/constructs/check-codegen.js +118 -34
- package/dist/constructs/check-codegen.js.map +1 -1
- package/dist/constructs/check-group-codegen.js +23 -9
- package/dist/constructs/check-group-codegen.js.map +1 -1
- package/dist/constructs/check-group-v1.d.ts +28 -16
- package/dist/constructs/check-group-v1.js +48 -17
- package/dist/constructs/check-group-v1.js.map +1 -1
- package/dist/constructs/check-group-v2.d.ts +2 -21
- package/dist/constructs/check-group-v2.js +4 -4
- package/dist/constructs/check-group-v2.js.map +1 -1
- package/dist/constructs/check.d.ts +68 -220
- package/dist/constructs/check.js +106 -37
- package/dist/constructs/check.js.map +1 -1
- package/dist/constructs/construct-codegen.d.ts +1 -2
- package/dist/constructs/construct-diagnostics.d.ts +3 -0
- package/dist/constructs/construct-diagnostics.js +11 -0
- package/dist/constructs/construct-diagnostics.js.map +1 -1
- package/dist/constructs/construct.d.ts +30 -4
- package/dist/constructs/construct.js +52 -6
- package/dist/constructs/construct.js.map +1 -1
- package/dist/constructs/dashboard.js +11 -7
- package/dist/constructs/dashboard.js.map +1 -1
- package/dist/constructs/dns-monitor.d.ts +4 -100
- package/dist/constructs/dns-request-codegen.js +1 -1
- package/dist/constructs/dns-request-codegen.js.map +1 -1
- package/dist/constructs/email-alert-channel-codegen.js +1 -1
- package/dist/constructs/email-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/engine.d.ts +4 -2
- package/dist/constructs/engine.js +3 -1
- package/dist/constructs/engine.js.map +1 -1
- package/dist/constructs/frequency-codegen.js +10 -2
- package/dist/constructs/frequency-codegen.js.map +1 -1
- package/dist/constructs/frequency.d.ts +8 -3
- package/dist/constructs/frequency.js +7 -2
- package/dist/constructs/frequency.js.map +1 -1
- package/dist/constructs/grpc-monitor.d.ts +4 -100
- package/dist/constructs/grpc-monitor.js +19 -0
- package/dist/constructs/grpc-monitor.js.map +1 -1
- package/dist/constructs/grpc-request-codegen.js +13 -4
- package/dist/constructs/grpc-request-codegen.js.map +1 -1
- package/dist/constructs/grpc-request.d.ts +23 -0
- package/dist/constructs/heartbeat-monitor.d.ts +2 -1
- package/dist/constructs/heartbeat-monitor.js +2 -2
- package/dist/constructs/heartbeat-monitor.js.map +1 -1
- package/dist/constructs/icmp-monitor.d.ts +4 -100
- package/dist/constructs/icmp-request-codegen.js +1 -1
- package/dist/constructs/icmp-request-codegen.js.map +1 -1
- package/dist/constructs/incidentio-alert-channel-codegen.d.ts +1 -1
- package/dist/constructs/incidentio-alert-channel-codegen.js +14 -8
- package/dist/constructs/incidentio-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/index.d.ts +1 -1
- package/dist/constructs/index.js +1 -1
- package/dist/constructs/index.js.map +1 -1
- package/dist/constructs/internal/assertion-validation.js +1 -2
- package/dist/constructs/internal/assertion-validation.js.map +1 -1
- package/dist/constructs/internal/codegen/context.d.ts +73 -6
- package/dist/constructs/internal/codegen/context.js +78 -6
- package/dist/constructs/internal/codegen/context.js.map +1 -1
- package/dist/constructs/internal/codegen/index.d.ts +3 -1
- package/dist/constructs/internal/codegen/index.js +2 -1
- package/dist/constructs/internal/codegen/index.js.map +1 -1
- package/dist/constructs/internal/codegen/render.d.ts +68 -0
- package/dist/constructs/internal/codegen/render.js +75 -0
- package/dist/constructs/internal/codegen/render.js.map +1 -0
- package/dist/constructs/internal/common-diagnostics.d.ts +1 -2
- package/dist/constructs/internal/common-diagnostics.js +7 -17
- package/dist/constructs/internal/common-diagnostics.js.map +1 -1
- package/dist/constructs/internal/declaring-file.d.ts +39 -0
- package/dist/constructs/internal/declaring-file.js +139 -0
- package/dist/constructs/internal/declaring-file.js.map +1 -0
- package/dist/constructs/internal/default-retry-strategy.d.ts +9 -0
- package/dist/constructs/internal/default-retry-strategy.js +13 -0
- package/dist/constructs/internal/default-retry-strategy.js.map +1 -0
- package/dist/constructs/internal/retry-strategy-defaults.d.ts +13 -0
- package/dist/constructs/internal/retry-strategy-defaults.js +14 -0
- package/dist/constructs/internal/retry-strategy-defaults.js.map +1 -0
- package/dist/constructs/key-value-pair-codegen.d.ts +6 -1
- package/dist/constructs/key-value-pair-codegen.js +24 -3
- package/dist/constructs/key-value-pair-codegen.js.map +1 -1
- package/dist/constructs/maintenance-window-codegen.d.ts +7 -0
- package/dist/constructs/maintenance-window-codegen.js +36 -19
- package/dist/constructs/maintenance-window-codegen.js.map +1 -1
- package/dist/constructs/maintenance-window.d.ts +37 -3
- package/dist/constructs/maintenance-window.js +34 -1
- package/dist/constructs/maintenance-window.js.map +1 -1
- package/dist/constructs/monitor.d.ts +6 -119
- package/dist/constructs/monitor.js +3 -5
- package/dist/constructs/monitor.js.map +1 -1
- package/dist/constructs/msteams-alert-channel-codegen.d.ts +1 -1
- package/dist/constructs/msteams-alert-channel-codegen.js +8 -18
- package/dist/constructs/msteams-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/multi-step-check-bundle.d.ts +4 -109
- package/dist/constructs/multi-step-check.d.ts +4 -100
- package/dist/constructs/opsgenie-alert-channel-codegen.js +1 -1
- package/dist/constructs/opsgenie-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/pagerduty-alert-channel-codegen.js +1 -1
- package/dist/constructs/pagerduty-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/phone-call-alert-channel-codegen.js +1 -1
- package/dist/constructs/phone-call-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/playwright-check-bundle.d.ts +10 -130
- package/dist/constructs/playwright-check-bundle.js +3 -3
- package/dist/constructs/playwright-check-bundle.js.map +1 -1
- package/dist/constructs/playwright-check-codegen.d.ts +85 -0
- package/dist/constructs/playwright-check-codegen.js +212 -0
- package/dist/constructs/playwright-check-codegen.js.map +1 -0
- package/dist/constructs/playwright-check.d.ts +14 -122
- package/dist/constructs/playwright-check.js +17 -51
- package/dist/constructs/playwright-check.js.map +1 -1
- package/dist/constructs/private-location-check-assignment.d.ts +1 -0
- package/dist/constructs/private-location-check-assignment.js +4 -0
- package/dist/constructs/private-location-check-assignment.js.map +1 -1
- package/dist/constructs/private-location-group-assignment.d.ts +1 -0
- package/dist/constructs/private-location-group-assignment.js +4 -0
- package/dist/constructs/private-location-group-assignment.js.map +1 -1
- package/dist/constructs/private-location.js +3 -1
- package/dist/constructs/private-location.js.map +1 -1
- package/dist/constructs/retry-strategy-codegen.d.ts +7 -1
- package/dist/constructs/retry-strategy-codegen.js +41 -32
- package/dist/constructs/retry-strategy-codegen.js.map +1 -1
- package/dist/constructs/retry-strategy.d.ts +0 -4
- package/dist/constructs/retry-strategy.js +5 -8
- package/dist/constructs/retry-strategy.js.map +1 -1
- package/dist/constructs/session.d.ts +38 -1
- package/dist/constructs/session.js +73 -3
- package/dist/constructs/session.js.map +1 -1
- package/dist/constructs/slack-alert-channel-codegen.js +1 -1
- package/dist/constructs/slack-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/slack-app-alert-channel-codegen.js +1 -1
- package/dist/constructs/slack-app-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/sms-alert-channel-codegen.js +1 -1
- package/dist/constructs/sms-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/ssl-monitor.d.ts +4 -142
- package/dist/constructs/ssl-request-codegen.js +4 -3
- package/dist/constructs/ssl-request-codegen.js.map +1 -1
- package/dist/constructs/status-page-v3-automation-rule-codegen.js +5 -4
- package/dist/constructs/status-page-v3-automation-rule-codegen.js.map +1 -1
- package/dist/constructs/status-page-v3-codegen.js +3 -2
- package/dist/constructs/status-page-v3-codegen.js.map +1 -1
- package/dist/constructs/status-page-v3-component-codegen.js +8 -7
- package/dist/constructs/status-page-v3-component-codegen.js.map +1 -1
- package/dist/constructs/tcp-monitor-codegen.js +3 -2
- package/dist/constructs/tcp-monitor-codegen.js.map +1 -1
- package/dist/constructs/tcp-monitor.d.ts +8 -103
- package/dist/constructs/tcp-monitor.js +3 -2
- package/dist/constructs/tcp-monitor.js.map +1 -1
- package/dist/constructs/telegram-alert-channel-codegen.d.ts +1 -1
- package/dist/constructs/telegram-alert-channel-codegen.js +14 -8
- package/dist/constructs/telegram-alert-channel-codegen.js.map +1 -1
- package/dist/constructs/time-zone.d.ts +24 -0
- package/dist/constructs/time-zone.js +455 -0
- package/dist/constructs/time-zone.js.map +1 -0
- package/dist/constructs/traceroute-monitor.d.ts +4 -100
- package/dist/constructs/traceroute-request-codegen.js +2 -2
- package/dist/constructs/traceroute-request-codegen.js.map +1 -1
- package/dist/constructs/url-monitor-codegen.js +1 -1
- package/dist/constructs/url-monitor-codegen.js.map +1 -1
- package/dist/constructs/url-monitor.d.ts +7 -123
- package/dist/constructs/url-monitor.js +3 -0
- package/dist/constructs/url-monitor.js.map +1 -1
- package/dist/constructs/url-request-codegen.js +4 -3
- package/dist/constructs/url-request-codegen.js.map +1 -1
- package/dist/constructs/webhook-alert-channel-codegen.js +3 -3
- package/dist/constructs/webhook-alert-channel-codegen.js.map +1 -1
- package/dist/formatters/check-result-detail.js +0 -185
- package/dist/formatters/check-result-detail.js.map +1 -1
- package/dist/formatters/render.d.ts +2 -1
- package/dist/formatters/render.js +2 -2
- package/dist/formatters/render.js.map +1 -1
- package/dist/formatters/usage.d.ts +18 -12
- package/dist/formatters/usage.js +285 -245
- package/dist/formatters/usage.js.map +1 -1
- package/dist/help/help-extension.js +2 -1
- package/dist/help/help-extension.js.map +1 -1
- package/dist/helpers/accounts.d.ts +28 -0
- package/dist/helpers/accounts.js +50 -0
- package/dist/helpers/accounts.js.map +1 -0
- package/dist/helpers/activate-account.d.ts +13 -0
- package/dist/helpers/activate-account.js +24 -0
- package/dist/helpers/activate-account.js.map +1 -0
- package/dist/helpers/api-fields.js +3 -2
- package/dist/helpers/api-fields.js.map +1 -1
- package/dist/helpers/cli-mode.d.ts +24 -0
- package/dist/helpers/cli-mode.js +64 -8
- package/dist/helpers/cli-mode.js.map +1 -1
- package/dist/helpers/command-preview.d.ts +44 -0
- package/dist/helpers/command-preview.js +29 -9
- package/dist/helpers/command-preview.js.map +1 -1
- package/dist/helpers/command-style.d.ts +1 -0
- package/dist/helpers/command-style.js +51 -37
- package/dist/helpers/command-style.js.map +1 -1
- package/dist/helpers/flags.d.ts +10 -0
- package/dist/helpers/flags.js +18 -0
- package/dist/helpers/flags.js.map +1 -1
- package/dist/helpers/import-plan-selection.d.ts +1 -1
- package/dist/helpers/import-plan-selection.js +8 -20
- package/dist/helpers/import-plan-selection.js.map +1 -1
- package/dist/helpers/invalid-input-error.d.ts +15 -0
- package/dist/helpers/invalid-input-error.js +17 -0
- package/dist/helpers/invalid-input-error.js.map +1 -0
- package/dist/helpers/number.js +4 -3
- package/dist/helpers/number.js.map +1 -1
- package/dist/helpers/onboarding/boilerplate.js +15 -3
- package/dist/helpers/onboarding/boilerplate.js.map +1 -1
- package/dist/helpers/onboarding/index.d.ts +1 -1
- package/dist/helpers/onboarding/index.js +1 -1
- package/dist/helpers/onboarding/index.js.map +1 -1
- package/dist/helpers/onboarding/messages.d.ts +7 -0
- package/dist/helpers/onboarding/messages.js +14 -0
- package/dist/helpers/onboarding/messages.js.map +1 -1
- package/dist/helpers/onboarding/prompt-display.js +2 -2
- package/dist/helpers/onboarding/prompt-display.js.map +1 -1
- package/dist/helpers/onboarding/prompts-helpers.js +3 -1
- package/dist/helpers/onboarding/prompts-helpers.js.map +1 -1
- package/dist/helpers/onboarding/skill-install.js +4 -4
- package/dist/helpers/onboarding/skill-install.js.map +1 -1
- package/dist/helpers/prompts.d.ts +7 -0
- package/dist/helpers/prompts.js +10 -0
- package/dist/helpers/prompts.js.map +1 -0
- package/dist/helpers/result-assets.js +4 -3
- package/dist/helpers/result-assets.js.map +1 -1
- package/dist/helpers/test-helper.d.ts +14 -0
- package/dist/helpers/test-helper.js +33 -3
- package/dist/helpers/test-helper.js.map +1 -1
- package/dist/helpers/usage.d.ts +51 -14
- package/dist/helpers/usage.js +193 -53
- package/dist/helpers/usage.js.map +1 -1
- package/dist/helpers/wrap.js +1 -1
- package/dist/helpers/wrap.js.map +1 -1
- package/dist/messages/common-messages.d.ts +1 -0
- package/dist/messages/common-messages.js +4 -2
- package/dist/messages/common-messages.js.map +1 -1
- package/dist/reporters/abstract-list.d.ts +9 -2
- package/dist/reporters/abstract-list.js +105 -32
- package/dist/reporters/abstract-list.js.map +1 -1
- package/dist/reporters/ci.js +7 -4
- package/dist/reporters/ci.js.map +1 -1
- package/dist/reporters/dot.d.ts +1 -0
- package/dist/reporters/dot.js +19 -7
- package/dist/reporters/dot.js.map +1 -1
- package/dist/reporters/github.d.ts +2 -0
- package/dist/reporters/github.js +29 -4
- package/dist/reporters/github.js.map +1 -1
- package/dist/reporters/json.d.ts +2 -0
- package/dist/reporters/json.js +27 -4
- package/dist/reporters/json.js.map +1 -1
- package/dist/reporters/list.js +10 -8
- package/dist/reporters/list.js.map +1 -1
- package/dist/reporters/reporter.d.ts +1 -0
- package/dist/reporters/reporter.js.map +1 -1
- package/dist/reporters/util.d.ts +5 -2
- package/dist/reporters/util.js +25 -61
- package/dist/reporters/util.js.map +1 -1
- package/dist/rest/analytics.js +0 -4
- package/dist/rest/analytics.js.map +1 -1
- package/dist/rest/api.d.ts +10 -1
- package/dist/rest/api.js +44 -9
- package/dist/rest/api.js.map +1 -1
- package/dist/rest/check-results.d.ts +1 -50
- package/dist/rest/check-results.js.map +1 -1
- package/dist/rest/checkly-storage.d.ts +6 -1
- package/dist/rest/checkly-storage.js +13 -2
- package/dist/rest/checkly-storage.js.map +1 -1
- package/dist/rest/errors.d.ts +19 -0
- package/dist/rest/errors.js +20 -1
- package/dist/rest/errors.js.map +1 -1
- package/dist/rest/projects.d.ts +254 -4
- package/dist/rest/projects.js +208 -17
- package/dist/rest/projects.js.map +1 -1
- package/dist/rest/usage.d.ts +164 -73
- package/dist/rest/usage.js +21 -10
- package/dist/rest/usage.js.map +1 -1
- package/dist/services/abstract-check-runner.d.ts +34 -2
- package/dist/services/abstract-check-runner.js +183 -56
- package/dist/services/abstract-check-runner.js.map +1 -1
- package/dist/services/check-parser/bundler.d.ts +26 -0
- package/dist/services/check-parser/bundler.js +81 -7
- package/dist/services/check-parser/bundler.js.map +1 -1
- package/dist/services/check-parser/cache-hash.d.ts +1 -4
- package/dist/services/check-parser/cache-hash.js.map +1 -1
- package/dist/services/check-parser/package-files/json-text-source-file.d.ts +0 -2
- package/dist/services/check-parser/package-files/json-text-source-file.js +6 -6
- package/dist/services/check-parser/package-files/json-text-source-file.js.map +1 -1
- package/dist/services/check-parser/parser.d.ts +3 -2
- package/dist/services/check-parser/parser.js +31 -40
- package/dist/services/check-parser/parser.js.map +1 -1
- package/dist/services/checkly-config-codegen.js +4 -4
- package/dist/services/checkly-config-codegen.js.map +1 -1
- package/dist/services/checkly-config-loader.d.ts +18 -33
- package/dist/services/checkly-config-loader.js +50 -47
- package/dist/services/checkly-config-loader.js.map +1 -1
- package/dist/services/config.d.ts +42 -1
- package/dist/services/config.js +93 -9
- package/dist/services/config.js.map +1 -1
- package/dist/services/content-hash.d.ts +14 -0
- package/dist/services/content-hash.js +22 -0
- package/dist/services/content-hash.js.map +1 -0
- package/dist/services/deploy-diff/diff-lines.d.ts +52 -0
- package/dist/services/deploy-diff/diff-lines.js +327 -0
- package/dist/services/deploy-diff/diff-lines.js.map +1 -0
- package/dist/services/deploy-diff/double-check.d.ts +9 -0
- package/dist/services/deploy-diff/double-check.js +21 -0
- package/dist/services/deploy-diff/double-check.js.map +1 -0
- package/dist/services/deploy-diff/import-shape.d.ts +171 -0
- package/dist/services/deploy-diff/import-shape.js +633 -0
- package/dist/services/deploy-diff/import-shape.js.map +1 -0
- package/dist/services/deploy-diff/legacy-payload.d.ts +22 -0
- package/dist/services/deploy-diff/legacy-payload.js +51 -0
- package/dist/services/deploy-diff/legacy-payload.js.map +1 -0
- package/dist/services/deploy-diff/plan-summary.d.ts +81 -0
- package/dist/services/deploy-diff/plan-summary.js +262 -0
- package/dist/services/deploy-diff/plan-summary.js.map +1 -0
- package/dist/services/deploy-diff/preview-output.d.ts +63 -0
- package/dist/services/deploy-diff/preview-output.js +403 -0
- package/dist/services/deploy-diff/preview-output.js.map +1 -0
- package/dist/services/deploy-diff/render.d.ts +59 -0
- package/dist/services/deploy-diff/render.js +326 -0
- package/dist/services/deploy-diff/render.js.map +1 -0
- package/dist/services/deploy-diff/shape-changes.d.ts +2 -0
- package/dist/services/deploy-diff/shape-changes.js +48 -0
- package/dist/services/deploy-diff/shape-changes.js.map +1 -0
- package/dist/services/deploy-diff/source-index.d.ts +18 -0
- package/dist/services/deploy-diff/source-index.js +48 -0
- package/dist/services/deploy-diff/source-index.js.map +1 -0
- package/dist/services/deploy-diff/variable-names.d.ts +30 -0
- package/dist/services/deploy-diff/variable-names.js +64 -0
- package/dist/services/deploy-diff/variable-names.js.map +1 -0
- package/dist/services/engine-resolver.js +3 -0
- package/dist/services/engine-resolver.js.map +1 -1
- package/dist/services/engine-rules-loader.d.ts +6 -0
- package/dist/services/engine-rules-loader.js +12 -3
- package/dist/services/engine-rules-loader.js.map +1 -1
- package/dist/services/oxc-parser.d.ts +26 -0
- package/dist/services/oxc-parser.js +70 -0
- package/dist/services/oxc-parser.js.map +1 -0
- package/dist/services/project-cli.d.ts +75 -0
- package/dist/services/project-cli.js +302 -0
- package/dist/services/project-cli.js.map +1 -0
- package/dist/services/project-parser.d.ts +5 -0
- package/dist/services/project-parser.js +25 -13
- package/dist/services/project-parser.js.map +1 -1
- package/dist/services/skills.js +3 -3
- package/dist/services/skills.js.map +1 -1
- package/dist/services/snapshot-service.d.ts +25 -8
- package/dist/services/snapshot-service.js +46 -4
- package/dist/services/snapshot-service.js.map +1 -1
- package/dist/services/socket-client.js +1 -1
- package/dist/services/socket-client.js.map +1 -1
- package/dist/services/test-filters.d.ts +18 -0
- package/dist/services/test-filters.js +10 -0
- package/dist/services/test-filters.js.map +1 -1
- package/dist/services/test-runner.d.ts +1 -1
- package/dist/services/test-runner.js +10 -11
- package/dist/services/test-runner.js.map +1 -1
- package/dist/services/test-session-cancel.d.ts +5 -0
- package/dist/services/test-session-cancel.js +28 -3
- package/dist/services/test-session-cancel.js.map +1 -1
- package/dist/services/trigger-runner.d.ts +1 -1
- package/dist/services/trigger-runner.js +2 -2
- package/dist/services/trigger-runner.js.map +1 -1
- package/dist/services/two-installs.d.ts +39 -0
- package/dist/services/two-installs.js +155 -0
- package/dist/services/two-installs.js.map +1 -0
- package/dist/services/util.d.ts +17 -2
- package/dist/services/util.js +118 -11
- package/dist/services/util.js.map +1 -1
- package/dist/services/write-back/apply-edits.d.ts +29 -0
- package/dist/services/write-back/apply-edits.js +255 -0
- package/dist/services/write-back/apply-edits.js.map +1 -0
- package/dist/services/write-back/helper-edit.d.ts +135 -0
- package/dist/services/write-back/helper-edit.js +343 -0
- package/dist/services/write-back/helper-edit.js.map +1 -0
- package/dist/services/write-back/imports.d.ts +30 -0
- package/dist/services/write-back/imports.js +88 -0
- package/dist/services/write-back/imports.js.map +1 -0
- package/dist/services/write-back/literal-edit.d.ts +183 -0
- package/dist/services/write-back/literal-edit.js +359 -0
- package/dist/services/write-back/literal-edit.js.map +1 -0
- package/dist/services/write-back/output.d.ts +26 -0
- package/dist/services/write-back/output.js +110 -0
- package/dist/services/write-back/output.js.map +1 -0
- package/dist/services/write-back/plan.d.ts +180 -0
- package/dist/services/write-back/plan.js +1046 -0
- package/dist/services/write-back/plan.js.map +1 -0
- package/dist/services/write-back/source-file.d.ts +133 -0
- package/dist/services/write-back/source-file.js +460 -0
- package/dist/services/write-back/source-file.js.map +1 -0
- package/dist/sourcegen/index.d.ts +1 -1
- package/dist/sourcegen/index.js +1 -1
- package/dist/sourcegen/index.js.map +1 -1
- package/dist/sourcegen/program.d.ts +19 -1
- package/dist/sourcegen/program.js +32 -7
- package/dist/sourcegen/program.js.map +1 -1
- package/dist/testing/clear-git-env.d.ts +1 -0
- package/dist/testing/clear-git-env.js +25 -0
- package/dist/testing/clear-git-env.js.map +1 -0
- package/dist/testing/global-setup.d.ts +1 -0
- package/dist/testing/global-setup.js +3 -0
- package/dist/testing/global-setup.js.map +1 -1
- package/oclif.manifest.json +1113 -884
- package/package.json +21 -19
- package/dist/commands/rules.d.ts +0 -9
- package/dist/commands/rules.js +0 -13
- package/dist/commands/rules.js.map +0 -1
- package/dist/constructs/agentic-check-codegen.d.ts +0 -22
- package/dist/constructs/agentic-check-codegen.js +0 -59
- package/dist/constructs/agentic-check-codegen.js.map +0 -1
- package/dist/constructs/agentic-check.d.ts +0 -237
- package/dist/constructs/agentic-check.js +0 -100
- package/dist/constructs/agentic-check.js.map +0 -1
- package/dist/services/check-parser/package-files/json-text-source-file-parser.d.ts +0 -7
- package/dist/services/check-parser/package-files/json-text-source-file-parser.js +0 -47
- package/dist/services/check-parser/package-files/json-text-source-file-parser.js.map +0 -1
- package/dist/services/check-parser/package-files/source-file-parser.d.ts +0 -10
- package/dist/services/check-parser/package-files/source-file-parser.js +0 -13
- package/dist/services/check-parser/package-files/source-file-parser.js.map +0 -1
|
@@ -21,10 +21,23 @@ export var Events;
|
|
|
21
21
|
Events["STREAM_LOGS"] = "STREAM_LOGS";
|
|
22
22
|
Events["CANCEL"] = "CANCEL";
|
|
23
23
|
Events["DETACH"] = "DETACH";
|
|
24
|
+
Events["MAX_FAILURES_REACHED"] = "MAX_FAILURES_REACHED";
|
|
24
25
|
})(Events || (Events = {}));
|
|
25
26
|
export const DEFAULT_CHECK_RUN_TIMEOUT_SECONDS = 600;
|
|
26
27
|
export const DEFAULT_PLAYWRIGHT_CHECK_RUN_TIMEOUT_SECONDS = 1200;
|
|
27
28
|
const DEFAULT_SCHEDULING_DELAY_EXCEEDED_MS = 20000;
|
|
29
|
+
// The backend staggers large sessions with SQS DelaySeconds and widens its
|
|
30
|
+
// batches so no check is ever delayed beyond SQS's 15-minute ceiling. Until a
|
|
31
|
+
// check's run-start message arrives, its timer must allow for that worst-case
|
|
32
|
+
// queue delay on top of the execution timeout — otherwise the timer expires
|
|
33
|
+
// for checks the server has not started yet. Once the check starts, the timer
|
|
34
|
+
// is re-armed to the plain execution timeout.
|
|
35
|
+
//
|
|
36
|
+
// The 900s ceiling is a backend contract (the dispatch stagger is capped at
|
|
37
|
+
// SQS's DelaySeconds maximum; RED-814 records where the backend enforces
|
|
38
|
+
// it). If the backend's stagger ceiling ever changes, this constant must
|
|
39
|
+
// follow.
|
|
40
|
+
export const MAX_SCHEDULING_DELAY_SECONDS = 900;
|
|
28
41
|
function schedulingFailedError(operation) {
|
|
29
42
|
return new TestSessionSchedulingFailedError(operation.error?.message ?? 'The test session could not be scheduled.', { code: operation.error?.code });
|
|
30
43
|
}
|
|
@@ -40,7 +53,11 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
40
53
|
verbose;
|
|
41
54
|
detach;
|
|
42
55
|
queue;
|
|
43
|
-
|
|
56
|
+
// Stop waiting for the remaining checks once this many checks have failed.
|
|
57
|
+
maxFailures;
|
|
58
|
+
// Set when the run stopped early; results that arrive afterwards are dropped.
|
|
59
|
+
_maxFailuresReached = false;
|
|
60
|
+
constructor(accountId, timeout, verbose, detach = false, maxFailures) {
|
|
44
61
|
super();
|
|
45
62
|
this.checks = new Map();
|
|
46
63
|
this.timeouts = new Map();
|
|
@@ -49,11 +66,27 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
49
66
|
this.verbose = verbose;
|
|
50
67
|
this.accountId = accountId;
|
|
51
68
|
this.detach = detach;
|
|
69
|
+
this.maxFailures = maxFailures;
|
|
70
|
+
}
|
|
71
|
+
get maxFailuresReached() {
|
|
72
|
+
return this._maxFailuresReached;
|
|
52
73
|
}
|
|
53
74
|
async run() {
|
|
54
75
|
let socketClient = null;
|
|
55
76
|
let sigintHandler = null;
|
|
56
77
|
let previousSigintListeners = [];
|
|
78
|
+
// Puts back the SIGINT listeners that were in place before the run.
|
|
79
|
+
const restoreSigintListeners = () => {
|
|
80
|
+
if (!sigintHandler) {
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
process.off('SIGINT', sigintHandler);
|
|
84
|
+
sigintHandler = null;
|
|
85
|
+
for (const listener of previousSigintListeners) {
|
|
86
|
+
process.on('SIGINT', listener);
|
|
87
|
+
}
|
|
88
|
+
previousSigintListeners = [];
|
|
89
|
+
};
|
|
57
90
|
const schedulingWatchAbort = new AbortController();
|
|
58
91
|
try {
|
|
59
92
|
const checkRunSuiteId = uuid.v4();
|
|
@@ -80,7 +113,7 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
80
113
|
// Remove pre-existing SIGINT listeners (e.g. from `when-exit`, a transitive
|
|
81
114
|
// dependency via conf → atomically) that would re-raise the signal and
|
|
82
115
|
// terminate the process — especially on Windows where process.kill(pid, 'SIGINT')
|
|
83
|
-
// is a hard kill.
|
|
116
|
+
// is a hard kill. `restoreSigintListeners` puts them back.
|
|
84
117
|
previousSigintListeners = process.rawListeners('SIGINT');
|
|
85
118
|
process.removeAllListeners('SIGINT');
|
|
86
119
|
sigintHandler = () => {
|
|
@@ -92,7 +125,11 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
92
125
|
}
|
|
93
126
|
lastSigintAt = now;
|
|
94
127
|
if (hasCancelled) {
|
|
95
|
-
|
|
128
|
+
// Second Ctrl+C: re-raise SIGINT to the listeners from before the run
|
|
129
|
+
// (or Node's default), so they get to clean up. On Windows this
|
|
130
|
+
// terminates the process immediately, without running any handlers.
|
|
131
|
+
restoreSigintListeners();
|
|
132
|
+
process.kill(process.pid, 'SIGINT');
|
|
96
133
|
}
|
|
97
134
|
else {
|
|
98
135
|
hasCancelled = true;
|
|
@@ -111,6 +148,7 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
111
148
|
// `allChecksFinished` should be started before processing check results in `queue.start()`.
|
|
112
149
|
// Otherwise, there could be a race condition causing check results to be missed by `allChecksFinished()`.
|
|
113
150
|
const allChecksFinished = this.allChecksFinished();
|
|
151
|
+
const maxFailuresReached = this.maxFailuresReachedOrNever();
|
|
114
152
|
// The server dispatches the check runs in the background after the 202;
|
|
115
153
|
// watch the scheduling operation so a dispatch failure fails the run
|
|
116
154
|
// immediately with the real error instead of waiting out the per-check
|
|
@@ -126,7 +164,10 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
126
164
|
this.emit(Events.RUN_STARTED, checks, testSessionId);
|
|
127
165
|
// Start the queue after the test session run rest call is completed to avoid race conditions
|
|
128
166
|
this.queue.start();
|
|
129
|
-
await Promise.race([allChecksFinished, schedulingFailed]);
|
|
167
|
+
await Promise.race([allChecksFinished, maxFailuresReached, schedulingFailed]);
|
|
168
|
+
if (this.maxFailuresReached) {
|
|
169
|
+
this.emit(Events.MAX_FAILURES_REACHED, this.maxFailures);
|
|
170
|
+
}
|
|
130
171
|
this.emit(Events.RUN_FINISHED, testSessionId);
|
|
131
172
|
}
|
|
132
173
|
catch (err) {
|
|
@@ -137,12 +178,7 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
137
178
|
// Stop any in-flight scheduling long-poll so it doesn't hold the
|
|
138
179
|
// process open after the run has settled.
|
|
139
180
|
schedulingWatchAbort.abort();
|
|
140
|
-
|
|
141
|
-
process.off('SIGINT', sigintHandler);
|
|
142
|
-
for (const listener of previousSigintListeners) {
|
|
143
|
-
process.on('SIGINT', listener);
|
|
144
|
-
}
|
|
145
|
-
}
|
|
181
|
+
restoreSigintListeners();
|
|
146
182
|
if (socketClient) {
|
|
147
183
|
await socketClient.endAsync();
|
|
148
184
|
}
|
|
@@ -210,7 +246,8 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
210
246
|
return;
|
|
211
247
|
}
|
|
212
248
|
if (!this.timeouts.has(sequenceId)) {
|
|
213
|
-
// The check has already timed out
|
|
249
|
+
// The check has already timed out (or the run stopped at its max failures limit, which clears every
|
|
250
|
+
// timeout). We return early to avoid reporting a duplicate or late result.
|
|
214
251
|
return;
|
|
215
252
|
}
|
|
216
253
|
if (!this.checks.get(sequenceId)) {
|
|
@@ -218,18 +255,66 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
218
255
|
}
|
|
219
256
|
const { check } = this.checks.get(sequenceId);
|
|
220
257
|
if (subtopic === 'run-start') {
|
|
258
|
+
// The check is executing now: drop the scheduling-delay headroom and
|
|
259
|
+
// give this attempt a full execution timeout.
|
|
260
|
+
this.resetTimeout(sequenceId, check);
|
|
221
261
|
this.emit(Events.CHECK_INPROGRESS, check, sequenceId);
|
|
222
262
|
}
|
|
223
263
|
else if (subtopic === 'result') {
|
|
224
264
|
const { result, testResultId, resultType } = message;
|
|
225
|
-
await this.processCheckResult(result);
|
|
226
|
-
const links = testResultId && result.hasFailures && await this.getShortLinks(testResultId);
|
|
227
265
|
if (resultType === 'FINAL') {
|
|
266
|
+
// Claim the check before awaiting. The timeout timer runs outside this
|
|
267
|
+
// queue, so it could otherwise fire while we fetch logs or snapshots and
|
|
268
|
+
// report the check a second time, which also lets `allChecksFinished()`
|
|
269
|
+
// resolve while other checks are still running.
|
|
228
270
|
this.disableTimeout(sequenceId);
|
|
271
|
+
let links;
|
|
272
|
+
try {
|
|
273
|
+
await this.processCheckResult(result);
|
|
274
|
+
links = testResultId && result.hasFailures && await this.getShortLinks(testResultId);
|
|
275
|
+
}
|
|
276
|
+
catch (err) {
|
|
277
|
+
if (this._maxFailuresReached) {
|
|
278
|
+
// The run stopped while this result was being fetched.
|
|
279
|
+
return;
|
|
280
|
+
}
|
|
281
|
+
// Fail loudly, unlike for an ATTEMPT: for the final result this also
|
|
282
|
+
// covers pulling snapshots with --update-snapshots, which must not be
|
|
283
|
+
// skipped silently.
|
|
284
|
+
this.emit(Events.CHECK_FAILED, sequenceId, check, `Failed to process the check result: ${err?.message ?? err}`);
|
|
285
|
+
this.emit(Events.CHECK_FINISHED, check);
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
if (this._maxFailuresReached) {
|
|
289
|
+
// The run stopped while this result was being fetched.
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
// Emitted outside the try: an exception from a listener is a reporter
|
|
293
|
+
// bug, not a failure of the check, and must not report it a second time.
|
|
229
294
|
this.emit(Events.CHECK_SUCCESSFUL, sequenceId, check, result, testResultId, links);
|
|
230
295
|
this.emit(Events.CHECK_FINISHED, check);
|
|
231
296
|
}
|
|
232
297
|
else if (resultType === 'ATTEMPT') {
|
|
298
|
+
// The backend publishes ATTEMPT when it has decided to retry, so the
|
|
299
|
+
// check is alive: restart its timeout instead of counting the whole
|
|
300
|
+
// retry sequence against a single timeout. Restart it before awaiting,
|
|
301
|
+
// so the old deadline cannot expire while we fetch this attempt's logs.
|
|
302
|
+
// The retry is scheduled after the ATTEMPT is published and can still
|
|
303
|
+
// fail to start; the restarted timeout is what ends the wait in that case.
|
|
304
|
+
this.resetTimeout(sequenceId, check);
|
|
305
|
+
try {
|
|
306
|
+
await this.processCheckResult(result);
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
// Logs are a nice-to-have for an intermediate attempt; the FINAL
|
|
310
|
+
// result decides the outcome. Report the attempt without them.
|
|
311
|
+
}
|
|
312
|
+
const links = testResultId && result.hasFailures && await this.getShortLinks(testResultId);
|
|
313
|
+
if (!this.timeouts.has(sequenceId)) {
|
|
314
|
+
// The check timed out (or finished) while we were fetching; it has
|
|
315
|
+
// already been reported as terminal, so don't report an attempt after it.
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
233
318
|
this.emit(Events.CHECK_ATTEMPT_RESULT, sequenceId, check, result, links);
|
|
234
319
|
}
|
|
235
320
|
}
|
|
@@ -248,29 +333,6 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
248
333
|
result.logs = await assets.getLogs(result.assets);
|
|
249
334
|
result.checkRunData = await assets.getCheckRunData(result.assets);
|
|
250
335
|
}
|
|
251
|
-
// Agentic checks carry their structured data on `result.metadata`
|
|
252
|
-
// (assertions, suggestions, steps, summary, etc.) since the runner-ng
|
|
253
|
-
// family never writes a side-car `check-run-data.json`. Mirror the
|
|
254
|
-
// backend's REST serializer by lifting that metadata into
|
|
255
|
-
// `result.agenticCheckResult` so downstream rendering code can branch
|
|
256
|
-
// on the same typed field whether the data arrived via MQTT (live
|
|
257
|
-
// path) or via the REST API (stored path).
|
|
258
|
-
//
|
|
259
|
-
// `model`, `costUsd`, and `tokensUsed` are intentionally NOT mapped —
|
|
260
|
-
// they exist in the raw metadata but the backend strips them from the
|
|
261
|
-
// public response shape and the CLI should mirror that policy. See the
|
|
262
|
-
// companion backend change for why.
|
|
263
|
-
if (result.checkType === 'AGENTIC' && result.metadata) {
|
|
264
|
-
result.agenticCheckResult = {
|
|
265
|
-
summary: result.metadata.summary ?? null,
|
|
266
|
-
prompt: result.metadata.prompt ?? null,
|
|
267
|
-
assertions: result.metadata.assertions ?? [],
|
|
268
|
-
suggestions: result.metadata.suggestions ?? [],
|
|
269
|
-
steps: result.metadata.steps ?? [],
|
|
270
|
-
errors: result.metadata.errors ?? [],
|
|
271
|
-
artifactManifest: result.metadata.artifactManifest ?? null,
|
|
272
|
-
};
|
|
273
|
-
}
|
|
274
336
|
}
|
|
275
337
|
allChecksFinished() {
|
|
276
338
|
let finishedCheckCount = 0;
|
|
@@ -286,29 +348,94 @@ export default class AbstractCheckRunner extends EventEmitter {
|
|
|
286
348
|
});
|
|
287
349
|
});
|
|
288
350
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
351
|
+
/**
|
|
352
|
+
* Resolves once `maxFailures` checks have failed while other checks are
|
|
353
|
+
* still unfinished; never resolves otherwise (including when the failure
|
|
354
|
+
* that reaches the limit is the last check, which finishes the run
|
|
355
|
+
* normally). A failure is a check's final outcome: failed retry attempts
|
|
356
|
+
* and cancelled results do not count, so a check that passes on retry never
|
|
357
|
+
* stops the run.
|
|
358
|
+
*
|
|
359
|
+
* The stop happens synchronously in the CHECK_FINISHED listener, which every
|
|
360
|
+
* terminal path emits right after the outcome event. Stopping before the
|
|
361
|
+
* promise resolves keeps any result processed in the meantime from being
|
|
362
|
+
* reported.
|
|
363
|
+
*/
|
|
364
|
+
maxFailuresReachedOrNever() {
|
|
365
|
+
const maxFailures = this.maxFailures;
|
|
366
|
+
if (!maxFailures || maxFailures < 1) {
|
|
367
|
+
return new Promise(() => { });
|
|
368
|
+
}
|
|
369
|
+
const numChecks = this.checks.size;
|
|
370
|
+
let numFailed = 0;
|
|
371
|
+
let numFinished = 0;
|
|
372
|
+
return new Promise(resolve => {
|
|
373
|
+
this.on(Events.CHECK_SUCCESSFUL, (_sequenceId, _check, result) => {
|
|
374
|
+
// Matches how reporters classify results: a cancelled result is not a failure.
|
|
375
|
+
if (result?.hasFailures && !result.isCancelled)
|
|
376
|
+
numFailed++;
|
|
377
|
+
});
|
|
378
|
+
this.on(Events.CHECK_FAILED, () => {
|
|
379
|
+
numFailed++;
|
|
380
|
+
});
|
|
381
|
+
this.on(Events.CHECK_FINISHED, () => {
|
|
382
|
+
numFinished++;
|
|
383
|
+
if (this._maxFailuresReached || numFailed < maxFailures || numFinished === numChecks) {
|
|
384
|
+
return;
|
|
306
385
|
}
|
|
307
|
-
this.
|
|
308
|
-
this.
|
|
309
|
-
|
|
386
|
+
this._maxFailuresReached = true;
|
|
387
|
+
this.disableAllTimeouts();
|
|
388
|
+
this.queue.clear();
|
|
389
|
+
resolve();
|
|
390
|
+
});
|
|
310
391
|
});
|
|
311
392
|
}
|
|
393
|
+
setAllTimeouts() {
|
|
394
|
+
// Pre-start timers carry scheduling-delay headroom: a check at the tail
|
|
395
|
+
// of a large staggered session may legitimately sit in a delay slot for
|
|
396
|
+
// up to MAX_SCHEDULING_DELAY_SECONDS before it runs. The timer is
|
|
397
|
+
// re-armed to the plain execution timeout when run-start arrives (see
|
|
398
|
+
// processMessage).
|
|
399
|
+
Array.from(this.checks.entries()).forEach(([sequenceId, { check }]) => this.armTimeout(sequenceId, check, { started: false }));
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Restart the result timeout for a check that is still running, without
|
|
403
|
+
* the scheduling-delay headroom. Called when the run starts and on every
|
|
404
|
+
* retry attempt. The timeout guards against a
|
|
405
|
+
* result that never arrives, not against a long but progressing retry
|
|
406
|
+
* sequence; the backend caps retries by count and cumulative time, so the
|
|
407
|
+
* total wait stays bounded. Only call this while the check is not terminal.
|
|
408
|
+
*/
|
|
409
|
+
resetTimeout(sequenceId, check) {
|
|
410
|
+
this.disableTimeout(sequenceId);
|
|
411
|
+
this.armTimeout(sequenceId, check, { started: true });
|
|
412
|
+
}
|
|
413
|
+
armTimeout(sequenceId, check, { started }) {
|
|
414
|
+
const executionTimeout = (check instanceof PlaywrightCheck && this.timeout === DEFAULT_CHECK_RUN_TIMEOUT_SECONDS)
|
|
415
|
+
? DEFAULT_PLAYWRIGHT_CHECK_RUN_TIMEOUT_SECONDS
|
|
416
|
+
: this.timeout;
|
|
417
|
+
const checkTimeout = started ? executionTimeout : executionTimeout + MAX_SCHEDULING_DELAY_SECONDS;
|
|
418
|
+
this.timeouts.set(sequenceId, setTimeout(() => {
|
|
419
|
+
this.timeouts.delete(sequenceId);
|
|
420
|
+
let errorMessage = started
|
|
421
|
+
? `Reached timeout of ${checkTimeout} seconds waiting for check result.`
|
|
422
|
+
: `Check did not start within ${checkTimeout} seconds (execution timeout plus the maximum scheduling delay).`;
|
|
423
|
+
// A running Playwright check can legitimately take longer, so point the
|
|
424
|
+
// user to the --timeout flag. A check that never started is a
|
|
425
|
+
// Checkly-side problem whatever its type or --timeout, and so is a
|
|
426
|
+
// check that ran past the default timeout: Checkly should always report
|
|
427
|
+
// a result within 240s of a check starting. Point the user to the
|
|
428
|
+
// status page and support email in those cases.
|
|
429
|
+
if (started && check instanceof PlaywrightCheck) {
|
|
430
|
+
errorMessage += ' Use a custom timeout with --timeout';
|
|
431
|
+
}
|
|
432
|
+
else if (!started || this.timeout === DEFAULT_CHECK_RUN_TIMEOUT_SECONDS) {
|
|
433
|
+
errorMessage += ' Checkly may be experiencing problems. Please check https://is.checkly.online or reach out to support@checklyhq.com.';
|
|
434
|
+
}
|
|
435
|
+
this.emit(Events.CHECK_FAILED, sequenceId, check, errorMessage, { timedOut: true });
|
|
436
|
+
this.emit(Events.CHECK_FINISHED, check);
|
|
437
|
+
}, checkTimeout * 1000));
|
|
438
|
+
}
|
|
312
439
|
disableAllTimeouts() {
|
|
313
440
|
if (!this.checks) {
|
|
314
441
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstract-check-runner.js","sourceRoot":"","sources":["../../src/services/abstract-check-runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"abstract-check-runner.js","sourceRoot":"","sources":["../../src/services/abstract-check-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,6 +39,7 @@ export declare class BundleTooLargeError extends Error {
|
|
|
39
39
|
}
|
|
40
40
|
export interface CreateFinalizedBundleArchiveOptions {
|
|
41
41
|
archiveFile: string;
|
|
42
|
+
sha256: string;
|
|
42
43
|
containsEmbeddedPackages?: boolean;
|
|
43
44
|
}
|
|
44
45
|
export declare class FinalizedBundleArchive {
|
|
@@ -46,6 +47,8 @@ export declare class FinalizedBundleArchive {
|
|
|
46
47
|
private constructor();
|
|
47
48
|
static create(options: CreateFinalizedBundleArchiveOptions): Promise<FinalizedBundleArchive>;
|
|
48
49
|
get archiveFile(): string;
|
|
50
|
+
/** Lowercase hex SHA-256 of the archive's bytes. */
|
|
51
|
+
get sha256(): string;
|
|
49
52
|
store(): Promise<RemoteBundleArchive>;
|
|
50
53
|
}
|
|
51
54
|
export interface CreateRemoteBundleArchiveOptions {
|
|
@@ -133,6 +136,11 @@ export declare class Bundler {
|
|
|
133
136
|
* {@link BundlePathMarker} solves for the archive path.
|
|
134
137
|
*/
|
|
135
138
|
get cacheHash(): CacheHashMarker;
|
|
139
|
+
/**
|
|
140
|
+
* The code bundle's content hash, filled in by finalize(). See
|
|
141
|
+
* {@link CodeBundleChecksumMarker} for why it is a holder.
|
|
142
|
+
*/
|
|
143
|
+
get codeBundleSha256(): CodeBundleChecksumMarker;
|
|
136
144
|
/**
|
|
137
145
|
* Whether any files have been registered for bundling. Only Playwright check
|
|
138
146
|
* suites register files (see playwright-check.ts), so an empty bundler means the
|
|
@@ -163,3 +171,21 @@ export declare class CacheHashMarker {
|
|
|
163
171
|
updateValue(newValue: string): void;
|
|
164
172
|
toJSON(): string;
|
|
165
173
|
}
|
|
174
|
+
/**
|
|
175
|
+
* Mutable holder for the code bundle's SHA-256, serialized as a plain string.
|
|
176
|
+
* Checks copy it into their payloads during bundle(), but the archive it
|
|
177
|
+
* describes only exists once finalize() has run — the same ordering problem
|
|
178
|
+
* {@link BundlePathMarker} solves for the archive path.
|
|
179
|
+
*
|
|
180
|
+
* Starts empty and serializes to `undefined` until finalize() fills it in, so
|
|
181
|
+
* a payload synthesized without a finalized archive simply omits the key
|
|
182
|
+
* instead of claiming a hash of nothing.
|
|
183
|
+
*
|
|
184
|
+
* Deliberately a standalone class rather than a subclass of
|
|
185
|
+
* {@link BundlePathMarker}, for the reason given on {@link CacheHashMarker}.
|
|
186
|
+
*/
|
|
187
|
+
export declare class CodeBundleChecksumMarker {
|
|
188
|
+
#private;
|
|
189
|
+
updateValue(newValue: string): void;
|
|
190
|
+
toJSON(): string | undefined;
|
|
191
|
+
}
|
|
@@ -15,6 +15,7 @@ import { lockfileArchivePath, manifestArchivePath, pruneBundledLockfile } from '
|
|
|
15
15
|
import { MemberPruneDiagnostics, normalizePackagePrune, prunePackageJson, resolveManifestPrune, } from './package-prune.js';
|
|
16
16
|
import { findUnrepairedPatchKeys, isRemovablePatchPath, planPatchFilter, } from './patched-dependencies.js';
|
|
17
17
|
import { REGISTRIES_ARCHIVE_PATH, serializeRegistries, validateRegistries } from '../runner/registries.js';
|
|
18
|
+
import { sha256OfFile } from '../content-hash.js';
|
|
18
19
|
import { pathToPosix } from '../util.js';
|
|
19
20
|
const debug = Debug('checkly:cli:services:check-parser:bundler');
|
|
20
21
|
/**
|
|
@@ -89,6 +90,12 @@ function dropSymlinksWithChildren(entries) {
|
|
|
89
90
|
})
|
|
90
91
|
.map(([, file]) => file);
|
|
91
92
|
}
|
|
93
|
+
/**
|
|
94
|
+
* Timestamp stamped on every archive entry, in place of the file's own mtime or
|
|
95
|
+
* the clock. Fixed so the archive's content hash describes the content and
|
|
96
|
+
* nothing else; see {@link BundleArchive.add}.
|
|
97
|
+
*/
|
|
98
|
+
const ARCHIVE_ENTRY_DATE = new Date(0);
|
|
92
99
|
export class BundleArchive {
|
|
93
100
|
static TMPDIR_PREFIX = 'cli-';
|
|
94
101
|
static DEFAULT_FILENAME = 'playwright-project.tar.gz';
|
|
@@ -161,13 +168,33 @@ export class BundleArchive {
|
|
|
161
168
|
const entry = {
|
|
162
169
|
mode: 0o755, // Default mode for files in the archive
|
|
163
170
|
name,
|
|
171
|
+
// Every entry's timestamp is pinned, because the archive's SHA-256 is
|
|
172
|
+
// what tells Checkly whether the code bundle changed and it has to
|
|
173
|
+
// describe the content alone. Left alone, a tar entry carries the
|
|
174
|
+
// file's mtime — or, for an entry the bundler generates in memory (a
|
|
175
|
+
// faux workspace manifest, a pruned lockfile, the runner's registries
|
|
176
|
+
// file), the current time. Either makes two archives of identical
|
|
177
|
+
// content differ: a CI pipeline that clones fresh per run would report
|
|
178
|
+
// every Playwright suite as changed on every deploy.
|
|
179
|
+
date: ARCHIVE_ENTRY_DATE,
|
|
164
180
|
};
|
|
165
181
|
if (!file.physical) {
|
|
166
182
|
this.#archive.append(file.content, entry);
|
|
167
183
|
continue;
|
|
168
184
|
}
|
|
169
185
|
if (file.symlinkTarget !== undefined) {
|
|
170
|
-
|
|
186
|
+
// Appended rather than added through archiver's symlink(), which takes
|
|
187
|
+
// no date and would stamp the entry with the current time — the same
|
|
188
|
+
// reproducibility problem as any other entry, and one that hits every
|
|
189
|
+
// pnpm or npm workspace bundle, since those are symlink farms.
|
|
190
|
+
// `linkname` is the field archiver's tar sink reads for a symlink
|
|
191
|
+
// entry — the same one its own symlink() fills in; the published types
|
|
192
|
+
// do not list it.
|
|
193
|
+
this.#archive.append(Buffer.alloc(0), {
|
|
194
|
+
...entry,
|
|
195
|
+
type: 'symlink',
|
|
196
|
+
linkname: file.symlinkTarget,
|
|
197
|
+
});
|
|
171
198
|
continue;
|
|
172
199
|
}
|
|
173
200
|
const fileStats = stats[index];
|
|
@@ -185,6 +212,10 @@ export class BundleArchive {
|
|
|
185
212
|
});
|
|
186
213
|
return await FinalizedBundleArchive.create({
|
|
187
214
|
archiveFile: this.#archiveFile,
|
|
215
|
+
// Hashed here, where the archive is complete on disk and has not been
|
|
216
|
+
// uploaded yet: the deploy sends the hash, and a preview of that deploy
|
|
217
|
+
// describes the bundle by hash alone.
|
|
218
|
+
sha256: await sha256OfFile(this.#archiveFile),
|
|
188
219
|
containsEmbeddedPackages: this.#containsEmbeddedPackages,
|
|
189
220
|
});
|
|
190
221
|
}
|
|
@@ -248,10 +279,12 @@ function parseMaxBytes(message) {
|
|
|
248
279
|
}
|
|
249
280
|
export class FinalizedBundleArchive {
|
|
250
281
|
#archiveFile;
|
|
282
|
+
#sha256;
|
|
251
283
|
#containsEmbeddedPackages;
|
|
252
284
|
constructor(options) {
|
|
253
|
-
const { archiveFile, containsEmbeddedPackages, } = options;
|
|
285
|
+
const { archiveFile, sha256, containsEmbeddedPackages, } = options;
|
|
254
286
|
this.#archiveFile = archiveFile;
|
|
287
|
+
this.#sha256 = sha256;
|
|
255
288
|
this.#containsEmbeddedPackages = containsEmbeddedPackages ?? false;
|
|
256
289
|
}
|
|
257
290
|
// eslint-disable-next-line require-await
|
|
@@ -261,10 +294,14 @@ export class FinalizedBundleArchive {
|
|
|
261
294
|
get archiveFile() {
|
|
262
295
|
return this.#archiveFile;
|
|
263
296
|
}
|
|
297
|
+
/** Lowercase hex SHA-256 of the archive's bytes. */
|
|
298
|
+
get sha256() {
|
|
299
|
+
return this.#sha256;
|
|
300
|
+
}
|
|
264
301
|
async store() {
|
|
265
302
|
const { size } = await fs.stat(this.#archiveFile);
|
|
266
303
|
try {
|
|
267
|
-
const { data: { key, }, } = await this.#uploadCodeBundle(this.#archiveFile, size);
|
|
304
|
+
const { data: { key, }, } = await this.#uploadCodeBundle(this.#archiveFile, size, this.#sha256);
|
|
268
305
|
return await RemoteBundleArchive.create({
|
|
269
306
|
key,
|
|
270
307
|
});
|
|
@@ -281,13 +318,13 @@ export class FinalizedBundleArchive {
|
|
|
281
318
|
throw err;
|
|
282
319
|
}
|
|
283
320
|
}
|
|
284
|
-
async #uploadCodeBundle(filePath, size) {
|
|
321
|
+
async #uploadCodeBundle(filePath, size, sha256) {
|
|
285
322
|
const stream = createReadStream(filePath);
|
|
286
323
|
stream.on('error', err => {
|
|
287
324
|
throw new Error(`Failed to read Playwright project file: ${err.message}`);
|
|
288
325
|
});
|
|
289
326
|
try {
|
|
290
|
-
return await checklyStorage.uploadCodeBundle(stream, size);
|
|
327
|
+
return await checklyStorage.uploadCodeBundle(stream, size, sha256);
|
|
291
328
|
}
|
|
292
329
|
finally {
|
|
293
330
|
// A failed upload leaves the stream unconsumed and its file handle
|
|
@@ -337,6 +374,7 @@ export class Bundler {
|
|
|
337
374
|
#id;
|
|
338
375
|
#marker;
|
|
339
376
|
#cacheHashMarker;
|
|
377
|
+
#codeBundleChecksumMarker;
|
|
340
378
|
#tempDir;
|
|
341
379
|
#stripPrefix;
|
|
342
380
|
#workspaceContext;
|
|
@@ -355,6 +393,7 @@ export class Bundler {
|
|
|
355
393
|
this.#id = uuid.v4();
|
|
356
394
|
this.#marker = new BundlePathMarker(`bundle:${this.#id}`);
|
|
357
395
|
this.#cacheHashMarker = new CacheHashMarker(cacheHash);
|
|
396
|
+
this.#codeBundleChecksumMarker = new CodeBundleChecksumMarker();
|
|
358
397
|
this.#stripPrefix = stripPrefix;
|
|
359
398
|
this.#tempDir = tempDir;
|
|
360
399
|
this.#workspaceContext = workspaceContext;
|
|
@@ -429,6 +468,13 @@ export class Bundler {
|
|
|
429
468
|
get cacheHash() {
|
|
430
469
|
return this.#cacheHashMarker;
|
|
431
470
|
}
|
|
471
|
+
/**
|
|
472
|
+
* The code bundle's content hash, filled in by finalize(). See
|
|
473
|
+
* {@link CodeBundleChecksumMarker} for why it is a holder.
|
|
474
|
+
*/
|
|
475
|
+
get codeBundleSha256() {
|
|
476
|
+
return this.#codeBundleChecksumMarker;
|
|
477
|
+
}
|
|
432
478
|
/**
|
|
433
479
|
* Whether any files have been registered for bundling. Only Playwright check
|
|
434
480
|
* suites register files (see playwright-check.ts), so an empty bundler means the
|
|
@@ -956,9 +1002,15 @@ export class Bundler {
|
|
|
956
1002
|
tempDir: this.#tempDir,
|
|
957
1003
|
stripPrefix: this.#stripPrefix,
|
|
958
1004
|
});
|
|
959
|
-
const files = dropSymlinksWithChildren(
|
|
1005
|
+
const files = dropSymlinksWithChildren(
|
|
1006
|
+
// Ordered by code point, not `localeCompare`: the order decides the
|
|
1007
|
+
// archive's bytes and therefore its hash, and a locale-sensitive
|
|
1008
|
+
// comparison would make that hash depend on the machine that built it.
|
|
1009
|
+
Array.from(this.#files.entries()).sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0)));
|
|
960
1010
|
await archive.add(...files);
|
|
961
|
-
|
|
1011
|
+
const finalized = await archive.finalize();
|
|
1012
|
+
this.#codeBundleChecksumMarker.updateValue(finalized.sha256);
|
|
1013
|
+
return finalized;
|
|
962
1014
|
}
|
|
963
1015
|
}
|
|
964
1016
|
async function createArchiver() {
|
|
@@ -1010,4 +1062,26 @@ export class CacheHashMarker {
|
|
|
1010
1062
|
return this.#value;
|
|
1011
1063
|
}
|
|
1012
1064
|
}
|
|
1065
|
+
/**
|
|
1066
|
+
* Mutable holder for the code bundle's SHA-256, serialized as a plain string.
|
|
1067
|
+
* Checks copy it into their payloads during bundle(), but the archive it
|
|
1068
|
+
* describes only exists once finalize() has run — the same ordering problem
|
|
1069
|
+
* {@link BundlePathMarker} solves for the archive path.
|
|
1070
|
+
*
|
|
1071
|
+
* Starts empty and serializes to `undefined` until finalize() fills it in, so
|
|
1072
|
+
* a payload synthesized without a finalized archive simply omits the key
|
|
1073
|
+
* instead of claiming a hash of nothing.
|
|
1074
|
+
*
|
|
1075
|
+
* Deliberately a standalone class rather than a subclass of
|
|
1076
|
+
* {@link BundlePathMarker}, for the reason given on {@link CacheHashMarker}.
|
|
1077
|
+
*/
|
|
1078
|
+
export class CodeBundleChecksumMarker {
|
|
1079
|
+
#value;
|
|
1080
|
+
updateValue(newValue) {
|
|
1081
|
+
this.#value = newValue;
|
|
1082
|
+
}
|
|
1083
|
+
toJSON() {
|
|
1084
|
+
return this.#value;
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1013
1087
|
//# sourceMappingURL=bundler.js.map
|