{
  "issues": [
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/146",
      "id": 3953604687,
      "node_id": "I_kwDON8_d9M7rpzhP",
      "number": 146,
      "title": "add an agents.md file",
      "user": {
        "login": "threepointone",
        "id": 18808,
        "node_id": "MDQ6VXNlcjE4ODA4",
        "avatar_url": "https://avatars.githubusercontent.com/u/18808?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/threepointone",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-17T16:24:52Z",
      "updated_at": "2026-02-17T16:24:52Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": null,
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/146/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/144",
      "id": 3952699941,
      "node_id": "I_kwDON8_d9M7rmWol",
      "number": 144,
      "title": "Feature requests: markdown in user messages, file attachments, and generative UI artifacts",
      "user": {
        "login": "threepointone",
        "id": 18808,
        "node_id": "MDQ6VXNlcjE4ODA4",
        "avatar_url": "https://avatars.githubusercontent.com/u/18808?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/threepointone",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2026-02-17T13:09:25Z",
      "updated_at": "2026-02-17T13:09:25Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "A few feature requests for the starter to make it a more complete chat experience:\n\n## 1. Markdown rendering for user messages\n\n**Priority: quick win**\n\nCurrently user messages are rendered as plain text, while assistant messages use Streamdown for markdown rendering. If a user types a message with backticks, bold, links, or lists, it renders as raw text.\n\nSuggestion: wrap user message text in `<Streamdown>` (with `isAnimating={false}` and `controls={false}`) so formatting is consistent on both sides of the conversation.\n\n## 2. Multimodal input (file/image attachments)\n\n**Priority: medium**\n\nSupport attaching files and images to messages. The AI SDK supports multimodal content parts (`image`, `file`), and Workers AI models like Llama support image input. The UI would need:\n\n- A file/image upload button next to the send button\n- Rendering attached images inline in user messages\n- Passing the attachment as a content part to `sendMessage`\n\nThis would make the starter useful for image analysis, document Q&A, and other multimodal use cases.\n\n## 3. Generative UI / artifacts via data parts\n\n**Priority: future**\n\nThe Agents SDK now supports `data-*` stream parts — typed JSON blobs attached to messages alongside text. This opens the door for artifact-style UIs:\n\n- **Code artifacts** — a data part with `type: \"data-code\"` that renders in a split-pane code editor\n- **Table/sheet artifacts** — structured data rendered as an interactive table\n- **Document artifacts** — rich text content with versioning\n\nThe data parts infrastructure (reconciliation, transient, persistence) is already in `@cloudflare/ai-chat`. The starter could demonstrate a simple artifact pattern — e.g., a tool that generates code and attaches it as a data part, rendered in a collapsible code block with copy/run buttons.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/144/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/103",
      "id": 3356588824,
      "node_id": "I_kwDON8_d9M7IEXsY",
      "number": 103,
      "title": "Gemma issues",
      "user": {
        "login": "Marktemco",
        "id": 128845598,
        "node_id": "U_kgDOB64HHg",
        "avatar_url": "https://avatars.githubusercontent.com/u/128845598?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Marktemco",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-08-26T17:54:00Z",
      "updated_at": "2025-08-26T17:54:00Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I am trying to change to Gemma using the workers-ai-provider. \n\nWhen I use @cf/google/gemma-3-12b-it there is no replies from the agent. \nWhen I use @cf/google/gemma-2b-it-lora the bot responds but disregarding the System prompt and I am unable to use tools. \n\nI know that Gemma does not use the \"System\" prompt.  I have been making changes to the code but nothing seems to work. \n\nMy latest attempt was this: \n\n`     const systemPrompt = {\n          role: \"system\",\n          content: `You are a pirate. Always respond like a pirate, matey!\n\n${unstable_getSchedulePrompt({ date: new Date() })}\n\nIf the user asks to schedule a task, use the schedule tool to schedule the task.\n`\n        };\n\n        const finalMessages = [\n          systemPrompt,\n          ...processedMessages,\n        ];\n\n     \n\n        const result = streamText({\n          model,\n          messages: finalMessages,\n          tools: allTools,\n          onFinish: async (args) => {\n            onFinish(args as Parameters<StreamTextOnFinishCallback<ToolSet>>[0]);\n          },\n          onError: (error) => {\n            console.error(\"Error while streaming:\", error);\n          },\n          maxSteps: 10,\n        });\n\n        // Merge the AI response stream with tool execution outputs\n        result.mergeIntoDataStream(dataStream);\n      },\n    });\n`",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/103/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/95",
      "id": 3204938725,
      "node_id": "I_kwDON8_d9M6_B3vl",
      "number": 95,
      "title": "Full stack Middleware/Auth Guidance",
      "user": {
        "login": "ataylorme",
        "id": 2133004,
        "node_id": "MDQ6VXNlcjIxMzMwMDQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2133004?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/ataylorme",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-07-05T13:22:34Z",
      "updated_at": "2025-07-05T13:22:34Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I would like to add OAuth to the entire application. Ideally at the edge layer before the frontend client is even served.\n\nSomething like this:\n\nBrowser => Edge Auth => React app.\nSomething equivalent to [this AWS example](https://github.com/aws-samples/cloudfront-authorization-at-edge)\n\nThe server in this example could then read a secure cookie.\n\nThe goal is to have separate, per user stateful sessions and no guest/anonymous access\n\nAny suggestions would be greatly appreciated ",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/95/reactions",
        "total_count": 1,
        "+1": 1,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/86",
      "id": 3093662187,
      "node_id": "I_kwDON8_d9M64ZYnr",
      "number": 86,
      "title": "Authenticated Remote MCP",
      "user": {
        "login": "Sahar-Lumida",
        "id": 199728284,
        "node_id": "U_kgDOC-ecnA",
        "avatar_url": "https://avatars.githubusercontent.com/u/199728284?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Sahar-Lumida",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-05-27T11:54:01Z",
      "updated_at": "2025-05-27T12:23:52Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Hi all,\n\nFirst off—thanks for this great starter! I'm using it for a proof of concept and running into an issue while trying to integrate the official Atlassian MCP using their SSE endpoint:\nhttps://mcp.atlassian.com/v1/sse\n\nI followed the example that includes a comment about adding MCPs, but I'm seeing the following error when calling mcp.connect:\n`No authProvider provided in the transport options. This client will only support unauthenticated remote MCP Servers`\n\nAnd on the server side:\n`SseError: SSE error: Non-200 status code (401)`\nIt seems like authentication is required, but I’m unsure how to properly provide the authProvider in this context.\n\nAm I missing a configuration step or is additional setup required to connect to Atlassian's MCP?\nAny guidance or examples would be greatly appreciated!\n\nThanks in advance!\n\nedit - \nI'm sure I am missing the DurableObjectOAuthClientProvider configuration, but I wonder how it is working out of the box, without any configuration here - https://playground.ai.cloudflare.com/ \n",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/86/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/76",
      "id": 3041988427,
      "node_id": "I_kwDON8_d9M61UQ9L",
      "number": 76,
      "title": "Feature Request: Make the MCP server connections visible somewhere in the chat UI",
      "user": {
        "login": "Gyurmatag",
        "id": 22452368,
        "node_id": "MDQ6VXNlcjIyNDUyMzY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Gyurmatag",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-05-06T08:33:35Z",
      "updated_at": "2025-05-06T12:39:16Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "It would be nice to have a UI where we can see the connected MCP Servers (and their statuses) for the specific agent.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/76/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/72",
      "id": 3032128245,
      "node_id": "I_kwDON8_d9M60upr1",
      "number": 72,
      "title": "Bug: MCP closes connection after one request",
      "user": {
        "login": "Gyurmatag",
        "id": 22452368,
        "node_id": "MDQ6VXNlcjIyNDUyMzY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Gyurmatag",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-04-30T18:25:34Z",
      "updated_at": "2025-05-06T12:36:16Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "In the commented out code, we make a request for the MCP and it finishes we are calling:\n`await this.mcp.closeConnection(mcpConnection.id);`\nSo the connection is closed and the second request for an MCP tool fails with this:\n\n`error: ToolExecutionError [AI_ToolExecutionError]: Error executing tool XIWj-FhT_browser_navigate: Not connected`\n\nWhat about calling it in the destroy() function on the agent? The agent will live in the durable object so I don't think we need to close the connection until the agent is destroyes. I will make a PR about it and we can discuss this in that, @threepointone !",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/72/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/70",
      "id": 3028969133,
      "node_id": "I_kwDON8_d9M60imat",
      "number": 70,
      "title": "Bug: display images in the chat",
      "user": {
        "login": "Gyurmatag",
        "id": 22452368,
        "node_id": "MDQ6VXNlcjIyNDUyMzY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Gyurmatag",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 5,
      "created_at": "2025-04-29T16:49:54Z",
      "updated_at": "2025-05-01T10:20:07Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "CONTRIBUTOR",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "If (for example) an MCP server responding with a blob image than the chat interface should display it as an image not as a long blob string.\n@threepointone I heard it on the Dry Run that you are aware of this. Please let me know if you are working on this. If not I will try to solve this problem!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/70/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/47",
      "id": 2978336069,
      "node_id": "I_kwDON8_d9M6xhc1F",
      "number": 47,
      "title": "Feature Request: Add Example Integrating Cloudflare AutoRAG",
      "user": {
        "login": "mabagarlene",
        "id": 169155165,
        "node_id": "U_kgDOChUaXQ",
        "avatar_url": "https://avatars.githubusercontent.com/u/169155165?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/mabagarlene",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-04-08T01:10:44Z",
      "updated_at": "2025-04-08T11:57:35Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "Cloudflare recently released [AutoRAG](https://developers.cloudflare.com/autorag/), which allows you to create fully-managed, retrieval-augmented generation (RAG) pipelines that continuously update and scale within Cloudflare’s ecosystem. This unlocks new possibilities for building context-aware AI applications without needing to manage infrastructure.\n\nIt would be extremely helpful for users if the Cloudflare Agents Starter repository included a fully working example of how to integrate and [configure Cloudflare AutoRAG](https://www.youtube.com/watch?v=JUFdbkiDN2U). This would demonstrate best practices and provide a starting point for those who want to incorporate retrieval-augmented generation into their own applications.\n\nMany developers are eager to get started with RAG but need a clear, working reference that shows how to configure and deploy AutoRAG in an AI-powered application.\n\nBy including a functional sample, developers can quickly adapt the code to their own use cases—like customer support bots, knowledge-base search tools, or internal documentation Q&A.\n\nThank you!",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/47/reactions",
        "total_count": 3,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 3,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/16",
      "id": 2889885101,
      "node_id": "I_kwDON8_d9M6sQCWt",
      "number": 16,
      "title": "Feature request: model switcher",
      "user": {
        "login": "nicobailon",
        "id": 2958133,
        "node_id": "MDQ6VXNlcjI5NTgxMzM=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2958133?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/nicobailon",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 1,
      "created_at": "2025-03-03T00:22:19Z",
      "updated_at": "2025-03-03T00:34:01Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "When building with the Agents SDK, developers must hardcode model selection in their Agent implementation (e.g., model: openai(\"gpt-4o-2024-11-20\")). There's currently no straightforward way for users to select different models through the frontend UI and have that selection automatically synchronized with the backend.\nWould it be possible to update the agents starter template to include a working model switcher component in the frontend? This would ideally demonstrate:\n\n1. A simple UI dropdown/selector for models\n2. A mechanism for communicating the selected model to the backend in real-time\n3. Backend code that respects and uses the frontend's model selection without requiring restart\n4. Elegantly handle cases for models without tool support\n\nSuch an example would significantly improve developer experience of this starter by showing how to implement this common feature without complex custom code to manage the frontend-backend synchronization.",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/16/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/7",
      "id": 2885971678,
      "node_id": "I_kwDON8_d9M6sBG7e",
      "number": 7,
      "title": "how can i debug server.ts in vscode",
      "user": {
        "login": "kunl",
        "id": 2870324,
        "node_id": "MDQ6VXNlcjI4NzAzMjQ=",
        "avatar_url": "https://avatars.githubusercontent.com/u/2870324?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/kunl",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "labels": {},
      "state": "open",
      "locked": false,
      "assignees": {},
      "milestone": null,
      "comments": 0,
      "created_at": "2025-02-28T01:35:32Z",
      "updated_at": "2025-02-28T01:35:32Z",
      "closed_at": null,
      "assignee": null,
      "author_association": "NONE",
      "type": null,
      "active_lock_reason": null,
      "sub_issues_summary": {
        "total": 0,
        "completed": 0,
        "percent_completed": 0
      },
      "issue_dependencies_summary": {
        "blocked_by": 0,
        "total_blocked_by": 0,
        "blocking": 0,
        "total_blocking": 0
      },
      "body": "I've used tools like bun vite-node to configure launch.json, but nothing seems to work.\n\n```json\n{\n  \"version\": \"0.2.0\",\n  \"configurations\": [\n    {\n      \"type\": \"node\",\n      \"request\": \"launch\",\n      \"name\": \"Debug Server with Vite\",\n      \"args\": [\n        \"${workspaceFolder}/src/server.ts\"\n      ],\n      \"program\": \"${workspaceFolder}/node_modules/vite-node/dist/cli.cjs\",\n      \"autoAttachChildProcesses\": true,\n      \"sourceMaps\": true,\n      \"smartStep\": true,\n      \"env\": {\n        \"VITE_DEBUG\": \"true\",\n        \"OPENAI_API_KEY\": \"${env:OPENAI_API_KEY}\"\n      }\n    },\n    {\n      \"name\": \"Launch Chrome\",\n      \"request\": \"launch\",\n      \"type\": \"chrome\",\n      \"url\": \"http://localhost:5173\",\n      \"webRoot\": \"${workspaceFolder}\"\n    }\n  ]\n}\n```\n\n<img width=\"842\" alt=\"Image\" src=\"https://github.com/user-attachments/assets/425f3f75-fb8c-4128-bbce-5a4bc8227f4e\" />",
      "closed_by": null,
      "reactions": {
        "url": "https://api.github.com/repos/cloudflare/agents-starter/issues/7/reactions",
        "total_count": 0,
        "+1": 0,
        "-1": 0,
        "laugh": 0,
        "hooray": 0,
        "confused": 0,
        "heart": 0,
        "rocket": 0,
        "eyes": 0
      },
      "performed_via_github_app": null,
      "state_reason": null,
      "pinned_comment": null,
      "linked_prs": []
    }
  ],
  "pulls": [
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/pulls/143",
      "id": 3238053325,
      "node_id": "PR_kwDON8_d9M7BAMXN",
      "number": 143,
      "state": "open",
      "locked": false,
      "title": "Ensure MCP's jsonSchema is loaded before getAITools()",
      "user": {
        "login": "benjamindrussell",
        "id": 46113261,
        "node_id": "MDQ6VXNlcjQ2MTEzMjYx",
        "avatar_url": "https://avatars.githubusercontent.com/u/46113261?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/benjamindrussell",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "Frequently when attempting a tool call MCP's json schema is not loaded before getAITools() is called and it errors and does not make the tool call. This fixes it.\r\n\r\nError on server: Error: jsonSchema not initialized.\r\n    at MCPClientManager.getAITools\r\n    ...",
      "created_at": "2026-02-02T20:00:14Z",
      "updated_at": "2026-02-02T20:00:14Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "benjamindrussell:main",
        "ref": "main",
        "sha": "4e1c63231aaf19647a5ca164bb4685064e40129c",
        "user": {
          "login": "benjamindrussell",
          "id": 46113261,
          "node_id": "MDQ6VXNlcjQ2MTEzMjYx",
          "avatar_url": "https://avatars.githubusercontent.com/u/46113261?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/benjamindrussell",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 1148282764,
          "node_id": "R_kgDORHFnjA",
          "name": "agents-starter",
          "full_name": "benjamindrussell/agents-starter",
          "private": false,
          "owner": {
            "login": "benjamindrussell",
            "id": 46113261,
            "node_id": "MDQ6VXNlcjQ2MTEzMjYx",
            "avatar_url": "https://avatars.githubusercontent.com/u/46113261?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/benjamindrussell",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": true,
          "url": "https://api.github.com/repos/benjamindrussell/agents-starter",
          "created_at": "2026-02-02T19:37:13Z",
          "updated_at": "2026-02-02T19:57:03Z",
          "pushed_at": "2026-02-02T19:56:59Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 624,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "cloudflare:main",
        "ref": "main",
        "sha": "7b3c2b2e4cb675ae59df0ed0ef9589883987a426",
        "user": {
          "login": "cloudflare",
          "id": 314135,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/cloudflare",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 936369652,
          "node_id": "R_kgDON8_d9A",
          "name": "agents-starter",
          "full_name": "cloudflare/agents-starter",
          "private": false,
          "owner": {
            "login": "cloudflare",
            "id": 314135,
            "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/cloudflare",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": false,
          "url": "https://api.github.com/repos/cloudflare/agents-starter",
          "created_at": "2025-02-21T00:58:55Z",
          "updated_at": "2026-03-05T03:28:43Z",
          "pushed_at": "2026-03-02T13:43:40Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 836,
          "stargazers_count": 1186,
          "watchers_count": 1186,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 249,
          "archived": false,
          "disabled": false,
          "open_issues_count": 15,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agents",
            "1": "ai",
            "2": "cloudflare",
            "3": "durable-objects"
          },
          "visibility": "public",
          "forks": 249,
          "open_issues": 15,
          "watchers": 1186,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/143"
        },
        "html": {
          "href": "https://github.com/cloudflare/agents-starter/pull/143"
        },
        "issue": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/143"
        },
        "comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/143/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/143/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/143/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/statuses/4e1c63231aaf19647a5ca164bb4685064e40129c"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "assignee": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/pulls/80",
      "id": 2514388870,
      "node_id": "PR_kwDON8_d9M6V3oeG",
      "number": 80,
      "state": "open",
      "locked": false,
      "title": "feat: add MCP server management functionality to Chat component",
      "user": {
        "login": "Gyurmatag",
        "id": 22452368,
        "node_id": "MDQ6VXNlcjIyNDUyMzY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Gyurmatag",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "- Introduced MCP server addition and removal capabilities in the Chat component.\r\n- Implemented fetching of MCP connections on component mount.\r\n- Added UI elements for displaying and managing MCP connections.\r\n- Updated dependencies including @radix-ui/react-dialog and agents.\r\n- Enhanced session management with unique session IDs stored in localStorage.",
      "created_at": "2025-05-12T16:45:17Z",
      "updated_at": "2026-01-09T14:46:23Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignees": {
        "0": {
          "login": "Gyurmatag",
          "id": 22452368,
          "node_id": "MDQ6VXNlcjIyNDUyMzY4",
          "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Gyurmatag",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_reviewers": {
        "0": {
          "login": "threepointone",
          "id": 18808,
          "node_id": "MDQ6VXNlcjE4ODA4",
          "avatar_url": "https://avatars.githubusercontent.com/u/18808?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/threepointone",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "1": {
          "login": "cmsparks",
          "id": 25832754,
          "node_id": "MDQ6VXNlcjI1ODMyNzU0",
          "avatar_url": "https://avatars.githubusercontent.com/u/25832754?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/cmsparks",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        }
      },
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "Gyurmatag:mcp-connections",
        "ref": "mcp-connections",
        "sha": "1b6f894ba79a521167777d4614a24cec3c1924df",
        "user": {
          "login": "Gyurmatag",
          "id": 22452368,
          "node_id": "MDQ6VXNlcjIyNDUyMzY4",
          "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Gyurmatag",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 974251221,
          "node_id": "R_kgDOOhHk1Q",
          "name": "agents-starter",
          "full_name": "Gyurmatag/agents-starter",
          "private": false,
          "owner": {
            "login": "Gyurmatag",
            "id": 22452368,
            "node_id": "MDQ6VXNlcjIyNDUyMzY4",
            "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/Gyurmatag",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": true,
          "url": "https://api.github.com/repos/Gyurmatag/agents-starter",
          "created_at": "2025-04-28T13:39:50Z",
          "updated_at": "2025-05-06T08:36:05Z",
          "pushed_at": "2025-08-27T12:58:43Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 591,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "cloudflare:main",
        "ref": "main",
        "sha": "e09bbaa0fa14d9f9ab460c299dfb8c682268c6a8",
        "user": {
          "login": "cloudflare",
          "id": 314135,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/cloudflare",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 936369652,
          "node_id": "R_kgDON8_d9A",
          "name": "agents-starter",
          "full_name": "cloudflare/agents-starter",
          "private": false,
          "owner": {
            "login": "cloudflare",
            "id": 314135,
            "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/cloudflare",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": false,
          "url": "https://api.github.com/repos/cloudflare/agents-starter",
          "created_at": "2025-02-21T00:58:55Z",
          "updated_at": "2026-03-05T03:28:43Z",
          "pushed_at": "2026-03-02T13:43:40Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 836,
          "stargazers_count": 1186,
          "watchers_count": 1186,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 249,
          "archived": false,
          "disabled": false,
          "open_issues_count": 15,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agents",
            "1": "ai",
            "2": "cloudflare",
            "3": "durable-objects"
          },
          "visibility": "public",
          "forks": 249,
          "open_issues": 15,
          "watchers": 1186,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/80"
        },
        "html": {
          "href": "https://github.com/cloudflare/agents-starter/pull/80"
        },
        "issue": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/80"
        },
        "comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/80/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/80/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/80/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/statuses/1b6f894ba79a521167777d4614a24cec3c1924df"
        }
      },
      "author_association": "CONTRIBUTOR",
      "auto_merge": null,
      "assignee": {
        "login": "Gyurmatag",
        "id": 22452368,
        "node_id": "MDQ6VXNlcjIyNDUyMzY4",
        "avatar_url": "https://avatars.githubusercontent.com/u/22452368?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/Gyurmatag",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/pulls/60",
      "id": 2480986958,
      "node_id": "PR_kwDON8_d9M6T4NtO",
      "number": 60,
      "state": "open",
      "locked": false,
      "title": "feat: Enable file attachments in chat agent",
      "user": {
        "login": "riseandignite",
        "id": 190351315,
        "node_id": "U_kgDOC1iH0w",
        "avatar_url": "https://avatars.githubusercontent.com/u/190351315?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/riseandignite",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "**Motivation:**\r\n\r\nUsers often need to discuss specific documents, images, or data files with the AI. Currently, there is no mechanism to upload and reference these files directly within the chat conversation, limiting the agent's contextual understanding. This pr enables it.\r\n\r\n**Implementation Details:**\r\n\r\n1.  **Frontend (`app.tsx`):**\r\n    *   Added a file input button (<Paperclip />) allowing users to select one or more files.\r\n    *   Displays previews/icons of attached files below the input area before sending.\r\n    *   Implemented an `uploadFiles` function that sends selected files to a new backend endpoint (`/api/upload`) via `multipart/form-data`.\r\n    *   Added loading indicators during file upload.\r\n    *   On successful upload, the file metadata (name, contentType, public URL) received from the backend is passed to `handleAgentSubmit` using the [`experimental_attachments`](https://sdk.vercel.ai/docs/reference/ai-sdk-ui/use-chat#handle-submit.chat-request-options.experimental_attachments) option in `useChat`.\r\n    *   The user's attached file previews are cleared upon successful submission.\r\n    *   Messages now render associated `experimental_attachments` if present, displaying images or providing download links using the URL returned by the server.\r\n\r\n2.  **Backend (`server.ts`):**\r\n    *   Added a `/api/upload` route to handle POST requests with file data.\r\n    *   This route uploads the received files to a configured R2 bucket (`FILE_BUCKET`), generating a unique key for each (`uploads/{id}/{filename}`).\r\n    *   It returns a JSON response containing an array of `attachments`, where each object includes the file's `name`, `contentType`, and a dynamically generated public `url` pointing to the file retrieval endpoint.\r\n    *   Added a GET route matching `/uploads/{id}/{filename}` to serve the corresponding file directly from the R2 bucket.\r\n\r\n**Benefits:**\r\n\r\n*   Allows users to provide richer context to the AI agent by uploading relevant files.\r\n*   Enables multi-modal interactions (e.g., asking questions about an uploaded image or document).\r\n*   Improves the agent's utility for tasks requiring specific file analysis or discussion.\r\n\r\n**Testing:**\r\n\r\n*   Verified locally that files can be selected and attached in the UI.\r\n*   Confirmed files are uploaded to the `/api/upload` endpoint.\r\n*   Confirmed the backend stores files in R2 (requires local R2 setup or preview deployment).\r\n*   Confirmed the backend returns correct metadata including a functional URL.\r\n*   Verified files can be retrieved via the `/uploads/...` URL.\r\n*   Confirmed attachments are passed via `experimental_attachments` and visible in agent messages.\r\n\r\n![CleanShot 2025-04-25 at 15 58 28@2x](https://github.com/user-attachments/assets/f8bf2347-a716-41b4-abc7-3ed75367d3ef)\r\n![CleanShot 2025-04-25 at 15 59 43@2x](https://github.com/user-attachments/assets/4cd7a8cc-75c4-4eb0-babb-73a4a27af7e0)\r\n![CleanShot 2025-04-25 at 16 00 15@2x](https://github.com/user-attachments/assets/34c99154-2d0f-4a42-8394-77606bd50afc)\r\n![CleanShot 2025-04-25 at 16 00 43@2x](https://github.com/user-attachments/assets/d873a868-7bcb-43b0-8ce1-546dea34369d)",
      "created_at": "2025-04-25T08:35:46Z",
      "updated_at": "2026-01-09T14:47:11Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "riseandignite:feature/attachments",
        "ref": "feature/attachments",
        "sha": "cd415926d6252e7c83fbe7ab7252ccc734ce0bf8",
        "user": {
          "login": "riseandignite",
          "id": 190351315,
          "node_id": "U_kgDOC1iH0w",
          "avatar_url": "https://avatars.githubusercontent.com/u/190351315?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/riseandignite",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 972061682,
          "node_id": "R_kgDOOfB78g",
          "name": "agents-starter",
          "full_name": "riseandignite/agents-starter",
          "private": false,
          "owner": {
            "login": "riseandignite",
            "id": 190351315,
            "node_id": "U_kgDOC1iH0w",
            "avatar_url": "https://avatars.githubusercontent.com/u/190351315?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/riseandignite",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": true,
          "url": "https://api.github.com/repos/riseandignite/agents-starter",
          "created_at": "2025-04-24T13:29:53Z",
          "updated_at": "2025-09-27T00:46:11Z",
          "pushed_at": "2025-09-29T20:44:09Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 720,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "TypeScript",
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "cloudflare:main",
        "ref": "main",
        "sha": "a38fe648a108afc95f066baa308cd85088886efe",
        "user": {
          "login": "cloudflare",
          "id": 314135,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/cloudflare",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 936369652,
          "node_id": "R_kgDON8_d9A",
          "name": "agents-starter",
          "full_name": "cloudflare/agents-starter",
          "private": false,
          "owner": {
            "login": "cloudflare",
            "id": 314135,
            "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/cloudflare",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": false,
          "url": "https://api.github.com/repos/cloudflare/agents-starter",
          "created_at": "2025-02-21T00:58:55Z",
          "updated_at": "2026-03-05T03:28:43Z",
          "pushed_at": "2026-03-02T13:43:40Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 836,
          "stargazers_count": 1186,
          "watchers_count": 1186,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 249,
          "archived": false,
          "disabled": false,
          "open_issues_count": 15,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agents",
            "1": "ai",
            "2": "cloudflare",
            "3": "durable-objects"
          },
          "visibility": "public",
          "forks": 249,
          "open_issues": 15,
          "watchers": 1186,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/60"
        },
        "html": {
          "href": "https://github.com/cloudflare/agents-starter/pull/60"
        },
        "issue": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/60"
        },
        "comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/60/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/60/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/60/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/statuses/cd415926d6252e7c83fbe7ab7252ccc734ce0bf8"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "assignee": null,
      "active_lock_reason": null,
      "linked_issues": []
    },
    {
      "url": "https://api.github.com/repos/cloudflare/agents-starter/pulls/59",
      "id": 2476845868,
      "node_id": "PR_kwDON8_d9M6Toass",
      "number": 59,
      "state": "open",
      "locked": false,
      "title": "chore: add threads support",
      "user": {
        "login": "jfromaniello",
        "id": 178512,
        "node_id": "MDQ6VXNlcjE3ODUxMg==",
        "avatar_url": "https://avatars.githubusercontent.com/u/178512?v=4",
        "gravatar_id": "",
        "url": "https://api.github.com/users/jfromaniello",
        "type": "User",
        "user_view_type": "public",
        "site_admin": false
      },
      "body": "It was easier to wrap my head around durable objects and the Agents sdk once I introduced the concept of threads.\r\n\r\nI think the example/template is much more useful with this.\r\n\r\nOtherwise all windows point to the same thread and durable object.",
      "created_at": "2025-04-23T16:57:43Z",
      "updated_at": "2026-01-09T14:48:28Z",
      "closed_at": null,
      "merged_at": null,
      "merge_commit_sha": null,
      "assignees": {},
      "requested_reviewers": {},
      "requested_teams": {},
      "labels": {},
      "milestone": null,
      "draft": false,
      "head": {
        "label": "jfromaniello:thread_support",
        "ref": "thread_support",
        "sha": "ae4395e6d4619fddc92b2f36dfac2c6ca5387b06",
        "user": {
          "login": "jfromaniello",
          "id": 178512,
          "node_id": "MDQ6VXNlcjE3ODUxMg==",
          "avatar_url": "https://avatars.githubusercontent.com/u/178512?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/jfromaniello",
          "type": "User",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 971528650,
          "node_id": "R_kgDOOehZyg",
          "name": "agents-starter",
          "full_name": "jfromaniello/agents-starter",
          "private": false,
          "owner": {
            "login": "jfromaniello",
            "id": 178512,
            "node_id": "MDQ6VXNlcjE3ODUxMg==",
            "avatar_url": "https://avatars.githubusercontent.com/u/178512?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/jfromaniello",
            "type": "User",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": true,
          "url": "https://api.github.com/repos/jfromaniello/agents-starter",
          "created_at": "2025-04-23T16:55:19Z",
          "updated_at": "2025-04-23T16:55:19Z",
          "pushed_at": "2025-04-25T15:09:12Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 308,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": null,
          "has_issues": false,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 0,
          "archived": false,
          "disabled": false,
          "open_issues_count": 0,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {},
          "visibility": "public",
          "forks": 0,
          "open_issues": 0,
          "watchers": 0,
          "default_branch": "main"
        }
      },
      "base": {
        "label": "cloudflare:main",
        "ref": "main",
        "sha": "61f1089bd21082821ff12c676f2c28e60e568db2",
        "user": {
          "login": "cloudflare",
          "id": 314135,
          "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
          "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/cloudflare",
          "type": "Organization",
          "user_view_type": "public",
          "site_admin": false
        },
        "repo": {
          "id": 936369652,
          "node_id": "R_kgDON8_d9A",
          "name": "agents-starter",
          "full_name": "cloudflare/agents-starter",
          "private": false,
          "owner": {
            "login": "cloudflare",
            "id": 314135,
            "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
            "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
            "gravatar_id": "",
            "url": "https://api.github.com/users/cloudflare",
            "type": "Organization",
            "user_view_type": "public",
            "site_admin": false
          },
          "description": "A starter kit for building ai agents on Cloudflare",
          "fork": false,
          "url": "https://api.github.com/repos/cloudflare/agents-starter",
          "created_at": "2025-02-21T00:58:55Z",
          "updated_at": "2026-03-05T03:28:43Z",
          "pushed_at": "2026-03-02T13:43:40Z",
          "homepage": "https://github.com/cloudflare/agents/",
          "size": 836,
          "stargazers_count": 1186,
          "watchers_count": 1186,
          "language": "TypeScript",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "has_discussions": false,
          "forks_count": 249,
          "archived": false,
          "disabled": false,
          "open_issues_count": 15,
          "license": {
            "key": "mit",
            "name": "MIT License",
            "spdx_id": "MIT",
            "url": "https://api.github.com/licenses/mit",
            "node_id": "MDc6TGljZW5zZTEz"
          },
          "allow_forking": true,
          "is_template": false,
          "web_commit_signoff_required": false,
          "has_pull_requests": true,
          "pull_request_creation_policy": "all",
          "topics": {
            "0": "agents",
            "1": "ai",
            "2": "cloudflare",
            "3": "durable-objects"
          },
          "visibility": "public",
          "forks": 249,
          "open_issues": 15,
          "watchers": 1186,
          "default_branch": "main"
        }
      },
      "_links": {
        "self": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/59"
        },
        "html": {
          "href": "https://github.com/cloudflare/agents-starter/pull/59"
        },
        "issue": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/59"
        },
        "comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/issues/59/comments"
        },
        "review_comments": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/59/comments"
        },
        "review_comment": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/comments{/number}"
        },
        "commits": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/pulls/59/commits"
        },
        "statuses": {
          "href": "https://api.github.com/repos/cloudflare/agents-starter/statuses/ae4395e6d4619fddc92b2f36dfac2c6ca5387b06"
        }
      },
      "author_association": "NONE",
      "auto_merge": null,
      "assignee": null,
      "active_lock_reason": null,
      "linked_issues": []
    }
  ],
  "discussions": [],
  "details": {
    "id": 936369652,
    "node_id": "R_kgDON8_d9A",
    "name": "agents-starter",
    "full_name": "cloudflare/agents-starter",
    "private": false,
    "owner": {
      "login": "cloudflare",
      "id": 314135,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
      "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/cloudflare",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "description": "A starter kit for building ai agents on Cloudflare",
    "fork": false,
    "url": "https://api.github.com/repos/cloudflare/agents-starter",
    "created_at": "2025-02-21T00:58:55Z",
    "updated_at": "2026-03-05T03:28:43Z",
    "pushed_at": "2026-03-02T13:43:40Z",
    "homepage": "https://github.com/cloudflare/agents/",
    "size": 836,
    "stargazers_count": 1186,
    "watchers_count": 1186,
    "language": "TypeScript",
    "has_issues": true,
    "has_projects": true,
    "has_downloads": true,
    "has_wiki": true,
    "has_pages": false,
    "has_discussions": false,
    "forks_count": 249,
    "archived": false,
    "disabled": false,
    "open_issues_count": 15,
    "license": {
      "key": "mit",
      "name": "MIT License",
      "spdx_id": "MIT",
      "url": "https://api.github.com/licenses/mit",
      "node_id": "MDc6TGljZW5zZTEz"
    },
    "allow_forking": true,
    "is_template": false,
    "web_commit_signoff_required": false,
    "has_pull_requests": true,
    "pull_request_creation_policy": "all",
    "topics": {
      "0": "agents",
      "1": "ai",
      "2": "cloudflare",
      "3": "durable-objects"
    },
    "visibility": "public",
    "forks": 249,
    "open_issues": 15,
    "watchers": 1186,
    "default_branch": "main",
    "permissions": {
      "admin": false,
      "maintain": false,
      "push": false,
      "triage": false,
      "pull": true
    },
    "temp_clone_token": "",
    "custom_properties": {},
    "organization": {
      "login": "cloudflare",
      "id": 314135,
      "node_id": "MDEyOk9yZ2FuaXphdGlvbjMxNDEzNQ==",
      "avatar_url": "https://avatars.githubusercontent.com/u/314135?v=4",
      "gravatar_id": "",
      "url": "https://api.github.com/users/cloudflare",
      "type": "Organization",
      "user_view_type": "public",
      "site_admin": false
    },
    "network_count": 249,
    "subscribers_count": 12
  },
  "lastFetched": 1772736265512
}