[Refactor/Chore] Better service management with RPC contract #21351

Closed
opened 2026-02-21 20:12:08 -05:00 by yindo · 2 comments
Owner

Originally created by @hyoban on GitHub (Dec 29, 2025).

Originally assigned to: @hyoban, @lyzno1 on GitHub.

Self Checks

  • I have read the Contributing Guide and Language Policy.
  • This is only for refactors or chores; if you would like to ask a question, please head to Discussions.
  • I have searched for existing issues search for existing issues, including closed ones.
  • I confirm that I am using English to submit this report, otherwise it will be closed.
  • 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :)
  • Please do not modify this template :) and fill in all the required fields.

Description

Pick an RPC framework.

Create a package in the workspace.

  • Move the model and service in

Add data validation

Motivation

No response

Additional Context

import type { SystemFeatures } from '@/types/feature'
import { oc, type } from '@orpc/contract'

const base = oc.$route({ inputStructure: 'detailed' })

const systemFeaturesContract = base
  .route({
    path: '/system-features',
    method: 'GET',
  })
  .output(type<SystemFeatures>())

export const contract = {
  systemFeaturesContract,
}
Originally created by @hyoban on GitHub (Dec 29, 2025). Originally assigned to: @hyoban, @lyzno1 on GitHub. ### Self Checks - [x] I have read the [Contributing Guide](https://github.com/langgenius/dify/blob/main/CONTRIBUTING.md) and [Language Policy](https://github.com/langgenius/dify/issues/1542). - [x] This is only for refactors or chores; if you would like to ask a question, please head to [Discussions](https://github.com/langgenius/dify/discussions/categories/general). - [x] I have searched for existing issues [search for existing issues](https://github.com/langgenius/dify/issues), including closed ones. - [x] I confirm that I am using English to submit this report, otherwise it will be closed. - [x] 【中文用户 & Non English User】请使用英语提交,否则会被关闭 :) - [x] Please do not modify this template :) and fill in all the required fields. ### Description Pick an RPC framework. - https://orpc.dev/docs/contract-first/define-contract - https://ts-rest.com/recipies/frontend-only Create a package in the workspace. - Move the model and service in Add data validation ### Motivation _No response_ ### Additional Context ```ts import type { SystemFeatures } from '@/types/feature' import { oc, type } from '@orpc/contract' const base = oc.$route({ inputStructure: 'detailed' }) const systemFeaturesContract = base .route({ path: '/system-features', method: 'GET', }) .output(type<SystemFeatures>()) export const contract = { systemFeaturesContract, } ```
yindo closed this issue 2026-02-21 20:12:08 -05:00
Author
Owner

@SmartDever02 commented on GitHub (Jan 8, 2026):

https://github.com/langgenius/dify/compare/main...SmartDever02:refactor/rpc-contract-system-features?expand=1
here is my draft pr

@crazywoola how do you think of this approach?

@SmartDever02 commented on GitHub (Jan 8, 2026): https://github.com/langgenius/dify/compare/main...SmartDever02:refactor/rpc-contract-system-features?expand=1 here is my draft pr @crazywoola how do you think of this approach?
Author
Owner

@hyoban commented on GitHub (Jan 8, 2026):

@SmartDever02 Thank you for your interest in this issue. I will soon submit a PR as an example, and your suggestions are welcome.

@hyoban commented on GitHub (Jan 8, 2026): @SmartDever02 Thank you for your interest in this issue. I will soon submit a PR as an example, and your suggestions are welcome.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: langgenius/dify#21351