Files
77c17eb361 MUL-8410 fix(qoder): run chat turns on Qoder Cloud Agents (#9726)
* fix(qoder): run chat turns on Qoder Cloud Agents

* fix(qoder): address review nits for Qoder chat (MUL-8410)

- Tell the agent the chat audience (group/direct/unknown) like the local
  daemon's chat prompt, so an IM group reply is not treated as private.
- Update the qoder-runtime README: chat turns and chat session
  continuation are supported.
- Show conversation starters and the new-chat preview for Qoder agents,
  and keep starters when creating a Qoder agent.
- PriorSessionID comment covers chats as well as issues.

Co-authored-by: multica-agent <[email protected]>

---------

Co-authored-by: 安辰 <[email protected]>
Co-authored-by: Multica Eve <[email protected]>
Co-authored-by: multica-agent <[email protected]>
2026-10-31 01:29:56 +08:00

64 lines
3.1 KiB
Go

package qoderruntime
import "encoding/json"
// Claim payload fields consumed by the remote bridge. Keep this HTTP boundary
// independent of the local daemon implementation and its CLI dependencies.
type claimedTask struct {
ID string `json:"id"`
RuntimeID string `json:"runtime_id"`
WorkspaceID string `json:"workspace_id"`
IssueID string `json:"issue_id"`
ChatSessionID string `json:"chat_session_id,omitempty"`
ChatMessage string `json:"chat_message,omitempty"`
ChatAttachments []json.RawMessage `json:"chat_message_attachments,omitempty"`
ChatChannelType string `json:"chat_channel_type,omitempty"`
ChatType string `json:"chat_type,omitempty"`
IsLeaderTask bool `json:"is_leader_task,omitempty"`
AuthToken string `json:"auth_token,omitempty"`
RemoteMCPConnections []json.RawMessage `json:"remote_mcp_connections,omitempty"`
ConnectedApps []json.RawMessage `json:"connected_apps,omitempty"`
PluginHookTools []json.RawMessage `json:"plugin_hook_tools,omitempty"`
Agent *claimedAgent `json:"agent,omitempty"`
PriorSessionID string `json:"prior_session_id,omitempty"`
IssueIdentifier string `json:"issue_identifier,omitempty"`
WorkspaceContext string `json:"workspace_context,omitempty"`
ProjectTitle string `json:"project_title,omitempty"`
ProjectDescription string `json:"project_description,omitempty"`
HandoffNote string `json:"handoff_note,omitempty"`
CoalescedComments []claimedComment `json:"coalesced_comments,omitempty"`
TriggerCommentContent string `json:"trigger_comment_content,omitempty"`
TriggerAuthorName string `json:"trigger_author_name,omitempty"`
ProjectResources []claimedResource `json:"project_resources,omitempty"`
Repos []claimedRepo `json:"repos,omitempty"`
}
type claimedAgent struct {
Instructions string `json:"instructions"`
Skills []claimedSkill `json:"skills,omitempty"`
SkillRefs []json.RawMessage `json:"skill_refs,omitempty"`
CustomEnv map[string]string `json:"custom_env,omitempty"`
CustomArgs []string `json:"custom_args,omitempty"`
McpConfig json.RawMessage `json:"mcp_config,omitempty"`
Model string `json:"model,omitempty"`
ThinkingLevel string `json:"thinking_level,omitempty"`
ServiceTier string `json:"service_tier,omitempty"`
RuntimeConfig json.RawMessage `json:"runtime_config,omitempty"`
}
type claimedSkill struct {
ID string `json:"id"`
}
type claimedComment struct {
AuthorName string `json:"author_name"`
Content string `json:"content"`
}
type claimedResource struct {
ResourceType string `json:"resource_type"`
ResourceRef json.RawMessage `json:"resource_ref"`
}
type claimedRepo struct {
URL string `json:"url"`
Description string `json:"description"`
}