Dashboard › cli › Distillation
0415ca68-4e25-4511-80a4-e136e132f3c0["lore_tm_v1_MlUbLn76ginizD1CieKrvfTlU-voOa03vxEUjHFBuiQ","lore_tm_v1_CsHwUtszeXa4cezedF4bvcOzRkQc24fjXipDN1FE6to"]
await promises in async functions - don't forget to use the return valueβ; prefer async/await over promise chains, handle async errors appropriately with try-catch, and never use async functions as Promise executors.package.json for the latest scripts; commands run from packages/cli or via pnpm --filter sentry run <script> from the repository root.devDependencies, never dependencies, because everything is bundled with esbuild and CI enforces this through pnpm run check:deps.pnpm add -D <package> using the -D flag.packages/cli/.cursor/rules/ultracite.mdc; relevant commands are npx ultracite fix, npx ultracite check, and npx ultracite doctor, with npx ultracite fix required before committing.node:* APIs and do not introduce Bun.*, bun:test, or bun CLI commands.await getAuthToken(), await isAuthenticated(), and await setAuthToken(token, expiresIn).buildCommand from src/lib/command.ts via the appropriate relative .js path, never directly from @stricli/core; the wrapper supplies telemetry, --json/--fields, and output rendering.buildRouteMap from src/lib/route-map.ts, never directly from @stricli/core; standard aliases are auto-injected as list β ls, view β show, delete β remove/rm, and create β new.buildDeleteCommand() from src/lib/mutate-command.ts; it injects --yes, --force, and --dry-run with aliases -y, -f, and -n, and applies a non-interactive safety guard.src/lib/db/pagination.ts and paginationHint() from src/lib/list-command.ts; they must support -c next and -c prev, while "last" is a silent alias for "next".--limit greater than API_MAX_PER_PAGE (100) must transparently fetch multiple pages, must cap perPage with Math.min(flags.limit, API_MAX_PER_PAGE), and must never send an API per_page above 100.validateHexId(value, label) for 32-character hexadecimal IDs, validateSpanId(value) for 16-character span IDs, and validateTraceId(value) as the trace-ID wrapper; validators strip UUID dashes where applicable, normalize to lowercase, and throw ValidationError for malformed input."date", not "time".pnpm run generate:docs, which runs generate:command-docs followed by generate:skill; hand-written command content belongs in docs/src/fragments/commands/.CliError from src/lib/errors.ts and must use EXIT.* constants rather than hardcoded numeric exit codes outside that file.ContextError; provided-but-not-found values use ResolutionError; malformed values use ValidationError.src/ code; every catch must rethrow, log via log.debug()/log.warn(), or return a fallback while logging why the error was suppressed. CI enforces this with lint-rules/no-silent-catch.grit.src/lib/*.ts, existing shared modules must be checked first; if an existing module covers at least 80% of the need, extend it. Every new src/lib/**/*.ts file must begin with module-level JSDoc..js extension, imports should be grouped with external packages before local imports, and type-only imports must use import type.useTestConfigDir() from test/helpers.ts; tests must not delete process.env.SENTRY_CONFIG_DIR, capture it at module scope, or manually manage it with beforeEach/afterEach.DEFAULT_NUM_RUNS from test/model-based/helpers.ts, whose configured run count is 50.main before review and reverify the bug, 3. separate correctness fixes from subjective UX changes, and 4. prefer shared helpers such as autoPaginate() and safeParseJson() over one-off implementations.No files found; the searched path or pattern was not included in the captured result.