{
 "flight": {
  "id": 930486,
  "agent": "devin",
  "state": "merged",
  "title": "Add convexToZod function and helper",
  "number": 515,
  "source": "aidev",
  "commits": 15,
  "debrief": "Devin added convexToZod and convexToZodFields to convex-helpers, the inverse of the existing zodToConvex, across two files. Across 15 commits, the change ran to 514 additions and 149 deletions. Two reviews requested two changes, and the reviewer asked for \"please test for optional values too\" before merge. The PR merged after rework, 4.29 hours after opening.",
  "outcome": "merged_after_rework",
  "signals": [
   "aidev:Devin"
  ],
  "index_ok": true,
  "additions": 514,
  "closed_at": "2025-03-26T04:26:27+00:00",
  "deletions": 149,
  "merged_at": "2025-03-26T04:26:27+00:00",
  "opened_at": "2025-03-26T00:09:14+00:00",
  "task_type": "feat",
  "body_chars": 646,
  "confidence": "dataset",
  "updated_at": "2026-11-04T03:09:02.131676+00:00",
  "enriched_at": null,
  "body_excerpt": "This PR adds a `convexToZod` function in the `packages/convex-helpers/server/zod.ts` file that works like `convexToZod(v.string())` -> `z.string()` etc. It also adds a `convexToZodFields` helper function for converting object fields.\n\nThis implements the inverse of the existing `zodToConvex` functio",
  "review_count": 2,
  "files_changed": 2,
  "hours_to_merge": 4.29,
  "metrics_source": "aidev_commit_sum",
  "change_requests": 2,
  "og_generated_at": "2026-11-04T03:09:02.131676+00:00",
  "reviewer_excerpt": "please test for optional values too",
  "review_comment_count": 2,
  "reviewer_excerpt_url": "https://github.com/get-convex/convex-helpers/pull/515#pullrequestreview-2715834593"
 },
 "repo": {
  "name": "convex-helpers",
  "owner": "get-convex",
  "stars": 496,
  "license": "Apache-2.0",
  "full_name": "get-convex/convex-helpers",
  "primary_language": "TypeScript"
 },
 "author": {
  "login": "devin-ai-integration[bot]",
  "name": null,
  "github_profile": "https://github.com/devin-ai-integration[bot]",
  "page": null
 },
 "claim": null,
 "events": [
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "reviewed",
   "actor_login": null
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": null,
   "url": null,
   "kind": "committed",
   "actor_login": "Devin AI"
  },
  {
   "at": "2025-03-26T00:51:50+00:00",
   "url": "https://github.com/get-convex/convex-helpers/pull/515#pullrequestreview-2715535428",
   "kind": "changes_requested",
   "actor_login": "ianmacartney"
  },
  {
   "at": "2025-03-26T03:58:05+00:00",
   "url": "https://github.com/get-convex/convex-helpers/pull/515#pullrequestreview-2715834593",
   "kind": "changes_requested",
   "actor_login": "ianmacartney"
  },
  {
   "at": "2025-03-26T04:26:27+00:00",
   "url": null,
   "kind": "merged",
   "actor_login": "ianmacartney"
  },
  {
   "at": "2025-03-26T04:26:27+00:00",
   "url": null,
   "kind": "closed",
   "actor_login": "ianmacartney"
  }
 ],
 "related": [
  {
   "agent": "devin",
   "state": "merged",
   "title": "Add non-React ConvexSessionClient",
   "number": 560,
   "outcome": "merged_clean",
   "index_ok": true,
   "additions": 997,
   "deletions": 467,
   "merged_at": "2025-05-02T22:28:01+00:00",
   "opened_at": "2025-05-01T21:31:07+00:00",
   "task_type": "feat",
   "files_changed": 9,
   "hours_to_merge": 24.95
  },
  {
   "agent": "devin",
   "state": "closed",
   "title": "Add usePaginatedQuery hook to cache helpers",
   "number": 559,
   "outcome": "burn",
   "index_ok": true,
   "additions": 986,
   "deletions": 411,
   "merged_at": null,
   "opened_at": "2025-05-01T17:53:37+00:00",
   "task_type": "feat",
   "files_changed": 5,
   "hours_to_merge": null
  },
  {
   "agent": "devin",
   "state": "closed",
   "title": "Add finally callback to customFunction",
   "number": 516,
   "outcome": "burn",
   "index_ok": true,
   "additions": 1410,
   "deletions": 1018,
   "merged_at": null,
   "opened_at": "2025-03-27T01:47:58+00:00",
   "task_type": "feat",
   "files_changed": 48,
   "hours_to_merge": null
  }
 ],
 "pr_url": "https://github.com/get-convex/convex-helpers/pull/515",
 "page": "https://agentriders.com/logs/get-convex/convex-helpers/515/"
}