@relaycast/engine 4.2.0 → 5.0.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 (255) hide show
  1. package/dist/adapters/node/index.d.ts.map +1 -1
  2. package/dist/adapters/node/index.js +23 -1
  3. package/dist/adapters/node/index.js.map +1 -1
  4. package/dist/adapters/node/presence.d.ts +7 -3
  5. package/dist/adapters/node/presence.d.ts.map +1 -1
  6. package/dist/adapters/node/presence.js +10 -8
  7. package/dist/adapters/node/presence.js.map +1 -1
  8. package/dist/adapters/node/realtime.d.ts +9 -1
  9. package/dist/adapters/node/realtime.d.ts.map +1 -1
  10. package/dist/adapters/node/realtime.js +72 -10
  11. package/dist/adapters/node/realtime.js.map +1 -1
  12. package/dist/auth/index.d.ts.map +1 -1
  13. package/dist/auth/index.js +31 -9
  14. package/dist/auth/index.js.map +1 -1
  15. package/dist/auth/tokenKind.d.ts +40 -0
  16. package/dist/auth/tokenKind.d.ts.map +1 -0
  17. package/dist/auth/tokenKind.js +89 -0
  18. package/dist/auth/tokenKind.js.map +1 -0
  19. package/dist/bin/serve.js +2 -4
  20. package/dist/bin/serve.js.map +1 -1
  21. package/dist/db/migrations/0021_node_delivery_contracts.sql +70 -0
  22. package/dist/db/migrations/0022_http_push_redrive.sql +13 -0
  23. package/dist/db/migrations/0023_direct_ws_nodes.sql +124 -0
  24. package/dist/db/migrations/0024_binding_workspace_constraints.sql +109 -0
  25. package/dist/db/migrations/0025_node_kind_role_adapter.sql +45 -0
  26. package/dist/db/migrations/0026_observer_tokens.sql +32 -0
  27. package/dist/db/schema.d.ts +727 -59
  28. package/dist/db/schema.d.ts.map +1 -1
  29. package/dist/db/schema.js +78 -2
  30. package/dist/db/schema.js.map +1 -1
  31. package/dist/engine/action.d.ts +2 -9
  32. package/dist/engine/action.d.ts.map +1 -1
  33. package/dist/engine/action.js +182 -14
  34. package/dist/engine/action.js.map +1 -1
  35. package/dist/engine/activity.d.ts +6 -0
  36. package/dist/engine/activity.d.ts.map +1 -1
  37. package/dist/engine/activity.js +9 -2
  38. package/dist/engine/activity.js.map +1 -1
  39. package/dist/engine/agent.d.ts +0 -33
  40. package/dist/engine/agent.d.ts.map +1 -1
  41. package/dist/engine/agent.js +4 -153
  42. package/dist/engine/agent.js.map +1 -1
  43. package/dist/engine/attachments.d.ts +6 -0
  44. package/dist/engine/attachments.d.ts.map +1 -1
  45. package/dist/engine/attachments.js +37 -0
  46. package/dist/engine/attachments.js.map +1 -1
  47. package/dist/engine/console.d.ts +78 -1
  48. package/dist/engine/console.d.ts.map +1 -1
  49. package/dist/engine/console.js +175 -19
  50. package/dist/engine/console.js.map +1 -1
  51. package/dist/engine/delivery.d.ts +26 -0
  52. package/dist/engine/delivery.d.ts.map +1 -1
  53. package/dist/engine/delivery.js +194 -74
  54. package/dist/engine/delivery.js.map +1 -1
  55. package/dist/engine/deliveryWire.d.ts +4 -0
  56. package/dist/engine/deliveryWire.d.ts.map +1 -1
  57. package/dist/engine/deliveryWire.js +2 -0
  58. package/dist/engine/deliveryWire.js.map +1 -1
  59. package/dist/engine/deliveryWrites.d.ts +6 -0
  60. package/dist/engine/deliveryWrites.d.ts.map +1 -1
  61. package/dist/engine/deliveryWrites.js +58 -13
  62. package/dist/engine/deliveryWrites.js.map +1 -1
  63. package/dist/engine/dm.d.ts.map +1 -1
  64. package/dist/engine/dm.js +11 -33
  65. package/dist/engine/dm.js.map +1 -1
  66. package/dist/engine/dmAll.d.ts.map +1 -1
  67. package/dist/engine/dmAll.js +2 -0
  68. package/dist/engine/dmAll.js.map +1 -1
  69. package/dist/engine/groupDm.d.ts +2 -3
  70. package/dist/engine/groupDm.d.ts.map +1 -1
  71. package/dist/engine/groupDm.js +8 -26
  72. package/dist/engine/groupDm.js.map +1 -1
  73. package/dist/engine/invocationCompletion.d.ts +1 -1
  74. package/dist/engine/invocationCompletion.d.ts.map +1 -1
  75. package/dist/engine/invocationCompletion.js +10 -18
  76. package/dist/engine/invocationCompletion.js.map +1 -1
  77. package/dist/engine/message.d.ts.map +1 -1
  78. package/dist/engine/message.js +16 -44
  79. package/dist/engine/message.js.map +1 -1
  80. package/dist/engine/node.d.ts +97 -0
  81. package/dist/engine/node.d.ts.map +1 -1
  82. package/dist/engine/node.js +555 -27
  83. package/dist/engine/node.js.map +1 -1
  84. package/dist/engine/nodeContext.d.ts +22 -0
  85. package/dist/engine/nodeContext.d.ts.map +1 -0
  86. package/dist/engine/nodeContext.js +80 -0
  87. package/dist/engine/nodeContext.js.map +1 -0
  88. package/dist/engine/nodeDeliver.d.ts +23 -0
  89. package/dist/engine/nodeDeliver.d.ts.map +1 -0
  90. package/dist/engine/nodeDeliver.js +81 -0
  91. package/dist/engine/nodeDeliver.js.map +1 -0
  92. package/dist/engine/observerToken.d.ts +110 -0
  93. package/dist/engine/observerToken.d.ts.map +1 -0
  94. package/dist/engine/observerToken.js +528 -0
  95. package/dist/engine/observerToken.js.map +1 -0
  96. package/dist/engine/search.d.ts +4 -0
  97. package/dist/engine/search.d.ts.map +1 -1
  98. package/dist/engine/search.js +6 -1
  99. package/dist/engine/search.js.map +1 -1
  100. package/dist/engine/thread.d.ts +4 -3
  101. package/dist/engine/thread.d.ts.map +1 -1
  102. package/dist/engine/thread.js +45 -17
  103. package/dist/engine/thread.js.map +1 -1
  104. package/dist/engine/wsAuth.d.ts +32 -0
  105. package/dist/engine/wsAuth.d.ts.map +1 -0
  106. package/dist/engine/wsAuth.js +65 -0
  107. package/dist/engine/wsAuth.js.map +1 -0
  108. package/dist/engine/wsTransform.d.ts.map +1 -1
  109. package/dist/engine/wsTransform.js +52 -36
  110. package/dist/engine/wsTransform.js.map +1 -1
  111. package/dist/engine.d.ts.map +1 -1
  112. package/dist/engine.js +37 -86
  113. package/dist/engine.js.map +1 -1
  114. package/dist/entrypoints/node.d.ts.map +1 -1
  115. package/dist/entrypoints/node.js +20 -57
  116. package/dist/entrypoints/node.js.map +1 -1
  117. package/dist/env.d.ts +3 -1
  118. package/dist/env.d.ts.map +1 -1
  119. package/dist/index.d.ts +1 -0
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +5 -0
  122. package/dist/index.js.map +1 -1
  123. package/dist/lib/httpError.d.ts +5 -1
  124. package/dist/lib/httpError.d.ts.map +1 -1
  125. package/dist/lib/httpError.js +5 -2
  126. package/dist/lib/httpError.js.map +1 -1
  127. package/dist/lib/httpQuery.d.ts +28 -0
  128. package/dist/lib/httpQuery.d.ts.map +1 -0
  129. package/dist/lib/httpQuery.js +32 -0
  130. package/dist/lib/httpQuery.js.map +1 -0
  131. package/dist/lib/httpResponse.d.ts +15 -2
  132. package/dist/lib/httpResponse.d.ts.map +1 -1
  133. package/dist/lib/httpResponse.js +35 -7
  134. package/dist/lib/httpResponse.js.map +1 -1
  135. package/dist/middleware/auth.d.ts +8 -0
  136. package/dist/middleware/auth.d.ts.map +1 -1
  137. package/dist/middleware/auth.js +65 -2
  138. package/dist/middleware/auth.js.map +1 -1
  139. package/dist/middleware/idempotency.d.ts +30 -0
  140. package/dist/middleware/idempotency.d.ts.map +1 -1
  141. package/dist/middleware/idempotency.js +14 -0
  142. package/dist/middleware/idempotency.js.map +1 -1
  143. package/dist/middleware/logger.d.ts.map +1 -1
  144. package/dist/middleware/logger.js +4 -4
  145. package/dist/middleware/logger.js.map +1 -1
  146. package/dist/middleware/planLimits.d.ts.map +1 -1
  147. package/dist/middleware/planLimits.js +11 -9
  148. package/dist/middleware/planLimits.js.map +1 -1
  149. package/dist/middleware/rateLimit.d.ts.map +1 -1
  150. package/dist/middleware/rateLimit.js +15 -8
  151. package/dist/middleware/rateLimit.js.map +1 -1
  152. package/dist/middleware/usageTracker.d.ts.map +1 -1
  153. package/dist/middleware/usageTracker.js +2 -1
  154. package/dist/middleware/usageTracker.js.map +1 -1
  155. package/dist/ports/auth.d.ts +6 -2
  156. package/dist/ports/auth.d.ts.map +1 -1
  157. package/dist/ports/entitlements.d.ts +3 -1
  158. package/dist/ports/entitlements.d.ts.map +1 -1
  159. package/dist/ports/index.d.ts +0 -14
  160. package/dist/ports/index.d.ts.map +1 -1
  161. package/dist/ports/realtime.d.ts +4 -1
  162. package/dist/ports/realtime.d.ts.map +1 -1
  163. package/dist/providers/static-entitlements.js +4 -4
  164. package/dist/providers/static-entitlements.js.map +1 -1
  165. package/dist/routes/a2a.d.ts.map +1 -1
  166. package/dist/routes/a2a.js +41 -83
  167. package/dist/routes/a2a.js.map +1 -1
  168. package/dist/routes/action.d.ts.map +1 -1
  169. package/dist/routes/action.js +45 -42
  170. package/dist/routes/action.js.map +1 -1
  171. package/dist/routes/agent.d.ts.map +1 -1
  172. package/dist/routes/agent.js +172 -120
  173. package/dist/routes/agent.js.map +1 -1
  174. package/dist/routes/certify.d.ts.map +1 -1
  175. package/dist/routes/certify.js +21 -35
  176. package/dist/routes/certify.js.map +1 -1
  177. package/dist/routes/channel.d.ts.map +1 -1
  178. package/dist/routes/channel.js +69 -81
  179. package/dist/routes/channel.js.map +1 -1
  180. package/dist/routes/console.d.ts.map +1 -1
  181. package/dist/routes/console.js +60 -40
  182. package/dist/routes/console.js.map +1 -1
  183. package/dist/routes/delivery.d.ts.map +1 -1
  184. package/dist/routes/delivery.js +22 -54
  185. package/dist/routes/delivery.js.map +1 -1
  186. package/dist/routes/deliveryRouting.d.ts +6 -0
  187. package/dist/routes/deliveryRouting.d.ts.map +1 -1
  188. package/dist/routes/deliveryRouting.js +297 -34
  189. package/dist/routes/deliveryRouting.js.map +1 -1
  190. package/dist/routes/directory.d.ts.map +1 -1
  191. package/dist/routes/directory.js +47 -63
  192. package/dist/routes/directory.js.map +1 -1
  193. package/dist/routes/dm.d.ts.map +1 -1
  194. package/dist/routes/dm.js +21 -42
  195. package/dist/routes/dm.js.map +1 -1
  196. package/dist/routes/fanout.d.ts +2 -1
  197. package/dist/routes/fanout.d.ts.map +1 -1
  198. package/dist/routes/fanout.js +38 -20
  199. package/dist/routes/fanout.js.map +1 -1
  200. package/dist/routes/file.d.ts.map +1 -1
  201. package/dist/routes/file.js +48 -44
  202. package/dist/routes/file.js.map +1 -1
  203. package/dist/routes/groupDm.d.ts.map +1 -1
  204. package/dist/routes/groupDm.js +23 -48
  205. package/dist/routes/groupDm.js.map +1 -1
  206. package/dist/routes/inboundWebhook.d.ts.map +1 -1
  207. package/dist/routes/inboundWebhook.js +17 -35
  208. package/dist/routes/inboundWebhook.js.map +1 -1
  209. package/dist/routes/inbox.d.ts.map +1 -1
  210. package/dist/routes/inbox.js +2 -1
  211. package/dist/routes/inbox.js.map +1 -1
  212. package/dist/routes/message.d.ts.map +1 -1
  213. package/dist/routes/message.js +60 -53
  214. package/dist/routes/message.js.map +1 -1
  215. package/dist/routes/node.d.ts.map +1 -1
  216. package/dist/routes/node.js +173 -10
  217. package/dist/routes/node.js.map +1 -1
  218. package/dist/routes/observerToken.d.ts +4 -0
  219. package/dist/routes/observerToken.d.ts.map +1 -0
  220. package/dist/routes/observerToken.js +105 -0
  221. package/dist/routes/observerToken.js.map +1 -0
  222. package/dist/routes/presence.d.ts.map +1 -1
  223. package/dist/routes/presence.js +10 -6
  224. package/dist/routes/presence.js.map +1 -1
  225. package/dist/routes/reaction.d.ts.map +1 -1
  226. package/dist/routes/reaction.js +69 -28
  227. package/dist/routes/reaction.js.map +1 -1
  228. package/dist/routes/receipt.d.ts.map +1 -1
  229. package/dist/routes/receipt.js +20 -3
  230. package/dist/routes/receipt.js.map +1 -1
  231. package/dist/routes/routing.d.ts.map +1 -1
  232. package/dist/routes/routing.js +38 -51
  233. package/dist/routes/routing.js.map +1 -1
  234. package/dist/routes/search.d.ts.map +1 -1
  235. package/dist/routes/search.js +21 -15
  236. package/dist/routes/search.js.map +1 -1
  237. package/dist/routes/thread.d.ts.map +1 -1
  238. package/dist/routes/thread.js +36 -37
  239. package/dist/routes/thread.js.map +1 -1
  240. package/dist/routes/workspace.d.ts.map +1 -1
  241. package/dist/routes/workspace.js +57 -225
  242. package/dist/routes/workspace.js.map +1 -1
  243. package/package.json +3 -3
  244. package/dist/lib/fleetNodes.d.ts +0 -9
  245. package/dist/lib/fleetNodes.d.ts.map +0 -1
  246. package/dist/lib/fleetNodes.js +0 -66
  247. package/dist/lib/fleetNodes.js.map +0 -1
  248. package/dist/lib/workspaceStream.d.ts +0 -9
  249. package/dist/lib/workspaceStream.d.ts.map +0 -1
  250. package/dist/lib/workspaceStream.js +0 -53
  251. package/dist/lib/workspaceStream.js.map +0 -1
  252. package/dist/middleware/fleetNodes.d.ts +0 -10
  253. package/dist/middleware/fleetNodes.d.ts.map +0 -1
  254. package/dist/middleware/fleetNodes.js +0 -18
  255. package/dist/middleware/fleetNodes.js.map +0 -1
@@ -1,17 +1,20 @@
1
1
  import { Hono } from 'hono';
2
2
  import { z } from 'zod';
3
- import { requireAuth } from '../middleware/auth.js';
3
+ import { requireAuth, requireWorkspaceRead } from '../middleware/auth.js';
4
4
  import { rateLimit } from '../middleware/rateLimit.js';
5
- import { parseIdempotencyKey, runIdempotent } from '../middleware/idempotency.js';
5
+ import { jsonIdempotentOk, parseIdempotencyKey, runIdempotent } from '../middleware/idempotency.js';
6
6
  import * as threadEngine from '../engine/thread.js';
7
7
  import { resolveMailboxConfig } from '../engine/mailboxConfig.js';
8
- import { fanoutToChannel, fanoutToAgents, getDmParticipantAgentIds } from './fanout.js';
8
+ import { publishWorkspaceEvent } from './fanout.js';
9
9
  import { notifyDeliveryRejections, routeDeliveryOutcomes } from './deliveryRouting.js';
10
10
  import { buildThreadReplyEventData } from '../engine/deliveryWire.js';
11
+ import { getMessageObserverResource, getObserverTokenFromContext, observerAllowsMessageResource, observerAllowsMessage, } from '../engine/observerToken.js';
11
12
  import { runInBackground } from './background.js';
12
13
  import { sendWebhookEvent } from './webhookOutbox.js';
13
14
  import { emitServerEvent } from '../lib/serverTelemetry.js';
14
15
  import { errorResponse } from '../lib/httpError.js';
16
+ import { jsonError, jsonOk, parseJsonBody } from '../lib/httpResponse.js';
17
+ import { parsePaginationQuery } from '../lib/httpQuery.js';
15
18
  export const threadRoutes = new Hono();
16
19
  const postReplySchema = z.object({
17
20
  text: z.string().min(1),
@@ -24,27 +27,18 @@ threadRoutes.post('/messages/:id/replies', requireAuth, rateLimit, async (c) =>
24
27
  const db = c.get('db');
25
28
  const workspace = c.get('workspace');
26
29
  const agent = c.get('agent');
27
- const parsed = postReplySchema.safeParse(await c.req.json());
28
- if (!parsed.success) {
29
- return c.json({
30
- ok: false,
31
- error: { code: 'invalid_request', message: 'text is required' },
32
- }, 400);
30
+ const parsed = await parseJsonBody(c, postReplySchema, 'invalid reply body');
31
+ if (!parsed.ok) {
32
+ return parsed.response;
33
33
  }
34
34
  const { text, blocks, data } = parsed.data;
35
35
  const { key: idempotencyKey, error: idempotencyError } = parseIdempotencyKey(c.req.header('Idempotency-Key'));
36
36
  if (idempotencyError) {
37
- return c.json({
38
- ok: false,
39
- error: { code: 'invalid_idempotency_key', message: idempotencyError },
40
- }, 400);
37
+ return jsonError(c, 'invalid_idempotency_key', idempotencyError, 400);
41
38
  }
42
39
  const agentId = agent?.id;
43
40
  if (!agentId) {
44
- return c.json({
45
- ok: false,
46
- error: { code: 'agent_token_required', message: 'Agent token required to post replies' },
47
- }, 403);
41
+ return jsonError(c, 'agent_token_required', 'Agent token required to post replies', 403);
48
42
  }
49
43
  const parentId = c.req.param('id');
50
44
  const mailbox = resolveMailboxConfig(c.get('engine').config, workspace.id);
@@ -69,23 +63,11 @@ threadRoutes.post('/messages/:id/replies', requireAuth, rateLimit, async (c) =>
69
63
  });
70
64
  },
71
65
  });
72
- if (idempotent.replayed) {
73
- c.header('Idempotency-Replayed', 'true');
74
- }
75
66
  if (!idempotent.replayed) {
76
67
  const { _deliveries, _delivery_rejections, ...publicReplyData } = idempotent.data;
77
68
  const eventData = toThreadReplyEventData(idempotent.data);
78
69
  if (publicReplyData.channel_id) {
79
- const channelId = publicReplyData.channel_id;
80
- runInBackground(c, (async () => {
81
- const dmAgentIds = await getDmParticipantAgentIds(c, channelId);
82
- if (dmAgentIds) {
83
- await fanoutToAgents(c, dmAgentIds, 'thread.reply', eventData);
84
- }
85
- else {
86
- await fanoutToChannel(c, channelId, 'thread.reply', eventData);
87
- }
88
- })(), 'fanout thread.reply');
70
+ runInBackground(c, publishWorkspaceEvent(c, 'thread.reply', eventData, publicReplyData.channel_id), 'publish thread.reply');
89
71
  }
90
72
  if (_deliveries && _deliveries.length > 0) {
91
73
  runInBackground(c, routeDeliveryOutcomes(c, _deliveries, 'thread.reply', eventData), 'route thread deliveries');
@@ -99,24 +81,41 @@ threadRoutes.post('/messages/:id/replies', requireAuth, rateLimit, async (c) =>
99
81
  channel_id: publicReplyData.channel_id ?? null,
100
82
  });
101
83
  }
102
- const { _deliveries: _dropDeliveries, _delivery_rejections: _dropRejections, ...responseData } = idempotent.data;
103
- return c.json({ ok: true, data: responseData }, idempotent.status);
84
+ return jsonIdempotentOk(c, idempotent);
104
85
  }
105
86
  catch (err) {
106
87
  return errorResponse(c, err);
107
88
  }
108
89
  });
109
90
  // GET /v1/messages/:id/replies - get thread
110
- threadRoutes.get('/messages/:id/replies', requireAuth, rateLimit, async (c) => {
91
+ threadRoutes.get('/messages/:id/replies', requireWorkspaceRead('threads:read'), rateLimit, async (c) => {
111
92
  try {
112
93
  const db = c.get('db');
113
94
  const workspace = c.get('workspace');
114
- const limit = c.req.query('limit') ? parseInt(c.req.query('limit'), 10) : undefined;
115
- const before = c.req.query('before');
116
- const after = c.req.query('after');
95
+ const query = parsePaginationQuery(c);
96
+ if (!query.ok) {
97
+ return query.response;
98
+ }
99
+ const { limit, before, after } = query.data;
117
100
  const parentId = c.req.param('id');
101
+ const observer = getObserverTokenFromContext(c);
102
+ if (observer) {
103
+ const resource = await getMessageObserverResource(db, workspace.id, parentId);
104
+ if (!resource) {
105
+ return jsonError(c, 'message_not_found', 'Parent message not found', 404);
106
+ }
107
+ if (!observerAllowsMessageResource(observer, resource)) {
108
+ return jsonError(c, 'message_not_found', 'Parent message not found', 404);
109
+ }
110
+ }
118
111
  const result = await threadEngine.getThread(db, workspace.id, parentId, { limit, before, after });
119
- return c.json({ ok: true, data: result });
112
+ if (!observer)
113
+ return jsonOk(c, result);
114
+ const replies = result.replies.filter((reply) => observerAllowsMessage(observer, reply));
115
+ return jsonOk(c, {
116
+ ...result,
117
+ replies,
118
+ });
120
119
  }
121
120
  catch (err) {
122
121
  return errorResponse(c, err);
@@ -1 +1 @@
1
- {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/routes/thread.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"thread.js","sourceRoot":"","sources":["../../src/routes/thread.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/routes/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAK5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAmBxC,eAAO,MAAM,eAAe,qDAAqB,CAAC"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/routes/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAI5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AA0BxC,eAAO,MAAM,eAAe,qDAAqB,CAAC"}
@@ -1,17 +1,17 @@
1
1
  import { Hono } from 'hono';
2
2
  import { createMiddleware } from 'hono/factory';
3
3
  import { z } from 'zod';
4
- import { requireWorkspaceKey } from '../middleware/auth.js';
4
+ import { requireWorkspaceKey, requireWorkspaceRead } from '../middleware/auth.js';
5
5
  import { rateLimit } from '../middleware/rateLimit.js';
6
6
  import * as workspaceEngine from '../engine/workspace.js';
7
7
  import * as activityEngine from '../engine/activity.js';
8
8
  import * as dmAllEngine from '../engine/dmAll.js';
9
9
  import * as tokenRotateEngine from '../engine/tokenRotate.js';
10
- import { getWorkspaceStreamConfig, setWorkspaceStreamOverride, } from '../lib/workspaceStream.js';
11
- import { getFleetNodesConfig, setFleetNodesOverride, } from '../lib/fleetNodes.js';
12
- import { getRequestLogger, toErrorDetails } from '../lib/logger.js';
10
+ import { filterObserverSearchResults, getObserverTokenFromContext, observerAllowsConversation, observerAllowsMessage, } from '../engine/observerToken.js';
13
11
  import { emitServerEvent } from '../lib/serverTelemetry.js';
14
- import { errorResponse, asCodedError } from '../lib/httpError.js';
12
+ import { errorResponse } from '../lib/httpError.js';
13
+ import { jsonCreated, jsonError, jsonNoContent, jsonNotFound, jsonOk, parseJsonBody, parseQueryParams, } from '../lib/httpResponse.js';
14
+ import { parsePaginationQuery, positiveIntQueryParam } from '../lib/httpQuery.js';
15
15
  export const workspaceRoutes = new Hono();
16
16
  const createWorkspaceSchema = z.object({
17
17
  name: z.string().min(1),
@@ -20,14 +20,12 @@ const updateWorkspaceSchema = z.object({
20
20
  name: z.string().optional(),
21
21
  system_prompt: z.string().nullable().optional(),
22
22
  });
23
- const updateWorkspaceStreamSchema = z.object({
24
- enabled: z.boolean().optional(),
25
- mode: z.string().optional(),
26
- }).passthrough();
27
- const updateFleetNodesSchema = z.object({
28
- enabled: z.boolean().optional(),
29
- mode: z.string().optional(),
30
- }).passthrough();
23
+ const activityQuerySchema = z.object({
24
+ limit: positiveIntQueryParam({ defaultValue: 20, max: 500 }),
25
+ });
26
+ function workspaceNotFound(c) {
27
+ return jsonNotFound(c, 'workspace_not_found', 'Workspace not found');
28
+ }
31
29
  const PUBLIC_WORKSPACE_LOOKUP_LIMIT = 30;
32
30
  const publicWorkspaceLookupBuckets = new Map();
33
31
  let lastPublicWorkspaceLookupCleanup = Date.now();
@@ -80,13 +78,7 @@ const publicWorkspaceLookupRateLimit = createMiddleware(async (c, next) => {
80
78
  c.header('X-RateLimit-Limit', String(limit));
81
79
  c.header('X-RateLimit-Remaining', String(remaining));
82
80
  if (!allowed) {
83
- return c.json({
84
- ok: false,
85
- error: {
86
- code: 'rate_limit_exceeded',
87
- message: `Rate limit exceeded. ${limit} requests per minute allowed for public workspace lookups.`,
88
- },
89
- }, 429);
81
+ return jsonError(c, 'rate_limit_exceeded', `Rate limit exceeded. ${limit} requests per minute allowed for public workspace lookups.`, 429);
90
82
  }
91
83
  }
92
84
  catch {
@@ -94,13 +86,7 @@ const publicWorkspaceLookupRateLimit = createMiddleware(async (c, next) => {
94
86
  c.header('X-RateLimit-Limit', String(limit));
95
87
  c.header('X-RateLimit-Remaining', String(remaining));
96
88
  if (!allowed) {
97
- return c.json({
98
- ok: false,
99
- error: {
100
- code: 'rate_limit_exceeded',
101
- message: `Rate limit exceeded. ${limit} requests per minute allowed for public workspace lookups.`,
102
- },
103
- }, 429);
89
+ return jsonError(c, 'rate_limit_exceeded', `Rate limit exceeded. ${limit} requests per minute allowed for public workspace lookups.`, 429);
104
90
  }
105
91
  }
106
92
  await next();
@@ -108,9 +94,9 @@ const publicWorkspaceLookupRateLimit = createMiddleware(async (c, next) => {
108
94
  // POST /workspaces - create workspace (no auth required, workspace key optional)
109
95
  workspaceRoutes.post('/workspaces', async (c) => {
110
96
  try {
111
- const parsed = createWorkspaceSchema.safeParse(await c.req.json());
112
- if (!parsed.success) {
113
- return c.json({ ok: false, error: { code: 'invalid_request', message: 'name is required' } }, 400);
97
+ const parsed = await parseJsonBody(c, createWorkspaceSchema, 'name is required');
98
+ if (!parsed.ok) {
99
+ return parsed.response;
114
100
  }
115
101
  const { name } = parsed.data;
116
102
  const db = c.get('db');
@@ -121,7 +107,7 @@ workspaceRoutes.post('/workspaces', async (c) => {
121
107
  created_via: 'api',
122
108
  });
123
109
  }
124
- return c.json({ ok: true, data: result.workspace }, result.created ? 201 : 200);
110
+ return result.created ? jsonCreated(c, result.workspace) : jsonOk(c, result.workspace);
125
111
  }
126
112
  catch (err) {
127
113
  return errorResponse(c, err);
@@ -133,9 +119,9 @@ workspaceRoutes.get('/workspaces/by-name/:name', publicWorkspaceLookupRateLimit,
133
119
  const db = c.get('db');
134
120
  const workspace = await workspaceEngine.getWorkspaceByName(db, c.req.param('name'));
135
121
  if (!workspace) {
136
- return c.json({ ok: false, error: { code: 'workspace_not_found', message: 'Workspace not found' } }, 404);
122
+ return workspaceNotFound(c);
137
123
  }
138
- return c.json({ ok: true, data: workspace });
124
+ return jsonOk(c, workspace);
139
125
  }
140
126
  catch (err) {
141
127
  return errorResponse(c, err);
@@ -147,9 +133,9 @@ workspaceRoutes.get('/workspace', requireWorkspaceKey, rateLimit, async (c) => {
147
133
  const db = c.get('db');
148
134
  const workspace = await workspaceEngine.getWorkspace(db, c.get('workspace').id);
149
135
  if (!workspace) {
150
- return c.json({ ok: false, error: { code: 'workspace_not_found', message: 'Workspace not found' } }, 404);
136
+ return workspaceNotFound(c);
151
137
  }
152
- return c.json({ ok: true, data: workspace });
138
+ return jsonOk(c, workspace);
153
139
  }
154
140
  catch (err) {
155
141
  return errorResponse(c, err);
@@ -160,20 +146,20 @@ workspaceRoutes.patch('/workspace', requireWorkspaceKey, rateLimit, async (c) =>
160
146
  try {
161
147
  const db = c.get('db');
162
148
  const workspace = c.get('workspace');
163
- const parsed = updateWorkspaceSchema.safeParse(await c.req.json());
164
- if (!parsed.success) {
165
- return c.json({ ok: false, error: { code: 'invalid_request', message: 'invalid workspace update body' } }, 400);
149
+ const parsed = await parseJsonBody(c, updateWorkspaceSchema, 'invalid workspace update body');
150
+ if (!parsed.ok) {
151
+ return parsed.response;
166
152
  }
167
153
  const body = parsed.data;
168
154
  const updated = await workspaceEngine.updateWorkspace(db, workspace.id, body);
169
155
  if (!updated) {
170
- return c.json({ ok: false, error: { code: 'workspace_not_found', message: 'Workspace not found' } }, 404);
156
+ return workspaceNotFound(c);
171
157
  }
172
158
  emitServerEvent(c, workspace.id, 'relaycast_server_workspace_updated', {
173
159
  changed_name: typeof body?.name === 'string',
174
160
  changed_system_prompt: typeof body?.system_prompt === 'string',
175
161
  });
176
- return c.json({ ok: true, data: updated });
162
+ return jsonOk(c, updated);
177
163
  }
178
164
  catch (err) {
179
165
  return errorResponse(c, err);
@@ -188,50 +174,66 @@ workspaceRoutes.delete('/workspace', requireWorkspaceKey, rateLimit, async (c) =
188
174
  emitServerEvent(c, workspace.id, 'relaycast_server_workspace_deleted', {
189
175
  deleted_via: 'api',
190
176
  });
191
- return c.body(null, 204);
177
+ return jsonNoContent(c);
192
178
  }
193
179
  catch (err) {
194
180
  return errorResponse(c, err);
195
181
  }
196
182
  });
197
183
  // GET /activity — recent activity feed
198
- workspaceRoutes.get('/activity', requireWorkspaceKey, rateLimit, async (c) => {
184
+ workspaceRoutes.get('/activity', requireWorkspaceRead('activity:read', { allowAgent: false, allowNode: false }), rateLimit, async (c) => {
199
185
  try {
200
186
  const db = c.get('db');
201
187
  const workspace = c.get('workspace');
202
- const limitStr = c.req.query('limit');
203
- const limit = limitStr ? parseInt(limitStr, 10) : 20;
188
+ const parsed = parseQueryParams(c, activityQuerySchema, 'Invalid activity query');
189
+ if (!parsed.ok) {
190
+ return parsed.response;
191
+ }
192
+ const { limit } = parsed.data;
204
193
  const items = await activityEngine.getActivityFeed(db, workspace.id, limit);
205
- return c.json({ ok: true, data: items });
194
+ const visibleItems = await filterObserverSearchResults(db, workspace.id, getObserverTokenFromContext(c), items, {
195
+ eventTypes: (item) => (item.conversation_id
196
+ ? ['dm.received', 'group_dm.received']
197
+ : ['message.created']),
198
+ });
199
+ const responseItems = visibleItems.map(({ channel_type: _channelType, ...item }) => item);
200
+ return jsonOk(c, responseItems);
206
201
  }
207
202
  catch (err) {
208
203
  return errorResponse(c, err);
209
204
  }
210
205
  });
211
206
  // GET /dm/conversations/all — workspace-wide DM list
212
- workspaceRoutes.get('/dm/conversations/all', requireWorkspaceKey, rateLimit, async (c) => {
207
+ workspaceRoutes.get('/dm/conversations/all', requireWorkspaceRead('dms:read', { allowAgent: false, allowNode: false }), rateLimit, async (c) => {
213
208
  try {
214
209
  const db = c.get('db');
215
210
  const workspace = c.get('workspace');
216
- const conversations = await dmAllEngine.listAllDmConversations(db, workspace.id);
217
- return c.json({ ok: true, data: conversations });
211
+ const observer = getObserverTokenFromContext(c);
212
+ const conversations = (await dmAllEngine.listAllDmConversations(db, workspace.id))
213
+ .filter((conversation) => observerAllowsConversation(observer, conversation.id)
214
+ && (!conversation.last_message || observerAllowsMessage(observer, conversation.last_message)));
215
+ return jsonOk(c, conversations);
218
216
  }
219
217
  catch (err) {
220
218
  return errorResponse(c, err);
221
219
  }
222
220
  });
223
221
  // GET /dm/conversations/:conversation_id/messages — DM messages by conversation
224
- workspaceRoutes.get('/dm/conversations/:conversation_id/messages', requireWorkspaceKey, rateLimit, async (c) => {
222
+ workspaceRoutes.get('/dm/conversations/:conversation_id/messages', requireWorkspaceRead('dms:read', { allowAgent: false, allowNode: false }), rateLimit, async (c) => {
225
223
  try {
226
224
  const db = c.get('db');
227
225
  const workspace = c.get('workspace');
228
226
  const conversationId = c.req.param('conversation_id');
229
- const limitStr = c.req.query('limit');
230
- const limit = limitStr ? parseInt(limitStr, 10) : undefined;
231
- const before = c.req.query('before') || undefined;
232
- const after = c.req.query('after') || undefined;
227
+ if (!observerAllowsConversation(getObserverTokenFromContext(c), conversationId)) {
228
+ return jsonNotFound(c, 'dm_conversation_not_found', 'Conversation not found');
229
+ }
230
+ const query = parsePaginationQuery(c);
231
+ if (!query.ok) {
232
+ return query.response;
233
+ }
234
+ const { limit, before, after } = query.data;
233
235
  const msgs = await dmAllEngine.getDmMessagesForWorkspace(db, workspace.id, conversationId, { limit, before, after });
234
- return c.json({ ok: true, data: msgs });
236
+ return jsonOk(c, msgs.filter((message) => observerAllowsMessage(getObserverTokenFromContext(c), message)));
235
237
  }
236
238
  catch (err) {
237
239
  return errorResponse(c, err);
@@ -246,180 +248,10 @@ workspaceRoutes.post('/agents/:name/rotate-token', requireWorkspaceKey, rateLimi
246
248
  emitServerEvent(c, workspace.id, 'relaycast_server_agent_token_rotated', {
247
249
  agent_name: c.req.param('name'),
248
250
  });
249
- return c.json({ ok: true, data: result });
251
+ return jsonOk(c, result);
250
252
  }
251
253
  catch (err) {
252
254
  return errorResponse(c, err);
253
255
  }
254
256
  });
255
- // GET /workspace/stream - get workspace stream effective config
256
- workspaceRoutes.get('/workspace/stream', requireWorkspaceKey, rateLimit, async (c) => {
257
- const logger = getRequestLogger(c, 'workspace.stream.get');
258
- const workspaceId = c.get('workspace').id;
259
- try {
260
- const { kv, config: engineConfig } = c.get('engine');
261
- const config = await getWorkspaceStreamConfig(kv, workspaceId, engineConfig.workspaceStreamEnabled ?? false);
262
- return c.json({
263
- ok: true,
264
- data: {
265
- enabled: config.enabled,
266
- default_enabled: config.defaultEnabled,
267
- override: config.override,
268
- },
269
- });
270
- }
271
- catch (err) {
272
- const error = asCodedError(err);
273
- logger.error('Failed to get stream config', {
274
- workspaceId,
275
- code: error.code,
276
- status: error.status,
277
- ...toErrorDetails(error),
278
- });
279
- return c.json({
280
- ok: false,
281
- error: { code: error.code || 'internal_error', message: error.message },
282
- }, (error.status || 500));
283
- }
284
- });
285
- // PUT /workspace/stream - set workspace stream override
286
- workspaceRoutes.put('/workspace/stream', requireWorkspaceKey, rateLimit, async (c) => {
287
- const logger = getRequestLogger(c, 'workspace.stream.put');
288
- const workspaceId = c.get('workspace').id;
289
- try {
290
- const parsed = updateWorkspaceStreamSchema.safeParse(await c.req.json());
291
- if (!parsed.success) {
292
- return c.json({
293
- ok: false,
294
- error: { code: 'invalid_request', message: 'Provide { enabled: boolean } or { mode: "inherit" }' },
295
- }, 400);
296
- }
297
- const body = parsed.data;
298
- let override;
299
- if (body?.mode === 'inherit') {
300
- override = null;
301
- }
302
- else if (typeof body?.enabled === 'boolean') {
303
- override = body.enabled;
304
- }
305
- else {
306
- return c.json({
307
- ok: false,
308
- error: { code: 'invalid_request', message: 'Provide { enabled: boolean } or { mode: "inherit" }' },
309
- }, 400);
310
- }
311
- const { kv, config: engineConfig } = c.get('engine');
312
- await setWorkspaceStreamOverride(kv, workspaceId, override);
313
- const config = await getWorkspaceStreamConfig(kv, workspaceId, engineConfig.workspaceStreamEnabled ?? false);
314
- emitServerEvent(c, workspaceId, 'relaycast_server_workspace_stream_updated', {
315
- stream_mode: override === null ? 'inherit' : (override ? 'enabled' : 'disabled'),
316
- });
317
- return c.json({
318
- ok: true,
319
- data: {
320
- enabled: config.enabled,
321
- default_enabled: config.defaultEnabled,
322
- override: config.override,
323
- },
324
- });
325
- }
326
- catch (err) {
327
- const error = asCodedError(err);
328
- logger.error('Failed to update stream config', {
329
- workspaceId,
330
- code: error.code,
331
- status: error.status,
332
- ...toErrorDetails(error),
333
- });
334
- return c.json({
335
- ok: false,
336
- error: { code: error.code || 'internal_error', message: error.message },
337
- }, (error.status || 500));
338
- }
339
- });
340
- // GET /workspace/fleet-nodes - effective fleet node control rollout flag (Phase 6)
341
- workspaceRoutes.get('/workspace/fleet-nodes', requireWorkspaceKey, rateLimit, async (c) => {
342
- const logger = getRequestLogger(c, 'workspace.fleet_nodes.get');
343
- const workspaceId = c.get('workspace').id;
344
- try {
345
- const { kv, config: engineConfig } = c.get('engine');
346
- const config = await getFleetNodesConfig(kv, workspaceId, engineConfig.fleetNodesEnabled ?? false);
347
- return c.json({
348
- ok: true,
349
- data: {
350
- enabled: config.enabled,
351
- default_enabled: config.defaultEnabled,
352
- override: config.override,
353
- },
354
- });
355
- }
356
- catch (err) {
357
- const error = asCodedError(err);
358
- logger.error('Failed to get fleet nodes config', {
359
- workspaceId,
360
- code: error.code,
361
- status: error.status,
362
- ...toErrorDetails(error),
363
- });
364
- return c.json({
365
- ok: false,
366
- error: { code: error.code || 'internal_error', message: error.message },
367
- }, (error.status || 500));
368
- }
369
- });
370
- // PUT /workspace/fleet-nodes - set the per-workspace fleet node control override
371
- workspaceRoutes.put('/workspace/fleet-nodes', requireWorkspaceKey, rateLimit, async (c) => {
372
- const logger = getRequestLogger(c, 'workspace.fleet_nodes.put');
373
- const workspaceId = c.get('workspace').id;
374
- try {
375
- const parsed = updateFleetNodesSchema.safeParse(await c.req.json());
376
- if (!parsed.success) {
377
- return c.json({
378
- ok: false,
379
- error: { code: 'invalid_request', message: 'Provide { enabled: boolean } or { mode: "inherit" }' },
380
- }, 400);
381
- }
382
- const body = parsed.data;
383
- let override;
384
- if (body?.mode === 'inherit') {
385
- override = null;
386
- }
387
- else if (typeof body?.enabled === 'boolean') {
388
- override = body.enabled;
389
- }
390
- else {
391
- return c.json({
392
- ok: false,
393
- error: { code: 'invalid_request', message: 'Provide { enabled: boolean } or { mode: "inherit" }' },
394
- }, 400);
395
- }
396
- const { kv, config: engineConfig } = c.get('engine');
397
- await setFleetNodesOverride(kv, workspaceId, override);
398
- const config = await getFleetNodesConfig(kv, workspaceId, engineConfig.fleetNodesEnabled ?? false);
399
- emitServerEvent(c, workspaceId, 'relaycast_server_workspace_fleet_nodes_updated', {
400
- fleet_nodes_mode: override === null ? 'inherit' : (override ? 'enabled' : 'disabled'),
401
- });
402
- return c.json({
403
- ok: true,
404
- data: {
405
- enabled: config.enabled,
406
- default_enabled: config.defaultEnabled,
407
- override: config.override,
408
- },
409
- });
410
- }
411
- catch (err) {
412
- const error = asCodedError(err);
413
- logger.error('Failed to update fleet nodes config', {
414
- workspaceId,
415
- code: error.code,
416
- status: error.status,
417
- ...toErrorDetails(error),
418
- });
419
- return c.json({
420
- ok: false,
421
- error: { code: error.code || 'internal_error', message: error.message },
422
- }, (error.status || 500));
423
- }
424
- });
425
257
  //# sourceMappingURL=workspace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/routes/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/routes/workspace.ts"],"names":[],"mappings":"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"}