You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: server/internal/daemon/types.go
+7-7Lines changed: 7 additions & 7 deletions
Original file line number
Diff line number
Diff line change
@@ -79,11 +79,12 @@ type Task struct {
79
79
TriggerAuthorNamestring`json:"trigger_author_name,omitempty"`// display name of the triggering comment author
80
80
NewCommentCountint`json:"new_comment_count,omitempty"`// issue-wide comments since this agent's last run (excludes its own and the injected trigger); 0/omitted for old daemons or cold start
81
81
NewCommentsSincestring`json:"new_comments_since,omitempty"`// RFC3339 anchor (last run's started_at) the count is measured from; empty on cold start
82
+
IssueAttachments []AttachmentMeta`json:"issue_attachments,omitempty"`// attachments linked to the issue; Claude embeds image attachments directly when possible
82
83
ChatSessionIDstring`json:"chat_session_id,omitempty"`// non-empty for chat tasks
83
84
ChatChannelTypestring`json:"chat_channel_type,omitempty"`// "slack" when the chat session is backed by an IM channel; empty for a web-only chat. Drives the channel-awareness block in the prompt
84
85
ChatInThreadbool`json:"chat_in_thread,omitempty"`// true when the latest @mention was a thread reply; selects which read command the prompt tells the agent to start with
85
86
ChatMessagestring`json:"chat_message,omitempty"`// user message content for chat tasks
86
-
ChatMessageAttachments []ChatAttachmentMeta`json:"chat_message_attachments,omitempty"`// attachments linked to the chat message; agent uses these to `multica attachment download <id>`
87
+
ChatMessageAttachments []AttachmentMeta`json:"chat_message_attachments,omitempty"`// attachments linked to the chat message; agent uses these to `multica attachment download <id>`
87
88
ChatIntrobool`json:"chat_intro,omitempty"`// true for the agent's proactive self-introduction chat (no user message); selects the self-introduction prompt in buildChatPrompt
88
89
AutopilotRunIDstring`json:"autopilot_run_id,omitempty"`// non-empty for autopilot run_only tasks
89
90
AutopilotIDstring`json:"autopilot_id,omitempty"`// autopilot that spawned this run
@@ -130,12 +131,11 @@ type Task struct {
130
131
AuthTokenstring`json:"auth_token,omitempty"`
131
132
}
132
133
133
-
// ChatAttachmentMeta is the structured attachment metadata the daemon
134
-
// hands to the agent for chat tasks. We pass id + filename + content_type
135
-
// so the chat prompt can list them explicitly and instruct the agent to
136
-
// run `multica attachment download <id>` instead of guessing from a
137
-
// signed CDN URL (which expires).
138
-
typeChatAttachmentMetastruct {
134
+
// AttachmentMeta is the structured attachment metadata the daemon receives
135
+
// in claim responses. We pass id + filename + content_type so prompts can
136
+
// list attachments explicitly, and Claude can embed image files directly in
137
+
// the initial user message instead of going through the Read tool_result path.
Copy file name to clipboardExpand all lines: server/internal/handler/agent.go
+7-6Lines changed: 7 additions & 6 deletions
Original file line number
Diff line number
Diff line change
@@ -320,11 +320,12 @@ type AgentTaskResponse struct {
320
320
TriggerAuthorNamestring`json:"trigger_author_name,omitempty"`// display name of the triggering comment author
321
321
NewCommentCountint`json:"new_comment_count,omitempty"`// trigger-thread comments since last run; excludes injected trigger + own comments; omitempty so old daemons ignore it
322
322
NewCommentsSincestring`json:"new_comments_since,omitempty"`// RFC3339 anchor (last run's started_at) the count is measured from; omitempty so old daemons ignore it
323
+
IssueAttachments []AttachmentMeta`json:"issue_attachments,omitempty"`// attachments linked to the issue
323
324
ChatSessionIDstring`json:"chat_session_id,omitempty"`// non-empty for chat tasks
324
325
ChatChannelTypestring`json:"chat_channel_type,omitempty"`// "slack" when the chat session is backed by an IM channel; empty for a web-only chat. Makes the agent channel-aware (read history from the channel, not Multica)
325
326
ChatInThreadbool`json:"chat_in_thread,omitempty"`// true when the latest @mention was a thread reply; tells the agent to start with `multica chat thread` vs `multica chat history`
326
327
ChatMessagestring`json:"chat_message,omitempty"`// user message for chat tasks
327
-
ChatMessageAttachments []ChatAttachmentMeta`json:"chat_message_attachments,omitempty"`// attachments on the user message — agent calls `multica attachment download <id>` per entry
328
+
ChatMessageAttachments []AttachmentMeta`json:"chat_message_attachments,omitempty"`// attachments on the user message — agent calls `multica attachment download <id>` per entry
328
329
ChatIntrobool`json:"chat_intro,omitempty"`// true for the agent's proactive self-introduction chat (is_agent_intro session, no user message); the daemon builds an intro prompt instead of a reply prompt
329
330
AutopilotRunIDstring`json:"autopilot_run_id,omitempty"`// non-empty for autopilot-spawned tasks
330
331
AutopilotIDstring`json:"autopilot_id,omitempty"`// autopilot that spawned this task
@@ -376,13 +377,13 @@ type AgentTaskResponse struct {
376
377
AuthTokenstring`json:"auth_token,omitempty"`
377
378
}
378
379
379
-
// ChatAttachmentMeta is the structured attachment metadata embedded in
380
-
// claim responses for chat tasks. The agent uses these to run
381
-
// `multica attachment download <id>` rather than guessing from the
382
-
// markdown URL (which is signed and 30-min expiring on private CDN).
380
+
// AttachmentMeta is the structured attachment metadata embedded in
381
+
// claim responses. The daemon uses these to embed image attachments directly
382
+
// for Claude or to tell agents which IDs they can download through the CLI
383
+
// rather than guessing from signed markdown URLs.
383
384
// The mirror struct on the daemon side lives in internal/daemon/types.go
0 commit comments