DashboardcliDistillation

Distillation

ID: f2340884-8f46-4eed-99cb-d93a40f30355
Session: 0cvCFbbhdaJ4
Generation: 0
Tokens: 1481
R_compression: 13.505
C_norm: 0.000
Archived: No
Created: 2026-09-10 16:15:59
Source IDs:
["lore_tm_v1_3ycUG9ppC-vCeYirBArM2_Wx1WKd0E2JfnBM3_DAM7o"]

Observations

πŸ”΄ (15:56) [enforced-script-verification] User reiterated that package.json must always be checked for the latest scripts before choosing project commands; commands run from packages/cli or from the repository root via pnpm --filter sentry run <script>. πŸ”΄ (15:56) User provided development commands: pnpm install installs dependencies from the repository root; pnpm run dev runs the CLI in development mode; pnpm run cli -- <args> runs the CLI with arguments. πŸ”΄ (15:56) [enforced-dependency-policy] User reiterated that all packages must be in devDependencies, never dependencies, because esbuild bundles everything at build time; CI enforces this with pnpm run check:deps. πŸ”΄ (15:56) [enforced-package-command] User reiterated that packages must always be added with pnpm add -D <package>, including the -D flag. πŸ”΄ (15:56) User stated the project runs on Node.js and was migrated from Bun; code must use Node.js standard-library node:* APIs and must not reintroduce Bun.* globals, bun:test, or bun CLI commands. πŸ”΄ (15:56) User described CLI architecture: src/bin.ts is the entry point; src/app.ts configures the Stricli application; src/context.ts provides the dependency-injection context. πŸ”΄ (15:56) User stated src/commands/ has one directory per command group, including auth, cli, dashboard, event, issue, log, org, project, release, replay, repo, sourcemap, span, team, trace, trial, and local, plus standalone files api.ts, explore.ts, help.ts, init.ts, and schema.ts. πŸ”΄ (15:56) User stated src/lib/ contains shared utilities, with key subtrees api/ for domain API modules, db/ for the SQLite layer, dsn/ for DSN detection and per-language extractors under dsn/languages/, and formatters/ for output formatting. πŸ”΄ (15:56) User stated src/types/ contains TypeScript types and Zod schemas. πŸ”΄ (15:56) User stated test/ mirrors src/ and includes unit tests, *.property.test.ts, *.model-based.test.ts, e2e/, fixtures/, and mocks/. πŸ”΄ (15:56) User stated ../../apps/cli-docs/ is the Astro + Starlight documentation site; script/ contains build/utility scripts; .cursor/rules/ contains Cursor AI rules; and biome.jsonc is the lint configuration. πŸ”΄ (15:56) User provided the command implementation pattern using buildCommand, with docs.brief and docs.fullDescription; output configuration via human, optional jsonTransform, and optional jsonExclude; parsed flags such as limit: { kind: "parsed", parse: Number, brief: "Max items", default: 10 }; an async generator func(this: SentryContext, flags) yielding new CommandOutput(data); and an optional returned hint such as Tip: use --json for machine-readable output. πŸ”΄ (15:56) User stated route groups use Stricli’s buildRouteMap, wrapped by src/lib/route-map.ts. πŸ”΄ (15:56) User stated mutation commands such as create/delete use shared infrastructure in src/lib/mutate-command.ts, paralleling list-command.ts for list commands. πŸ”΄ (15:56) User enumerated src/lib/mutate-command.ts utilities: isConfirmationBypassed(flags) returns true for --yes or --force; guardNonInteractive(flags) throws in non-interactive mode without --yes; confirmByTyping(expected, message) provides type-out confirmation; requireExplicitTarget(parsed, entityType, usage) blocks auto-detection for safety; and DESTRUCTIVE_FLAGS / DESTRUCTIVE_ALIASES are spreadable bundles for manual use. πŸ”΄ (15:56) User specified pagination hint rules: show -c prev when hasPreviousPage() returns true; show -c next when hasMore is true; include both nextCursor and hasPrev in the JSON envelope. πŸ”΄ (15:56) [enforced-pagination-limit] User reiterated that a per_page value larger than API_MAX_PER_PAGE must never be passed to the API because the server silently caps it, causing commands to return fewer items than requested. πŸ”΄ (15:56) User specified timestamp sorting must use "date", not "time"; sort types should be exported from the API layer, such as SpanSortValue from api/traces.ts, and imported by commands, matching issue list, trace list, and span list. πŸ”΄ (15:56) User specified error-class selection: use ContextError when a required value was omitted, such as no org/project; use ResolutionError when a user-provided value was not found, such as Project 'cli' not found; use ValidationError for malformed input, such as an invalid hex ID. πŸ”΄ (15:56) User stated different Sentry API endpoints use different project-filtering mechanisms and both mechanisms must never be applied simultaneously. πŸ”΄ (15:56) [enforced-comment-style] User stated inline comments are not allowed when they merely restate code, giving prohibited examples // if no person, // increment i, and // return result. πŸ”΄ (15:56) [enforced-property-testing] User stated property-test properties must always hold regardless of input; examples included symmetry for myFunction(a, b) versus myFunction(b, a) and a round trip where decode(encode(input)) equals the original input, both run with { numRuns: DEFAULT_NUM_RUNS }. πŸ”΄ (15:56) User provided a test-isolation pattern: call createIsolatedDbContext() to create an isolated database for each test run, execute test code inside try, and invoke cleanup() in finally to prevent interference. πŸ”΄ (15:56) User stated automated bug-fix PRs, including Cursor BugBot PRs, must follow repository rules intended to prevent duplication and staleness after five overlapping PRs accumulated. πŸ”΄ (15:56) User described product goals: zero-config project-context detection from DSNs in source code and environment files; Seer AI integration for root-cause analysis and fix plans; developer-friendly UX following gh CLI conventions; agent-friendly JSON output and predictable behavior; and speed through Node SEA native binaries built with fossilize plus SQLite caching for API responses.