Skip to content

fix(basic-usage): update SSE URL to use HTTPS for secure connection #3472

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jun 3, 2025

Conversation

zzcr
Copy link
Member

@zzcr zzcr commented Jun 3, 2025

sse接口支持https并且优化文档

PR

PR Checklist

Please check if your PR fulfills the following requirements:

  • The commit message follows our Commit Message Guidelines
  • Tests for the changes have been added (for bug fixes / features)
  • Docs have been added / updated (for bug fixes / features)

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • Other... Please describe:

What is the current behavior?

Issue Number: N/A

What is the new behavior?

Does this PR introduce a breaking change?

  • Yes
  • No

Other information

Summary by CodeRabbit

  • New Features

    • Added a new "company" column to the grid, displaying company names in the table.
  • Improvements

    • Updated grid configuration to use a new prop for advanced server and session setup.
    • Enhanced data structure and lifecycle management using Vue 3 Composition API.
    • Improved security by updating the SSE proxy connection to use HTTPS.
  • Bug Fixes

    • Removed the custom checkbox editor for boolean columns, now displaying formatted text instead.
  • Documentation

    • Updated documentation to reflect the new configuration attribute name.

Copy link

coderabbitai bot commented Jun 3, 2025

Walkthrough

The updates refactor a Vue grid demo to use the Composition API, introduce a new "company" column, and remove the boolean checkbox editor. They integrate a model context protocol server/client setup with SSE proxying, update the grid's data structure and lifecycle logic, switch the SSE proxy URL to HTTPS, and revise documentation to reference the updated attribute name.

Changes

File(s) Change Summary
.../ai-agent/basic-usage-composition-api.vue Refactored to Composition API; added "company" column; removed checkbox editor; integrated MCP server/client; added lifecycle hooks and reactive refs.
.../ai-agent/basic-usage.vue Removed boolean column and editor; added "company" column; updated data fields; changed SSE proxy URL to HTTPS; removed JSX usage.
.../ai-agent.js Updated documentation to use tiny_mcp_config attribute name instead of tiny-mcp-config.

Poem

In grids we hop, with columns anew,
"Company" shines where "boole" once grew.
The server connects, the proxy streams,
Vue's Composition API fulfills our dreams.
With docs aligned and code refined,
This bunny leaves no bug behind!
🐇✨

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue

Oops! Something went wrong! :(

ESLint: 8.57.1

ESLint couldn't find the plugin "eslint-plugin-vue".

(The package "eslint-plugin-vue" was not found when loaded as a Node module from the directory "".)

It's likely that the plugin isn't installed correctly. Try reinstalling by running the following:

npm install eslint-plugin-vue@latest --save-dev

The plugin "eslint-plugin-vue" was referenced from the config file in ".eslintrc.js » @antfu/eslint-config » @antfu/eslint-config-vue".

If you still can't figure out the problem, please stop by https://eslint.org/chat/help to chat with the team.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added the bug Something isn't working label Jun 3, 2025
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
examples/sites/demos/pc/app/grid/ai-agent/basic-usage.vue (1)

15-15: Column restructuring looks good, but consider cleaning up unused data properties.

The "company" column has been properly added and the data objects have been updated accordingly. However, the boole property still exists in all data objects (lines 41, 49, 57, 65, 73, 81, 89, 94) but is no longer displayed in any column.

If the boole property is no longer needed, consider removing it from all data objects to keep the data clean:

 {
   id: '1',
   company: 'GFD 科技 YX 公司',
   city: '福州',
   employees: 800,
-  createdDate: '2014-04-30 00:56:00',
-  boole: false
+  createdDate: '2014-04-30 00:56:00'
 },

Also applies to: 37-97

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8cfe037 and 884ef1b.

📒 Files selected for processing (3)
  • examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue (1 hunks)
  • examples/sites/demos/pc/app/grid/ai-agent/basic-usage.vue (3 hunks)
  • examples/sites/demos/pc/app/grid/webdoc/grid-ai-agent.js (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: PR E2E Test (pnpm test:e2e3)
🔇 Additional comments (5)
examples/sites/demos/pc/app/grid/webdoc/grid-ai-agent.js (1)

16-16: Documentation accurately updated to reflect the correct attribute name.

The change from tiny-mcp-config to tiny_mcp_config properly aligns the documentation with the actual prop name used in the Vue components.

examples/sites/demos/pc/app/grid/ai-agent/basic-usage.vue (2)

116-116: HTTPS update successfully implemented.

The SSE URL has been correctly updated to use HTTPS protocol, ensuring secure communication as per the PR objective.


22-22: Good simplification of the script tag.

Removing the JSX language attribute is appropriate since the component doesn't use any JSX syntax.

examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue (2)

147-147: HTTPS update successfully implemented in Composition API version.

The SSE URL has been correctly updated to use HTTPS protocol, maintaining consistency with the basic usage example.


5-11: Well-structured MCP configuration implementation.

The tiny_mcp_config prop binding is properly implemented with both server instance and business metadata, providing clear context for the grid's purpose.

@zzcr zzcr merged commit 1115a63 into dev Jun 3, 2025
6 of 7 checks passed
@zzcr zzcr deleted the zzc/add-https-to-mcp branch June 3, 2025 11:55
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (2)
examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue (2)

108-111: HTTPS URL correctly implemented but consider making it configurable.

The SSE URL has been properly updated to use HTTPS as required by the PR objectives, which addresses the security concern.

Consider making the SSE URL configurable through environment variables or configuration:

+ const SSE_URL = import.meta.env.VITE_SSE_URL || 'https://39.108.160.245/sse'
+
  const { sessionId } = await createSseProxy({
    client,
-    url: 'https://39.108.160.245/sse'
+    url: SSE_URL
  })

113-114: Consider avoiding global window object pollution.

Storing the session ID on the global window object may lead to potential conflicts and makes the application harder to test and maintain.

Consider using a more structured approach for sharing the session ID:

- sessionID.value = sessionId
- window.$sessionId = sessionID.value
+ sessionID.value = sessionId
+ // Consider using a composable or store for global state management
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 884ef1b and 11f87e9.

📒 Files selected for processing (1)
  • examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: PR E2E Test (pnpm test:e2e3)
🔇 Additional comments (3)
examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue (3)

5-11: LGTM: MCP configuration properly integrated.

The MCP configuration is correctly structured with the server instance and business metadata. The attribute name tiny_mcp_config matches the documentation updates mentioned in the AI summary.


25-27: LGTM: MCP-related imports are properly structured.

The imports for MCP server/client functionality and transport utilities are correctly added to support the new integration.


15-15:

✅ Verification successful

Verify consistency of field name change.

The column field has been changed from "name" to "company" which aligns with the data structure updates.


🏁 Script executed:

#!/bin/bash
# Description: Verify that the field name change from "name" to "company" is consistent across related files

# Search for any remaining references to the old "name" field in grid demos
rg -A 3 -B 3 'field.*["\']name["\']' examples/sites/demos/pc/app/grid/ai-agent/

# Search for the new "company" field usage
rg -A 3 -B 3 'field.*["\']company["\']' examples/sites/demos/pc/app/grid/ai-agent/

Length of output: 116


The quoting in your grep commands is causing the syntax error. Let’s correct that and re-run a simpler search for field="name" vs. field="company":


🏁 Script executed:

#!/bin/bash
# Check for any lingering old field="name"
rg -A2 -B2 'field="name"' examples/sites/demos/pc/app/grid/ai-agent/

# Confirm usage of the new field="company"
rg -A2 -B2 'field="company"' examples/sites/demos/pc/app/grid/ai-agent/

Length of output: 1515


Field name change verified across AI agent grid demos

  • No remaining references to field="name" in examples/sites/demos/pc/app/grid/ai-agent/
  • field="company" is correctly used in:
    • basic-usage.vue
    • basic-usage-composition-api.vue

All instances are consistent—approving these changes.

{
id: '1',
name: 'GFD 科技 YX 公司',
company: 'GFD 科技 YX 公司',
city: '福州',
employees: 800,
createdDate: '2014-04-30 00:56:00',
boole: false
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Remove unused boole property from data objects.

The boole property is present in all data objects but is no longer used since the boolean column was removed from the grid. This creates unnecessary data bloat and potential confusion.

  {
    id: '1',
    company: 'GFD 科技 YX 公司',
    city: '福州',
    employees: 800,
-    createdDate: '2014-04-30 00:56:00',
-    boole: false
+    createdDate: '2014-04-30 00:56:00'
  },

Apply similar changes to remove the boole property from all data objects in the array.

Also applies to: 45-45, 53-53, 61-61, 69-69, 77-77, 85-85, 90-90

🤖 Prompt for AI Agents
In examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue at
lines 37, 45, 53, 61, 69, 77, 85, and 90, remove the unused `boole` property
from all data objects. This property is no longer needed since the boolean
column was removed from the grid, so delete `boole: false` from each object to
reduce data bloat and avoid confusion.

Comment on lines +101 to +118
onMounted(async () => {
// 1、创建传输对
const [transport, clientTransport] = createTransportPair()

// 2、创建并连接客户端
const client = new Client({ name: 'ai-agent', version: '1.0.0' }, {})
await client.connect(clientTransport)
const { sessionId } = await createSseProxy({
client,
url: 'https://39.108.160.245/sse'
})

sessionID.value = sessionId
window.$sessionId = sessionID.value

// 3、连接服务器
await server.value.connect(transport)
})
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add error handling for async operations.

The MCP setup in onMounted performs several async operations that could fail, but there's no error handling implemented. This could lead to unhandled promise rejections.

onMounted(async () => {
+  try {
    // 1、创建传输对
    const [transport, clientTransport] = createTransportPair()

    // 2、创建并连接客户端
    const client = new Client({ name: 'ai-agent', version: '1.0.0' }, {})
    await client.connect(clientTransport)
    const { sessionId } = await createSseProxy({
      client,
      url: 'https://39.108.160.245/sse'
    })

    sessionID.value = sessionId
    window.$sessionId = sessionID.value

    // 3、连接服务器
    await server.value.connect(transport)
+  } catch (error) {
+    console.error('Failed to initialize MCP setup:', error)
+    // Consider user-friendly error handling or fallback behavior
+  }
})
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
onMounted(async () => {
// 1、创建传输对
const [transport, clientTransport] = createTransportPair()
// 2、创建并连接客户端
const client = new Client({ name: 'ai-agent', version: '1.0.0' }, {})
await client.connect(clientTransport)
const { sessionId } = await createSseProxy({
client,
url: 'https://39.108.160.245/sse'
})
sessionID.value = sessionId
window.$sessionId = sessionID.value
// 3、连接服务器
await server.value.connect(transport)
})
onMounted(async () => {
try {
// 1、创建传输对
const [transport, clientTransport] = createTransportPair()
// 2、创建并连接客户端
const client = new Client({ name: 'ai-agent', version: '1.0.0' }, {})
await client.connect(clientTransport)
const { sessionId } = await createSseProxy({
client,
url: 'https://39.108.160.245/sse'
})
sessionID.value = sessionId
window.$sessionId = sessionID.value
// 3、连接服务器
await server.value.connect(transport)
} catch (error) {
console.error('Failed to initialize MCP setup:', error)
// Consider user-friendly error handling or fallback behavior
}
})
🤖 Prompt for AI Agents
In examples/sites/demos/pc/app/grid/ai-agent/basic-usage-composition-api.vue
around lines 101 to 118, the async operations inside the onMounted hook lack
error handling, risking unhandled promise rejections. Wrap the entire async
function body in a try-catch block, and in the catch block, log or handle the
error appropriately to ensure any failures during transport creation, client
connection, or server connection are caught and managed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants