เหตุการณ์โดเมน
บัสเหตุการณ์
หัวข้อที่มีชื่อว่า “บัสเหตุการณ์”DomainEventBus เป็นบัสเผยแพร่/สมัครรับแบบกระจายสัญญาณภายในโปรเซส ผู้เผยแพร่เรียก publish(event) ส่วนผู้สมัครรับบริโภคสตรีม on<T>() ที่มีชนิดกำกับ ทุกเหตุการณ์อิมพลีเมนต์ DomainEvent และพก occurredAt มาด้วย
บัสทำงานอยู่ภายใน cc_server ผู้เผยแพร่ทุกตัวและผู้สมัครรับที่มีชีวิตทุกตัวอยู่ที่นั่น ไม่มีไคลเอนต์ใดเห็นบัสนี้ — เซิร์ฟเวอร์ส่งต่อชุดย่อยที่คัดสรรมาแล้วเป็นเฟรม JSON-RPC notifications/* โดยกรองต่อผู้สมัครรับแต่ละรายตามสมาชิกภาพเวิร์กสเปซ
| ตัวชี้วัด | จำนวน |
|---|---|
| คลาสเหตุการณ์ที่เป็นรูปธรรม | 54 |
ไฟล์ต้นทาง (packages/cc_domain/lib/core/domain/events/) |
14 (บวก domain_event_bus.dart) |
| ฐานนามธรรมที่ไม่เคยถูกเผยแพร่โดยตรง | 1 (TaskLifecycleEvent ซึ่งเป็นลำดับชั้นแบบ sealed) |
ทุกเหตุการณ์ในแค็ตตาล็อกด้านล่างอยู่ในไดเรกทอรีเดียวนั้น ไม่มีเหตุการณ์โดเมนที่ถูกประกาศไว้ที่อื่น
เหตุการณ์เวิร์กสเปซ เอเจนต์ และรีโป
หัวข้อที่มีชื่อว่า “เหตุการณ์เวิร์กสเปซ เอเจนต์ และรีโป”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
WorkspaceCreated |
workspaceId |
เวิร์กสเปซถูกสร้าง |
AgentRunCompleted |
agentId, runId?, workspaceId?, conversationId? |
เอเจนต์จบการรันหนึ่งครั้ง (สำเร็จหรือล้มเหลว) |
AgentAwaitingInput |
workspaceId, kind, summary, spaceId?, conversationId?, agentId?, agentName? |
เอเจนต์เริ่มรอมนุษย์: การอนุมัติ คำถาม ask_user หรือการรันที่ถูกพักไว้เพราะข้อมูลรับรอง (kind คือ approval, question หรือ credential) |
RepoAdded |
repoId, path, workspaceId |
รีโปถูกขึ้นทะเบียน; ทริกเกอร์การทำดัชนีโค้ดเบื้องหลัง |
SkillUpdated |
workspaceId, slug, origin, computedHash, scanVerdict? |
สกิลถูกติดตั้งหรืออัปเดต พร้อมพกคำตัดสินจากการสแกนห่วงโซ่อุปทานของมันมา |
เหตุการณ์ PR และการรีวิว
หัวข้อที่มีชื่อว่า “เหตุการณ์ PR และการรีวิว”บล็อกแรกคือวงจรชีวิตของ PR เอง บล็อกที่สองคือการเฝ้าดู PR ที่คุณเป็นผู้เขียน: สัญญาณเกี่ยวกับ PR ที่คุณเปิดไว้ โดยแต่ละตัวพก forUserId เพื่อให้การตรวจสอบส่งถึงผู้ที่เกี่ยวข้องแทนที่จะกระจายสัญญาณ
| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
PullRequestPublished |
prId, workspaceId, repoOwner, repoName |
เอเจนต์เปิด PR |
PullRequestStatusChanged |
status, workspaceId, prId?, repoFullName?, prNumber? |
PR ถูกรวม/ปิด/เปิด/เปิดใหม่/อนุมัติ |
PrMerged |
prId, workspaceId, agentId |
PR ถูกรวม — สัญญาณแคบ ๆ เฉพาะการรวมที่เก็บไว้สำหรับการวิเคราะห์/การแจ้งเตือน |
PrReviewRequested |
workspaceId, repoOwner, repoName, prNumber, prTitle |
GitHub ขอให้ผู้ใช้ของเซิร์ฟเวอร์รีวิว (การตรวจสอบการแจ้งเตือน, review_requested) |
PrMentioned |
workspaceId, repoOwner, repoName, prNumber, prTitle |
ผู้ใช้ของเซิร์ฟเวอร์ถูกกล่าวถึงบน PR (การตรวจสอบการแจ้งเตือน, mention) |
ExternalPrMerged |
workspaceId, repoOwner, repoName, prNumber, prTitle, mergedByLogin? |
PR ที่ติดตามจากภายนอก (ไม่ใช่ของเอเจนต์) ถูกรวม ตรวจพบโดยการตรวจสอบการแจ้งเตือนของ GitHub; แมปไปยังหมวดหมู่การแจ้งเตือน prMerged |
ExternalPrDetected |
repoOwner, repoName, prNumber, prTitle, author, workspaceId? |
พบ PR ที่ไม่ใช่ของเอเจนต์ผ่านการตรวจสอบเป็นระยะ — ใช้กับไปป์ไลน์เท่านั้น (ขับ external_pr_welcome) ไม่สร้างการแจ้งเตือน |
PrHeadChanged |
repoOwner, repoName, prNumber, prTitle, previousHeadSha, headSha, workspaceId |
head SHA ของ PR เคลื่อนไป — ผู้เขียนพุช |
ReviewBecameStale |
workspaceId, spaceId, repoOwner, repoName, prNumber, prTitle, reviewedHeadSha, headSha |
รีวิวด้วย AI ที่เสร็จสิ้นแล้วไม่ตรงกับ PR ที่มันรีวิวอีกต่อไป เกิดเฉพาะเมื่อมีรีวิวอยู่สำหรับคอมมิตที่ถูกแทนที่ จึงยังคงเป็นสัญญาณแทนที่จะเป็นการ ping ทุกครั้งที่พุช |
การเฝ้าดู PR ที่คุณเป็นผู้เขียน
หัวข้อที่มีชื่อว่า “การเฝ้าดู PR ที่คุณเป็นผู้เขียน”ทั้งหกตัวพก workspaceId, repoOwner, repoName, prNumber, prTitle และ forUserId แบบไม่บังคับ
| เหตุการณ์ | เพย์โหลดเพิ่มเติม | เกิดเมื่อ |
|---|---|---|
PrMergeReadinessChanged |
ready, reason |
PR ที่คุณเป็นผู้เขียนกลายเป็นรวมได้ หรือเลิกเป็นเช่นนั้น |
PrReviewDecisionChanged |
decision, reviewersRemaining, approverLogin? |
ผู้รีวิวอนุมัติ ขอให้แก้ไข หรือการอนุมัติถูกเพิกถอน |
PrChecksStatusChanged |
failing, failingCheckName?, failingCheckUrl? |
CI ล้มเหลว หรือกลับมาผ่าน |
PrCommentMentioned |
commentId, authorLogin, bodyPreview, isReviewComment, threadId?, path?, line? |
มีคนกล่าวถึงคุณในคอมเมนต์ของ PR หรือคอมเมนต์รีวิว |
PrThreadReplied |
commentId, authorLogin, bodyPreview, threadId?, path?, line? |
มีคนตอบกลับในเธรดรีวิวที่คุณอยู่ |
PrThreadResolved |
threadId, commentId?, path?, line? |
มีคนปิดเธรดรีวิวที่คุณอยู่ |
เหตุการณ์การรับส่งข้อความ
หัวข้อที่มีชื่อว่า “เหตุการณ์การรับส่งข้อความ”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
MessageReceived |
spaceId, messageId, senderName, contentPreview, isAgentMessage, workspaceId?, mentions, requestedByUserId?, senderUserId? |
มีข้อความใหม่เข้ามา |
SpaceCreated |
spaceId, workspaceId |
สเปซถูกสร้าง |
SpaceDeleted |
spaceId, workspaceId |
สเปซถูกลบ |
SpaceProvisioningChanged |
workspaceId, spaceId, status, step? |
เวิร์กสเปซของสเปซเข้าสู่การจัดเตรียม ไปถึงขั้นตอนหนึ่ง (โคลนรีโป, เช็กเอาต์ PR, ตั้งค่าเอเจนต์) หรือพลิกเป็นพร้อม/ล้มเหลว — สะพานแชทเล่าเรื่องนี้บนการ์ดงานของมัน |
เหตุการณ์ตั๋วงาน
หัวข้อที่มีชื่อว่า “เหตุการณ์ตั๋วงาน”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
TicketCreated |
ticketId, workspaceId |
ตั๋วงานถูกสร้าง |
TicketAssigned |
ticketId, ticketTitle, ticketBody?, ticketUrl?, assignedAgentId?, assigneeType, assignedTeamId?, workspaceId |
ตั๋วงานถูกมอบหมายให้ Principal หรือทีม |
TicketCompleted |
ticketId |
งานจบลง (สิ้นสุด) |
TicketFailed |
ticketId, errorMessage |
เอเจนต์ล้มเหลว (สิ้นสุด) |
TicketCancelled |
ticketId |
ตั๋วงานถูกยกเลิก (สิ้นสุด) |
TicketStatusChanged |
ticketId, workspaceId, from, to |
มีการเปลี่ยนสถานะใด ๆ |
TicketReassigned |
ticketId, workspaceId, fromAgentId?, toAgentId? |
ตั๋วงานถูกมอบหมายใหม่ |
TicketDetailsUpdated |
ticketId, workspaceId |
ชื่อ คำอธิบาย หรือลำดับความสำคัญเปลี่ยน |
เหตุการณ์วงจรชีวิตของงาน
หัวข้อที่มีชื่อว่า “เหตุการณ์วงจรชีวิตของงาน”สตรีมวงจรชีวิตของงานแบบรวม — การรันเอเจนต์ที่ถูกสั่งงานหนึ่งครั้ง มีคีย์เป็น id ของบันทึกการรัน ทุกเหตุการณ์พก taskId, seq ที่เพิ่มขึ้นแบบโมโนโทนิกต่องาน, workspaceId?, agentId? และ phase; แถวด้านล่างแสดงเฉพาะฟิลด์เพิ่มเติมเท่านั้น
| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
TaskDispatched |
— | งานถูกส่งต่อให้แบ็กเอนด์เพื่อดำเนินการ |
TaskRunning |
— | งานเริ่มสร้างเอาต์พุต |
TaskWaitingLocalDirectory |
lockedPath, holderTaskId? |
งานถูกพักไว้ — งานอื่นถือล็อกพาธบนดิสก์ที่มันต้องการอยู่ |
TaskProgress |
note? |
จุดตรวจความคืบหน้ากลางการรัน |
TaskMessage |
messageType, content |
ข้อความที่สตรีม (text/thinking/tool_use/tool_result/error); รายงานภายใต้เฟส progress |
TaskCompleted |
summary? |
งานจบลงอย่างสำเร็จ |
TaskFailed |
errorMessage |
งานจบลงด้วยข้อผิดพลาด |
TaskCancelled |
— | งานถูกยกเลิกก่อนเสร็จสิ้น |
enum TaskPhase มีสมาชิก queued ด้วย แต่ไม่มีสิ่งใดเผยแพร่เหตุการณ์ queued — ไม่มีคลาส TaskQueued เฟรมแรกที่สังเกตได้ของงานคือ TaskDispatched
เหตุการณ์ไปป์ไลน์
หัวข้อที่มีชื่อว่า “เหตุการณ์ไปป์ไลน์”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
PipelineRunCompleted |
workspaceId, pipelineRunId, templateId |
การรันจบลง |
PipelineRunCancelled |
workspaceId, pipelineRunId, templateId |
การรันถูกยกเลิก (โดยผู้ใช้หรือโดยระบบ) — เป็นการหยุดโดยเจตนา ไม่ใช่ข้อผิดพลาด |
PipelineRunFailed |
workspaceId, pipelineRunId, templateId, errorMessage |
การรันล้มเหลว |
เผยแพร่เฉพาะการเปลี่ยนสถานะสิ้นสุดเท่านั้น ไม่มี PipelineRunStarted และไม่มีเหตุการณ์ต่อขั้นตอน: ความคืบหน้าของขั้นตอนไปถึงไคลเอนต์ผ่านแถวของตัวการรันเองและสตรีมวงจรชีวิตของงานของเอเจนต์ที่มันสั่งงานไป ไม่ใช่ผ่านบัส
เหตุการณ์การสังเกตการณ์
หัวข้อที่มีชื่อว่า “เหตุการณ์การสังเกตการณ์”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
ActivityLogged |
id, actorType, actorId?, action, entityType, entityId?, details?, workspaceId?, runId? |
สร้างรายการร่องรอยการตรวจสอบ |
BudgetThresholdCrossed |
scopeType, scopeId, spentCents, budgetCents, isHardStop |
การใช้จ่ายเกินเกณฑ์ |
เหตุการณ์ตัวตนและสมาชิกภาพ
หัวข้อที่มีชื่อว่า “เหตุการณ์ตัวตนและสมาชิกภาพ”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
WorkspaceMemberAdded |
workspaceId, userId, role |
ผู้ใช้เข้าร่วมเวิร์กสเปซ (การแลกคำเชิญหรือการเพิ่มโดยแอดมิน) |
WorkspaceMemberRemoved |
workspaceId, userId |
สมาชิกถูกลบ — เซสชันที่มีชีวิตของผู้ใช้รายนั้นที่ผูกกับเวิร์กสเปซต้องตรวจสอบการเข้าถึงใหม่ทันที |
WorkspaceMemberRoleChanged |
workspaceId, userId, role |
บทบาทของสมาชิกเปลี่ยน |
สมาชิกภาพคือพื้นผิวตัวตนทั้งหมดบนบัส การสร้างผู้ใช้และการเพิกถอนอุปกรณ์เกิดขึ้นจริง แต่ไม่ได้ถูกเผยแพร่เป็นเหตุการณ์โดเมน — การเพิกถอนถูกบังคับใช้กับเซสชันที่มีชีวิตโดยตรง แทนที่จะถูกส่งผ่านบัส
เหตุการณ์ปฏิทินและการประชุม
หัวข้อที่มีชื่อว่า “เหตุการณ์ปฏิทินและการประชุม”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
CalendarAuthExpired |
workspaceId, accountEmail |
โทเค็นรีเฟรช OAuth ของบัญชีที่เชื่อมต่อใช้ไม่ได้อย่างถาวร (เผยแพร่ครั้งเดียวต่อการตัดการเชื่อมต่อหนึ่งครั้ง) |
MeetingStartingSoon |
workspaceId, eventId, title, startTime, meetingUrl? |
เหตุการณ์ในปฏิทินกำลังจะเริ่มภายในช่วงเวลาล่วงหน้าที่ตั้งค่าไว้ |
MeetingRecordingStopped |
workspaceId, meetingId, title, userNotes, transcript, summaryInstructions? |
การบันทึกการประชุมสิ้นสุดลงและทริกเกอร์ไปป์ไลน์ meeting_summary ที่มีมาในตัว |
เหตุการณ์ริก
หัวข้อที่มีชื่อว่า “เหตุการณ์ริก”| เหตุการณ์ | เพย์โหลด | เกิดเมื่อ |
|---|---|---|
RigClosedEvent |
workspaceId, rigId, reason |
ริกหายไป พร้อมเหตุผลการปิดของมัน ผู้บริโภคจะดำเนินการเฉพาะกับ backendFailure เท่านั้น — เหตุผลอื่นทุกอย่างเกิดจากการร้องขอหรือมาพร้อมกับ RigReaped |
RigControlChanged |
workspaceId, rigId, controller? |
มนุษย์เข้าควบคุมริกแบบเบ็ดเสร็จหรือคืนมันกลับ (controller เป็น null เมื่อปล่อย — เหตุการณ์ไม่บันทึกว่าใครเป็นคนปล่อย) |
RigReaped |
workspaceId, rigId, reason, agentId? |
ระบบเรียกคืนเครื่อง: การว่าง, TTL หรือการยึดคืนเพราะความดันหน่วยความจำ (รายงานเป็น idleTimeout) พร้อมเอเจนต์ที่เป็นตัวขับ |
การเปิดริกไม่ใช่เหตุการณ์ การบูตเสร็จสมบูรณ์และแถวของริกพลิกเป็นพร้อม ไม่มีอะไรถูกเผยแพร่ จึงไม่มี RigOpened ให้สมัครรับ
โดเมนย่อยที่ไม่มีเหตุการณ์เลย
หัวข้อที่มีชื่อว่า “โดเมนย่อยที่ไม่มีเหตุการณ์เลย”ระบบย่อยหลายระบบที่ดูเหมือนขับเคลื่อนด้วยเหตุการณ์จากภายนอกนั้นไม่ใช่ การที่ไม่มีเหตุการณ์ถูกระบุไว้ที่นี่เพราะการไม่มีอยู่เป็นการตัดสินใจเชิงออกแบบที่ควรรู้ก่อนคุณออกไปมองหาฮุก:
| โดเมนย่อย | สถานะเคลื่อนที่อย่างไรแทน |
|---|---|
| หน่วยความจำ | record_memory_fact และตัวอื่น ๆ เขียนแล้วคืนค่า ส่วนการเรียกคืนอ่าน ไม่มีสิ่งใดเผยแพร่เมื่อเกิดข้อเท็จจริงหรือความขัดแย้ง |
| การประสานงาน | ข้อเสนอ การอนุมัติข้อเสนอ และการรันไปป์ไลน์ที่ถูกสร้างขึ้นเป็นแถวและการเรียก RPC |
| เอกสารแผน | submit_plan เขียนรีวิชัน การอนุมัติทำให้เกิดการประสานงานขึ้นจริง ทั้งสองอย่างไม่ถูกประกาศ |
| อาร์ติแฟกต์ | publish_artifact / revise_artifact เขียนรีวิชันโดยตรง |
| การอนุมัติ | การยกระดับถูกจัดการภายในเซอร์วิสเวิร์กโฟลว์การอนุมัติ |
| การซิงค์ตั๋วงาน | ตัวประสานงานของผู้ให้บริการสมัครรับเหตุการณ์ตั๋วงานด้านบน ส่วน webhook ขาเข้าถูกนำไปใช้โดยตรง |
| การรีเฟรชปฏิทิน | การซิงค์อัปเซิร์ตเหตุการณ์แล้วไคลเอนต์อ่านใหม่ ไม่มีการกระจายสัญญาณการรีเฟรช |
| การรวม worktree | บันทึกไว้ใน worktree_merge_log และอ่านจากที่นั่น |
ผู้สมัครรับ
หัวข้อที่มีชื่อว่า “ผู้สมัครรับ”ผู้สมัครรับทุกตัวด้านล่างถูกสร้างขึ้นภายใน runCcServer (หรือเซอร์วิสที่มันสร้าง) ไม่มีผู้สมัครรับฝั่งไคลเอนต์
| ผู้สมัครรับ | เหตุการณ์ที่บริโภค |
|---|---|
WorkspaceSeeder |
WorkspaceCreated |
| การ seed ชุดการประเมินเริ่มต้น (อินไลน์) | WorkspaceCreated |
| การจัดเตรียมสเปซแชท (อินไลน์) | SpaceCreated |
PipelineTriggerDispatcher |
ทุก DomainEvent; ทริกเกอร์ที่เปิดใช้แต่ละตัวกรองหาเฉพาะชนิดของตัวเอง |
SubPipelineResumeListener |
PipelineRunCompleted, PipelineRunFailed |
PipelineCostRollupListener |
AgentRunCompleted |
BudgetEvaluationListener |
AgentRunCompleted |
MeetingSummaryReconciler |
PipelineRunCompleted, PipelineRunFailed, PipelineRunCancelled (เฉพาะการรัน meeting_summary) |
PipelineStepResumeListener |
AgentRunCompleted |
AgentRunTaskCompleter |
AgentRunCompleted |
GoalSupervisor |
AgentRunCompleted |
CheckerDispatchListener |
AgentRunCompleted |
TeamRoutingService |
AgentRunCompleted, TicketAssigned |
OrchestrationRunListener |
PipelineRunCancelled, PipelineRunFailed |
MultiVendorTicketSyncCoordinator |
TicketCreated, TicketAssigned, TicketReassigned, TicketStatusChanged, TicketDetailsUpdated |
WorktreeGcListener |
TicketCompleted, TicketCancelled, SpaceDeleted, PrMerged, PullRequestStatusChanged |
ChatBridgeService |
MessageReceived, SpaceProvisioningChanged |
ActivityLogPersister |
ActivityLogged |
RigEventListener |
RigControlChanged, RigReaped, RigClosedEvent — แทรกข้อความแจ้งแบบภาษาธรรมดาเข้าไปในเลนชี้นำของเอเจนต์ที่เป็นตัวขับ |
StaleReviewWatcher |
PrHeadChanged — เผยแพร่ ReviewBecameStale เฉพาะเมื่อมีรีวิวที่เสร็จแล้วสำหรับคอมมิตที่ถูกแทนที่ |
GitHubPrConversationBridge |
AgentRunCompleted — การตอบกลับการสนทนาบน PR ขาออก |
NotificationFeedRecorder |
เหตุการณ์ระดับการแจ้งเตือนทั้งยี่สิบสองรายการด้านล่าง |
RemoteEventForwarder |
ยี่สิบสองรายการนั้นบวก TicketReassigned และทุก TaskLifecycleEvent เหตุการณ์สมาชิกภาพทั้งสามรายการเพียงทำให้แคชสมาชิกภาพต่อเวิร์กสเปซของมันเป็นโมฆะเท่านั้น ไม่ได้ถูกส่งต่อเป็นเฟรม |
LocalRpcServer / RemoteRelayHost |
WorkspaceMemberRemoved — ทิ้งการสมัครรับเวิร์กสเปซที่ผู้ใช้รายนั้นผูกไว้ ซ็อกเก็ตยังคงเปิดอยู่ |
TicketAssigned เป็นสัญญาณการตรวจสอบและการแจ้งเตือน รวมทั้งเป็นทริกเกอร์ของไปป์ไลน์ การมอบหมายให้เอเจนต์บันทึกความเป็นเจ้าของและไม่เริ่มการรันใด ๆ — ไม่มีตัวดิสนพัตช์ตั๋วงาน การมอบหมายให้ทีม (เมื่อตั้ง assignedTeamId) คือข้อยกเว้น: TeamRoutingService สั่งงานหัวหน้าทีม
TicketRemoteSyncHandler ถูกประกาศไว้แต่ไม่เคยถูกสร้างในโค้ดโปรดักชัน วันนี้มันจึงไม่ได้สมัครรับสิ่งใด NotificationEventMapper ฝั่งไคลเอนต์ถูกสร้างขึ้นเฉพาะในเทสต์ของตัวเองเท่านั้น — มันเป็นเศษที่เหลือของเส้นทางภายในโปรเซสจากก่อนการแยกไคลเอนต์/เซิร์ฟเวอร์ ทอสต์ที่มีชีวิตมาจากเฟรมบนสายด้านล่าง
การแมปการแจ้งเตือน
หัวข้อที่มีชื่อว่า “การแมปการแจ้งเตือน”บนเซิร์ฟเวอร์ NotificationFeedRecorder และ RemoteEventForwarder เปลี่ยนเหตุการณ์เหล่านี้เป็นเฟรมบนสาย notifications/* (notification_wire.dart) บนไคลเอนต์ RpcNotificationMapper → mapNotificationFrame เปลี่ยนเฟรมเป็น AppNotification
มีสิบเจ็ดหมวดหมู่การแจ้งเตือนพอดี เหตุการณ์หลายรายการแมปไปยังวิธีบนสายมากกว่าหนึ่งวิธี เพราะเฟรมพกความเปลี่ยนแปลง (ล้มเหลวเทียบกับกลับมาผ่าน) ขณะที่หมวดหมู่พกคำถาม (“CI กำลังทำอะไรอยู่?”)
| หมวดหมู่ | เหตุการณ์ต้นทาง | วิธีบนสาย |
|---|---|---|
newMessage |
MessageReceived |
notifications/message_received (กล่าวถึงคุณ) |
agentRunCompleted |
MessageReceived |
notifications/message_received (is_agent_message, ไม่ได้กล่าวถึงคุณ) |
agentAwaitingInput |
AgentAwaitingInput |
notifications/agent_awaiting_input |
ticketAssigned |
TicketAssigned |
notifications/ticket_assigned |
ticketStatusChanged |
TicketStatusChanged |
notifications/ticket_status_changed |
pullRequestPublished |
PullRequestPublished |
notifications/pr_published |
prMerged |
PrMerged |
notifications/pr_merged |
prMerged |
ExternalPrMerged |
notifications/external_pr_merged |
prMentioned |
PrMentioned |
notifications/pr_mentioned |
prMentioned |
PrCommentMentioned |
notifications/pr_comment_mentioned |
reviewRequested |
PrReviewRequested |
notifications/pr_review_requested |
reviewStale |
ReviewBecameStale |
notifications/review_stale |
prMergeReadiness |
PrMergeReadinessChanged |
notifications/pr_ready_to_merge / pr_merge_blocked |
prReviewDecision |
PrReviewDecisionChanged |
notifications/pr_approved / pr_changes_requested / pr_review_dismissed |
prChecksStatus |
PrChecksStatusChanged |
notifications/pr_checks_failed / pr_checks_recovered |
prThreadActivity |
PrThreadReplied |
notifications/pr_thread_replied |
prThreadActivity |
PrThreadResolved |
notifications/pr_thread_resolved |
meetingStartsSoon |
MeetingStartingSoon |
notifications/meeting_starting_soon |
calendarAuthExpired |
CalendarAuthExpired |
notifications/calendar_auth_expired |
rigStatusChanged |
RigControlChanged |
notifications/rig_control_changed |
rigStatusChanged |
RigReaped |
notifications/rig_reaped |
rigStatusChanged |
RigClosedEvent |
notifications/rig_closed |
เฟรมการเข้าควบคุมริกไม่ได้ถูกส่งกลับไปยังผู้ที่เข้ายึดการควบคุม การปล่อยไม่ถูกกรอง (เหตุการณ์ไม่บันทึกว่าใครปล่อย) และเฉพาะการปิดด้วย backendFailure เท่านั้นที่สร้างเฟรม rig_closed — เหตุผลอื่น ๆ นั้นเกิดจากการร้องขอหรือถูกครอบคลุมอยู่แล้วด้วยเฟรมการยึดคืน
AgentAwaitingInput เผยแพร่โดย AgentAwaitingInputPublisher ซึ่งเฝ้าดูรายการใหม่ในรีจิสทรีการอนุมัติและรีจิสทรีการบล็อกจากข้อมูลรับรอง และได้รับแจ้งเรื่องคำถาม ask_user แต่ละข้อจาก AgentQuestionService การรอหนึ่งครั้งคือเหตุการณ์หนึ่งรายการ และไม่มีการเผยแพร่สิ่งใดเมื่อการรอสิ้นสุดลง
หมวดหมู่ PR ที่คุณเป็นผู้เขียนทั้งห้าหมวดพก forUserId จึงไปถึงผู้เขียนแทนที่จะไปถึงทุกคนในเวิร์กสเปซ
RemoteEventForwarder ส่งต่อ TicketReassigned เพิ่มเติมเป็น notifications/ticket_reassigned และทุก TaskLifecycleEvent เป็น notifications/task_<phase> ทั้งสองอย่างไม่แมปไปยังหมวดหมู่การแจ้งเตือน — มันขับ UI แบบสด ไม่ใช่ศูนย์การแจ้งเตือน เหตุการณ์สมาชิกภาพไม่ถูกส่งต่อเป็นเฟรม: มันทำให้แคชของตัวส่งต่อเป็นโมฆะ และโฮสต์เซสชันจะทิ้งการสมัครรับเวิร์กสเปซของสมาชิกที่ถูกลบ