@rudderhq/server 0.2.0-canary.2 → 0.2.0-canary.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bundled-plugins/plugin-linear/dist/ui/index.js +1 -1
- package/dist/bundled-plugins/plugin-linear/dist/ui/index.js.map +2 -2
- package/dist/bundled-plugins/plugin-linear/dist/worker.js +121 -118
- package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +3 -3
- package/dist/langfuse-transcript.d.ts.map +1 -1
- package/dist/langfuse-transcript.js +22 -0
- package/dist/langfuse-transcript.js.map +1 -1
- package/dist/onboarding-assets/ceo/HEARTBEAT.md +8 -4
- package/dist/onboarding-assets/default/HEARTBEAT.md +7 -4
- package/dist/routes/agents.d.ts.map +1 -1
- package/dist/routes/agents.js +25 -6
- package/dist/routes/agents.js.map +1 -1
- package/dist/routes/chats.d.ts.map +1 -1
- package/dist/routes/chats.js +163 -43
- package/dist/routes/chats.js.map +1 -1
- package/dist/routes/costs.d.ts.map +1 -1
- package/dist/routes/costs.js +20 -0
- package/dist/routes/costs.js.map +1 -1
- package/dist/routes/issues.d.ts.map +1 -1
- package/dist/routes/issues.js +238 -6
- package/dist/routes/issues.js.map +1 -1
- package/dist/routes/orgs.d.ts.map +1 -1
- package/dist/routes/orgs.js +22 -0
- package/dist/routes/orgs.js.map +1 -1
- package/dist/services/activity-log.d.ts.map +1 -1
- package/dist/services/activity-log.js +45 -16
- package/dist/services/activity-log.js.map +1 -1
- package/dist/services/agent-instructions.d.ts.map +1 -1
- package/dist/services/agent-instructions.js +9 -0
- package/dist/services/agent-instructions.js.map +1 -1
- package/dist/services/agent-run-context.d.ts +0 -32
- package/dist/services/agent-run-context.d.ts.map +1 -1
- package/dist/services/agent-run-context.js +25 -128
- package/dist/services/agent-run-context.js.map +1 -1
- package/dist/services/agents.d.ts +13 -13
- package/dist/services/agents.d.ts.map +1 -1
- package/dist/services/agents.js +1 -42
- package/dist/services/agents.js.map +1 -1
- package/dist/services/assets.d.ts +2 -2
- package/dist/services/chat-assistant.d.ts +2 -2
- package/dist/services/chat-assistant.d.ts.map +1 -1
- package/dist/services/chat-assistant.js +24 -96
- package/dist/services/chat-assistant.js.map +1 -1
- package/dist/services/chats.d.ts +80 -4
- package/dist/services/chats.d.ts.map +1 -1
- package/dist/services/chats.js +92 -6
- package/dist/services/chats.js.map +1 -1
- package/dist/services/costs.d.ts +15 -0
- package/dist/services/costs.d.ts.map +1 -1
- package/dist/services/costs.js +62 -1
- package/dist/services/costs.js.map +1 -1
- package/dist/services/issue-assignment-wakeup.d.ts +1 -1
- package/dist/services/issue-assignment-wakeup.d.ts.map +1 -1
- package/dist/services/issue-review-wakeup.d.ts +171 -0
- package/dist/services/issue-review-wakeup.d.ts.map +1 -0
- package/dist/services/issue-review-wakeup.js +115 -0
- package/dist/services/issue-review-wakeup.js.map +1 -0
- package/dist/services/issues.d.ts +9 -0
- package/dist/services/issues.d.ts.map +1 -1
- package/dist/services/issues.js +63 -15
- package/dist/services/issues.js.map +1 -1
- package/dist/services/messenger.d.ts.map +1 -1
- package/dist/services/messenger.js +77 -16
- package/dist/services/messenger.js.map +1 -1
- package/dist/services/organization-workspace-browser.d.ts +6 -0
- package/dist/services/organization-workspace-browser.d.ts.map +1 -1
- package/dist/services/organization-workspace-browser.js +95 -1
- package/dist/services/organization-workspace-browser.js.map +1 -1
- package/dist/services/orgs.d.ts +0 -12
- package/dist/services/orgs.d.ts.map +1 -1
- package/dist/services/orgs.js +0 -2
- package/dist/services/orgs.js.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.d.ts +2 -2
- package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
- package/dist/services/runtime-kernel/heartbeat.js +281 -4
- package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
- package/dist/services/workspace-backups.d.ts.map +1 -1
- package/dist/services/workspace-backups.js +6 -0
- package/dist/services/workspace-backups.js.map +1 -1
- package/dist/services/workspace-runtime.d.ts.map +1 -1
- package/dist/services/workspace-runtime.js +2 -0
- package/dist/services/workspace-runtime.js.map +1 -1
- package/package.json +13 -13
- package/resources/bundled-skills/rudder/SKILL.md +55 -6
- package/resources/bundled-skills/rudder/references/api-reference.md +1 -1
- package/resources/bundled-skills/rudder/references/cli-reference.md +28 -8
- package/skills/rudder/SKILL.md +55 -6
- package/skills/rudder/references/api-reference.md +1 -1
- package/skills/rudder/references/cli-reference.md +28 -8
- package/ui-dist/assets/{_basePickBy-Ctak-fUU.js → _basePickBy-DxQ45mjD.js} +1 -1
- package/ui-dist/assets/{_baseUniq-CCvXAX9A.js → _baseUniq-CaTQw1Nc.js} +1 -1
- package/ui-dist/assets/{arc-vI0zh8NU.js → arc-Bfla4m-g.js} +1 -1
- package/ui-dist/assets/{architectureDiagram-2XIMDMQ5-DHItsHGd.js → architectureDiagram-2XIMDMQ5-D3S6Lrog.js} +1 -1
- package/ui-dist/assets/{blockDiagram-WCTKOSBZ-xaygTz7_.js → blockDiagram-WCTKOSBZ-Bu7rCPFA.js} +1 -1
- package/ui-dist/assets/{c4Diagram-IC4MRINW-CKTtSmuE.js → c4Diagram-IC4MRINW-DOx9OJeh.js} +1 -1
- package/ui-dist/assets/channel-CiCjQgKG.js +1 -0
- package/ui-dist/assets/{chunk-4BX2VUAB-BoT4r2rl.js → chunk-4BX2VUAB-DVDz2ZwY.js} +1 -1
- package/ui-dist/assets/{chunk-55IACEB6-C-c9AIXb.js → chunk-55IACEB6-BMkexEd-.js} +1 -1
- package/ui-dist/assets/{chunk-FMBD7UC4-wcigJMMB.js → chunk-FMBD7UC4-OVKEIcK_.js} +1 -1
- package/ui-dist/assets/{chunk-JSJVCQXG-JCWyBco7.js → chunk-JSJVCQXG-BpogLGb8.js} +1 -1
- package/ui-dist/assets/{chunk-KX2RTZJC-C2UBWWKq.js → chunk-KX2RTZJC-CQrQsn3N.js} +1 -1
- package/ui-dist/assets/{chunk-NQ4KR5QH-mQSE9CCE.js → chunk-NQ4KR5QH-C9xalCaW.js} +1 -1
- package/ui-dist/assets/{chunk-QZHKN3VN-B7a54nLe.js → chunk-QZHKN3VN-qX0v_tgV.js} +1 -1
- package/ui-dist/assets/{chunk-WL4C6EOR-C8Blz2oN.js → chunk-WL4C6EOR-C2wIrLvc.js} +1 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-DWXTEiLK.js +1 -0
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-DWXTEiLK.js +1 -0
- package/ui-dist/assets/clone-Y-psJv3u.js +1 -0
- package/ui-dist/assets/{cose-bilkent-S5V4N54A-CfUhPdn7.js → cose-bilkent-S5V4N54A-DRQRG50q.js} +1 -1
- package/ui-dist/assets/{dagre-KLK3FWXG-Dg0aQpyu.js → dagre-KLK3FWXG-COhwnHr2.js} +1 -1
- package/ui-dist/assets/{diagram-E7M64L7V-BtBYVASY.js → diagram-E7M64L7V-DJuXEGqB.js} +1 -1
- package/ui-dist/assets/{diagram-IFDJBPK2-DwXju-7B.js → diagram-IFDJBPK2-titLtyJR.js} +1 -1
- package/ui-dist/assets/{diagram-P4PSJMXO-DzgHBlqt.js → diagram-P4PSJMXO-BqZo0yNu.js} +1 -1
- package/ui-dist/assets/{erDiagram-INFDFZHY-DpKFVcGE.js → erDiagram-INFDFZHY-DfdFm3vQ.js} +1 -1
- package/ui-dist/assets/{flowDiagram-PKNHOUZH-Pmj1xdBU.js → flowDiagram-PKNHOUZH-CdCdirQk.js} +1 -1
- package/ui-dist/assets/{ganttDiagram-A5KZAMGK-BAlqKhiF.js → ganttDiagram-A5KZAMGK-DHkK9kHo.js} +1 -1
- package/ui-dist/assets/{gitGraphDiagram-K3NZZRJ6-CSIo7uOS.js → gitGraphDiagram-K3NZZRJ6-Gih-QSTg.js} +1 -1
- package/ui-dist/assets/{graph-CaxUGo1Z.js → graph-C9C9wypH.js} +1 -1
- package/ui-dist/assets/{index-PEiOiR26.js → index-5zuV8C-T.js} +1 -1
- package/ui-dist/assets/{index-DX640Doq.js → index-B0HPbB7i.js} +1 -1
- package/ui-dist/assets/{index-rkDtXEnh.js → index-BHAWyI-_.js} +1 -1
- package/ui-dist/assets/{index-DkPMGB5j.js → index-BJcByu_c.js} +1 -1
- package/ui-dist/assets/{index-DLpkN5Nh.js → index-BK6MJsfu.js} +1 -1
- package/ui-dist/assets/{index-BKYmQ7tf.js → index-BWc_-dta.js} +1 -1
- package/ui-dist/assets/{index-73iORMFN.js → index-Bid9ADBU.js} +1 -1
- package/ui-dist/assets/{index-BuJtCaiX.js → index-C74sx8dp.js} +1 -1
- package/ui-dist/assets/{index-B8heUkj2.js → index-C76fcs37.js} +1 -1
- package/ui-dist/assets/{index-CmdbZP3U.js → index-C9VbXqkW.js} +1 -1
- package/ui-dist/assets/{index-D_R7kXn2.js → index-CJ3fYmn1.js} +1 -1
- package/ui-dist/assets/{index-BjA9l6q6.js → index-CQj-qZm4.js} +1 -1
- package/ui-dist/assets/index-Car_4Jit.js +1444 -0
- package/ui-dist/assets/{index--XPsQZ8d.js → index-Cg8Q84fO.js} +1 -1
- package/ui-dist/assets/{index-BAPnYsam.js → index-CsJotpyV.js} +1 -1
- package/ui-dist/assets/{index-2dfbKwBh.js → index-D4C3HMmp.js} +1 -1
- package/ui-dist/assets/{index-BElh23_d.js → index-DKDpbtDA.js} +1 -1
- package/ui-dist/assets/{index-m_qDjM4c.js → index-DaLjrtrB.js} +1 -1
- package/ui-dist/assets/{index-BF_aD77W.js → index-DxllX9GE.js} +1 -1
- package/ui-dist/assets/{index-DIcQ0aEs.js → index-EYo47Qzq.js} +1 -1
- package/ui-dist/assets/{index-C57isBdA.js → index-U4t2WLDk.js} +1 -1
- package/ui-dist/assets/index-UmhZI_P5.css +1 -0
- package/ui-dist/assets/{index-UKCuYuh7.js → index-X6BSuH9a.js} +1 -1
- package/ui-dist/assets/{index-CslGlNBo.js → index-rFPIi4uq.js} +1 -1
- package/ui-dist/assets/{infoDiagram-LFFYTUFH-DsdK7PXv.js → infoDiagram-LFFYTUFH-CI-KSyjC.js} +1 -1
- package/ui-dist/assets/{ishikawaDiagram-PHBUUO56-DeUKczqO.js → ishikawaDiagram-PHBUUO56-B1UzopzQ.js} +1 -1
- package/ui-dist/assets/{journeyDiagram-4ABVD52K-DnOs-DRX.js → journeyDiagram-4ABVD52K-BPN091W_.js} +1 -1
- package/ui-dist/assets/{kanban-definition-K7BYSVSG-DCyJACf3.js → kanban-definition-K7BYSVSG-bS5eGHx5.js} +1 -1
- package/ui-dist/assets/{layout-TatwQjxb.js → layout-CxAvLJl4.js} +1 -1
- package/ui-dist/assets/{linear-bFbc0OUH.js → linear-DS8rXF-o.js} +1 -1
- package/ui-dist/assets/{mermaid.core-BdugKJmA.js → mermaid.core-Cwmb8_Pt.js} +4 -4
- package/ui-dist/assets/{mindmap-definition-YRQLILUH-d5r4CAWm.js → mindmap-definition-YRQLILUH-CBBHsY9B.js} +1 -1
- package/ui-dist/assets/{pieDiagram-SKSYHLDU-O6r1VFCs.js → pieDiagram-SKSYHLDU-QzgzWR8z.js} +1 -1
- package/ui-dist/assets/{quadrantDiagram-337W2JSQ-D0yzROUH.js → quadrantDiagram-337W2JSQ-BVCfo5hs.js} +1 -1
- package/ui-dist/assets/{requirementDiagram-Z7DCOOCP-GH6gqsQi.js → requirementDiagram-Z7DCOOCP-ByWZKfT-.js} +1 -1
- package/ui-dist/assets/{sankeyDiagram-WA2Y5GQK-DRovE2y6.js → sankeyDiagram-WA2Y5GQK-DtwW6hrb.js} +1 -1
- package/ui-dist/assets/{sequenceDiagram-2WXFIKYE-CKcQVuy2.js → sequenceDiagram-2WXFIKYE-pbHP6_i8.js} +1 -1
- package/ui-dist/assets/{stateDiagram-RAJIS63D-C_FCbTJ2.js → stateDiagram-RAJIS63D-B2yd1eoK.js} +1 -1
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-C9YgmQrg.js +1 -0
- package/ui-dist/assets/{timeline-definition-YZTLITO2-DRStubdA.js → timeline-definition-YZTLITO2-CEpYoow6.js} +1 -1
- package/ui-dist/assets/{treemap-KZPCXAKY-Cdg9C7l2.js → treemap-KZPCXAKY-ByqNFxlg.js} +1 -1
- package/ui-dist/assets/{vennDiagram-LZ73GAT5-fy5_7c9z.js → vennDiagram-LZ73GAT5-Cw-HlrA5.js} +1 -1
- package/ui-dist/assets/{xychartDiagram-JWTSCODW-BnlMSV0P.js → xychartDiagram-JWTSCODW-DtpfVmNd.js} +1 -1
- package/ui-dist/index.html +2 -2
- package/ui-dist/assets/channel-CySTnYot.js +0 -1
- package/ui-dist/assets/classDiagram-VBA2DB6C-COm96Uxw.js +0 -1
- package/ui-dist/assets/classDiagram-v2-RAHNMMFH-COm96Uxw.js +0 -1
- package/ui-dist/assets/clone-1uUrCt2n.js +0 -1
- package/ui-dist/assets/index-DO_7LT0g.css +0 -1
- package/ui-dist/assets/index-PCdQGLiX.js +0 -1424
- package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-DvubldWn.js +0 -1
package/dist/routes/costs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"costs.js","sourceRoot":"","sources":["../../src/routes/costs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"costs.js","sourceRoot":"","sources":["../../src/routes/costs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"issues.d.ts","sourceRoot":"","sources":["../../src/routes/issues.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAkBvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA2B1D,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,cAAc,8CA++D1D"}
|
package/dist/routes/issues.js
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { Router } from "express";
|
|
2
2
|
import multer from "multer";
|
|
3
|
-
import {
|
|
3
|
+
import { buildIssueDocumentsPrompt } from "@rudderhq/agent-runtime-utils/server-utils";
|
|
4
|
+
import { addIssueCommentSchema, createIssueAttachmentMetadataSchema, createIssueWorkspaceAttachmentSchema, createIssueWorkProductSchema, createIssueLabelSchema, checkoutIssueSchema, createIssueSchema, linkIssueApprovalSchema, issueDocumentKeySchema, reorderIssueSchema, updateIssueLabelSchema, updateIssueWorkProductSchema, upsertIssueDocumentSchema, updateIssueSchema, } from "@rudderhq/shared";
|
|
4
5
|
import { validate } from "../middleware/validate.js";
|
|
5
6
|
import { accessService, agentService, executionWorkspaceService, goalService, heartbeatService, issueApprovalService, issueService, documentService, logActivity, projectService, automationService, workProductService, } from "../services/index.js";
|
|
7
|
+
import { organizationWorkspaceBrowserService } from "../services/organization-workspace-browser.js";
|
|
6
8
|
import { logger } from "../middleware/logger.js";
|
|
7
|
-
import { forbidden, HttpError, unauthorized } from "../errors.js";
|
|
9
|
+
import { forbidden, HttpError, unauthorized, unprocessable } from "../errors.js";
|
|
8
10
|
import { assertBoard, assertCompanyAccess, getActorInfo } from "./authz.js";
|
|
9
11
|
import { shouldWakeAssigneeOnCheckout } from "./issues-checkout-wakeup.js";
|
|
10
12
|
import { isAllowedContentType, MAX_ATTACHMENT_BYTES } from "../attachment-types.js";
|
|
11
13
|
import { queueIssueAssignmentWakeup } from "../services/issue-assignment-wakeup.js";
|
|
14
|
+
import { buildIssueReviewWakeupOptions, queueIssueReviewWakeup } from "../services/issue-review-wakeup.js";
|
|
12
15
|
const MAX_ISSUE_COMMENT_LIMIT = 500;
|
|
13
16
|
export function issueRoutes(db, storage) {
|
|
14
17
|
const router = Router();
|
|
@@ -23,6 +26,7 @@ export function issueRoutes(db, storage) {
|
|
|
23
26
|
const workProductsSvc = workProductService(db);
|
|
24
27
|
const documentsSvc = documentService(db);
|
|
25
28
|
const automationsSvc = automationService(db);
|
|
29
|
+
const workspaceBrowser = organizationWorkspaceBrowserService(db);
|
|
26
30
|
const upload = multer({
|
|
27
31
|
storage: multer.memoryStorage(),
|
|
28
32
|
limits: { fileSize: MAX_ATTACHMENT_BYTES, files: 1 },
|
|
@@ -148,6 +152,29 @@ export function issueRoutes(db, storage) {
|
|
|
148
152
|
assertBoard(req);
|
|
149
153
|
return req.actor.userId ?? "local-board";
|
|
150
154
|
}
|
|
155
|
+
function issueHasReviewer(issue) {
|
|
156
|
+
return Boolean(issue.reviewerAgentId || issue.reviewerUserId);
|
|
157
|
+
}
|
|
158
|
+
function isReviewerAgentForIssue(actor, issue) {
|
|
159
|
+
return actor.actorType === "agent" && Boolean(actor.agentId) && actor.agentId === issue.reviewerAgentId;
|
|
160
|
+
}
|
|
161
|
+
function statusForReviewDecision(decision) {
|
|
162
|
+
switch (decision) {
|
|
163
|
+
case "approve":
|
|
164
|
+
return "done";
|
|
165
|
+
case "request_changes":
|
|
166
|
+
return "in_progress";
|
|
167
|
+
case "blocked":
|
|
168
|
+
return "blocked";
|
|
169
|
+
case "needs_followup":
|
|
170
|
+
return null;
|
|
171
|
+
default:
|
|
172
|
+
return null;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function statusAcceptsReviewerDecision(status) {
|
|
176
|
+
return status === "in_review" || status === "blocked";
|
|
177
|
+
}
|
|
151
178
|
// Resolve issue identifiers (e.g. "PAP-39") to UUIDs for all /issues/:id routes
|
|
152
179
|
router.param("id", async (req, res, next, rawId) => {
|
|
153
180
|
try {
|
|
@@ -178,11 +205,15 @@ export function issueRoutes(db, storage) {
|
|
|
178
205
|
const orgId = req.params.orgId;
|
|
179
206
|
assertCompanyAccess(req, orgId);
|
|
180
207
|
const assigneeUserFilterRaw = req.query.assigneeUserId;
|
|
208
|
+
const reviewerUserFilterRaw = req.query.reviewerUserId;
|
|
181
209
|
const touchedByUserFilterRaw = req.query.touchedByUserId;
|
|
182
210
|
const unreadForUserFilterRaw = req.query.unreadForUserId;
|
|
183
211
|
const assigneeUserId = assigneeUserFilterRaw === "me" && req.actor.type === "board"
|
|
184
212
|
? req.actor.userId
|
|
185
213
|
: assigneeUserFilterRaw;
|
|
214
|
+
const reviewerUserId = reviewerUserFilterRaw === "me" && req.actor.type === "board"
|
|
215
|
+
? req.actor.userId
|
|
216
|
+
: reviewerUserFilterRaw;
|
|
186
217
|
const touchedByUserId = touchedByUserFilterRaw === "me" && req.actor.type === "board"
|
|
187
218
|
? req.actor.userId
|
|
188
219
|
: touchedByUserFilterRaw;
|
|
@@ -193,6 +224,10 @@ export function issueRoutes(db, storage) {
|
|
|
193
224
|
res.status(403).json({ error: "assigneeUserId=me requires board authentication" });
|
|
194
225
|
return;
|
|
195
226
|
}
|
|
227
|
+
if (reviewerUserFilterRaw === "me" && (!reviewerUserId || req.actor.type !== "board")) {
|
|
228
|
+
res.status(403).json({ error: "reviewerUserId=me requires board authentication" });
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
196
231
|
if (touchedByUserFilterRaw === "me" && (!touchedByUserId || req.actor.type !== "board")) {
|
|
197
232
|
res.status(403).json({ error: "touchedByUserId=me requires board authentication" });
|
|
198
233
|
return;
|
|
@@ -206,6 +241,8 @@ export function issueRoutes(db, storage) {
|
|
|
206
241
|
assigneeAgentId: req.query.assigneeAgentId,
|
|
207
242
|
participantAgentId: req.query.participantAgentId,
|
|
208
243
|
assigneeUserId,
|
|
244
|
+
reviewerAgentId: req.query.reviewerAgentId,
|
|
245
|
+
reviewerUserId,
|
|
209
246
|
touchedByUserId,
|
|
210
247
|
unreadForUserId,
|
|
211
248
|
projectId: req.query.projectId,
|
|
@@ -394,7 +431,7 @@ export function issueRoutes(db, storage) {
|
|
|
394
431
|
const wakeCommentId = typeof req.query.wakeCommentId === "string" && req.query.wakeCommentId.trim().length > 0
|
|
395
432
|
? req.query.wakeCommentId.trim()
|
|
396
433
|
: null;
|
|
397
|
-
const [ancestors, project, goal, commentCursor, wakeComment] = await Promise.all([
|
|
434
|
+
const [ancestors, project, goal, commentCursor, wakeComment, documentPayload] = await Promise.all([
|
|
398
435
|
svc.getAncestors(issue.id),
|
|
399
436
|
issue.projectId ? projectsSvc.getById(issue.projectId) : null,
|
|
400
437
|
issue.goalId
|
|
@@ -404,6 +441,7 @@ export function issueRoutes(db, storage) {
|
|
|
404
441
|
: null,
|
|
405
442
|
svc.getCommentCursor(issue.id),
|
|
406
443
|
wakeCommentId ? svc.getComment(wakeCommentId) : null,
|
|
444
|
+
documentsSvc.getIssueDocumentPayload(issue),
|
|
407
445
|
]);
|
|
408
446
|
res.json({
|
|
409
447
|
issue: {
|
|
@@ -445,6 +483,8 @@ export function issueRoutes(db, storage) {
|
|
|
445
483
|
}
|
|
446
484
|
: null,
|
|
447
485
|
commentCursor,
|
|
486
|
+
...documentPayload,
|
|
487
|
+
issueDocumentsPrompt: buildIssueDocumentsPrompt(documentPayload),
|
|
448
488
|
wakeComment: wakeComment && wakeComment.issueId === issue.id
|
|
449
489
|
? wakeComment
|
|
450
490
|
: null,
|
|
@@ -839,7 +879,7 @@ export function issueRoutes(db, storage) {
|
|
|
839
879
|
router.post("/orgs/:orgId/issues", validate(createIssueSchema), async (req, res) => {
|
|
840
880
|
const orgId = req.params.orgId;
|
|
841
881
|
assertCompanyAccess(req, orgId);
|
|
842
|
-
if (req.body.assigneeAgentId || req.body.assigneeUserId) {
|
|
882
|
+
if (req.body.assigneeAgentId || req.body.assigneeUserId || req.body.reviewerAgentId || req.body.reviewerUserId) {
|
|
843
883
|
await assertCanAssignTasks(req, orgId);
|
|
844
884
|
}
|
|
845
885
|
const actor = getActorInfo(req);
|
|
@@ -868,6 +908,15 @@ export function issueRoutes(db, storage) {
|
|
|
868
908
|
requestedByActorType: actor.actorType,
|
|
869
909
|
requestedByActorId: actor.actorId,
|
|
870
910
|
});
|
|
911
|
+
void queueIssueReviewWakeup({
|
|
912
|
+
heartbeat,
|
|
913
|
+
issue,
|
|
914
|
+
mutation: "create_in_review",
|
|
915
|
+
contextSource: "issue.create",
|
|
916
|
+
requestedByActorType: actor.actorType,
|
|
917
|
+
requestedByActorId: actor.actorId,
|
|
918
|
+
actorAgentId: actor.agentId,
|
|
919
|
+
});
|
|
871
920
|
res.status(201).json(issue);
|
|
872
921
|
});
|
|
873
922
|
router.patch("/issues/:id", validate(updateIssueSchema), async (req, res) => {
|
|
@@ -880,6 +929,8 @@ export function issueRoutes(db, storage) {
|
|
|
880
929
|
assertCompanyAccess(req, existing.orgId);
|
|
881
930
|
const assigneeWillChange = (req.body.assigneeAgentId !== undefined && req.body.assigneeAgentId !== existing.assigneeAgentId) ||
|
|
882
931
|
(req.body.assigneeUserId !== undefined && req.body.assigneeUserId !== existing.assigneeUserId);
|
|
932
|
+
const reviewerWillChange = (req.body.reviewerAgentId !== undefined && req.body.reviewerAgentId !== existing.reviewerAgentId) ||
|
|
933
|
+
(req.body.reviewerUserId !== undefined && req.body.reviewerUserId !== existing.reviewerUserId);
|
|
883
934
|
const isAgentReturningIssueToCreator = req.actor.type === "agent" &&
|
|
884
935
|
!!req.actor.agentId &&
|
|
885
936
|
existing.assigneeAgentId === req.actor.agentId &&
|
|
@@ -892,17 +943,46 @@ export function issueRoutes(db, storage) {
|
|
|
892
943
|
await assertCanAssignTasks(req, existing.orgId);
|
|
893
944
|
}
|
|
894
945
|
}
|
|
946
|
+
if (reviewerWillChange) {
|
|
947
|
+
await assertCanAssignTasks(req, existing.orgId);
|
|
948
|
+
}
|
|
895
949
|
if (!(await assertAgentRunCheckoutOwnership(req, res, existing)))
|
|
896
950
|
return;
|
|
897
951
|
const actor = getActorInfo(req);
|
|
898
952
|
const isClosed = existing.status === "done" || existing.status === "cancelled";
|
|
899
|
-
const { comment: commentBody, reopen: reopenRequested, hiddenAt: hiddenAtRaw, ...updateFields } = req.body;
|
|
953
|
+
const { comment: commentBody, reopen: reopenRequested, hiddenAt: hiddenAtRaw, reviewDecision, ...updateFields } = req.body;
|
|
900
954
|
if (hiddenAtRaw !== undefined) {
|
|
901
955
|
updateFields.hiddenAt = hiddenAtRaw ? new Date(hiddenAtRaw) : null;
|
|
902
956
|
}
|
|
903
957
|
if (commentBody && reopenRequested === true && isClosed && updateFields.status === undefined) {
|
|
904
958
|
updateFields.status = "todo";
|
|
905
959
|
}
|
|
960
|
+
if (reviewDecision !== undefined) {
|
|
961
|
+
if (!commentBody) {
|
|
962
|
+
throw unprocessable("Reviewer decisions require a comment");
|
|
963
|
+
}
|
|
964
|
+
if (!statusAcceptsReviewerDecision(existing.status)) {
|
|
965
|
+
throw unprocessable("Reviewer decisions can only be recorded while the issue is in_review or blocked");
|
|
966
|
+
}
|
|
967
|
+
if (actor.actorType === "agent" && !isReviewerAgentForIssue(actor, existing)) {
|
|
968
|
+
throw forbidden("Only the reviewer agent can record a reviewer decision");
|
|
969
|
+
}
|
|
970
|
+
const decisionStatus = statusForReviewDecision(reviewDecision);
|
|
971
|
+
if (decisionStatus) {
|
|
972
|
+
updateFields.status = decisionStatus;
|
|
973
|
+
}
|
|
974
|
+
else {
|
|
975
|
+
delete updateFields.status;
|
|
976
|
+
}
|
|
977
|
+
}
|
|
978
|
+
let reviewedCompletionNormalized = false;
|
|
979
|
+
if (updateFields.status === "done" &&
|
|
980
|
+
issueHasReviewer(existing) &&
|
|
981
|
+
actor.actorType === "agent" &&
|
|
982
|
+
!(statusAcceptsReviewerDecision(existing.status) && isReviewerAgentForIssue(actor, existing))) {
|
|
983
|
+
updateFields.status = "in_review";
|
|
984
|
+
reviewedCompletionNormalized = true;
|
|
985
|
+
}
|
|
906
986
|
let issue;
|
|
907
987
|
try {
|
|
908
988
|
issue = await svc.update(id, updateFields);
|
|
@@ -915,10 +995,14 @@ export function issueRoutes(db, storage) {
|
|
|
915
995
|
assigneePatch: {
|
|
916
996
|
assigneeAgentId: req.body.assigneeAgentId === undefined ? "__omitted__" : req.body.assigneeAgentId,
|
|
917
997
|
assigneeUserId: req.body.assigneeUserId === undefined ? "__omitted__" : req.body.assigneeUserId,
|
|
998
|
+
reviewerAgentId: req.body.reviewerAgentId === undefined ? "__omitted__" : req.body.reviewerAgentId,
|
|
999
|
+
reviewerUserId: req.body.reviewerUserId === undefined ? "__omitted__" : req.body.reviewerUserId,
|
|
918
1000
|
},
|
|
919
1001
|
currentAssignee: {
|
|
920
1002
|
assigneeAgentId: existing.assigneeAgentId,
|
|
921
1003
|
assigneeUserId: existing.assigneeUserId,
|
|
1004
|
+
reviewerAgentId: existing.reviewerAgentId,
|
|
1005
|
+
reviewerUserId: existing.reviewerUserId,
|
|
922
1006
|
},
|
|
923
1007
|
error: err.message,
|
|
924
1008
|
details: err.details,
|
|
@@ -962,6 +1046,12 @@ export function issueRoutes(db, storage) {
|
|
|
962
1046
|
identifier: issue.identifier,
|
|
963
1047
|
...(commentBody ? { source: "comment" } : {}),
|
|
964
1048
|
...(reopened ? { reopened: true, reopenedFrom: reopenFromStatus } : {}),
|
|
1049
|
+
...(reviewedCompletionNormalized
|
|
1050
|
+
? {
|
|
1051
|
+
normalizedFromStatus: "done",
|
|
1052
|
+
normalizedReason: "reviewed_issue_assignee_completion",
|
|
1053
|
+
}
|
|
1054
|
+
: {}),
|
|
965
1055
|
_previous: hasFieldChanges ? previous : undefined,
|
|
966
1056
|
},
|
|
967
1057
|
});
|
|
@@ -990,10 +1080,41 @@ export function issueRoutes(db, storage) {
|
|
|
990
1080
|
},
|
|
991
1081
|
});
|
|
992
1082
|
}
|
|
1083
|
+
if (reviewDecision !== undefined) {
|
|
1084
|
+
await logActivity(db, {
|
|
1085
|
+
orgId: issue.orgId,
|
|
1086
|
+
actorType: actor.actorType,
|
|
1087
|
+
actorId: actor.actorId,
|
|
1088
|
+
agentId: actor.agentId,
|
|
1089
|
+
runId: actor.runId,
|
|
1090
|
+
action: "issue.review_decision_recorded",
|
|
1091
|
+
entityType: "issue",
|
|
1092
|
+
entityId: issue.id,
|
|
1093
|
+
details: {
|
|
1094
|
+
decision: reviewDecision,
|
|
1095
|
+
status: issue.status,
|
|
1096
|
+
identifier: issue.identifier,
|
|
1097
|
+
commentId: comment?.id ?? null,
|
|
1098
|
+
},
|
|
1099
|
+
});
|
|
1100
|
+
}
|
|
993
1101
|
const assigneeChanged = assigneeWillChange;
|
|
1102
|
+
const reviewerChanged = reviewerWillChange;
|
|
994
1103
|
const statusChangedFromBacklog = existing.status === "backlog" &&
|
|
995
1104
|
issue.status !== "backlog" &&
|
|
996
|
-
|
|
1105
|
+
updateFields.status !== undefined;
|
|
1106
|
+
const statusChangedToInReview = existing.status !== "in_review" &&
|
|
1107
|
+
issue.status === "in_review" &&
|
|
1108
|
+
updateFields.status !== undefined;
|
|
1109
|
+
const statusChangedToBlocked = existing.status !== "blocked" &&
|
|
1110
|
+
issue.status === "blocked" &&
|
|
1111
|
+
updateFields.status !== undefined;
|
|
1112
|
+
const statusChangedFromReviewToInProgress = statusAcceptsReviewerDecision(existing.status) &&
|
|
1113
|
+
issue.status === "in_progress" &&
|
|
1114
|
+
updateFields.status !== undefined;
|
|
1115
|
+
const reviewerChangedInReviewableStatus = reviewerChanged &&
|
|
1116
|
+
statusAcceptsReviewerDecision(existing.status) &&
|
|
1117
|
+
statusAcceptsReviewerDecision(issue.status);
|
|
997
1118
|
// Merge all wakeups from this update into one enqueue per agent to avoid duplicate runs.
|
|
998
1119
|
void (async () => {
|
|
999
1120
|
const wakeups = new Map();
|
|
@@ -1043,6 +1164,50 @@ export function issueRoutes(db, storage) {
|
|
|
1043
1164
|
},
|
|
1044
1165
|
});
|
|
1045
1166
|
}
|
|
1167
|
+
if (!assigneeChanged && statusChangedFromReviewToInProgress && issue.assigneeAgentId) {
|
|
1168
|
+
wakeups.set(issue.assigneeAgentId, {
|
|
1169
|
+
source: "assignment",
|
|
1170
|
+
triggerDetail: "system",
|
|
1171
|
+
reason: "issue_changes_requested",
|
|
1172
|
+
payload: { issueId: issue.id, mutation: "review_changes_requested" },
|
|
1173
|
+
requestedByActorType: actor.actorType,
|
|
1174
|
+
requestedByActorId: actor.actorId,
|
|
1175
|
+
contextSnapshot: {
|
|
1176
|
+
issueId: issue.id,
|
|
1177
|
+
source: "issue.review_changes_requested",
|
|
1178
|
+
wakeSource: "assignment",
|
|
1179
|
+
wakeReason: "issue_changes_requested",
|
|
1180
|
+
issue: {
|
|
1181
|
+
id: issue.id,
|
|
1182
|
+
title: issue.title,
|
|
1183
|
+
description: issue.description,
|
|
1184
|
+
status: issue.status,
|
|
1185
|
+
priority: issue.priority,
|
|
1186
|
+
},
|
|
1187
|
+
},
|
|
1188
|
+
});
|
|
1189
|
+
}
|
|
1190
|
+
if ((statusChangedToInReview || statusChangedToBlocked || reviewerChangedInReviewableStatus) && issue.reviewerAgentId) {
|
|
1191
|
+
const mutation = statusChangedToInReview
|
|
1192
|
+
? "status_to_in_review"
|
|
1193
|
+
: statusChangedToBlocked
|
|
1194
|
+
? "status_to_blocked"
|
|
1195
|
+
: issue.status === "blocked"
|
|
1196
|
+
? "reviewer_changed_blocked"
|
|
1197
|
+
: "reviewer_changed_in_review";
|
|
1198
|
+
const actorIsReviewerAgent = actor.actorType === "agent" && actor.actorId === issue.reviewerAgentId;
|
|
1199
|
+
const actorIsAssigneeAgent = actor.actorType === "agent" && actor.actorId === issue.assigneeAgentId;
|
|
1200
|
+
const assigneeHandoffToReview = (statusChangedToInReview || statusChangedToBlocked) && actorIsAssigneeAgent;
|
|
1201
|
+
if (!actorIsReviewerAgent || assigneeHandoffToReview) {
|
|
1202
|
+
wakeups.set(issue.reviewerAgentId, buildIssueReviewWakeupOptions({
|
|
1203
|
+
issue,
|
|
1204
|
+
mutation,
|
|
1205
|
+
contextSource: statusChangedToInReview || statusChangedToBlocked ? "issue.status_change" : "issue.reviewer_change",
|
|
1206
|
+
requestedByActorType: actor.actorType,
|
|
1207
|
+
requestedByActorId: actor.actorId,
|
|
1208
|
+
}));
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1046
1211
|
if (commentBody && comment) {
|
|
1047
1212
|
let mentionedIds = [];
|
|
1048
1213
|
try {
|
|
@@ -1596,6 +1761,73 @@ export function issueRoutes(db, storage) {
|
|
|
1596
1761
|
}
|
|
1597
1762
|
res.status(201).json(withContentPath(attachment));
|
|
1598
1763
|
});
|
|
1764
|
+
router.post("/orgs/:orgId/issues/:issueId/attachments/workspace-file", validate(createIssueWorkspaceAttachmentSchema), async (req, res) => {
|
|
1765
|
+
const orgId = req.params.orgId;
|
|
1766
|
+
const issueId = req.params.issueId;
|
|
1767
|
+
assertCompanyAccess(req, orgId);
|
|
1768
|
+
const issue = await svc.getById(issueId);
|
|
1769
|
+
if (!issue) {
|
|
1770
|
+
res.status(404).json({ error: "Issue not found" });
|
|
1771
|
+
return;
|
|
1772
|
+
}
|
|
1773
|
+
if (issue.orgId !== orgId) {
|
|
1774
|
+
res.status(422).json({ error: "Issue does not belong to organization" });
|
|
1775
|
+
return;
|
|
1776
|
+
}
|
|
1777
|
+
const workspaceFile = await workspaceBrowser.readAttachmentFile(orgId, req.body.path);
|
|
1778
|
+
if (workspaceFile.buffer.length <= 0) {
|
|
1779
|
+
res.status(422).json({ error: "Attachment is empty" });
|
|
1780
|
+
return;
|
|
1781
|
+
}
|
|
1782
|
+
if (workspaceFile.buffer.length > MAX_ATTACHMENT_BYTES) {
|
|
1783
|
+
res.status(422).json({ error: `Attachment exceeds ${MAX_ATTACHMENT_BYTES} bytes` });
|
|
1784
|
+
return;
|
|
1785
|
+
}
|
|
1786
|
+
if (!isAllowedContentType(workspaceFile.contentType)) {
|
|
1787
|
+
res.status(422).json({ error: `Unsupported attachment type: ${workspaceFile.contentType || "unknown"}` });
|
|
1788
|
+
return;
|
|
1789
|
+
}
|
|
1790
|
+
const actor = getActorInfo(req);
|
|
1791
|
+
const stored = await storage.putFile({
|
|
1792
|
+
orgId,
|
|
1793
|
+
namespace: `issues/${issueId}`,
|
|
1794
|
+
originalFilename: workspaceFile.originalFilename,
|
|
1795
|
+
contentType: workspaceFile.contentType,
|
|
1796
|
+
body: workspaceFile.buffer,
|
|
1797
|
+
});
|
|
1798
|
+
const attachment = await svc.createAttachment({
|
|
1799
|
+
issueId,
|
|
1800
|
+
issueCommentId: null,
|
|
1801
|
+
usage: "issue",
|
|
1802
|
+
provider: stored.provider,
|
|
1803
|
+
objectKey: stored.objectKey,
|
|
1804
|
+
contentType: stored.contentType,
|
|
1805
|
+
byteSize: stored.byteSize,
|
|
1806
|
+
sha256: stored.sha256,
|
|
1807
|
+
originalFilename: stored.originalFilename,
|
|
1808
|
+
createdByAgentId: actor.agentId,
|
|
1809
|
+
createdByUserId: actor.actorType === "user" ? actor.actorId : null,
|
|
1810
|
+
});
|
|
1811
|
+
await logActivity(db, {
|
|
1812
|
+
orgId,
|
|
1813
|
+
actorType: actor.actorType,
|
|
1814
|
+
actorId: actor.actorId,
|
|
1815
|
+
agentId: actor.agentId,
|
|
1816
|
+
runId: actor.runId,
|
|
1817
|
+
action: "issue.attachment_added",
|
|
1818
|
+
entityType: "issue",
|
|
1819
|
+
entityId: issueId,
|
|
1820
|
+
details: {
|
|
1821
|
+
attachmentId: attachment.id,
|
|
1822
|
+
usage: attachment.usage,
|
|
1823
|
+
originalFilename: attachment.originalFilename,
|
|
1824
|
+
contentType: attachment.contentType,
|
|
1825
|
+
byteSize: attachment.byteSize,
|
|
1826
|
+
workspacePath: workspaceFile.normalizedPath,
|
|
1827
|
+
},
|
|
1828
|
+
});
|
|
1829
|
+
res.status(201).json(withContentPath(attachment));
|
|
1830
|
+
});
|
|
1599
1831
|
router.get("/attachments/:attachmentId/content", async (req, res, next) => {
|
|
1600
1832
|
const attachmentId = req.params.attachmentId;
|
|
1601
1833
|
const attachment = await svc.getAttachmentById(attachmentId);
|