@rudderhq/server 0.2.0-canary.9 → 0.2.1

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.
Files changed (196) hide show
  1. package/dist/bootstrap/register-api-routes.d.ts.map +1 -1
  2. package/dist/bootstrap/register-api-routes.js +2 -0
  3. package/dist/bootstrap/register-api-routes.js.map +1 -1
  4. package/dist/bundled-plugins/plugin-linear/dist/ui/index.js +8 -1
  5. package/dist/bundled-plugins/plugin-linear/dist/ui/index.js.map +2 -2
  6. package/dist/bundled-plugins/plugin-linear/dist/worker.js +20 -5
  7. package/dist/bundled-plugins/plugin-linear/dist/worker.js.map +2 -2
  8. package/dist/home-paths.d.ts +2 -0
  9. package/dist/home-paths.d.ts.map +1 -1
  10. package/dist/home-paths.js +6 -1
  11. package/dist/home-paths.js.map +1 -1
  12. package/dist/index.d.ts +11 -0
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.js +55 -2
  15. package/dist/index.js.map +1 -1
  16. package/dist/langfuse-transcript.d.ts.map +1 -1
  17. package/dist/langfuse-transcript.js +16 -2
  18. package/dist/langfuse-transcript.js.map +1 -1
  19. package/dist/middleware/auth.d.ts.map +1 -1
  20. package/dist/middleware/auth.js +54 -1
  21. package/dist/middleware/auth.js.map +1 -1
  22. package/dist/onboarding-assets/ceo/HEARTBEAT.md +8 -4
  23. package/dist/onboarding-assets/default/HEARTBEAT.md +7 -4
  24. package/dist/routes/agents.d.ts.map +1 -1
  25. package/dist/routes/agents.js +79 -4
  26. package/dist/routes/agents.js.map +1 -1
  27. package/dist/routes/approvals.d.ts.map +1 -1
  28. package/dist/routes/approvals.js +47 -2
  29. package/dist/routes/approvals.js.map +1 -1
  30. package/dist/routes/chats.d.ts.map +1 -1
  31. package/dist/routes/chats.js +300 -92
  32. package/dist/routes/chats.js.map +1 -1
  33. package/dist/routes/costs.d.ts.map +1 -1
  34. package/dist/routes/costs.js +20 -0
  35. package/dist/routes/costs.js.map +1 -1
  36. package/dist/routes/issues.d.ts.map +1 -1
  37. package/dist/routes/issues.js +236 -22
  38. package/dist/routes/issues.js.map +1 -1
  39. package/dist/routes/onboarding.d.ts +3 -0
  40. package/dist/routes/onboarding.d.ts.map +1 -0
  41. package/dist/routes/onboarding.js +545 -0
  42. package/dist/routes/onboarding.js.map +1 -0
  43. package/dist/routes/orgs.d.ts.map +1 -1
  44. package/dist/routes/orgs.js +22 -0
  45. package/dist/routes/orgs.js.map +1 -1
  46. package/dist/services/activity.d.ts.map +1 -1
  47. package/dist/services/activity.js +32 -1
  48. package/dist/services/activity.js.map +1 -1
  49. package/dist/services/agent-run-context.d.ts +1 -0
  50. package/dist/services/agent-run-context.d.ts.map +1 -1
  51. package/dist/services/agent-run-context.js +1 -0
  52. package/dist/services/agent-run-context.js.map +1 -1
  53. package/dist/services/agents.d.ts +13 -13
  54. package/dist/services/automations.d.ts +2 -2
  55. package/dist/services/calendar.d.ts +4 -4
  56. package/dist/services/chat-assistant.d.ts +11 -2
  57. package/dist/services/chat-assistant.d.ts.map +1 -1
  58. package/dist/services/chat-assistant.js +143 -8
  59. package/dist/services/chat-assistant.js.map +1 -1
  60. package/dist/services/chats.d.ts +112 -13
  61. package/dist/services/chats.d.ts.map +1 -1
  62. package/dist/services/chats.js +218 -38
  63. package/dist/services/chats.js.map +1 -1
  64. package/dist/services/costs.d.ts +21 -0
  65. package/dist/services/costs.d.ts.map +1 -1
  66. package/dist/services/costs.js +102 -2
  67. package/dist/services/costs.js.map +1 -1
  68. package/dist/services/finance.d.ts +2 -2
  69. package/dist/services/goals.d.ts +12 -12
  70. package/dist/services/instance-settings.d.ts.map +1 -1
  71. package/dist/services/instance-settings.js +27 -16
  72. package/dist/services/instance-settings.js.map +1 -1
  73. package/dist/services/issue-approvals.d.ts +16 -2
  74. package/dist/services/issue-approvals.d.ts.map +1 -1
  75. package/dist/services/issue-approvals.js +27 -4
  76. package/dist/services/issue-approvals.js.map +1 -1
  77. package/dist/services/issue-review-wakeup.d.ts +49 -1
  78. package/dist/services/issue-review-wakeup.d.ts.map +1 -1
  79. package/dist/services/issue-review-wakeup.js +39 -2
  80. package/dist/services/issue-review-wakeup.js.map +1 -1
  81. package/dist/services/issues.d.ts +2 -1
  82. package/dist/services/issues.d.ts.map +1 -1
  83. package/dist/services/issues.js +126 -5
  84. package/dist/services/issues.js.map +1 -1
  85. package/dist/services/knowledge-portability/organization-skills.d.ts +1 -0
  86. package/dist/services/knowledge-portability/organization-skills.d.ts.map +1 -1
  87. package/dist/services/knowledge-portability/organization-skills.js +3 -2
  88. package/dist/services/knowledge-portability/organization-skills.js.map +1 -1
  89. package/dist/services/messenger.d.ts +5 -0
  90. package/dist/services/messenger.d.ts.map +1 -1
  91. package/dist/services/messenger.js +154 -15
  92. package/dist/services/messenger.js.map +1 -1
  93. package/dist/services/organization-workspace-browser.d.ts.map +1 -1
  94. package/dist/services/organization-workspace-browser.js +64 -9
  95. package/dist/services/organization-workspace-browser.js.map +1 -1
  96. package/dist/services/orgs.d.ts +1 -1
  97. package/dist/services/plugin-registry.d.ts +4 -4
  98. package/dist/services/projects.d.ts +1 -1
  99. package/dist/services/runtime-kernel/heartbeat.d.ts.map +1 -1
  100. package/dist/services/runtime-kernel/heartbeat.js +571 -31
  101. package/dist/services/runtime-kernel/heartbeat.js.map +1 -1
  102. package/dist/services/secrets.d.ts +5 -5
  103. package/dist/services/workspace-backups.d.ts.map +1 -1
  104. package/dist/services/workspace-backups.js +6 -0
  105. package/dist/services/workspace-backups.js.map +1 -1
  106. package/dist/services/workspace-runtime.d.ts.map +1 -1
  107. package/dist/services/workspace-runtime.js +2 -0
  108. package/dist/services/workspace-runtime.js.map +1 -1
  109. package/package.json +13 -13
  110. package/resources/bundled-skills/rudder/SKILL.md +72 -7
  111. package/resources/bundled-skills/rudder/references/cli-reference.md +34 -9
  112. package/resources/bundled-skills/rudder/references/organization-skills.md +12 -7
  113. package/resources/bundled-skills/rudder-create-agent/references/cli-reference.md +1 -0
  114. package/skills/rudder/SKILL.md +72 -7
  115. package/skills/rudder/references/cli-reference.md +34 -9
  116. package/skills/rudder/references/organization-skills.md +12 -7
  117. package/skills/rudder-create-agent/references/cli-reference.md +1 -0
  118. package/ui-dist/assets/{_basePickBy-aX2f6dVl.js → _basePickBy-EvWeCTRb.js} +1 -1
  119. package/ui-dist/assets/{_baseUniq-BYwL7heN.js → _baseUniq-C_DXAETg.js} +1 -1
  120. package/ui-dist/assets/{arc-BG9f5pwY.js → arc-BWTkVM-u.js} +1 -1
  121. package/ui-dist/assets/{architectureDiagram-2XIMDMQ5-BFFQoJJ1.js → architectureDiagram-2XIMDMQ5-yyX54Dgl.js} +1 -1
  122. package/ui-dist/assets/{blockDiagram-WCTKOSBZ-Bvx1IB1z.js → blockDiagram-WCTKOSBZ-DleWvS8P.js} +1 -1
  123. package/ui-dist/assets/{c4Diagram-IC4MRINW-DJbCE4sh.js → c4Diagram-IC4MRINW-CltWqWC_.js} +1 -1
  124. package/ui-dist/assets/channel-Gdzxe2a1.js +1 -0
  125. package/ui-dist/assets/{chunk-4BX2VUAB-BOVbLFsN.js → chunk-4BX2VUAB-CA6RvGN7.js} +1 -1
  126. package/ui-dist/assets/{chunk-55IACEB6-D5pKj6S9.js → chunk-55IACEB6-D_EpF39w.js} +1 -1
  127. package/ui-dist/assets/{chunk-FMBD7UC4-OY5xuJeR.js → chunk-FMBD7UC4-CYMkBnLy.js} +1 -1
  128. package/ui-dist/assets/{chunk-JSJVCQXG-C5X67KZg.js → chunk-JSJVCQXG-CIY2Cb1T.js} +1 -1
  129. package/ui-dist/assets/{chunk-KX2RTZJC-C-4PZ9Q_.js → chunk-KX2RTZJC-BUyGoIKj.js} +1 -1
  130. package/ui-dist/assets/{chunk-NQ4KR5QH-XysPlqPj.js → chunk-NQ4KR5QH-DkntSLtY.js} +1 -1
  131. package/ui-dist/assets/{chunk-QZHKN3VN-B5wEbFHo.js → chunk-QZHKN3VN-DeEs3yL0.js} +1 -1
  132. package/ui-dist/assets/{chunk-WL4C6EOR-BanwYFa2.js → chunk-WL4C6EOR-Va8TkdTb.js} +1 -1
  133. package/ui-dist/assets/classDiagram-VBA2DB6C-BN6WyuN3.js +1 -0
  134. package/ui-dist/assets/classDiagram-v2-RAHNMMFH-BN6WyuN3.js +1 -0
  135. package/ui-dist/assets/clone-DL9OCUyP.js +1 -0
  136. package/ui-dist/assets/{cose-bilkent-S5V4N54A-Cd4q2swD.js → cose-bilkent-S5V4N54A-Bb6NLaVm.js} +1 -1
  137. package/ui-dist/assets/{dagre-KLK3FWXG-B_VyOhf3.js → dagre-KLK3FWXG-DpqLnZ3A.js} +1 -1
  138. package/ui-dist/assets/{diagram-E7M64L7V-BRoG4Mz6.js → diagram-E7M64L7V-D7J8NbEW.js} +1 -1
  139. package/ui-dist/assets/{diagram-IFDJBPK2-CRU_A9p9.js → diagram-IFDJBPK2-Ds2u81Zi.js} +1 -1
  140. package/ui-dist/assets/{diagram-P4PSJMXO-BYSQDbfb.js → diagram-P4PSJMXO-BwBplO7L.js} +1 -1
  141. package/ui-dist/assets/{erDiagram-INFDFZHY-v5j1kyWr.js → erDiagram-INFDFZHY-Ba-Ynr8U.js} +1 -1
  142. package/ui-dist/assets/{flowDiagram-PKNHOUZH-C06ZQgTj.js → flowDiagram-PKNHOUZH-FnOXpXb_.js} +1 -1
  143. package/ui-dist/assets/{ganttDiagram-A5KZAMGK-Dw9p5nQ1.js → ganttDiagram-A5KZAMGK-B8-MpUjy.js} +1 -1
  144. package/ui-dist/assets/{gitGraphDiagram-K3NZZRJ6-CrpXRIaP.js → gitGraphDiagram-K3NZZRJ6-DvyBGQTF.js} +1 -1
  145. package/ui-dist/assets/{graph-ClTUmULf.js → graph-BdpIVR-I.js} +1 -1
  146. package/ui-dist/assets/{index-DK13xhRv.js → index-3CPMGfu4.js} +1 -1
  147. package/ui-dist/assets/index-44A3IjSd.css +1 -0
  148. package/ui-dist/assets/{index-L6M3nVxh.js → index-B4seykMn.js} +1 -1
  149. package/ui-dist/assets/{index-Bpc2gRVo.js → index-B5Lq7qho.js} +1 -1
  150. package/ui-dist/assets/{index-DkDkjZ-D.js → index-BKWZYXO6.js} +1 -1
  151. package/ui-dist/assets/{index-DxzAgTWd.js → index-BO-P9C91.js} +1 -1
  152. package/ui-dist/assets/{index-BvGogi9q.js → index-BO9KiNr0.js} +1 -1
  153. package/ui-dist/assets/{index-Btwy7Cp-.js → index-Bd_GitJ7.js} +1 -1
  154. package/ui-dist/assets/{index-DNlWBtHa.js → index-BeyQP4jc.js} +1 -1
  155. package/ui-dist/assets/{index-4uxadHo5.js → index-Bp3rYm9R.js} +1 -1
  156. package/ui-dist/assets/{index-DWFMs9uk.js → index-CBAKsDOH.js} +1 -1
  157. package/ui-dist/assets/{index-T81awgzh.js → index-CWPEuLky.js} +1 -1
  158. package/ui-dist/assets/{index-DAhPD1Ss.js → index-Ce0xbQ5p.js} +1 -1
  159. package/ui-dist/assets/{index-_x9smX4T.js → index-ChyWxMPa.js} +1 -1
  160. package/ui-dist/assets/{index-CIr7H9OI.js → index-CkEo4bIl.js} +1 -1
  161. package/ui-dist/assets/{index-sLGLHxIu.js → index-CvzsgQH3.js} +1 -1
  162. package/ui-dist/assets/{index-D-6z8wxx.js → index-DF0X3XZi.js} +1 -1
  163. package/ui-dist/assets/{index-BVfM9ax8.js → index-DNFqhIup.js} +1 -1
  164. package/ui-dist/assets/index-Dfi8PbGx.js +1484 -0
  165. package/ui-dist/assets/{index-C_BTFRTX.js → index-Dys_qAzR.js} +1 -1
  166. package/ui-dist/assets/{index-Cr7n11UG.js → index-DzKALBsQ.js} +1 -1
  167. package/ui-dist/assets/{index-CqYInp-c.js → index-Qe9bMaYk.js} +1 -1
  168. package/ui-dist/assets/{index-CQWmziMF.js → index-baeevrWz.js} +1 -1
  169. package/ui-dist/assets/{index-BYC_xlrx.js → index-bs5pLhnN.js} +1 -1
  170. package/ui-dist/assets/{infoDiagram-LFFYTUFH-BA3VxOIU.js → infoDiagram-LFFYTUFH-51Iz4iFI.js} +1 -1
  171. package/ui-dist/assets/{ishikawaDiagram-PHBUUO56-DGrizi0S.js → ishikawaDiagram-PHBUUO56-XMkPw0tW.js} +1 -1
  172. package/ui-dist/assets/{journeyDiagram-4ABVD52K-6ey34a7e.js → journeyDiagram-4ABVD52K-DAX0bTCG.js} +1 -1
  173. package/ui-dist/assets/{kanban-definition-K7BYSVSG-CwNnmsam.js → kanban-definition-K7BYSVSG-DndcgBkd.js} +1 -1
  174. package/ui-dist/assets/{layout-buNxvllr.js → layout-DE8DhR5g.js} +1 -1
  175. package/ui-dist/assets/{linear-BPWhxaRl.js → linear-B6lAW9Wb.js} +1 -1
  176. package/ui-dist/assets/{mermaid.core-Cajx0s-z.js → mermaid.core-BG--kYhA.js} +4 -4
  177. package/ui-dist/assets/{mindmap-definition-YRQLILUH-Bf5InEp-.js → mindmap-definition-YRQLILUH-DkjV0oE3.js} +1 -1
  178. package/ui-dist/assets/{pieDiagram-SKSYHLDU-CZFz7NWC.js → pieDiagram-SKSYHLDU-D03TjqYu.js} +1 -1
  179. package/ui-dist/assets/{quadrantDiagram-337W2JSQ-XBmKVoc9.js → quadrantDiagram-337W2JSQ-C0oqv-xU.js} +1 -1
  180. package/ui-dist/assets/{requirementDiagram-Z7DCOOCP-BkgdDv0H.js → requirementDiagram-Z7DCOOCP-okIS8feM.js} +1 -1
  181. package/ui-dist/assets/{sankeyDiagram-WA2Y5GQK-CASFR28i.js → sankeyDiagram-WA2Y5GQK-WOnxUdkO.js} +1 -1
  182. package/ui-dist/assets/{sequenceDiagram-2WXFIKYE-BzY7LMRv.js → sequenceDiagram-2WXFIKYE-RVCXfMRR.js} +1 -1
  183. package/ui-dist/assets/{stateDiagram-RAJIS63D-C9UMSk36.js → stateDiagram-RAJIS63D-CZFHvVtT.js} +1 -1
  184. package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-DgYYudAJ.js +1 -0
  185. package/ui-dist/assets/{timeline-definition-YZTLITO2-D6m4R4xe.js → timeline-definition-YZTLITO2-S0uy5mlJ.js} +1 -1
  186. package/ui-dist/assets/{treemap-KZPCXAKY-7V9mnT8T.js → treemap-KZPCXAKY-Bhyg_yHs.js} +1 -1
  187. package/ui-dist/assets/{vennDiagram-LZ73GAT5-Ci-sfAyq.js → vennDiagram-LZ73GAT5-EnVupOQz.js} +1 -1
  188. package/ui-dist/assets/{xychartDiagram-JWTSCODW-BayXhRSu.js → xychartDiagram-JWTSCODW-BYpdJxGK.js} +1 -1
  189. package/ui-dist/index.html +2 -2
  190. package/ui-dist/assets/channel-ClX7n84B.js +0 -1
  191. package/ui-dist/assets/classDiagram-VBA2DB6C-DvWbsnVz.js +0 -1
  192. package/ui-dist/assets/classDiagram-v2-RAHNMMFH-DvWbsnVz.js +0 -1
  193. package/ui-dist/assets/clone-Dla3A8ZA.js +0 -1
  194. package/ui-dist/assets/index-CSANx6ee.css +0 -1
  195. package/ui-dist/assets/index-DCa9-Sy-.js +0 -1439
  196. package/ui-dist/assets/stateDiagram-v2-FVOUBMTO-DWVhbAdj.js +0 -1
@@ -9,12 +9,13 @@ function hashToken(token) {
9
9
  }
10
10
  export function actorMiddleware(db, opts) {
11
11
  const boardAuth = boardAuthService(db);
12
- return async (req, _res, next) => {
12
+ return async (req, res, next) => {
13
13
  req.actor =
14
14
  opts.deploymentMode === "local_trusted"
15
15
  ? { type: "board", userId: "local-board", isInstanceAdmin: true, source: "local_implicit" }
16
16
  : { type: "none", source: "none" };
17
17
  const runIdHeader = req.header("x-rudder-run-id");
18
+ const agentContextHeader = req.header("x-rudder-agent-id")?.trim() || undefined;
18
19
  const authHeader = req.header("authorization");
19
20
  if (!authHeader?.toLowerCase().startsWith("bearer ")) {
20
21
  if (opts.deploymentMode === "authenticated" && opts.resolveSession) {
@@ -46,17 +47,23 @@ export function actorMiddleware(db, opts) {
46
47
  runId: runIdHeader ?? undefined,
47
48
  source: "session",
48
49
  };
50
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
51
+ return;
49
52
  next();
50
53
  return;
51
54
  }
52
55
  }
53
56
  if (runIdHeader)
54
57
  req.actor.runId = runIdHeader;
58
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
59
+ return;
55
60
  next();
56
61
  return;
57
62
  }
58
63
  const token = authHeader.slice("bearer ".length).trim();
59
64
  if (!token) {
65
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
66
+ return;
60
67
  next();
61
68
  return;
62
69
  }
@@ -74,6 +81,8 @@ export function actorMiddleware(db, opts) {
74
81
  runId: runIdHeader || undefined,
75
82
  source: "board_key",
76
83
  };
84
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
85
+ return;
77
86
  next();
78
87
  return;
79
88
  }
@@ -87,6 +96,8 @@ export function actorMiddleware(db, opts) {
87
96
  if (!key) {
88
97
  const claims = verifyLocalAgentJwt(token);
89
98
  if (!claims) {
99
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
100
+ return;
90
101
  next();
91
102
  return;
92
103
  }
@@ -96,10 +107,14 @@ export function actorMiddleware(db, opts) {
96
107
  .where(eq(agents.id, claims.sub))
97
108
  .then((rows) => rows[0] ?? null);
98
109
  if (!agentRecord || agentRecord.orgId !== claims.org_id) {
110
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
111
+ return;
99
112
  next();
100
113
  return;
101
114
  }
102
115
  if (agentRecord.status === "terminated" || agentRecord.status === "pending_approval") {
116
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
117
+ return;
103
118
  next();
104
119
  return;
105
120
  }
@@ -111,6 +126,8 @@ export function actorMiddleware(db, opts) {
111
126
  runId: runIdHeader || claims.run_id || undefined,
112
127
  source: "agent_jwt",
113
128
  };
129
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
130
+ return;
114
131
  next();
115
132
  return;
116
133
  }
@@ -124,6 +141,8 @@ export function actorMiddleware(db, opts) {
124
141
  .where(eq(agents.id, key.agentId))
125
142
  .then((rows) => rows[0] ?? null);
126
143
  if (!agentRecord || agentRecord.status === "terminated" || agentRecord.status === "pending_approval") {
144
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
145
+ return;
127
146
  next();
128
147
  return;
129
148
  }
@@ -135,9 +154,43 @@ export function actorMiddleware(db, opts) {
135
154
  runId: runIdHeader || undefined,
136
155
  source: "agent_key",
137
156
  };
157
+ if (rejectAgentContextMismatch(req, res, agentContextHeader))
158
+ return;
138
159
  next();
139
160
  };
140
161
  }
162
+ function rejectAgentContextMismatch(req, res, expectedAgentId) {
163
+ if (!expectedAgentId || !isMutatingRequest(req))
164
+ return false;
165
+ if (req.actor.type !== "agent") {
166
+ res.status(401).json({
167
+ error: "Agent authentication required for agent-scoped CLI request",
168
+ code: "agent_auth_required",
169
+ details: {
170
+ expectedAgentId,
171
+ actorType: req.actor.type,
172
+ actorSource: req.actor.source,
173
+ },
174
+ });
175
+ return true;
176
+ }
177
+ if (req.actor.agentId !== expectedAgentId) {
178
+ res.status(403).json({
179
+ error: "Agent authentication does not match the CLI agent context",
180
+ code: "agent_context_mismatch",
181
+ details: {
182
+ expectedAgentId,
183
+ authenticatedAgentId: req.actor.agentId ?? null,
184
+ },
185
+ });
186
+ return true;
187
+ }
188
+ return false;
189
+ }
190
+ function isMutatingRequest(req) {
191
+ const method = req.method.toUpperCase();
192
+ return method !== "GET" && method !== "HEAD" && method !== "OPTIONS";
193
+ }
141
194
  export function requireBoard(req) {
142
195
  return req.actor.type === "board";
143
196
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/middleware/auth.ts"],"names":[],"mappings":"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"}
@@ -23,20 +23,23 @@ If `RUDDER_APPROVAL_ID` is set:
23
23
  - Review the approval and its linked issues with `rudder approval get "$RUDDER_APPROVAL_ID" --json` and `rudder approval issues "$RUDDER_APPROVAL_ID" --json`.
24
24
  - Close resolved issues or comment on what remains open.
25
25
 
26
- ## 4. Get Assignments
26
+ ## 4. Get Inbox Work
27
27
 
28
28
  - `rudder agent inbox --json`
29
- - Prioritize: `in_progress` first, then `todo`. Skip `blocked` unless you can unblock it.
29
+ - Inbox rows can be `relationship: "assignee"` or `relationship: "reviewer"`.
30
+ - Prioritize reviewer `in_review` or `blocked` rows first, then assignee `in_progress`, then assignee `todo`. Skip assignee-only `blocked` work unless you can unblock it.
30
31
  - If there is already an active run on an `in_progress` task, just move on to the next thing.
31
- - If `RUDDER_TASK_ID` is set and assigned to you, prioritize that task.
32
+ - If `RUDDER_TASK_ID` is set and assigned to you or names you as reviewer, prioritize that task.
32
33
 
33
34
  ## 5. Checkout and Work
34
35
 
35
36
  - Always checkout before working: `rudder issue checkout "<issue-id-or-identifier>" --json`.
36
37
  - Never retry a 409 -- that task belongs to someone else.
37
38
  - Use `rudder issue context "<issue-id-or-identifier>" --json` to load compact context.
38
- - Do the work. Use `rudder issue comment`, `rudder issue done`, or `rudder issue block` to communicate outcome.
39
+ - Do the work. Use `rudder issue comment`, `rudder issue done`, or `rudder issue block` to communicate outcome. If a reviewed issue is blocked, write the blocker clearly enough for reviewer triage.
39
40
  - If `RUDDER_WAKE_REASON=issue_passive_followup`, treat the wake as close-out governance, not a fresh assignment: inspect state and leave a progress comment, completion, blocker, or explicit handoff.
41
+ - If you are the reviewer, including for a `blocked` issue, record one structured decision with `rudder issue review --decision approve|request_changes|needs_followup|blocked --comment ...`. Use `blocked` only to confirm a human/external blocker, and name the next human action in the comment.
42
+ - If `RUDDER_WAKE_REASON=issue_review_closeout_missing`, treat the wake as reviewer close-out governance and record one structured review decision.
40
43
 
41
44
  ## 6. Delegation
42
45
 
@@ -55,6 +58,7 @@ If `RUDDER_APPROVAL_ID` is set:
55
58
  ## 8. Exit
56
59
 
57
60
  - Comment on any in_progress work before exiting.
61
+ - Reviewer work is not closed by a free-form accept/reject comment; use `rudder issue review`.
58
62
  - A successful `todo` or `in_progress` issue run without a close-out signal can trigger a same-agent passive follow-up.
59
63
  - If no assignments and no valid mention-handoff, exit cleanly.
60
64
 
@@ -18,19 +18,22 @@ Run this checklist on every heartbeat.
18
18
 
19
19
  If approval context is set, review linked issues and close/comment.
20
20
 
21
- ## 4. Get Assignments
21
+ ## 4. Get Inbox Work
22
22
 
23
- - Check for assigned issues.
24
- - Prioritize: in_progress first, then todo.
23
+ - Check `rudder agent inbox --json` for both assignee and reviewer rows.
24
+ - Prioritize reviewer `in_review` or `blocked` rows first, then assignee `in_progress`, then assignee `todo`.
25
25
 
26
26
  ## 5. Checkout and Work
27
27
 
28
28
  - Always checkout before working.
29
29
  - Do the work. Update status and comment when done.
30
- - If `RUDDER_WAKE_REASON=issue_passive_followup`, inspect current issue state first, then leave a close-out signal: progress comment, done, blocked with reason, or explicit handoff.
30
+ - If `RUDDER_WAKE_REASON=issue_passive_followup`, inspect current issue state first, then leave a close-out signal: progress comment, done, blocked with reason, or explicit handoff. If a reviewed issue is blocked, write the blocker clearly enough for reviewer triage.
31
+ - If you are the reviewer, including for a `blocked` issue, record a structured review decision with `rudder issue review --decision approve|request_changes|needs_followup|blocked --comment ...`. Use `blocked` only to confirm a human/external blocker, and name the next human action in the comment.
32
+ - If `RUDDER_WAKE_REASON=issue_review_closeout_missing`, inspect current state and record exactly one structured review decision.
31
33
 
32
34
  ## 6. Exit
33
35
 
34
36
  - Comment on in_progress work before exiting.
37
+ - Reviewer work is not closed by a free-form accept/reject comment; use `rudder issue review`.
35
38
  - A successful `todo` or `in_progress` issue run without a close-out signal can trigger a same-agent passive follow-up.
36
39
  - Exit cleanly if no assignments.
@@ -1 +1 @@
1
- {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAwCvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAmF1D,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,8CA08E3D"}
1
+ {"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/routes/agents.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAyCvC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAmF1D,wBAAgB,WAAW,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,cAAc,8CA8iF3D"}
@@ -5,7 +5,7 @@ import { generateKeyPairSync, randomUUID } from "node:crypto";
5
5
  import path from "node:path";
6
6
  import { agents as agentsTable, organizations, heartbeatRuns } from "@rudderhq/db";
7
7
  import { and, desc, eq, inArray, not, sql } from "drizzle-orm";
8
- import { agentSkillSyncSchema, createAgentKeySchema, createAgentHireSchema, createAgentSchema, deriveAgentUrlKey, isUuidLike, organizationSkillCreateSchema, resetAgentSessionSchema, testAgentRuntimeEnvironmentSchema, upsertAgentInstructionsFileSchema, updateAgentInstructionsBundleSchema, updateAgentPermissionsSchema, updateAgentInstructionsPathSchema, wakeAgentSchema, updateAgentSchema, } from "@rudderhq/shared";
8
+ import { agentSkillSyncSchema, agentSkillEnableSchema, createAgentKeySchema, createAgentHireSchema, createAgentSchema, deriveAgentUrlKey, isUuidLike, organizationSkillCreateSchema, resetAgentSessionSchema, testAgentRuntimeEnvironmentSchema, upsertAgentInstructionsFileSchema, updateAgentInstructionsBundleSchema, updateAgentPermissionsSchema, updateAgentInstructionsPathSchema, wakeAgentSchema, updateAgentSchema, } from "@rudderhq/shared";
9
9
  import { validate } from "../middleware/validate.js";
10
10
  import { agentService, agentInstructionsService, accessService, approvalService, organizationSkillService, budgetService, heartbeatService, issueApprovalService, issueService, logActivity, secretService, syncInstructionsBundleConfigFromFilePath, workspaceOperationService, } from "../services/index.js";
11
11
  import { assetService } from "../services/assets.js";
@@ -761,6 +761,44 @@ export function agentRoutes(db, storage) {
761
761
  });
762
762
  res.json(snapshot);
763
763
  });
764
+ router.post("/agents/:id/skills/enable", validate(agentSkillEnableSchema), async (req, res) => {
765
+ const id = req.params.id;
766
+ const agent = await svc.getById(id);
767
+ if (!agent) {
768
+ res.status(404).json({ error: "Agent not found" });
769
+ return;
770
+ }
771
+ await assertCanUpdateAgent(req, agent);
772
+ const requestedSkills = Array.from(new Set(req.body.skills
773
+ .map((value) => value.trim())
774
+ .filter(Boolean)));
775
+ const { config: runtimeConfig } = await secretsSvc.resolveAdapterConfigForRuntime(agent.orgId, agent.agentRuntimeConfig);
776
+ const currentDesiredSkills = await organizationSkills.getEnabledSkillKeysForAgent(agent.orgId, agent);
777
+ const { desiredSkills } = await resolveDesiredSkillAssignmentForAgent(agent, runtimeConfig, [...currentDesiredSkills, ...requestedSkills]);
778
+ const actor = getActorInfo(req);
779
+ await organizationSkills.addEnabledSkillKeysForAgent(agent.orgId, agent.id, desiredSkills);
780
+ const snapshot = await buildAgentSkillSnapshot(agent, runtimeConfig);
781
+ await logActivity(db, {
782
+ orgId: agent.orgId,
783
+ actorType: actor.actorType,
784
+ actorId: actor.actorId,
785
+ action: "agent.skills_enabled",
786
+ entityType: "agent",
787
+ entityId: agent.id,
788
+ agentId: actor.agentId,
789
+ runId: actor.runId,
790
+ details: {
791
+ agentRuntimeType: agent.agentRuntimeType,
792
+ requestedSkills,
793
+ desiredSkills: snapshot.desiredSkills,
794
+ mode: snapshot.mode,
795
+ supported: snapshot.supported,
796
+ entryCount: snapshot.entries.length,
797
+ warningCount: snapshot.warnings.length,
798
+ },
799
+ });
800
+ res.json(snapshot);
801
+ });
764
802
  router.get("/orgs/:orgId/agents", async (req, res) => {
765
803
  const orgId = req.params.orgId;
766
804
  assertCompanyAccess(req, orgId);
@@ -889,14 +927,35 @@ export function agentRoutes(db, storage) {
889
927
  return;
890
928
  }
891
929
  const issuesSvc = issueService(db);
892
- const rows = await issuesSvc.list(req.actor.orgId, {
930
+ const assigneeRows = await issuesSvc.list(req.actor.orgId, {
893
931
  assigneeAgentId: req.actor.agentId,
894
932
  status: "todo,in_progress,blocked",
895
933
  });
896
- res.json(rows.map((issue) => ({
934
+ const reviewerRows = await issuesSvc.list(req.actor.orgId, {
935
+ reviewerAgentId: req.actor.agentId,
936
+ status: "in_review,blocked",
937
+ excludeReviewerConfirmedBlockedHandoff: true,
938
+ });
939
+ const rowsByIssueId = new Map();
940
+ for (const issue of assigneeRows) {
941
+ rowsByIssueId.set(issue.id, { issue, relationship: "assignee" });
942
+ }
943
+ for (const issue of reviewerRows) {
944
+ rowsByIssueId.set(issue.id, { issue, relationship: "reviewer" });
945
+ }
946
+ const rows = Array.from(rowsByIssueId.values()).sort((a, b) => {
947
+ const priorityRank = { critical: 0, high: 1, medium: 2, low: 3 };
948
+ const aPriority = priorityRank[a.issue.priority] ?? 9;
949
+ const bPriority = priorityRank[b.issue.priority] ?? 9;
950
+ if (aPriority !== bPriority)
951
+ return aPriority - bPriority;
952
+ return new Date(a.issue.updatedAt).getTime() - new Date(b.issue.updatedAt).getTime();
953
+ });
954
+ res.json(rows.map(({ issue, relationship }) => ({
897
955
  id: issue.id,
898
956
  identifier: issue.identifier,
899
957
  title: issue.title,
958
+ relationship,
900
959
  status: issue.status,
901
960
  priority: issue.priority,
902
961
  projectId: issue.projectId,
@@ -1118,10 +1177,26 @@ export function agentRoutes(db, storage) {
1118
1177
  updatedAt: new Date(),
1119
1178
  });
1120
1179
  if (sourceIssueIds.length > 0) {
1121
- await issueApprovalsSvc.linkManyForApproval(approval.id, sourceIssueIds, {
1180
+ const links = await issueApprovalsSvc.linkManyForApproval(approval.id, sourceIssueIds, {
1122
1181
  agentId: actor.actorType === "agent" ? actor.actorId : null,
1123
1182
  userId: actor.actorType === "user" ? actor.actorId : null,
1124
1183
  });
1184
+ for (const link of links) {
1185
+ await logActivity(db, {
1186
+ orgId,
1187
+ actorType: actor.actorType,
1188
+ actorId: actor.actorId,
1189
+ agentId: actor.agentId,
1190
+ runId: actor.runId,
1191
+ action: "issue.approval_linked",
1192
+ entityType: "issue",
1193
+ entityId: link.issueId,
1194
+ details: {
1195
+ approvalId: approval.id,
1196
+ linkCreatedAt: link.createdAt.toISOString(),
1197
+ },
1198
+ });
1199
+ }
1125
1200
  }
1126
1201
  }
1127
1202
  await logActivity(db, {