Files
WeHub Mirror 6bf8bebf51
CI / Test and Build (push) Failing after 1s
CI / Migrate Dev DB (push) Has been skipped
CI / Migrate DB (push) Has been skipped
CodeQL / Analyze actions (push) Has been cancelled
CodeQL / Analyze javascript-typescript (push) Has been cancelled
CI / Detect Version (push) Has been cancelled
CI / Detect Desktop Changes (push) Has been cancelled
CI / Build AMD64 (blacksmith-2vcpu-ubuntu-2404, ./docker/cron.Dockerfile, ubuntu-latest, ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Build AMD64 (blacksmith-2vcpu-ubuntu-2404, ./docker/db.Dockerfile, ECR_MIGRATIONS, ubuntu-latest, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build AMD64 (blacksmith-4vcpu-ubuntu-2404, ./docker/pii.Dockerfile, ECR_PII, ubuntu-latest, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build AMD64 (blacksmith-4vcpu-ubuntu-2404, ./docker/realtime.Dockerfile, ECR_REALTIME, ubuntu-latest, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build AMD64 (blacksmith-8vcpu-ubuntu-2404, ./docker/app.Dockerfile, ECR_APP, linux-x64-8-core, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/cron.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/db.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/pii.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-4vcpu-ubuntu-2404-arm, ./docker/realtime.Dockerfile, ubuntu-24.04-arm, ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build ARM64 (GHCR Only) (blacksmith-8vcpu-ubuntu-2404-arm, ./docker/app.Dockerfile, linux-arm64-8-core, ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Check Docs Changes (push) Has been cancelled
Publish CLI Package / publish-npm (push) Has been cancelled
Publish Python SDK / publish-pypi (push) Has been cancelled
CI / Deploy Trigger.dev (Dev) (push) Has been cancelled
Helm Chart / Lint, test, and validate chart (push) Has been cancelled
Helm Chart / Chart version bumped (push) Has been cancelled
Publish TypeScript SDK / publish-npm (push) Has been cancelled
CI / Build Dev ECR (blacksmith-8vcpu-ubuntu-2404, ./docker/app.Dockerfile, ECR_APP, linux-x64-8-core) (push) Has been cancelled
CI / Promote Images (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/cron) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/migrations) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/pii) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/realtime) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-2vcpu-ubuntu-2404, ./docker/db.Dockerfile, ECR_MIGRATIONS, ubuntu-latest) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-4vcpu-ubuntu-2404, ./docker/pii.Dockerfile, ECR_PII, ubuntu-latest) (push) Has been cancelled
CI / Build Dev ECR (blacksmith-4vcpu-ubuntu-2404, ./docker/realtime.Dockerfile, ECR_REALTIME, ubuntu-latest) (push) Has been cancelled
CI / Create GHCR Manifests (ghcr.io/simstudioai/simstudio) (push) Has been cancelled
CI / Process Docs (push) Has been cancelled
CI / Create GitHub Release (push) Has been cancelled
CI / Check Desktop Signing Secrets (push) Has been cancelled
CI / Desktop Release (push) Has been cancelled
CI / Create Desktop Prerelease (push) Has been cancelled
CI / Desktop Prerelease Build (push) Has been cancelled
CI / Publish Desktop Prerelease (push) Has been cancelled
CI / Prune Desktop Prereleases (push) Has been cancelled
Helm Chart / Install on kind and run helm test (push) Has been cancelled
WeHub snapshot of cb28d14c6f2c081de7a0d8729a8c816c9adef67a
2026-08-10 11:17:50 +08:00

112 lines
3.9 KiB
TypeScript

import { type Counter, type Histogram, metrics } from '@opentelemetry/api'
export type ExecutionTimeoutSource =
| 'plan_default'
| 'enterprise_metadata'
| 'async_request_override'
| 'unbounded'
export type ExecutionCancellationBackend = 'trigger_dev' | 'database' | 'in_process'
export type ExecutionCancellationResult = 'cancelled' | 'not_found' | 'error'
interface ExecutionTimeoutInstruments {
resolutions: Counter
effectiveDuration: Histogram
cancellations: Counter
sandboxProviderLimits: Counter
sandboxTeardownFailures: Counter
sandboxImageCleanupFailures: Counter
sandboxCliBuildFailures: Counter
}
let cached: ExecutionTimeoutInstruments | undefined
function instruments(): ExecutionTimeoutInstruments {
if (cached) return cached
const meter = metrics.getMeter('sim-execution')
cached = {
resolutions: meter.createCounter('sim.execution.timeout.resolutions'),
effectiveDuration: meter.createHistogram('sim.execution.timeout.effective', {
unit: 's',
advice: {
explicitBucketBoundaries: [60, 300, 1800, 3600, 5400, 10800, 43200, 86400, 259200, 604800],
},
}),
cancellations: meter.createCounter('sim.execution.cancellation.backend.results'),
sandboxProviderLimits: meter.createCounter('sim.execution.sandbox.provider_limit'),
sandboxTeardownFailures: meter.createCounter('sim.execution.sandbox.teardown.failures'),
sandboxImageCleanupFailures: meter.createCounter(
'sim.execution.sandbox.image_cleanup.failures'
),
sandboxCliBuildFailures: meter.createCounter('sim.execution.sandbox.cli_build.failures'),
}
return cached
}
/** Emits one bounded-cardinality result for an execution cancellation backend attempt. */
export function recordExecutionCancellationBackendResult(params: {
backend: ExecutionCancellationBackend
result: ExecutionCancellationResult
}): void {
instruments().cancellations.add(1, {
'execution.cancellation.backend': params.backend,
'execution.cancellation.result': params.result,
})
}
/** Emits when a sandbox operation reaches a provider's bounded continuous-run limit. */
export function recordSandboxProviderLimit(params: {
provider: 'e2b' | 'daytona'
operation: 'code' | 'command'
}): void {
instruments().sandboxProviderLimits.add(1, {
'sandbox.provider': params.provider,
'sandbox.operation': params.operation,
})
}
/** Emits when best-effort sandbox teardown fails after a run or abort. */
export function recordSandboxTeardownFailure(params: {
provider: 'e2b' | 'daytona'
reason: 'cleanup' | 'cancellation' | 'timeout'
}): void {
instruments().sandboxTeardownFailures.add(1, {
'sandbox.provider': params.provider,
'sandbox.teardown.reason': params.reason,
})
}
/** Emits when best-effort cleanup cannot remove a retired provider image family. */
export function recordSandboxImageCleanupFailure(params: {
provider: 'e2b' | 'daytona'
reason: 'failed_candidate' | 'lost_claim' | 'superseded'
}): void {
instruments().sandboxImageCleanupFailures.add(1, {
'sandbox.provider': params.provider,
'sandbox.image_cleanup.reason': params.reason,
})
}
/** Emits when a prebuilt image containing curated CLI tools fails to build. */
export function recordSandboxCliBuildFailure(params: { provider: 'e2b' | 'daytona' }): void {
instruments().sandboxCliBuildFailures.add(1, {
'sandbox.provider': params.provider,
})
}
/** Emits one bounded-cardinality observation for a resolved execution budget. */
export function recordExecutionTimeoutResolution(params: {
source: ExecutionTimeoutSource
executionType: 'sync' | 'async'
effectiveTimeoutMs: number
}): void {
const attributes = {
'execution.timeout.source': params.source,
'execution.type': params.executionType,
'execution.timeout.bounded': params.effectiveTimeoutMs > 0,
}
const { resolutions, effectiveDuration } = instruments()
resolutions.add(1, attributes)
effectiveDuration.record(Math.max(0, params.effectiveTimeoutMs / 1000), attributes)
}