feat: DyadError kinds and PostHog IPC exception filtering (#3063)
## Summary
- Add `DyadError` / `DyadErrorKind` in `src/errors/dyad_error.ts` for
classified failures (validation, not found, auth, precondition,
conflict, user cancel, rate limit, etc.).
- Extend `shouldFilterTelemetryException` so filtered kinds are not sent
as PostHog `$exception` events; preserve legacy filters (RateLimitError
429, exact Supabase message set).
- `safe_handle` rethrows `DyadError` unchanged; typed handler invalid
input uses `Validation`.
- Migrate many IPC/main/git/supabase/local-agent call sites from `throw
new Error` to `DyadError` with appropriate kinds.
- Document in `AGENTS.md`, `rules/dyad-errors.md`, and
`.cursor/rules/ipc.mdc`.
## Test plan
- `npm run ts`, `npm run lint`, `npm test` (946 tests) passed locally.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Made with [Cursor](https://cursor.com)
<!-- devin-review-badge-begin -->
---
<a href="https://app.devin.ai/review/dyad-sh/dyad/pull/3063"
target="_blank">
<picture>
<source media="(prefers-color-scheme: dark)"
srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
<img
src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
alt="Open with Devin">
</picture>
</a>
<!-- devin-review-badge-end -->
正在显示
rules/dyad-errors.md
0 → 100644
src/errors/dyad_error.ts
0 → 100644
请
注册
或者
登录
后发表评论